Update bonanza
This commit is contained in:
1 parent
cb55845271
commit
b6ff45d1b4
146 files changed
+15771
-14876
No files matched your search
+1
-1
@@ -9,7 +9,7 @@
|
||||
<body>
|
||||
<h1 id="logo">
|
||||
<a href="https://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" /></a>
|
||||
<br /> Version 4.0
|
||||
<br /> Version 4.0.1
|
||||
</h1>
|
||||
<p style="text-align: center">Semantic Personal Publishing Platform</p>
|
||||
|
||||
|
||||
@@ -41,6 +41,14 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
|
||||
</a>
|
||||
</h2>
|
||||
|
||||
<div class="changelog point-releases">
|
||||
<h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 1 ); ?></h3>
|
||||
<p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
|
||||
'<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 23 ), '4.0.1', number_format_i18n( 23 ) ); ?>
|
||||
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_4.0.1' ); ?>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<div class="changelog">
|
||||
<div class="about-overview">
|
||||
<?php if ( ( $locale = get_locale() ) && 'en_' === substr( $locale, 0, 3 ) ) : ?>
|
||||
|
||||
@@ -273,7 +273,9 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( 'top' == $which ) { ?>
|
||||
if ( 'top' == $which ) {
|
||||
wp_referer_field();
|
||||
?>
|
||||
<div class="tablenav top">
|
||||
<div class="alignleft actions">
|
||||
<?php
|
||||
|
||||
@@ -401,6 +401,12 @@ function wp_read_image_metadata( $file ) {
|
||||
}
|
||||
}
|
||||
|
||||
foreach ( $meta as &$value ) {
|
||||
if ( is_string( $value ) ) {
|
||||
$value = wp_kses_post( $value );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the array of meta data read from an image's exif data.
|
||||
*
|
||||
|
||||
@@ -235,10 +235,15 @@ function install_plugins_favorites_form() {
|
||||
function display_plugins_table() {
|
||||
global $wp_list_table;
|
||||
|
||||
if ( current_filter() == 'install_plugins_favorites' && empty( $_GET['user'] ) && ! get_user_option( 'wporg_favorites' ) )
|
||||
return;
|
||||
if ( current_filter() == 'install_plugins_favorites' && empty( $_GET['user'] ) && ! get_user_option( 'wporg_favorites' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$wp_list_table->display();
|
||||
?>
|
||||
<form id="plugin-filter" action="" method="post">
|
||||
<?php $wp_list_table->display(); ?>
|
||||
</form>
|
||||
<?php
|
||||
}
|
||||
add_action( 'install_plugins_search', 'display_plugins_table' );
|
||||
add_action( 'install_plugins_popular', 'display_plugins_table' );
|
||||
|
||||
@@ -1205,12 +1205,18 @@ function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) {
|
||||
$return .= '<span id="change-permalinks"><a href="options-permalink.php" class="button button-small" target="_blank">' . __('Change Permalinks') . "</a></span>\n";
|
||||
}
|
||||
} else {
|
||||
if ( function_exists( 'mb_strlen' ) && mb_strlen( $post_name ) > 30 ) {
|
||||
$post_name_abridged = mb_substr( $post_name, 0, 14 ) . '…' . mb_substr( $post_name, -14 );
|
||||
} elseif ( strlen( $post_name ) > 30 ) {
|
||||
$post_name_abridged = substr( $post_name, 0, 14 ) . '…' . substr( $post_name, -14 );
|
||||
if ( function_exists( 'mb_strlen' ) ) {
|
||||
if ( mb_strlen( $post_name ) > 30 ) {
|
||||
$post_name_abridged = mb_substr( $post_name, 0, 14 ) . '…' . mb_substr( $post_name, -14 );
|
||||
} else {
|
||||
$post_name_abridged = $post_name;
|
||||
}
|
||||
} else {
|
||||
$post_name_abridged = $post_name;
|
||||
if ( strlen( $post_name ) > 30 ) {
|
||||
$post_name_abridged = substr( $post_name, 0, 14 ) . '…' . substr( $post_name, -14 );
|
||||
} else {
|
||||
$post_name_abridged = $post_name;
|
||||
}
|
||||
}
|
||||
|
||||
$post_name_html = '<span id="editable-post-name" title="' . $title . '">' . $post_name_abridged . '</span>';
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
window.wp = window.wp || {};
|
||||
|
||||
jQuery( document ).ready( function($) {
|
||||
jQuery( document ).ready( function( $ ) {
|
||||
var $window = $( window ),
|
||||
$document = $( document ),
|
||||
$adminBar = $( '#wpadminbar' ),
|
||||
@@ -148,6 +148,11 @@ jQuery( document ).ready( function($) {
|
||||
|
||||
// We need to wait for TinyMCE to initialize.
|
||||
$document.on( 'tinymce-editor-init.editor-expand', function( event, editor ) {
|
||||
var hideFloatPanels = _.debounce( function() {
|
||||
! $( '.mce-floatpanel:hover' ).length && tinymce.ui.FloatPanel.hideAll();
|
||||
$( '.mce-tooltip' ).hide();
|
||||
}, 1000, true );
|
||||
|
||||
// Make sure it's the main editor.
|
||||
if ( editor.id !== 'content' ) {
|
||||
return;
|
||||
@@ -224,6 +229,8 @@ jQuery( document ).ready( function($) {
|
||||
|
||||
// Adjust when switching editor modes.
|
||||
function mceShow() {
|
||||
$window.on( 'scroll.mce-float-panels', hideFloatPanels );
|
||||
|
||||
setTimeout( function() {
|
||||
editor.execCommand( 'wpAutoResize' );
|
||||
adjust();
|
||||
@@ -231,6 +238,8 @@ jQuery( document ).ready( function($) {
|
||||
}
|
||||
|
||||
function mceHide() {
|
||||
$window.off( 'scroll.mce-float-panels' );
|
||||
|
||||
setTimeout( function() {
|
||||
var top = $contentWrap.offset().top;
|
||||
|
||||
@@ -251,6 +260,8 @@ jQuery( document ).ready( function($) {
|
||||
editor.on( 'hide', mceHide );
|
||||
// Adjust when the editor resizes.
|
||||
editor.on( 'setcontent wp-autoresize wp-toolbar-toggle', adjust );
|
||||
|
||||
$window.off( 'scroll.mce-float-panels' ).on( 'scroll.mce-float-panels', hideFloatPanels );
|
||||
};
|
||||
|
||||
mceUnbind = function() {
|
||||
@@ -258,6 +269,8 @@ jQuery( document ).ready( function($) {
|
||||
editor.off( 'show', mceShow );
|
||||
editor.off( 'hide', mceHide );
|
||||
editor.off( 'setcontent wp-autoresize wp-toolbar-toggle', adjust );
|
||||
|
||||
$window.off( 'scroll.mce-float-panels' );
|
||||
};
|
||||
|
||||
if ( $wrap.hasClass( 'wp-editor-expand' ) ) {
|
||||
@@ -590,6 +603,12 @@ jQuery( document ).ready( function($) {
|
||||
}
|
||||
|
||||
adjust();
|
||||
}).on( 'wp-window-resized.editor-expand', function() {
|
||||
if ( mceEditor && ! mceEditor.isHidden() ) {
|
||||
mceEditor.execCommand( 'wpAutoResize' );
|
||||
} else {
|
||||
textEditorResize();
|
||||
}
|
||||
});
|
||||
|
||||
$textEditor.on( 'focus.editor-expand input.editor-expand propertychange.editor-expand', textEditorResize );
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
window.wp=window.wp||{},jQuery(document).ready(function(a){function b(){var a=m.width();R={windowHeight:m.height(),windowWidth:a,adminBarHeight:a>600?o.outerHeight():0,toolsHeight:s.outerHeight()||0,menuBarHeight:z.outerHeight()||0,visualTopHeight:t.outerHeight()||0,textTopHeight:v.outerHeight()||0,bottomHeight:y.outerHeight()||0,statusBarHeight:A.outerHeight()||0,sideSortablesHeight:B.height()||0},R.menuBarHeight<3&&(R.menuBarHeight=0)}function c(a){var b,c,d,e,f,g=jQuery.ui.keyCode,h=a.keyCode,i=document.createRange(),j=w[0].selectionStart,k=w[0].selectionEnd,l=x[0].firstChild,m=10;if(!j||!k||j===k){try{i.setStart(l,j),i.setEnd(l,k+1)}catch(n){}b=i.getBoundingClientRect(),b.height&&(c=b.top-m,d=c+b.height+m,e=R.adminBarHeight+R.toolsHeight+R.textTopHeight,f=R.windowHeight-R.bottomHeight,e>c&&(h===g.UP||h===g.LEFT||h===g.BACKSPACE)?window.scrollTo(window.pageXOffset,c+window.pageYOffset-e):d>f&&window.scrollTo(window.pageXOffset,d+window.pageYOffset-f))}}function d(){if(!(k&&!k.isHidden()||!k&&"tinymce"===Q)){var a,b=w.height();x.width(w.width()-22),x.text(w.val()+" "),a=x.height(),P>a&&(a=P),a!==b&&(w.height(a),e())}}function e(a){if(!E||!E.settings.visible){var c,e,f,g,h,i,j,l,o,q=m.scrollTop(),F="scroll"!==a,G=k&&!k.isHidden(),M=P,Q=D.offset().top,S=1,T=r.width();(F||!R.windowHeight)&&b(),G||"resize"!==a||d(),G?(c=t,e=u,j=R.visualTopHeight):(c=v,e=w,j=R.textTopHeight),i=c.parent().offset().top,l=e.offset().top,o=e.outerHeight(),h=G?P+j:P+20,h=o>h+5,h?((!H||F)&&q>=i-R.toolsHeight-R.adminBarHeight&&q<=i-R.toolsHeight-R.adminBarHeight+o-M?(H=!0,s.css({position:"fixed",top:R.adminBarHeight,width:T}),G&&z.length&&z.css({position:"fixed",top:R.adminBarHeight+R.toolsHeight,width:T-2*S-(G?0:c.outerWidth()-c.width())}),c.css({position:"fixed",top:R.adminBarHeight+R.toolsHeight+R.menuBarHeight,width:T-2*S-(G?0:c.outerWidth()-c.width())})):(H||F)&&(q<=i-R.toolsHeight-R.adminBarHeight?(H=!1,s.css({position:"absolute",top:0,width:T}),G&&z.length&&z.css({position:"absolute",top:0,width:T-2*S}),c.css({position:"absolute",top:R.menuBarHeight,width:T-2*S-(G?0:c.outerWidth()-c.width())})):q>=i-R.toolsHeight-R.adminBarHeight+o-M&&(H=!1,s.css({position:"absolute",top:o-M,width:T}),G&&z.length&&z.css({position:"absolute",top:o-M,width:T-2*S}),c.css({position:"absolute",top:o-M+R.menuBarHeight,width:T-2*S-(G?0:c.outerWidth()-c.width())}))),(!I||F)&&q+R.windowHeight<=l+o+R.bottomHeight+R.statusBarHeight+S?(I=!0,A.css({position:"fixed",bottom:R.bottomHeight,width:T-2*S}),y.css({position:"fixed",bottom:0,width:T})):(I||F)&&q+R.windowHeight>l+o+R.bottomHeight+R.statusBarHeight-S&&(I=!1,A.add(y).attr("style",""))):F&&(s.css({position:"absolute",top:0,width:T}),G&&z.length&&z.css({position:"absolute",top:0,width:T-2*S}),c.css({position:"absolute",top:R.menuBarHeight,width:T-2*S-(G?0:c.outerWidth()-c.width())}),A.add(y).attr("style","")),C.width()<300&&R.windowWidth>600&&n.height()>B.height()+Q+120&&R.windowHeight<o?(R.sideSortablesHeight+N+O>R.windowHeight||J||K?Q>=q+N?(B.attr("style",""),J=K=!1):q>L?J?(J=!1,f=B.offset().top-R.adminBarHeight,g=p.offset().top,g<f+R.sideSortablesHeight+O&&(f=g-R.sideSortablesHeight-12),B.css({position:"absolute",top:f,bottom:""})):!K&&R.sideSortablesHeight+B.offset().top+O<q+R.windowHeight&&(K=!0,B.css({position:"fixed",top:"auto",bottom:O})):L>q&&(K?(K=!1,f=B.offset().top-O,g=p.offset().top,g<f+R.sideSortablesHeight+O&&(f=g-R.sideSortablesHeight-12),B.css({position:"absolute",top:f,bottom:""})):!J&&B.offset().top>=q+N&&(J=!0,B.css({position:"fixed",top:N,bottom:""}))):(q>=Q-N?B.css({position:"fixed",top:N}):B.attr("style",""),J=K=!1),L=q):(B.attr("style",""),J=K=!1),F&&(r.css({paddingTop:R.toolsHeight}),G?u.css({paddingTop:R.visualTopHeight+R.menuBarHeight}):(w.css({marginTop:R.textTopHeight}),x.width(T-20-2*S)))}}function f(){d(),e()}function g(a){for(var b=1;6>b;b++)setTimeout(a,500*b)}function h(){clearTimeout(l),l=setTimeout(e,100)}function i(){window.pageYOffset&&window.pageYOffset>M&&window.scrollTo(window.pageXOffset,0),q.addClass("wp-editor-expand"),m.on("scroll.editor-expand resize.editor-expand",function(a){e(a.type),h()}),n.on("wp-collapse-menu.editor-expand postboxes-columnchange.editor-expand editor-classchange.editor-expand",e).on("postbox-toggled.editor-expand",function(){!J&&!K&&window.pageYOffset>N&&(K=!0,window.scrollBy(0,-1),e(),window.scrollBy(0,1)),e()}),w.on("focus.editor-expand input.editor-expand propertychange.editor-expand",d),w.on("keyup.editor-expand",c),F(),E&&E.pubsub.subscribe("hidden",f),k&&(k.settings.wp_autoresize_on=!0,k.execCommand("wpAutoResizeOn"),k.isHidden()||k.execCommand("wpAutoResize")),(!k||k.isHidden())&&d(),e()}function j(){var b=window.getUserSetting("ed_size");window.pageYOffset&&window.pageYOffset>M&&window.scrollTo(window.pageXOffset,0),q.removeClass("wp-editor-expand"),m.off(".editor-expand"),n.off(".editor-expand"),w.off(".editor-expand"),G(),E&&E.pubsub.unsubscribe("hidden",f),a.each([t,v,s,z,y,A,r,u,w,B],function(a,b){b&&b.attr("style","")Line truncated
|
||||
window.wp=window.wp||{},jQuery(document).ready(function(a){function b(){var a=m.width();R={windowHeight:m.height(),windowWidth:a,adminBarHeight:a>600?o.outerHeight():0,toolsHeight:s.outerHeight()||0,menuBarHeight:z.outerHeight()||0,visualTopHeight:t.outerHeight()||0,textTopHeight:v.outerHeight()||0,bottomHeight:y.outerHeight()||0,statusBarHeight:A.outerHeight()||0,sideSortablesHeight:B.height()||0},R.menuBarHeight<3&&(R.menuBarHeight=0)}function c(a){var b,c,d,e,f,g=jQuery.ui.keyCode,h=a.keyCode,i=document.createRange(),j=w[0].selectionStart,k=w[0].selectionEnd,l=x[0].firstChild,m=10;if(!j||!k||j===k){try{i.setStart(l,j),i.setEnd(l,k+1)}catch(n){}b=i.getBoundingClientRect(),b.height&&(c=b.top-m,d=c+b.height+m,e=R.adminBarHeight+R.toolsHeight+R.textTopHeight,f=R.windowHeight-R.bottomHeight,e>c&&(h===g.UP||h===g.LEFT||h===g.BACKSPACE)?window.scrollTo(window.pageXOffset,c+window.pageYOffset-e):d>f&&window.scrollTo(window.pageXOffset,d+window.pageYOffset-f))}}function d(){if(!(k&&!k.isHidden()||!k&&"tinymce"===Q)){var a,b=w.height();x.width(w.width()-22),x.text(w.val()+" "),a=x.height(),P>a&&(a=P),a!==b&&(w.height(a),e())}}function e(a){if(!E||!E.settings.visible){var c,e,f,g,h,i,j,l,o,q=m.scrollTop(),F="scroll"!==a,G=k&&!k.isHidden(),M=P,Q=D.offset().top,S=1,T=r.width();(F||!R.windowHeight)&&b(),G||"resize"!==a||d(),G?(c=t,e=u,j=R.visualTopHeight):(c=v,e=w,j=R.textTopHeight),i=c.parent().offset().top,l=e.offset().top,o=e.outerHeight(),h=G?P+j:P+20,h=o>h+5,h?((!H||F)&&q>=i-R.toolsHeight-R.adminBarHeight&&q<=i-R.toolsHeight-R.adminBarHeight+o-M?(H=!0,s.css({position:"fixed",top:R.adminBarHeight,width:T}),G&&z.length&&z.css({position:"fixed",top:R.adminBarHeight+R.toolsHeight,width:T-2*S-(G?0:c.outerWidth()-c.width())}),c.css({position:"fixed",top:R.adminBarHeight+R.toolsHeight+R.menuBarHeight,width:T-2*S-(G?0:c.outerWidth()-c.width())})):(H||F)&&(q<=i-R.toolsHeight-R.adminBarHeight?(H=!1,s.css({position:"absolute",top:0,width:T}),G&&z.length&&z.css({position:"absolute",top:0,width:T-2*S}),c.css({position:"absolute",top:R.menuBarHeight,width:T-2*S-(G?0:c.outerWidth()-c.width())})):q>=i-R.toolsHeight-R.adminBarHeight+o-M&&(H=!1,s.css({position:"absolute",top:o-M,width:T}),G&&z.length&&z.css({position:"absolute",top:o-M,width:T-2*S}),c.css({position:"absolute",top:o-M+R.menuBarHeight,width:T-2*S-(G?0:c.outerWidth()-c.width())}))),(!I||F)&&q+R.windowHeight<=l+o+R.bottomHeight+R.statusBarHeight+S?(I=!0,A.css({position:"fixed",bottom:R.bottomHeight,width:T-2*S}),y.css({position:"fixed",bottom:0,width:T})):(I||F)&&q+R.windowHeight>l+o+R.bottomHeight+R.statusBarHeight-S&&(I=!1,A.add(y).attr("style",""))):F&&(s.css({position:"absolute",top:0,width:T}),G&&z.length&&z.css({position:"absolute",top:0,width:T-2*S}),c.css({position:"absolute",top:R.menuBarHeight,width:T-2*S-(G?0:c.outerWidth()-c.width())}),A.add(y).attr("style","")),C.width()<300&&R.windowWidth>600&&n.height()>B.height()+Q+120&&R.windowHeight<o?(R.sideSortablesHeight+N+O>R.windowHeight||J||K?Q>=q+N?(B.attr("style",""),J=K=!1):q>L?J?(J=!1,f=B.offset().top-R.adminBarHeight,g=p.offset().top,g<f+R.sideSortablesHeight+O&&(f=g-R.sideSortablesHeight-12),B.css({position:"absolute",top:f,bottom:""})):!K&&R.sideSortablesHeight+B.offset().top+O<q+R.windowHeight&&(K=!0,B.css({position:"fixed",top:"auto",bottom:O})):L>q&&(K?(K=!1,f=B.offset().top-O,g=p.offset().top,g<f+R.sideSortablesHeight+O&&(f=g-R.sideSortablesHeight-12),B.css({position:"absolute",top:f,bottom:""})):!J&&B.offset().top>=q+N&&(J=!0,B.css({position:"fixed",top:N,bottom:""}))):(q>=Q-N?B.css({position:"fixed",top:N}):B.attr("style",""),J=K=!1),L=q):(B.attr("style",""),J=K=!1),F&&(r.css({paddingTop:R.toolsHeight}),G?u.css({paddingTop:R.visualTopHeight+R.menuBarHeight}):(w.css({marginTop:R.textTopHeight}),x.width(T-20-2*S)))}}function f(){d(),e()}function g(a){for(var b=1;6>b;b++)setTimeout(a,500*b)}function h(){clearTimeout(l),l=setTimeout(e,100)}function i(){window.pageYOffset&&window.pageYOffset>M&&window.scrollTo(window.pageXOffset,0),q.addClass("wp-editor-expand"),m.on("scroll.editor-expand resize.editor-expand",function(a){e(a.type),h()}),n.on("wp-collapse-menu.editor-expand postboxes-columnchange.editor-expand editor-classchange.editor-expand",e).on("postbox-toggled.editor-expand",function(){!J&&!K&&window.pageYOffset>N&&(K=!0,window.scrollBy(0,-1),e(),window.scrollBy(0,1)),e()}).on("wp-window-resized.editor-expand",function(){k&&!k.isHidden()?k.execCommand("wpAutoResize"):d()}),w.on("focus.editor-expand input.editor-expand propertychange.editor-expand",d),w.on("keyup.editor-expand",c),F(),E&&E.pubsub.subscribe("hidden",f),k&&(k.settings.wp_autoresize_on=!0,k.execCommand("wpAutoResizeOn"),k.isHidden()||k.execCommand("wpAutoResize")),(!k||k.isHidden())&&d(),e()}function j(){var b=window.getUserSetting("ed_size");window.pageYOffset&&window.pageYOffset>M&&window.scrollTo(window.pageXOffset,0),q.removeClass("wp-editor-expand"),m.off(".editor-expand"),n.off(".editor-expand"),w.off(".editor-expand"),G()Line truncated
|
||||
@@ -72,11 +72,15 @@ var findPosts;
|
||||
};
|
||||
|
||||
$( document ).ready( function() {
|
||||
var $mediaGridWrap = $( '#wp-media-grid' );
|
||||
|
||||
// Open up a manage media frame into the grid.
|
||||
wp.media && wp.media({
|
||||
frame: 'manage',
|
||||
container: $('#wpbody-content > .wrap')
|
||||
}).open();
|
||||
if ( $mediaGridWrap.length && window.wp && window.wp.media ) {
|
||||
window.wp.media({
|
||||
frame: 'manage',
|
||||
container: $mediaGridWrap
|
||||
}).open();
|
||||
}
|
||||
|
||||
$( '#find-posts-submit' ).click( function( event ) {
|
||||
if ( ! $( '#find-posts-response input[type="radio"]:checked' ).length )
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
var findPosts;!function(a){findPosts={open:function(b,c){var d=a(".ui-find-overlay");return 0===d.length&&(a("body").append('<div class="ui-find-overlay"></div>'),findPosts.overlay()),d.show(),b&&c&&a("#affected").attr("name",b).val(c),a("#find-posts").show(),a("#find-posts-input").focus().keyup(function(a){27==a.which&&findPosts.close()}),findPosts.send(),!1},close:function(){a("#find-posts-response").html(""),a("#find-posts").hide(),a(".ui-find-overlay").hide()},overlay:function(){a(".ui-find-overlay").on("click",function(){findPosts.close()})},send:function(){var b={ps:a("#find-posts-input").val(),action:"find_posts",_ajax_nonce:a("#_ajax_nonce").val()},c=a(".find-box-search .spinner");c.show(),a.ajax(ajaxurl,{type:"POST",data:b,dataType:"json"}).always(function(){c.hide()}).done(function(b){b.success||a("#find-posts-response").text(attachMediaBoxL10n.error),a("#find-posts-response").html(b.data)}).fail(function(){a("#find-posts-response").text(attachMediaBoxL10n.error)})}},a(document).ready(function(){wp.media&&wp.media({frame:"manage",container:a("#wpbody-content > .wrap")}).open(),a("#find-posts-submit").click(function(b){a('#find-posts-response input[type="radio"]:checked').length||b.preventDefault()}),a("#find-posts .find-box-search :input").keypress(function(a){return 13==a.which?(findPosts.send(),!1):void 0}),a("#find-posts-search").click(findPosts.send),a("#find-posts-close").click(findPosts.close),a("#doaction, #doaction2").click(function(b){a('select[name^="action"]').each(function(){"attach"===a(this).val()&&(b.preventDefault(),findPosts.open())})}),a(".find-box-inside").on("click","tr",function(){a(this).find(".found-radio input").prop("checked",!0)})})}(jQuery);
|
||||
var findPosts;!function(a){findPosts={open:function(b,c){var d=a(".ui-find-overlay");return 0===d.length&&(a("body").append('<div class="ui-find-overlay"></div>'),findPosts.overlay()),d.show(),b&&c&&a("#affected").attr("name",b).val(c),a("#find-posts").show(),a("#find-posts-input").focus().keyup(function(a){27==a.which&&findPosts.close()}),findPosts.send(),!1},close:function(){a("#find-posts-response").html(""),a("#find-posts").hide(),a(".ui-find-overlay").hide()},overlay:function(){a(".ui-find-overlay").on("click",function(){findPosts.close()})},send:function(){var b={ps:a("#find-posts-input").val(),action:"find_posts",_ajax_nonce:a("#_ajax_nonce").val()},c=a(".find-box-search .spinner");c.show(),a.ajax(ajaxurl,{type:"POST",data:b,dataType:"json"}).always(function(){c.hide()}).done(function(b){b.success||a("#find-posts-response").text(attachMediaBoxL10n.error),a("#find-posts-response").html(b.data)}).fail(function(){a("#find-posts-response").text(attachMediaBoxL10n.error)})}},a(document).ready(function(){var b=a("#wp-media-grid");b.length&&window.wp&&window.wp.media&&window.wp.media({frame:"manage",container:b}).open(),a("#find-posts-submit").click(function(b){a('#find-posts-response input[type="radio"]:checked').length||b.preventDefault()}),a("#find-posts .find-box-search :input").keypress(function(a){return 13==a.which?(findPosts.send(),!1):void 0}),a("#find-posts-search").click(findPosts.send),a("#find-posts-close").click(findPosts.close),a("#doaction, #doaction2").click(function(b){a('select[name^="action"]').each(function(){"attach"===a(this).val()&&(b.preventDefault(),findPosts.open())})}),a(".find-box-inside").on("click","tr",function(){a(this).find(".found-radio input").prop("checked",!0)})})}(jQuery);
|
||||
@@ -24,8 +24,27 @@ if ( is_multisite() && ! is_network_admin() ) {
|
||||
|
||||
$wp_list_table = _get_list_table('WP_Plugin_Install_List_Table');
|
||||
$pagenum = $wp_list_table->get_pagenum();
|
||||
|
||||
if ( ! empty( $_REQUEST['_wp_http_referer'] ) ) {
|
||||
$location = remove_query_arg( '_wp_http_referer', wp_unslash( $_SERVER['REQUEST_URI'] ) );
|
||||
|
||||
if ( ! empty( $_REQUEST['paged'] ) ) {
|
||||
$location = add_query_arg( 'paged', (int) $_REQUEST['paged'], $location );
|
||||
}
|
||||
|
||||
wp_redirect( $location );
|
||||
exit;
|
||||
}
|
||||
|
||||
$wp_list_table->prepare_items();
|
||||
|
||||
$total_pages = $wp_list_table->get_pagination_arg( 'total_pages' );
|
||||
|
||||
if ( $pagenum > $total_pages && $total_pages > 0 ) {
|
||||
wp_redirect( add_query_arg( 'paged', $total_pages ) );
|
||||
exit;
|
||||
}
|
||||
|
||||
$title = __( 'Add Plugins' );
|
||||
$parent_file = 'plugins.php';
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ function press_it() {
|
||||
// Error handling for media_sideload.
|
||||
if ( is_wp_error($upload) ) {
|
||||
wp_delete_post($post_ID);
|
||||
wp_die($upload);
|
||||
wp_die( esc_html( $upload->get_error_message() ) );
|
||||
} else {
|
||||
// Post formats.
|
||||
if ( isset( $_POST['post_format'] ) ) {
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@ if ( 'grid' === $mode ) {
|
||||
|
||||
require_once( ABSPATH . 'wp-admin/admin-header.php' );
|
||||
?>
|
||||
<div class="wrap">
|
||||
<div class="wrap" id="wp-media-grid">
|
||||
<h2>
|
||||
<?php
|
||||
echo esc_html( $title );
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
Plugin Name: Akismet
|
||||
Plugin URI: http://akismet.com/
|
||||
Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from comment and trackback spam</strong>. It keeps your site protected from spam even while you sleep. To get started: 1) Click the "Activate" link to the left of this description, 2) <a href="http://akismet.com/get/">Sign up for an Akismet API key</a>, and 3) Go to your Akismet configuration page, and save your API key.
|
||||
Version: 3.0.2
|
||||
Version: 3.0.3
|
||||
Author: Automattic
|
||||
Author URI: http://automattic.com/wordpress-plugins/
|
||||
License: GPLv2 or later
|
||||
@@ -35,7 +35,7 @@ if ( !function_exists( 'add_action' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
define( 'AKISMET_VERSION', '3.0.2' );
|
||||
define( 'AKISMET_VERSION', '3.0.3' );
|
||||
define( 'AKISMET__MINIMUM_WP_VERSION', '3.1' );
|
||||
define( 'AKISMET__PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
||||
define( 'AKISMET__PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
||||
|
||||
@@ -327,6 +327,10 @@ class Akismet_Admin {
|
||||
if ( 'approved' == $comment_status )
|
||||
return;
|
||||
|
||||
if ( 'spam' == $comment_status ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( function_exists('plugins_url') )
|
||||
$link = add_query_arg( array( 'action' => 'akismet_recheck_queue' ), admin_url( 'admin.php' ) );
|
||||
else
|
||||
|
||||
@@ -256,13 +256,31 @@ class Akismet {
|
||||
public static function delete_old_comments() {
|
||||
global $wpdb;
|
||||
|
||||
while( $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_id FROM {$wpdb->comments} WHERE DATE_SUB(NOW(), INTERVAL 15 DAY) > comment_date_gmt AND comment_approved = 'spam' LIMIT %d", defined( 'AKISMET_DELETE_LIMIT' ) ? AKISMET_DELETE_LIMIT : 10000 ) ) ) {
|
||||
/**
|
||||
* Determines how many comments will be deleted in each batch.
|
||||
*
|
||||
* @param int The default, as defined by AKISMET_DELETE_LIMIT.
|
||||
*/
|
||||
$delete_limit = apply_filters( 'akismet_delete_comment_limit', defined( 'AKISMET_DELETE_LIMIT' ) ? AKISMET_DELETE_LIMIT : 10000 );
|
||||
$delete_limit = max( 1, intval( $delete_limit ) );
|
||||
|
||||
/**
|
||||
* Determines how many days a comment will be left in the Spam queue before being deleted.
|
||||
*
|
||||
* @param int The default number of days.
|
||||
*/
|
||||
$delete_interval = apply_filters( 'akismet_delete_comment_interval', 15 );
|
||||
$delete_interval = max( 1, intval( $delete_interval ) );
|
||||
|
||||
while ( $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_id FROM {$wpdb->comments} WHERE DATE_SUB(NOW(), INTERVAL %d DAY) > comment_date_gmt AND comment_approved = 'spam' LIMIT %d", $delete_interval, $delete_limit ) ) ) {
|
||||
if ( empty( $comment_ids ) )
|
||||
return;
|
||||
|
||||
$wpdb->queries = array();
|
||||
|
||||
do_action( 'delete_comment', $comment_ids );
|
||||
foreach ( $comment_ids as $comment_id ) {
|
||||
do_action( 'delete_comment', $comment_id );
|
||||
}
|
||||
|
||||
$comma_comment_ids = implode( ', ', array_map('intval', $comment_ids) );
|
||||
|
||||
@@ -926,8 +944,16 @@ p {
|
||||
return _http_build_query( $args, '', '&' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Log debugging info to the error log.
|
||||
*
|
||||
* Enabled when WP_DEBUG_LOG is enabled, but can be disabled via the akismet_debug_log filter.
|
||||
*
|
||||
* @param mixed $akismet_debug The data to log.
|
||||
*/
|
||||
public static function log( $akismet_debug ) {
|
||||
if ( defined( 'WP_DEBUG_LOG' ) && WP_DEBUG_LOG )
|
||||
error_log( print_r( compact( 'akismet_debug' ), 1 ) ); //send message to debug.log when in debug mode
|
||||
if ( apply_filters( 'akismet_debug_log', defined( 'WP_DEBUG_LOG' ) && WP_DEBUG_LOG ) ) {
|
||||
error_log( print_r( compact( 'akismet_debug' ), true ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,8 +2,8 @@
|
||||
Contributors: matt, ryan, andy, mdawaffe, tellyworth, josephscott, lessbloat, eoigal, cfinke, automattic
|
||||
Tags: akismet, comments, spam
|
||||
Requires at least: 3.1
|
||||
Tested up to: 3.9.2
|
||||
Stable tag: 3.0.2
|
||||
Tested up to: 4.0
|
||||
Stable tag: 3.0.3
|
||||
License: GPLv2 or later
|
||||
|
||||
Akismet checks your comments against the Akismet Web service to see if they look like spam or not.
|
||||
@@ -30,11 +30,24 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
|
||||
|
||||
== Changelog ==
|
||||
|
||||
= 3.0.3 =
|
||||
*Release Date - 3rd November, 2014*
|
||||
|
||||
* Fix for sending the wrong data to delete_comment action that could have prevented old spam comments from being deleted.
|
||||
* Added a filter to disable logging of Akismet debugging information.
|
||||
* Added a filter for the maximum comment age when deleting old spam comments.
|
||||
* Added a filter for the number per batch when deleting old spam comments.
|
||||
* Removed the "Check for Spam" button from the Spam folder.
|
||||
|
||||
= 3.0.2 =
|
||||
*Release Date - 18th August, 2014*
|
||||
|
||||
* Performance improvements.
|
||||
* Fixed a bug that could truncate the comment data being sent to Akismet for checking.
|
||||
|
||||
= 3.0.1 =
|
||||
*Release Date - 9th July, 2014*
|
||||
|
||||
* Removed dependency on PHP's fsockopen function
|
||||
* Fix spam/ham reports to work when reported outside of the WP dashboard, e.g., from Notifications or the WP app
|
||||
* Remove jQuery dependency for comment form JavaScript
|
||||
@@ -42,6 +55,8 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
|
||||
* Suspended keys will now result in all comments being put in moderation, not spam.
|
||||
|
||||
= 3.0.0 =
|
||||
*Release Date - 15th April, 2014*
|
||||
|
||||
* Move Akismet to Settings menu
|
||||
* Drop Akismet Stats menu
|
||||
* Add stats snapshot to Akismet settings
|
||||
@@ -55,6 +70,8 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
|
||||
* Replace the old discard setting with a new "discard pervasive spam" feature.
|
||||
|
||||
= 2.6.0 =
|
||||
*Release Date - 18th March, 2014*
|
||||
|
||||
* Add ajax paging to the check for spam button to handle large volumes of comments
|
||||
* Optimize javascript and add localization support
|
||||
* Fix bug in link to spam comments from right now dashboard widget
|
||||
@@ -63,16 +80,22 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
|
||||
* Add pre-check for pingbacks, to stop spam before an outbound verification request is made
|
||||
|
||||
= 2.5.9 =
|
||||
*Release Date - 1st August, 2013*
|
||||
|
||||
* Update 'Already have a key' link to redirect page rather than depend on javascript
|
||||
* Fix some non-translatable strings to be translatable
|
||||
* Update Activation banner in plugins page to redirect user to Akismet config page
|
||||
|
||||
= 2.5.8 =
|
||||
*Release Date - 20th January, 2013*
|
||||
|
||||
* Simplify the activation process for new users
|
||||
* Remove the reporter_ip parameter
|
||||
* Minor preventative security improvements
|
||||
|
||||
= 2.5.7 =
|
||||
*Release Date - 13th December, 2012*
|
||||
|
||||
* FireFox Stats iframe preview bug
|
||||
* Fix mshots preview when using https
|
||||
* Add .htaccess to block direct access to files
|
||||
@@ -82,6 +105,8 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
|
||||
* Fix prepare() warnings in WP 3.5
|
||||
|
||||
= 2.5.6 =
|
||||
*Release Date - 26th April, 2012*
|
||||
|
||||
* Prevent retry scheduling problems on sites where wp_cron is misbehaving
|
||||
* Preload mshot previews
|
||||
* Modernize the widget code
|
||||
@@ -93,10 +118,14 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
|
||||
* Improve error messages when verifying an API key
|
||||
|
||||
= 2.5.5 =
|
||||
*Release Date - 11th January, 2012*
|
||||
|
||||
* Add nonce check for comment author URL remove action
|
||||
* Fix the settings link
|
||||
|
||||
= 2.5.4 =
|
||||
*Release Date - 5th January, 2012*
|
||||
|
||||
* Limit Akismet CSS and Javascript loading in wp-admin to just the pages that need it
|
||||
* Added author URL quick removal functionality
|
||||
* Added mShot preview on Author URL hover
|
||||
@@ -105,11 +134,14 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
|
||||
* Purge old Akismet comment meta data, default of 15 days
|
||||
|
||||
= 2.5.3 =
|
||||
*Release Date - 8th Febuary, 2011*
|
||||
|
||||
* Specify the license is GPL v2 or later
|
||||
* Fix a bug that could result in orphaned commentmeta entries
|
||||
* Include hotfix for WordPress 3.0.5 filter issue
|
||||
|
||||
= 2.5.2 =
|
||||
*Release Date - 14th January, 2011*
|
||||
|
||||
* Properly format the comment count for author counts
|
||||
* Look for super admins on multisite installs when looking up user roles
|
||||
@@ -119,6 +151,7 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
|
||||
* Set Akismet stats iframe height to fixed 2500px. Better to have one tall scroll bar than two side by side.
|
||||
|
||||
= 2.5.1 =
|
||||
*Release Date - 17th December, 2010*
|
||||
|
||||
* Fix a bug that caused the "Auto delete" option to fail to discard comments correctly
|
||||
* Remove the comment nonce form field from the 'Akismet Configuration' page in favor of using a filter, akismet_comment_nonce
|
||||
@@ -137,6 +170,7 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
|
||||
* Hid "flagged by..." notification while on dashboard
|
||||
|
||||
= 2.5.0 =
|
||||
*Release Date - 7th December, 2010*
|
||||
|
||||
* Track comment actions under 'Akismet Status' on the edit comment screen
|
||||
* Fix a few remaining deprecated function calls ( props Mike Glendinning )
|
||||
@@ -152,6 +186,7 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
|
||||
* New option, "Use a nonce on the comment form."
|
||||
|
||||
= 2.4.0 =
|
||||
*Release Date - 23rd August, 2010*
|
||||
|
||||
* Spell out that the license is GPLv2
|
||||
* Fix PHP warnings
|
||||
@@ -161,6 +196,7 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
|
||||
* General code clean up
|
||||
|
||||
= 2.3.0 =
|
||||
*Release Date - 5th June, 2010*
|
||||
|
||||
* Fix "Are you sure" nonce message on config screen in WPMU
|
||||
* Fix XHTML compliance issue in sidebar widget
|
||||
@@ -168,10 +204,12 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
|
||||
* Localize the widget title (core ticket #13879)
|
||||
|
||||
= 2.2.9 =
|
||||
*Release Date - 2nd June, 2010*
|
||||
|
||||
* Eliminate a potential conflict with some plugins that may cause spurious reports
|
||||
|
||||
= 2.2.8 =
|
||||
*Release Date - 27th May, 2010*
|
||||
|
||||
* Fix bug in initial comment check for ipv6 addresses
|
||||
* Report comments as ham when they are moved from spam to moderation
|
||||
@@ -181,12 +219,14 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
|
||||
* Better handling of comments by logged-in users
|
||||
|
||||
= 2.2.7 =
|
||||
*Release Date - 17th December, 2009*
|
||||
|
||||
* Add a new AKISMET_VERSION constant
|
||||
* Reduce the possibility of over-counting spam when another spam filter plugin is in use
|
||||
* Disable the connectivity check when the API key is hard-coded for WPMU
|
||||
|
||||
= 2.2.6 =
|
||||
*Release Date - 20th July, 2009*
|
||||
|
||||
* Fix a global warning introduced in 2.2.5
|
||||
* Add changelog and additional readme.txt tags
|
||||
@@ -194,10 +234,12 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
|
||||
* Support a new WPCOM_API_KEY constant for easier use with WordPress MU
|
||||
|
||||
= 2.2.5 =
|
||||
*Release Date - 13th July, 2009*
|
||||
|
||||
* Include a new Server Connectivity diagnostic check, to detect problems caused by firewalls
|
||||
|
||||
= 2.2.4 =
|
||||
*Release Date - 3rd June, 2009*
|
||||
|
||||
* Fixed a key problem affecting the stats feature in WordPress MU
|
||||
* Provide additional blog information in Akismet API calls
|
||||
@@ -40,12 +40,12 @@
|
||||
<?php elseif ( $type == 'missing-functions' ) :?>
|
||||
<div class="wrap alert critical">
|
||||
<h3 class="key-status failed"><?php esc_html_e('Network functions are disabled.', 'akismet'); ?></h3>
|
||||
<p class="description"><?php printf( __('Your web host or server administrator has disabled PHP’s <code>gethostbynamel</code> functions. <strong>Akismet cannot work correctly until this is fixed.</strong> Please contact your web host or firewall administrator and give them <a href="%s" target="_blank">this information about Akismet’s system requirements</a>.', 'akismet'), 'https://blog.akismet.com/akismet-hosting-faq/'); ?></p>
|
||||
<p class="description"><?php printf( __('Your web host or server administrator has disabled PHP’s <code>gethostbynamel</code> functions. <strong>Akismet cannot work correctly until this is fixed.</strong> Please contact your web host or firewall administrator and give them <a href="%s" target="_blank">this information about Akismet’s system requirements</a>.', 'akismet'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?></p>
|
||||
</div>
|
||||
<?php elseif ( $type == 'servers-be-down' ) :?>
|
||||
<div class="wrap alert critical">
|
||||
<h3 class="key-status failed"><?php esc_html_e("We can’t connect to your site.", 'akismet'); ?></h3>
|
||||
<p class="description"><?php printf( __('Your firewall may be blocking us. Please contact your host and refer to <a href="%s" target="_blank">our guide about firewalls</a>.', 'akismet'), 'https://blog.akismet.com/akismet-hosting-faq/'); ?></p>
|
||||
<p class="description"><?php printf( __('Your firewall may be blocking us. Please contact your host and refer to <a href="%s" target="_blank">our guide about firewalls</a>.', 'akismet'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?></p>
|
||||
</div>
|
||||
<?php elseif ( $type == 'active-dunning' ) :?>
|
||||
<div class="wrap alert critical">
|
||||
@@ -99,4 +99,4 @@
|
||||
<p class="description"><?php printf( __('To continue your service, <a href="%s" target="_blank">upgrade to an Enterprise subscription</a>, which covers an unlimited number of sites. Please <a href="%s" target="_blank">contact our support team</a> with any questions.', 'akismet'), 'https://akismet.com/account/upgrade/', 'https://akismet.com/contact/'); ?></p>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php endif;?>
|
||||
<?php endif;?>
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,134 +1,156 @@
|
||||
<?php
|
||||
if (DISQUS_DEBUG) {
|
||||
echo "<p><strong>Disqus Debug</strong> thread_id: ".get_post_meta($post->ID, 'dsq_thread_id', true)."</p>";
|
||||
}
|
||||
?>
|
||||
|
||||
<div id="disqus_thread">
|
||||
<?php if (!get_option('disqus_disable_ssr') && have_comments()): ?>
|
||||
<?php
|
||||
// if (is_file(TEMPLATEPATH . '/comments.php')) {
|
||||
// include(TEMPLATEPATH . '/comments.php');
|
||||
// }
|
||||
?>
|
||||
<div id="dsq-content">
|
||||
|
||||
<?php if (get_comment_pages_count() > 1 && get_option('page_comments')): // Are there comments to navigate through? ?>
|
||||
<div class="navigation">
|
||||
<div class="nav-previous"><?php previous_comments_link(dsq_i( '<span class="meta-nav">←</span> Older Comments')); ?></div>
|
||||
<div class="nav-next"><?php next_comments_link(dsq_i('Newer Comments <span class="meta-nav">→</span>')); ?></div>
|
||||
</div> <!-- .navigation -->
|
||||
<?php endif; // check for comment navigation ?>
|
||||
|
||||
<ul id="dsq-comments">
|
||||
<?php
|
||||
/* Loop through and list the comments. Tell wp_list_comments()
|
||||
* to use dsq_comment() to format the comments.
|
||||
*/
|
||||
wp_list_comments(array('callback' => 'dsq_comment'));
|
||||
?>
|
||||
</ul>
|
||||
|
||||
<?php if (get_comment_pages_count() > 1 && get_option('page_comments')): // Are there comments to navigate through? ?>
|
||||
<div class="navigation">
|
||||
<div class="nav-previous"><?php previous_comments_link(dsq_i( '<span class="meta-nav">←</span> Older Comments')); ?></div>
|
||||
<div class="nav-next"><?php next_comments_link(dsq_i( 'Newer Comments <span class="meta-nav">→</span>')); ?></div>
|
||||
</div><!-- .navigation -->
|
||||
<?php endif; // check for comment navigation ?>
|
||||
|
||||
</div>
|
||||
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
<script type="text/javascript">
|
||||
/* <![CDATA[ */
|
||||
var disqus_url = '<?php echo get_permalink(); ?>';
|
||||
var disqus_identifier = '<?php echo dsq_identifier_for_post($post); ?>';
|
||||
var disqus_container_id = 'disqus_thread';
|
||||
var disqus_domain = '<?php echo DISQUS_DOMAIN; ?>';
|
||||
var disqus_shortname = '<?php echo strtolower(get_option('disqus_forum_url')); ?>';
|
||||
var disqus_title = <?php echo cf_json_encode(dsq_title_for_post($post)); ?>;
|
||||
var disqus_config = function () {
|
||||
var config = this; // Access to the config object
|
||||
config.language = '<?php echo esc_js(apply_filters('disqus_language_filter', '')) ?>';
|
||||
|
||||
/* Add the ability to add javascript callbacks */
|
||||
<?php do_action( 'disqus_config' ); ?>
|
||||
|
||||
/*
|
||||
All currently supported events:
|
||||
* preData — fires just before we request for initial data
|
||||
* preInit - fires after we get initial data but before we load any dependencies
|
||||
* onInit - fires when all dependencies are resolved but before dtpl template is rendered
|
||||
* afterRender - fires when template is rendered but before we show it
|
||||
* onReady - everything is done
|
||||
*/
|
||||
|
||||
config.callbacks.preData.push(function() {
|
||||
// clear out the container (its filled for SEO/legacy purposes)
|
||||
document.getElementById(disqus_container_id).innerHTML = '';
|
||||
});
|
||||
<?php if (!get_option('disqus_manual_sync')): ?>
|
||||
config.callbacks.onReady.push(function() {
|
||||
// sync comments in the background so we don't block the page
|
||||
var script = document.createElement('script');
|
||||
script.async = true;
|
||||
script.src = '?cf_action=sync_comments&post_id=<?php echo $post->ID; ?>';
|
||||
|
||||
var firstScript = document.getElementsByTagName( "script" )[0];
|
||||
firstScript.parentNode.insertBefore(script, firstScript);
|
||||
});
|
||||
<?php endif; ?>
|
||||
<?php
|
||||
$sso = dsq_sso();
|
||||
if ($sso) {
|
||||
foreach ($sso as $k=>$v) {
|
||||
echo "this.page.{$k} = '{$v}';\n";
|
||||
}
|
||||
echo dsq_sso_login();
|
||||
}
|
||||
?>
|
||||
};
|
||||
/* ]]> */
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
/* <![CDATA[ */
|
||||
var DsqLocal = {
|
||||
'trackbacks': [
|
||||
<?php
|
||||
$count = 0;
|
||||
foreach ((array)$comments as $comment) {
|
||||
$comment_type = get_comment_type();
|
||||
if ( $comment_type != 'comment' ) {
|
||||
if( $count ) { echo ','; }
|
||||
?>
|
||||
{
|
||||
'author_name': <?php echo cf_json_encode(get_comment_author()); ?>,
|
||||
'author_url': <?php echo cf_json_encode(get_comment_author_url()); ?>,
|
||||
'date': <?php echo cf_json_encode(get_comment_date('m/d/Y h:i A')); ?>,
|
||||
'excerpt': <?php echo cf_json_encode(str_replace(array("\r\n", "\n", "\r"), '<br />', get_comment_excerpt())); ?>,
|
||||
'type': <?php echo cf_json_encode($comment_type); ?>
|
||||
}
|
||||
<?php
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
?>
|
||||
],
|
||||
'trackback_url': <?php echo cf_json_encode(get_trackback_url()); ?>
|
||||
};
|
||||
/* ]]> */
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
/* <![CDATA[ */
|
||||
(function() {
|
||||
var dsq = document.createElement('script'); dsq.type = 'text/javascript';
|
||||
dsq.async = true;
|
||||
dsq.src = '//' + disqus_shortname + '.' + '<?php echo DISQUS_DOMAIN; ?>' + '/' + 'embed' + '.js' + '?pname=wordpress&pver=<?php echo DISQUS_VERSION; ?>';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
})();
|
||||
/* ]]> */
|
||||
</script>
|
||||
<?php
|
||||
if (DISQUS_DEBUG) {
|
||||
echo "<p><strong>Disqus Debug</strong> thread_id: ".get_post_meta($post->ID, 'dsq_thread_id', true)."</p>";
|
||||
}
|
||||
?>
|
||||
|
||||
<div id="disqus_thread">
|
||||
<?php if (!get_option('disqus_disable_ssr') && have_comments()): ?>
|
||||
<div id="dsq-content">
|
||||
|
||||
<?php if (get_comment_pages_count() > 1 && get_option('page_comments')): // Are there comments to navigate through? ?>
|
||||
<div class="navigation">
|
||||
<div class="nav-previous">
|
||||
<span class="meta-nav">←</span>
|
||||
<?php previous_comments_link( dsq_i('Older Comments')); ?>
|
||||
</div>
|
||||
<div class="nav-next">
|
||||
<?php next_comments_link(dsq_i('Newer Comments')); ?>
|
||||
<span class="meta-nav">→</span>
|
||||
</div>
|
||||
</div> <!-- .navigation -->
|
||||
<?php endif; // check for comment navigation ?>
|
||||
|
||||
<ul id="dsq-comments">
|
||||
<?php
|
||||
/* Loop through and list the comments. Tell wp_list_comments()
|
||||
* to use dsq_comment() to format the comments.
|
||||
*/
|
||||
wp_list_comments(array('callback' => 'dsq_comment'));
|
||||
?>
|
||||
</ul>
|
||||
|
||||
<?php if (get_comment_pages_count() > 1 && get_option('page_comments')): // Are there comments to navigate through? ?>
|
||||
<div class="navigation">
|
||||
<div class="nav-previous">
|
||||
<span class="meta-nav">←</span>
|
||||
<?php previous_comments_link( dsq_i('Older Comments') ); ?>
|
||||
</div>
|
||||
<div class="nav-next">
|
||||
<?php next_comments_link( dsq_i('Newer Comments') ); ?>
|
||||
<span class="meta-nav">→</span>
|
||||
</div>
|
||||
</div><!-- .navigation -->
|
||||
<?php endif; // check for comment navigation ?>
|
||||
|
||||
</div>
|
||||
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
|
||||
global $wp_version;
|
||||
|
||||
$embed_vars = array(
|
||||
'disqusConfig' => array(
|
||||
'platform' => 'wordpress@'.$wp_version,
|
||||
'language' => apply_filters( 'disqus_language_filter', '' ),
|
||||
),
|
||||
'disqusIdentifier' => dsq_identifier_for_post( $post ),
|
||||
'disqusShortname' => strtolower( get_option( 'disqus_forum_url' ) ),
|
||||
'disqusTitle' => dsq_title_for_post( $post ),
|
||||
'disqusUrl' => get_permalink(),
|
||||
'options' => array(
|
||||
'manualSync' => get_option('disqus_manual_sync'),
|
||||
),
|
||||
'postId' => $post->ID,
|
||||
);
|
||||
|
||||
// Add SSO vars if enabled
|
||||
$sso = dsq_sso();
|
||||
if ($sso) {
|
||||
global $current_site;
|
||||
|
||||
foreach ($sso as $k=>$v) {
|
||||
$embed_vars['disqusConfig'][$k] = $v;
|
||||
}
|
||||
|
||||
$siteurl = site_url();
|
||||
$sitename = get_bloginfo('name');
|
||||
$embed_vars['disqusConfig']['sso'] = array(
|
||||
'name' => wp_specialchars_decode($sitename, ENT_QUOTES),
|
||||
'button' => get_option('disqus_sso_button'),
|
||||
'url' => $siteurl.'/wp-login.php',
|
||||
'logout' => $siteurl.'/wp-login.php?action=logout',
|
||||
'width' => '800',
|
||||
'height' => '700',
|
||||
);
|
||||
}
|
||||
|
||||
if ( get_option('dsq_external_js') == '1' ) {
|
||||
wp_register_script( 'dsq_embed_script', plugins_url( '/media/js/disqus.js', __FILE__ ) );
|
||||
wp_localize_script( 'dsq_embed_script', 'embedVars', $embed_vars );
|
||||
wp_enqueue_script( 'dsq_embed_script', plugins_url( '/media/js/disqus.js', __FILE__ ) );
|
||||
}
|
||||
else {
|
||||
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
var disqus_url = '<?php echo get_permalink(); ?>';
|
||||
var disqus_identifier = '<?php echo dsq_identifier_for_post($post); ?>';
|
||||
var disqus_container_id = 'disqus_thread';
|
||||
var disqus_shortname = '<?php echo strtolower(get_option('disqus_forum_url')); ?>';
|
||||
var disqus_title = <?php echo cf_json_encode( dsq_title_for_post($post) ); ?>;
|
||||
var disqus_config_custom = window.disqus_config;
|
||||
var disqus_config = function () {
|
||||
/*
|
||||
All currently supported events:
|
||||
onReady: fires when everything is ready,
|
||||
onNewComment: fires when a new comment is posted,
|
||||
onIdentify: fires when user is authenticated
|
||||
*/
|
||||
|
||||
<?php
|
||||
$sso = dsq_sso();
|
||||
if ($sso) {
|
||||
foreach ($sso as $k=>$v) {
|
||||
echo 'this.page.' . esc_js($k) . ' = \'' . esc_js($v) . '\';';
|
||||
echo "\n";
|
||||
}
|
||||
echo dsq_sso_login();
|
||||
}
|
||||
?>
|
||||
|
||||
this.language = '<?php echo esc_js( apply_filters('disqus_language_filter', '') ) ?>';
|
||||
<?php if (!get_option('disqus_manual_sync')): ?>
|
||||
this.callbacks.onReady.push(function () {
|
||||
|
||||
// sync comments in the background so we don't block the page
|
||||
var script = document.createElement('script');
|
||||
script.async = true;
|
||||
script.src = '?cf_action=sync_comments&post_id=<?php echo esc_attr( $post->ID ); ?>';
|
||||
|
||||
var firstScript = document.getElementsByTagName('script')[0];
|
||||
firstScript.parentNode.insertBefore(script, firstScript);
|
||||
});
|
||||
<?php endif; ?>
|
||||
|
||||
if (disqus_config_custom) {
|
||||
disqus_config_custom.call(this);
|
||||
}
|
||||
};
|
||||
|
||||
(function() {
|
||||
var dsq = document.createElement('script'); dsq.type = 'text/javascript';
|
||||
dsq.async = true;
|
||||
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
})();
|
||||
</script>
|
||||
|
||||
<?php
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,195 +1,195 @@
|
||||
<?php
|
||||
/**
|
||||
* Adapted from WordPress 2.8
|
||||
*/
|
||||
@set_time_limit(0);
|
||||
@ini_set('memory_limit', '256M');
|
||||
define('WXR_VERSION', '1.0');
|
||||
|
||||
/**
|
||||
* {@internal Missing Short Description}}
|
||||
*
|
||||
* @since unknown
|
||||
*
|
||||
* @param unknown_type $categories
|
||||
*/
|
||||
function dsq_export_wxr_missing_parents($categories) {
|
||||
if ( !is_array($categories) || empty($categories) )
|
||||
return array();
|
||||
|
||||
foreach ( $categories as $category )
|
||||
$parents[$category->term_id] = $category->parent;
|
||||
|
||||
$parents = array_unique(array_diff($parents, array_keys($parents)));
|
||||
|
||||
if ( $zero = array_search('0', $parents) )
|
||||
unset($parents[$zero]);
|
||||
|
||||
return $parents;
|
||||
}
|
||||
|
||||
/**
|
||||
* Place string in CDATA tag.
|
||||
*
|
||||
* @since unknown
|
||||
*
|
||||
* @param string $str String to place in XML CDATA tag.
|
||||
*/
|
||||
function dsq_export_wxr_cdata($str) {
|
||||
if ( seems_utf8($str) == false )
|
||||
$str = utf8_encode($str);
|
||||
|
||||
// $str = ent2ncr(esc_html($str));
|
||||
|
||||
$str = '<![CDATA[' . str_replace( ']]>', ']]]]><![CDATA[>', $str ) . ']]>';
|
||||
|
||||
return $str;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@internal Missing Short Description}}
|
||||
*
|
||||
* @since unknown
|
||||
*
|
||||
* @return string Site URL.
|
||||
*/
|
||||
function dsq_export_wxr_site_url() {
|
||||
global $current_site;
|
||||
|
||||
// mu: the base url
|
||||
if ( isset($current_site->domain) ) {
|
||||
return 'http://'.$current_site->domain.$current_site->path;
|
||||
}
|
||||
// wp: the blog url
|
||||
else {
|
||||
return get_bloginfo_rss('url');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@internal Missing Short Description}}
|
||||
*
|
||||
* @since unknown
|
||||
*
|
||||
* @param object $c Category Object
|
||||
*/
|
||||
function dsq_export_wxr_cat_name($c) {
|
||||
if ( empty($c->name) )
|
||||
return;
|
||||
|
||||
echo '<wp:cat_name>' . dsq_export_wxr_cdata($c->name) . '</wp:cat_name>';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@internal Missing Short Description}}
|
||||
*
|
||||
* @since unknown
|
||||
*
|
||||
* @param object $c Category Object
|
||||
*/
|
||||
function dsq_export_wxr_category_description($c) {
|
||||
if ( empty($c->description) )
|
||||
return;
|
||||
|
||||
echo '<wp:category_description>' . dsq_export_wxr_cdata($c->description) . '</wp:category_description>';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@internal Missing Short Description}}
|
||||
*
|
||||
* @since unknown
|
||||
*
|
||||
* @param object $t Tag Object
|
||||
*/
|
||||
function dsq_export_wxr_tag_name($t) {
|
||||
if ( empty($t->name) )
|
||||
return;
|
||||
|
||||
echo '<wp:tag_name>' . dsq_export_wxr_cdata($t->name) . '</wp:tag_name>';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@internal Missing Short Description}}
|
||||
*
|
||||
* @since unknown
|
||||
*
|
||||
* @param object $t Tag Object
|
||||
*/
|
||||
function dsq_export_wxr_tag_description($t) {
|
||||
if ( empty($t->description) )
|
||||
return;
|
||||
|
||||
echo '<wp:tag_description>' . dsq_export_wxr_cdata($t->description) . '</wp:tag_description>';
|
||||
}
|
||||
|
||||
// receives an array of posts to export
|
||||
function dsq_export_wp($post, $comments=null) {
|
||||
global $wpdb;
|
||||
|
||||
if (!$comments) {
|
||||
$comments = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_agent NOT LIKE 'Disqus/%%'", $post->ID) );
|
||||
}
|
||||
|
||||
// start catching output
|
||||
ob_start();
|
||||
|
||||
echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?' . ">\n";
|
||||
?>
|
||||
<?php the_generator('export');?>
|
||||
<rss version="2.0"
|
||||
xmlns:excerpt="http://wordpress.org/export/<?php echo WXR_VERSION; ?>/excerpt/"
|
||||
xmlns:content="http://purl.org/rss/1.0/modules/content/"
|
||||
xmlns:dsq="http://www.disqus.com/"
|
||||
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:wp="http://wordpress.org/export/<?php echo WXR_VERSION; ?>/"
|
||||
>
|
||||
|
||||
<channel>
|
||||
<title><?php bloginfo_rss('name'); ?></title>
|
||||
<link><?php bloginfo_rss('url') ?></link>
|
||||
<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></pubDate>
|
||||
<generator>WordPress <?php bloginfo_rss('version'); ?>; Disqus <?php echo DISQUS_VERSION; ?></generator>
|
||||
<?php
|
||||
global $wp_query, $post;
|
||||
$wp_query->in_the_loop = true; // Fake being in the loop.
|
||||
setup_postdata($post); ?>
|
||||
<item>
|
||||
<title><?php echo apply_filters('the_title_rss', $post->post_title); ?></title>
|
||||
<link><?php the_permalink_rss() ?></link>
|
||||
<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
|
||||
<dc:creator><?php echo dsq_export_wxr_cdata(get_the_author()); ?></dc:creator>
|
||||
<guid isPermaLink="false"><?php the_guid(); ?></guid>
|
||||
<content:encoded><?php echo dsq_export_wxr_cdata( apply_filters('the_content_export', $post->post_content) ); ?></content:encoded>
|
||||
<dsq:thread_identifier><?php echo dsq_identifier_for_post($post); ?></dsq:thread_identifier>
|
||||
<wp:post_id><?php echo $post->ID; ?></wp:post_id>
|
||||
<wp:post_date_gmt><?php echo $post->post_date_gmt; ?></wp:post_date_gmt>
|
||||
<wp:comment_status><?php echo $post->comment_status; ?></wp:comment_status>
|
||||
<?php
|
||||
if ( $comments ) { foreach ( $comments as $c ) { ?>
|
||||
<wp:comment>
|
||||
<wp:comment_id><?php echo $c->comment_ID; ?></wp:comment_id>
|
||||
<wp:comment_author><?php echo dsq_export_wxr_cdata($c->comment_author); ?></wp:comment_author>
|
||||
<wp:comment_author_email><?php echo $c->comment_author_email; ?></wp:comment_author_email>
|
||||
<wp:comment_author_url><?php echo $c->comment_author_url; ?></wp:comment_author_url>
|
||||
<wp:comment_author_IP><?php echo $c->comment_author_IP; ?></wp:comment_author_IP>
|
||||
<wp:comment_date><?php echo $c->comment_date; ?></wp:comment_date>
|
||||
<wp:comment_date_gmt><?php echo $c->comment_date_gmt; ?></wp:comment_date_gmt>
|
||||
<wp:comment_content><?php echo dsq_export_wxr_cdata($c->comment_content) ?></wp:comment_content>
|
||||
<wp:comment_approved><?php echo $c->comment_approved; ?></wp:comment_approved>
|
||||
<wp:comment_type><?php echo $c->comment_type; ?></wp:comment_type>
|
||||
<wp:comment_parent><?php echo $c->comment_parent; ?></wp:comment_parent>
|
||||
</wp:comment>
|
||||
<?php } } // comments ?>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
<?php
|
||||
|
||||
// end of WXR output
|
||||
$output = ob_get_clean();
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* Adapted from WordPress 2.8
|
||||
*/
|
||||
@set_time_limit(0);
|
||||
@ini_set('memory_limit', '256M');
|
||||
define('WXR_VERSION', '1.0');
|
||||
|
||||
/**
|
||||
* {@internal Missing Short Description}}
|
||||
*
|
||||
* @since unknown
|
||||
*
|
||||
* @param unknown_type $categories
|
||||
*/
|
||||
function dsq_export_wxr_missing_parents($categories) {
|
||||
if ( !is_array($categories) || empty($categories) )
|
||||
return array();
|
||||
|
||||
foreach ( $categories as $category )
|
||||
$parents[$category->term_id] = $category->parent;
|
||||
|
||||
$parents = array_unique(array_diff($parents, array_keys($parents)));
|
||||
|
||||
if ( $zero = array_search('0', $parents) )
|
||||
unset($parents[$zero]);
|
||||
|
||||
return $parents;
|
||||
}
|
||||
|
||||
/**
|
||||
* Place string in CDATA tag.
|
||||
*
|
||||
* @since unknown
|
||||
*
|
||||
* @param string $str String to place in XML CDATA tag.
|
||||
*/
|
||||
function dsq_export_wxr_cdata($str) {
|
||||
if ( seems_utf8($str) == false )
|
||||
$str = utf8_encode($str);
|
||||
|
||||
// $str = ent2ncr(esc_html($str));
|
||||
|
||||
$str = '<![CDATA[' . str_replace( ']]>', ']]]]><![CDATA[>', $str ) . ']]>';
|
||||
|
||||
return $str;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@internal Missing Short Description}}
|
||||
*
|
||||
* @since unknown
|
||||
*
|
||||
* @return string Site URL.
|
||||
*/
|
||||
function dsq_export_wxr_site_url() {
|
||||
global $current_site;
|
||||
|
||||
// mu: the base url
|
||||
if ( isset($current_site->domain) ) {
|
||||
return 'http://'.$current_site->domain.$current_site->path;
|
||||
}
|
||||
// wp: the blog url
|
||||
else {
|
||||
return get_bloginfo_rss('url');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@internal Missing Short Description}}
|
||||
*
|
||||
* @since unknown
|
||||
*
|
||||
* @param object $c Category Object
|
||||
*/
|
||||
function dsq_export_wxr_cat_name($c) {
|
||||
if ( empty($c->name) )
|
||||
return;
|
||||
|
||||
echo '<wp:cat_name>' . dsq_export_wxr_cdata($c->name) . '</wp:cat_name>';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@internal Missing Short Description}}
|
||||
*
|
||||
* @since unknown
|
||||
*
|
||||
* @param object $c Category Object
|
||||
*/
|
||||
function dsq_export_wxr_category_description($c) {
|
||||
if ( empty($c->description) )
|
||||
return;
|
||||
|
||||
echo '<wp:category_description>' . dsq_export_wxr_cdata($c->description) . '</wp:category_description>';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@internal Missing Short Description}}
|
||||
*
|
||||
* @since unknown
|
||||
*
|
||||
* @param object $t Tag Object
|
||||
*/
|
||||
function dsq_export_wxr_tag_name($t) {
|
||||
if ( empty($t->name) )
|
||||
return;
|
||||
|
||||
echo '<wp:tag_name>' . dsq_export_wxr_cdata($t->name) . '</wp:tag_name>';
|
||||
}
|
||||
|
||||
/**
|
||||
* {@internal Missing Short Description}}
|
||||
*
|
||||
* @since unknown
|
||||
*
|
||||
* @param object $t Tag Object
|
||||
*/
|
||||
function dsq_export_wxr_tag_description($t) {
|
||||
if ( empty($t->description) )
|
||||
return;
|
||||
|
||||
echo '<wp:tag_description>' . dsq_export_wxr_cdata($t->description) . '</wp:tag_description>';
|
||||
}
|
||||
|
||||
// receives an array of posts to export
|
||||
function dsq_export_wp($post, $comments=null) {
|
||||
global $wpdb;
|
||||
|
||||
if (!$comments) {
|
||||
$comments = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_agent NOT LIKE 'Disqus/%%'", $post->ID) );
|
||||
}
|
||||
|
||||
// start catching output
|
||||
ob_start();
|
||||
|
||||
echo '<?xml version="1.0" encoding="' . get_bloginfo('charset') . '"?' . ">\n";
|
||||
?>
|
||||
<?php the_generator('export');?>
|
||||
<rss version="2.0"
|
||||
xmlns:excerpt="http://wordpress.org/export/<?php echo WXR_VERSION; ?>/excerpt/"
|
||||
xmlns:content="http://purl.org/rss/1.0/modules/content/"
|
||||
xmlns:dsq="http://www.disqus.com/"
|
||||
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:wp="http://wordpress.org/export/<?php echo WXR_VERSION; ?>/"
|
||||
>
|
||||
|
||||
<channel>
|
||||
<title><?php bloginfo_rss('name'); ?></title>
|
||||
<link><?php bloginfo_rss('url') ?></link>
|
||||
<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></pubDate>
|
||||
<generator>WordPress <?php bloginfo_rss('version'); ?>; Disqus <?php echo DISQUS_VERSION; ?></generator>
|
||||
<?php
|
||||
global $wp_query, $post;
|
||||
$wp_query->in_the_loop = true; // Fake being in the loop.
|
||||
setup_postdata($post); ?>
|
||||
<item>
|
||||
<title><?php echo apply_filters('the_title_rss', $post->post_title); ?></title>
|
||||
<link><?php the_permalink_rss() ?></link>
|
||||
<pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
|
||||
<dc:creator><?php echo dsq_export_wxr_cdata(get_the_author()); ?></dc:creator>
|
||||
<guid isPermaLink="false"><?php the_guid(); ?></guid>
|
||||
<content:encoded><?php echo dsq_export_wxr_cdata( apply_filters('the_content_export', $post->post_content) ); ?></content:encoded>
|
||||
<dsq:thread_identifier><?php echo dsq_identifier_for_post($post); ?></dsq:thread_identifier>
|
||||
<wp:post_id><?php echo $post->ID; ?></wp:post_id>
|
||||
<wp:post_date_gmt><?php echo $post->post_date_gmt; ?></wp:post_date_gmt>
|
||||
<wp:comment_status><?php echo $post->comment_status; ?></wp:comment_status>
|
||||
<?php
|
||||
if ( $comments ) { foreach ( $comments as $c ) { ?>
|
||||
<wp:comment>
|
||||
<wp:comment_id><?php echo $c->comment_ID; ?></wp:comment_id>
|
||||
<wp:comment_author><?php echo dsq_export_wxr_cdata($c->comment_author); ?></wp:comment_author>
|
||||
<wp:comment_author_email><?php echo $c->comment_author_email; ?></wp:comment_author_email>
|
||||
<wp:comment_author_url><?php echo $c->comment_author_url; ?></wp:comment_author_url>
|
||||
<wp:comment_author_IP><?php echo $c->comment_author_IP; ?></wp:comment_author_IP>
|
||||
<wp:comment_date><?php echo $c->comment_date; ?></wp:comment_date>
|
||||
<wp:comment_date_gmt><?php echo $c->comment_date_gmt; ?></wp:comment_date_gmt>
|
||||
<wp:comment_content><?php echo dsq_export_wxr_cdata($c->comment_content) ?></wp:comment_content>
|
||||
<wp:comment_approved><?php echo $c->comment_approved; ?></wp:comment_approved>
|
||||
<wp:comment_type><?php echo $c->comment_type; ?></wp:comment_type>
|
||||
<wp:comment_parent><?php echo $c->comment_parent; ?></wp:comment_parent>
|
||||
</wp:comment>
|
||||
<?php } } // comments ?>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
<?php
|
||||
|
||||
// end of WXR output
|
||||
$output = ob_get_clean();
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,202 +0,0 @@
|
||||
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright 2010 DISQUS
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
@@ -1,18 +0,0 @@
|
||||
Disqus API 1.1
|
||||
|
||||
Please see http://groups.google.com/group/disqus-dev/web/api-1-1 for more information.
|
||||
|
||||
Sample usage::
|
||||
|
||||
require('disqus/disqus.php');
|
||||
|
||||
$dsq = new DisqusAPI($user_api_key, $forum_api_key);
|
||||
if (($username = $dsq->get_user_name()) === false)
|
||||
{
|
||||
throw new Exception($dsq->get_last_error());
|
||||
}
|
||||
|
||||
|
||||
To run the included unit tests you will need to install PHPUnit::
|
||||
|
||||
php disqus/tests.php <your user_api_key>
|
||||
@@ -1,461 +1,461 @@
|
||||
<?php
|
||||
/**
|
||||
* Implementation of the Disqus v1.1 API.
|
||||
*
|
||||
* http://groups.google.com/group/disqus-dev/web/api-1-1
|
||||
*
|
||||
* @author Disqus <team@disqus.com>
|
||||
* @copyright 2007-2010 Big Head Labs
|
||||
* @link http://disqus.com/
|
||||
* @package Disqus
|
||||
* @version 1.1
|
||||
*/
|
||||
|
||||
require_once(dirname(__FILE__) . '/url.php');
|
||||
|
||||
/** @#+
|
||||
* Constants
|
||||
*/
|
||||
/**
|
||||
* Base URL for Disqus.
|
||||
*/
|
||||
|
||||
define('DISQUS_TYPE_SPAM', 'spam');
|
||||
define('DISQUS_TYPE_DELETED', 'killed');
|
||||
define('DISQUS_TYPE_KILLED', DISQUS_TYPE_DELETED);
|
||||
define('DISQUS_TYPE_NEW', 'new');
|
||||
|
||||
define('DISQUS_STATE_APPROVED', 'approved');
|
||||
define('DISQUS_STATE_UNAPPROVED', 'unapproved');
|
||||
define('DISQUS_STATE_SPAM', 'spam');
|
||||
define('DISQUS_STATE_DELETED', 'killed');
|
||||
define('DISQUS_STATE_KILLED', DISQUS_STATE_DELETED);
|
||||
|
||||
define('DISQUS_ACTION_SPAM', 'spam');
|
||||
define('DISQUS_ACTION_APPROVE', 'approve');
|
||||
define('DISQUS_ACTION_DELETE', 'delete');
|
||||
define('DISQUS_ACTION_KILL', 'kill');
|
||||
|
||||
if (!extension_loaded('json')) {
|
||||
require_once(dirname(__FILE__) . '/json.php');
|
||||
function dsq_json_decode($data) {
|
||||
$json = new JSON;
|
||||
return $json->unserialize($data);
|
||||
}
|
||||
} else {
|
||||
function dsq_json_decode($data) {
|
||||
return json_decode($data);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper methods for all of the Disqus 1.1 API methods.
|
||||
*
|
||||
* @package Disqus
|
||||
* @author DISQUS.com <team@disqus.com>
|
||||
* @copyright 2007-2010 Big Head Labs
|
||||
* @version 1.1
|
||||
*/
|
||||
class DisqusAPI {
|
||||
var $user_api_key;
|
||||
var $forum_api_key;
|
||||
var $api_url = 'https://www.disqus.com/api/';
|
||||
var $api_version = '1.1';
|
||||
|
||||
/**
|
||||
* Creates a new interface to the Disqus API.
|
||||
*
|
||||
* @param $user_api_key
|
||||
* (optional) The User API key to use.
|
||||
* @param $forum_api_key
|
||||
* (optional) The Forum API key to use.
|
||||
* @param $api_url
|
||||
* (optional) The prefix URL to use when calling the Disqus API.
|
||||
*/
|
||||
function DisqusAPI($user_api_key, $forum_api_key, $api_url='https://www.disqus.com/api/') {
|
||||
$this->user_api_key = $user_api_key;
|
||||
$this->forum_api_key = $forum_api_key;
|
||||
$this->api_url = $api_url;
|
||||
$this->last_error = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes a call to a Disqus API method.
|
||||
*
|
||||
* @return
|
||||
* The Disqus object.
|
||||
* @param $method
|
||||
* The Disqus API method to call.
|
||||
* @param $args
|
||||
* An associative array of arguments to be passed.
|
||||
* @param $post
|
||||
* TRUE or FALSE, depending on whether we're making a POST call.
|
||||
*/
|
||||
function call($method, $args=array(), $post=false) {
|
||||
$url = $this->api_url . $method . '/';
|
||||
|
||||
if (!isset($args['user_api_key'])) {
|
||||
$args['user_api_key'] = $this->user_api_key;
|
||||
}
|
||||
if (!isset($args['forum_api_key'])) {
|
||||
$args['forum_api_key'] = $this->forum_api_key;
|
||||
}
|
||||
if (!isset($args['api_version'])) {
|
||||
$args['api_version'] = $this->api_version;
|
||||
}
|
||||
|
||||
foreach ($args as $key=>$value) {
|
||||
// XXX: Disqus is lacking some exception handling and we sometimes
|
||||
// end up with 500s when passing invalid values
|
||||
if (empty($value)) unset($args[$key]);
|
||||
}
|
||||
|
||||
if (!$post) {
|
||||
$url .= '?' . dsq_get_query_string($args);
|
||||
$args = null;
|
||||
}
|
||||
|
||||
if (!($response = dsq_urlopen($url, $args)) || !$response['code']) {
|
||||
$this->last_error = 'Unable to connect to the Disqus API servers';
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($response['code'] != 200) {
|
||||
if ($response['code'] == 500) {
|
||||
// Try to grab the exception ID for better reporting
|
||||
if (!empty($response['headers']['X-Sentry-ID'])) {
|
||||
$this->last_error = 'DISQUS returned a bad response (HTTP '.$response['code'].', ReferenceID: '.$response['headers']['X-Sentry-ID'].')';
|
||||
return false;
|
||||
}
|
||||
} elseif ($response['code'] == 400) {
|
||||
$data = dsq_json_decode($response['data']);
|
||||
if ($data && $data->message) {
|
||||
$this->last_error = $data->message;
|
||||
} else {
|
||||
$this->last_error = "DISQUS returned a bad response (HTTP ".$response['code'].")";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
$this->last_error = "DISQUS returned a bad response (HTTP ".$response['code'].")";
|
||||
return false;
|
||||
}
|
||||
|
||||
$data = dsq_json_decode($response['data']);
|
||||
|
||||
if (!$data) {
|
||||
$this->last_error = 'No valid JSON content returned from Disqus';
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$data->succeeded) {
|
||||
if (!$data->message) {
|
||||
$this->last_error = '(No error message was received)';
|
||||
} else {
|
||||
$this->last_error = $data->message;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->last_error = null;
|
||||
|
||||
return $data->message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the last error message recorded.
|
||||
*
|
||||
* @return
|
||||
* The last recorded error from the API
|
||||
*/
|
||||
function get_last_error() {
|
||||
if (empty($this->last_error)) return;
|
||||
if (!is_string($this->last_error)) {
|
||||
return var_export($this->last_error);
|
||||
}
|
||||
return $this->last_error;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate API key and get username.
|
||||
*
|
||||
* @return
|
||||
* Username matching the API key
|
||||
*/
|
||||
function get_user_name() {
|
||||
return $this->call('get_user_name', array(), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of hashes representing all forums the user owns.
|
||||
*
|
||||
* @return
|
||||
* An array of hashes representing all forums the user owns.
|
||||
*/
|
||||
function get_forum_list() {
|
||||
return $this->call('get_forum_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a forum API key for a specific forum.
|
||||
*
|
||||
* @param $forum_id
|
||||
* the unique id of the forum
|
||||
* @return
|
||||
* A string which is the Forum Key for the given forum.
|
||||
*/
|
||||
function get_forum_api_key($forum_id) {
|
||||
$params = array(
|
||||
'forum_id' => $forum_id,
|
||||
);
|
||||
|
||||
return $this->call('get_forum_api_key', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of comments on a website.
|
||||
*
|
||||
* Both filter and exclude are multivalue arguments with comma as a divider.
|
||||
* That makes is possible to use combined requests. For example, if you want
|
||||
* to get all deleted spam messages, your filter argument should contain
|
||||
* 'spam,killed' string.
|
||||
*
|
||||
* @param $forum_id
|
||||
* The forum ID.
|
||||
* @param $params
|
||||
* - limit: Number of entries that should be included in the response. Default is 25.
|
||||
* - start: Starting point for the query. Default is 0.
|
||||
* - filter: Type of entries that should be returned.
|
||||
* - exclude: Type of entries that should be excluded from the response.
|
||||
* @return
|
||||
* Returns posts from a forum specified by id.
|
||||
*/
|
||||
function get_forum_posts($forum_id, $params=array()) {
|
||||
$params['forum_id'] = $forum_id;
|
||||
|
||||
return $this->call('get_forum_posts', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Count a number of comments in articles.
|
||||
*
|
||||
* @param $thread_ids
|
||||
* an array of thread IDs belonging to the given forum.
|
||||
* @return
|
||||
* A hash having thread_ids as keys and 2-element arrays as values.
|
||||
*/
|
||||
function get_num_posts($thread_ids) {
|
||||
$params = array(
|
||||
'thread_ids' => is_array($thread_ids) ? implode(',', $thread_ids) : $thread_ids,
|
||||
);
|
||||
|
||||
return $this->call('get_num_posts', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of categories that were created for a website (forum) provided.
|
||||
*
|
||||
* @param $forum_id
|
||||
* the unique of the forum
|
||||
* @return
|
||||
* A hash containing category_id, title, forum_id, and is_default.
|
||||
*/
|
||||
function get_categories_list($forum_id) {
|
||||
$params = array(
|
||||
'forum_id' => $forum_id,
|
||||
);
|
||||
|
||||
return $this->call('get_categories_list', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of threads on a website.
|
||||
*
|
||||
* @param $forum_id
|
||||
* the unique id of the forum.
|
||||
* @param $params
|
||||
* - limit: Number of entries that should be included in the response. Default is 25.
|
||||
* - start: Starting point for the query. Default is 0.
|
||||
* - category_id: Filter entries by category
|
||||
* @return
|
||||
* An array of hashes representing all threads belonging to the given forum.
|
||||
*/
|
||||
function get_thread_list($forum_id, $params=array()) {
|
||||
$params['forum_id'] = $forum_id;
|
||||
|
||||
return $this->call('get_thread_list', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of threads with new comments.
|
||||
*
|
||||
* @param $forum_id
|
||||
* The Forum ID.
|
||||
* @param $since
|
||||
* Start date for new posts. Format: 2009-03-30T15:41, Timezone: UTC.
|
||||
* @return
|
||||
* An array of hashes representing all threads with new comments since offset.
|
||||
*/
|
||||
function get_updated_threads($forum_id, $since) {
|
||||
$params = array(
|
||||
'forum_id' => $forum_id,
|
||||
'since' => is_string($since) ? $string : strftime('%Y-%m-%dT%H:%M', $since),
|
||||
);
|
||||
|
||||
return $this->call('get_updated_threads', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of comments in a thread.
|
||||
*
|
||||
* Both filter and exclude are multivalue arguments with comma as a divider.
|
||||
* That makes is possible to use combined requests. For example, if you want
|
||||
* to get all deleted spam messages, your filter argument should contain
|
||||
* 'spam,killed' string. Note that values are joined by AND statement so
|
||||
* 'spam,new' will return all messages that are new and marked as spam. It
|
||||
* will not return messages that are new and not spam or that are spam but
|
||||
* not new (i.e. has already been moderated).
|
||||
*
|
||||
* @param $thread_id
|
||||
* The ID of a thread belonging to the given forum
|
||||
* @param $params
|
||||
* - limit: Number of entries that should be included in the response. Default is 25.
|
||||
* - start: Starting point for the query. Default is 0.
|
||||
* - filter: Type of entries that should be returned (new, spam or killed).
|
||||
* - exclude: Type of entries that should be excluded from the response (new, spam or killed).
|
||||
* @return
|
||||
* An array of hashes representing representing all posts belonging to the
|
||||
* given forum.
|
||||
*/
|
||||
function get_thread_posts($thread_id, $params=array()) {
|
||||
$params['thread_id'] = $thread_id;
|
||||
|
||||
return $this->call('get_thread_posts', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get or create thread by identifier.
|
||||
*
|
||||
* This method tries to find a thread by its identifier and title. If there is
|
||||
* no such thread, the method creates it. In either case, the output value is
|
||||
* a thread object.
|
||||
*
|
||||
* @param $identifier
|
||||
* Unique value (per forum) for a thread that is used to keep be able to get
|
||||
* data even if permalink is changed.
|
||||
* @param $title
|
||||
* The title of the thread to possibly be created.
|
||||
* @param $params
|
||||
* - category_id: Filter entries by category
|
||||
* - create_on_fail: if thread does not exist, the method will create it
|
||||
* @return
|
||||
* Returns a hash with two keys:
|
||||
* - thread: a hash representing the thread corresponding to the identifier.
|
||||
* - created: indicates whether the thread was created as a result of this
|
||||
* method call. If created, it will have the specified title.
|
||||
*/
|
||||
function thread_by_identifier($identifier, $title, $params=array()) {
|
||||
$params['identifier'] = $identifier;
|
||||
$params['title'] = $title;
|
||||
|
||||
return $this->call('thread_by_identifier', $params, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get thread by URL.
|
||||
*
|
||||
* Finds a thread by its URL. Output value is a thread object.
|
||||
*
|
||||
* @param $url
|
||||
* the URL to check for an associated thread
|
||||
* @param $partner_api_key
|
||||
* (optional) The Partner API key.
|
||||
* @return
|
||||
* A thread object, otherwise NULL.
|
||||
*/
|
||||
function get_thread_by_url($url, $partner_api_key=null) {
|
||||
$params = array(
|
||||
'url' => $url,
|
||||
'partner_api_key' => $partner_api_key,
|
||||
);
|
||||
|
||||
return $this->call('get_thread_by_url', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates thread.
|
||||
*
|
||||
* Updates thread, specified by id and forum API key, with values described in
|
||||
* the optional arguments.
|
||||
*
|
||||
* @param $thread_id
|
||||
* the ID of a thread belonging to the given forum
|
||||
* @param $params
|
||||
* - title: the title of the thread
|
||||
* - slug: the per-forum-unique string used for identifying this thread in
|
||||
* disqus.com URL’s relating to this thread. Composed of
|
||||
* underscore-separated alphanumeric strings.
|
||||
* - url: the URL this thread is on, if known.
|
||||
* - allow_comments: whether this thread is open to new comments
|
||||
* @return
|
||||
* Returns an empty success message.
|
||||
*/
|
||||
function update_thread($thread_id, $params=array()) {
|
||||
$params['thread_id'] = $thread_id;
|
||||
|
||||
return $this->call('update_thread', $params, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new post.
|
||||
*
|
||||
* Creates a comment to the thread specified by id.
|
||||
*
|
||||
* @param $thread_id
|
||||
* the thread to post to
|
||||
* @param $message
|
||||
* the content of the post
|
||||
* @param $author_name
|
||||
* the post creator’s name
|
||||
* @param $author_email
|
||||
* the post creator’s email address
|
||||
* @param $params
|
||||
* - partner_api_key
|
||||
* - created_at: Format: 2009-03-30T15:41, Timezone: UTC
|
||||
* - ip_address: the author’s IP address
|
||||
* - author_url: the author's homepage
|
||||
* - parent_post: the id of the parent post
|
||||
* - state: Comment's state, must be one of the following: approved,
|
||||
* unapproved, spam, killed
|
||||
* @return
|
||||
* Returns modified version.
|
||||
*/
|
||||
function create_post($thread_id, $message, $author_name, $author_email, $params=array()) {
|
||||
$params['thread_id'] = $thread_id;
|
||||
$params['message'] = $message;
|
||||
$params['author_name'] = $author_name;
|
||||
$params['author_email'] = $author_email;
|
||||
|
||||
return $this->call('create_post', $params, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a comment or mark it as spam (or not spam).
|
||||
*
|
||||
* @param $post_id
|
||||
* The Post ID.
|
||||
* @param $action
|
||||
* Name of action to be performed. Value can be 'spam', 'approve' or 'kill'.
|
||||
* @return
|
||||
* Returns modified version.
|
||||
*/
|
||||
function moderate_post($post_id, $action) {
|
||||
$params = array(
|
||||
'post_id' => $post_id,
|
||||
'action' => $action,
|
||||
);
|
||||
|
||||
return $this->call('moderate_post', $params, true);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* Implementation of the Disqus v1.1 API.
|
||||
*
|
||||
* http://groups.google.com/group/disqus-dev/web/api-1-1
|
||||
*
|
||||
* @author Disqus <team@disqus.com>
|
||||
* @copyright 2007-2010 Big Head Labs
|
||||
* @link http://disqus.com/
|
||||
* @package Disqus
|
||||
* @version 1.1
|
||||
*/
|
||||
|
||||
require_once(dirname(__FILE__) . '/url.php');
|
||||
|
||||
/** @#+
|
||||
* Constants
|
||||
*/
|
||||
/**
|
||||
* Base URL for Disqus.
|
||||
*/
|
||||
|
||||
define('DISQUS_TYPE_SPAM', 'spam');
|
||||
define('DISQUS_TYPE_DELETED', 'killed');
|
||||
define('DISQUS_TYPE_KILLED', DISQUS_TYPE_DELETED);
|
||||
define('DISQUS_TYPE_NEW', 'new');
|
||||
|
||||
define('DISQUS_STATE_APPROVED', 'approved');
|
||||
define('DISQUS_STATE_UNAPPROVED', 'unapproved');
|
||||
define('DISQUS_STATE_SPAM', 'spam');
|
||||
define('DISQUS_STATE_DELETED', 'killed');
|
||||
define('DISQUS_STATE_KILLED', DISQUS_STATE_DELETED);
|
||||
|
||||
define('DISQUS_ACTION_SPAM', 'spam');
|
||||
define('DISQUS_ACTION_APPROVE', 'approve');
|
||||
define('DISQUS_ACTION_DELETE', 'delete');
|
||||
define('DISQUS_ACTION_KILL', 'kill');
|
||||
|
||||
if (!extension_loaded('json')) {
|
||||
require_once(dirname(__FILE__) . '/json.php');
|
||||
function dsq_json_decode($data) {
|
||||
$json = new JSON;
|
||||
return $json->unserialize($data);
|
||||
}
|
||||
} else {
|
||||
function dsq_json_decode($data) {
|
||||
return json_decode($data);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper methods for all of the Disqus 1.1 API methods.
|
||||
*
|
||||
* @package Disqus
|
||||
* @author DISQUS.com <team@disqus.com>
|
||||
* @copyright 2007-2010 Big Head Labs
|
||||
* @version 1.1
|
||||
*/
|
||||
class DisqusAPI {
|
||||
var $user_api_key;
|
||||
var $forum_api_key;
|
||||
var $api_url = 'https://www.disqus.com/api/';
|
||||
var $api_version = '1.1';
|
||||
|
||||
/**
|
||||
* Creates a new interface to the Disqus API.
|
||||
*
|
||||
* @param $user_api_key
|
||||
* (optional) The User API key to use.
|
||||
* @param $forum_api_key
|
||||
* (optional) The Forum API key to use.
|
||||
* @param $api_url
|
||||
* (optional) The prefix URL to use when calling the Disqus API.
|
||||
*/
|
||||
function DisqusAPI($user_api_key, $forum_api_key, $api_url='https://www.disqus.com/api/') {
|
||||
$this->user_api_key = $user_api_key;
|
||||
$this->forum_api_key = $forum_api_key;
|
||||
$this->api_url = $api_url;
|
||||
$this->last_error = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes a call to a Disqus API method.
|
||||
*
|
||||
* @return
|
||||
* The Disqus object.
|
||||
* @param $method
|
||||
* The Disqus API method to call.
|
||||
* @param $args
|
||||
* An associative array of arguments to be passed.
|
||||
* @param $post
|
||||
* TRUE or FALSE, depending on whether we're making a POST call.
|
||||
*/
|
||||
function call($method, $args=array(), $post=false) {
|
||||
$url = $this->api_url . $method . '/';
|
||||
|
||||
if (!isset($args['user_api_key'])) {
|
||||
$args['user_api_key'] = $this->user_api_key;
|
||||
}
|
||||
if (!isset($args['forum_api_key'])) {
|
||||
$args['forum_api_key'] = $this->forum_api_key;
|
||||
}
|
||||
if (!isset($args['api_version'])) {
|
||||
$args['api_version'] = $this->api_version;
|
||||
}
|
||||
|
||||
foreach ($args as $key=>$value) {
|
||||
// XXX: Disqus is lacking some exception handling and we sometimes
|
||||
// end up with 500s when passing invalid values
|
||||
if (empty($value)) unset($args[$key]);
|
||||
}
|
||||
|
||||
if (!$post) {
|
||||
$url .= '?' . dsq_get_query_string($args);
|
||||
$args = null;
|
||||
}
|
||||
|
||||
if (!($response = dsq_urlopen($url, $args)) || !$response['code']) {
|
||||
$this->last_error = 'Unable to connect to the Disqus API servers';
|
||||
return false;
|
||||
}
|
||||
|
||||
if ($response['code'] != 200) {
|
||||
if ($response['code'] == 500) {
|
||||
// Try to grab the exception ID for better reporting
|
||||
if (!empty($response['headers']['X-Sentry-ID'])) {
|
||||
$this->last_error = 'DISQUS returned a bad response (HTTP '.$response['code'].', ReferenceID: '.$response['headers']['X-Sentry-ID'].')';
|
||||
return false;
|
||||
}
|
||||
} elseif ($response['code'] == 400) {
|
||||
$data = dsq_json_decode($response['data']);
|
||||
if ($data && $data->message) {
|
||||
$this->last_error = $data->message;
|
||||
} else {
|
||||
$this->last_error = "DISQUS returned a bad response (HTTP ".$response['code'].")";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
$this->last_error = "DISQUS returned a bad response (HTTP ".$response['code'].")";
|
||||
return false;
|
||||
}
|
||||
|
||||
$data = dsq_json_decode($response['data']);
|
||||
|
||||
if (!$data) {
|
||||
$this->last_error = 'No valid JSON content returned from Disqus';
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!$data->succeeded) {
|
||||
if (!$data->message) {
|
||||
$this->last_error = '(No error message was received)';
|
||||
} else {
|
||||
$this->last_error = $data->message;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->last_error = null;
|
||||
|
||||
return $data->message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the last error message recorded.
|
||||
*
|
||||
* @return
|
||||
* The last recorded error from the API
|
||||
*/
|
||||
function get_last_error() {
|
||||
if (empty($this->last_error)) return;
|
||||
if (!is_string($this->last_error)) {
|
||||
return var_export($this->last_error);
|
||||
}
|
||||
return $this->last_error;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validate API key and get username.
|
||||
*
|
||||
* @return
|
||||
* Username matching the API key
|
||||
*/
|
||||
function get_user_name() {
|
||||
return $this->call('get_user_name', array(), true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of hashes representing all forums the user owns.
|
||||
*
|
||||
* @return
|
||||
* An array of hashes representing all forums the user owns.
|
||||
*/
|
||||
function get_forum_list() {
|
||||
return $this->call('get_forum_list');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a forum API key for a specific forum.
|
||||
*
|
||||
* @param $forum_id
|
||||
* the unique id of the forum
|
||||
* @return
|
||||
* A string which is the Forum Key for the given forum.
|
||||
*/
|
||||
function get_forum_api_key($forum_id) {
|
||||
$params = array(
|
||||
'forum_id' => $forum_id,
|
||||
);
|
||||
|
||||
return $this->call('get_forum_api_key', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of comments on a website.
|
||||
*
|
||||
* Both filter and exclude are multivalue arguments with comma as a divider.
|
||||
* That makes is possible to use combined requests. For example, if you want
|
||||
* to get all deleted spam messages, your filter argument should contain
|
||||
* 'spam,killed' string.
|
||||
*
|
||||
* @param $forum_id
|
||||
* The forum ID.
|
||||
* @param $params
|
||||
* - limit: Number of entries that should be included in the response. Default is 25.
|
||||
* - start: Starting point for the query. Default is 0.
|
||||
* - filter: Type of entries that should be returned.
|
||||
* - exclude: Type of entries that should be excluded from the response.
|
||||
* @return
|
||||
* Returns posts from a forum specified by id.
|
||||
*/
|
||||
function get_forum_posts($forum_id, $params=array()) {
|
||||
$params['forum_id'] = $forum_id;
|
||||
|
||||
return $this->call('get_forum_posts', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Count a number of comments in articles.
|
||||
*
|
||||
* @param $thread_ids
|
||||
* an array of thread IDs belonging to the given forum.
|
||||
* @return
|
||||
* A hash having thread_ids as keys and 2-element arrays as values.
|
||||
*/
|
||||
function get_num_posts($thread_ids) {
|
||||
$params = array(
|
||||
'thread_ids' => is_array($thread_ids) ? implode(',', $thread_ids) : $thread_ids,
|
||||
);
|
||||
|
||||
return $this->call('get_num_posts', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of categories that were created for a website (forum) provided.
|
||||
*
|
||||
* @param $forum_id
|
||||
* the unique of the forum
|
||||
* @return
|
||||
* A hash containing category_id, title, forum_id, and is_default.
|
||||
*/
|
||||
function get_categories_list($forum_id) {
|
||||
$params = array(
|
||||
'forum_id' => $forum_id,
|
||||
);
|
||||
|
||||
return $this->call('get_categories_list', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of threads on a website.
|
||||
*
|
||||
* @param $forum_id
|
||||
* the unique id of the forum.
|
||||
* @param $params
|
||||
* - limit: Number of entries that should be included in the response. Default is 25.
|
||||
* - start: Starting point for the query. Default is 0.
|
||||
* - category_id: Filter entries by category
|
||||
* @return
|
||||
* An array of hashes representing all threads belonging to the given forum.
|
||||
*/
|
||||
function get_thread_list($forum_id, $params=array()) {
|
||||
$params['forum_id'] = $forum_id;
|
||||
|
||||
return $this->call('get_thread_list', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of threads with new comments.
|
||||
*
|
||||
* @param $forum_id
|
||||
* The Forum ID.
|
||||
* @param $since
|
||||
* Start date for new posts. Format: 2009-03-30T15:41, Timezone: UTC.
|
||||
* @return
|
||||
* An array of hashes representing all threads with new comments since offset.
|
||||
*/
|
||||
function get_updated_threads($forum_id, $since) {
|
||||
$params = array(
|
||||
'forum_id' => $forum_id,
|
||||
'since' => is_string($since) ? $string : strftime('%Y-%m-%dT%H:%M', $since),
|
||||
);
|
||||
|
||||
return $this->call('get_updated_threads', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a list of comments in a thread.
|
||||
*
|
||||
* Both filter and exclude are multivalue arguments with comma as a divider.
|
||||
* That makes is possible to use combined requests. For example, if you want
|
||||
* to get all deleted spam messages, your filter argument should contain
|
||||
* 'spam,killed' string. Note that values are joined by AND statement so
|
||||
* 'spam,new' will return all messages that are new and marked as spam. It
|
||||
* will not return messages that are new and not spam or that are spam but
|
||||
* not new (i.e. has already been moderated).
|
||||
*
|
||||
* @param $thread_id
|
||||
* The ID of a thread belonging to the given forum
|
||||
* @param $params
|
||||
* - limit: Number of entries that should be included in the response. Default is 25.
|
||||
* - start: Starting point for the query. Default is 0.
|
||||
* - filter: Type of entries that should be returned (new, spam or killed).
|
||||
* - exclude: Type of entries that should be excluded from the response (new, spam or killed).
|
||||
* @return
|
||||
* An array of hashes representing representing all posts belonging to the
|
||||
* given forum.
|
||||
*/
|
||||
function get_thread_posts($thread_id, $params=array()) {
|
||||
$params['thread_id'] = $thread_id;
|
||||
|
||||
return $this->call('get_thread_posts', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get or create thread by identifier.
|
||||
*
|
||||
* This method tries to find a thread by its identifier and title. If there is
|
||||
* no such thread, the method creates it. In either case, the output value is
|
||||
* a thread object.
|
||||
*
|
||||
* @param $identifier
|
||||
* Unique value (per forum) for a thread that is used to keep be able to get
|
||||
* data even if permalink is changed.
|
||||
* @param $title
|
||||
* The title of the thread to possibly be created.
|
||||
* @param $params
|
||||
* - category_id: Filter entries by category
|
||||
* - create_on_fail: if thread does not exist, the method will create it
|
||||
* @return
|
||||
* Returns a hash with two keys:
|
||||
* - thread: a hash representing the thread corresponding to the identifier.
|
||||
* - created: indicates whether the thread was created as a result of this
|
||||
* method call. If created, it will have the specified title.
|
||||
*/
|
||||
function thread_by_identifier($identifier, $title, $params=array()) {
|
||||
$params['identifier'] = $identifier;
|
||||
$params['title'] = $title;
|
||||
|
||||
return $this->call('thread_by_identifier', $params, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get thread by URL.
|
||||
*
|
||||
* Finds a thread by its URL. Output value is a thread object.
|
||||
*
|
||||
* @param $url
|
||||
* the URL to check for an associated thread
|
||||
* @param $partner_api_key
|
||||
* (optional) The Partner API key.
|
||||
* @return
|
||||
* A thread object, otherwise NULL.
|
||||
*/
|
||||
function get_thread_by_url($url, $partner_api_key=null) {
|
||||
$params = array(
|
||||
'url' => $url,
|
||||
'partner_api_key' => $partner_api_key,
|
||||
);
|
||||
|
||||
return $this->call('get_thread_by_url', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates thread.
|
||||
*
|
||||
* Updates thread, specified by id and forum API key, with values described in
|
||||
* the optional arguments.
|
||||
*
|
||||
* @param $thread_id
|
||||
* the ID of a thread belonging to the given forum
|
||||
* @param $params
|
||||
* - title: the title of the thread
|
||||
* - slug: the per-forum-unique string used for identifying this thread in
|
||||
* disqus.com URL’s relating to this thread. Composed of
|
||||
* underscore-separated alphanumeric strings.
|
||||
* - url: the URL this thread is on, if known.
|
||||
* - allow_comments: whether this thread is open to new comments
|
||||
* @return
|
||||
* Returns an empty success message.
|
||||
*/
|
||||
function update_thread($thread_id, $params=array()) {
|
||||
$params['thread_id'] = $thread_id;
|
||||
|
||||
return $this->call('update_thread', $params, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a new post.
|
||||
*
|
||||
* Creates a comment to the thread specified by id.
|
||||
*
|
||||
* @param $thread_id
|
||||
* the thread to post to
|
||||
* @param $message
|
||||
* the content of the post
|
||||
* @param $author_name
|
||||
* the post creator’s name
|
||||
* @param $author_email
|
||||
* the post creator’s email address
|
||||
* @param $params
|
||||
* - partner_api_key
|
||||
* - created_at: Format: 2009-03-30T15:41, Timezone: UTC
|
||||
* - ip_address: the author’s IP address
|
||||
* - author_url: the author's homepage
|
||||
* - parent_post: the id of the parent post
|
||||
* - state: Comment's state, must be one of the following: approved,
|
||||
* unapproved, spam, killed
|
||||
* @return
|
||||
* Returns modified version.
|
||||
*/
|
||||
function create_post($thread_id, $message, $author_name, $author_email, $params=array()) {
|
||||
$params['thread_id'] = $thread_id;
|
||||
$params['message'] = $message;
|
||||
$params['author_name'] = $author_name;
|
||||
$params['author_email'] = $author_email;
|
||||
|
||||
return $this->call('create_post', $params, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a comment or mark it as spam (or not spam).
|
||||
*
|
||||
* @param $post_id
|
||||
* The Post ID.
|
||||
* @param $action
|
||||
* Name of action to be performed. Value can be 'spam', 'approve' or 'kill'.
|
||||
* @return
|
||||
* Returns modified version.
|
||||
*/
|
||||
function moderate_post($post_id, $action) {
|
||||
$params = array(
|
||||
'post_id' => $post_id,
|
||||
'action' => $action,
|
||||
);
|
||||
|
||||
return $this->call('moderate_post', $params, true);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,378 +1,378 @@
|
||||
<?php
|
||||
/*
|
||||
***************************************************************************
|
||||
* Copyright (C) 2007 by Cesar D. Rodas *
|
||||
* crodas@phpy.org *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining *
|
||||
* a copy of this software and associated documentation files (the *
|
||||
* "Software"), to deal in the Software without restriction, including *
|
||||
* without limitation the rights to use, copy, modify, merge, publish, *
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to *
|
||||
* the following conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be *
|
||||
* included in all copies or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, *
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*
|
||||
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR *
|
||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
|
||||
* OTHER DEALINGS IN THE SOFTWARE. *
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* Serialize and Unserialize PHP Objects and array
|
||||
* into JSON notation.
|
||||
*
|
||||
* @category Javascript
|
||||
* @package JSON
|
||||
* @author Cesar D. Rodas <crodas@phpy.org>
|
||||
* @copyright 2007 Cesar D. Rodas
|
||||
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
|
||||
* @version 1.0
|
||||
* @link http://cesars.users.phpclasses.org/json
|
||||
*/
|
||||
|
||||
define('IN_NOWHERE',0);
|
||||
define('IN_STRING',1);
|
||||
define('IN_OBJECT',2);
|
||||
define('IN_ATOMIC',3);
|
||||
define('IN_ASSIGN',4);
|
||||
define('IN_ENDSTMT',5);
|
||||
define('IN_ARRAY',6);
|
||||
|
||||
/**
|
||||
* JSON
|
||||
*
|
||||
* This class serilize an PHP OBJECT or an ARRAY into JSON
|
||||
* notation. Also convert a JSON text into a PHP OBJECT or
|
||||
* array.
|
||||
*
|
||||
* @category Javascript
|
||||
* @package JSON
|
||||
* @author Cesar D. Rodas <crodas@phpy.org>
|
||||
* @copyright 2007 Cesar D. Rodas
|
||||
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
|
||||
* @version 1.0
|
||||
* @link http://cesars.users.phpclasses.org/json
|
||||
*/
|
||||
class JSON
|
||||
{
|
||||
/**
|
||||
* Was parsed with an error?
|
||||
*
|
||||
* var bool
|
||||
* @access private
|
||||
*/
|
||||
var $error;
|
||||
|
||||
function Json() {
|
||||
$this->error = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Serialize
|
||||
*
|
||||
* Serialize a PHP OBJECT or an ARRAY into
|
||||
* JSON notation.
|
||||
*
|
||||
* param mixed $obj Object or array to serialize
|
||||
* return string JSON.
|
||||
*/
|
||||
function serialize($obj) {
|
||||
if ( is_object($obj) ) {
|
||||
$e = get_object_vars($obj);
|
||||
/* bug reported by Ben Rowe */
|
||||
/* Adding default empty array if the */
|
||||
/* object doesn't have any property */
|
||||
$properties = array();
|
||||
foreach ($e as $k => $v) {
|
||||
$properties[] = $this->_serialize( $k,$v );
|
||||
}
|
||||
return "{".implode(",",$properties)."}";
|
||||
} else if ( is_array($obj) ) {
|
||||
return $this->_serialize('',$obj);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* UnSerialize
|
||||
*
|
||||
* Transform an JSON text into a PHP object
|
||||
* and return it.
|
||||
* @access public
|
||||
* @param string $text JSON text
|
||||
* @return mixed PHP Object, array or false.
|
||||
*/
|
||||
function unserialize( $text ) {
|
||||
$this->error = false;
|
||||
|
||||
return !$this->error ? $this->_unserialize($text) : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* UnSerialize
|
||||
*
|
||||
* Transform an JSON text into a PHP object
|
||||
* and return it.
|
||||
* @access private
|
||||
* @param string $text JSON text
|
||||
* @return mixed PHP Object, array or false.
|
||||
*/
|
||||
function _unserialize($text) {
|
||||
$ret = new stdClass;
|
||||
|
||||
while ( $f = $this->getNextToken($text,$i,$type) ) {
|
||||
switch ( $type ) {
|
||||
case IN_ARRAY:
|
||||
$tmp = $this->_unserializeArray($text);
|
||||
$ret = $tmp[0];
|
||||
break;
|
||||
case IN_OBJECT:
|
||||
$g=0;
|
||||
do {
|
||||
$varName = $this->getNextToken($f,$g,$xType);
|
||||
if ( $xType != IN_STRING ) {
|
||||
return false; /* error parsing */
|
||||
}
|
||||
$this->getNextToken($f,$g,$xType);
|
||||
if ( $xType != IN_ASSIGN) return false;
|
||||
$value = $this->getNextToken($f,$g,$xType);
|
||||
|
||||
if ( $xType == IN_OBJECT) {
|
||||
$ret->$varName = $this->unserialize( "{".$value."}" );
|
||||
$g--;
|
||||
} else if ($xType == IN_ARRAY) {
|
||||
$ret->$varName = $this->_unserializeArray( $value);
|
||||
$g--;
|
||||
} else
|
||||
$ret->$varName = $value;
|
||||
|
||||
$this->getNextToken($f,$g,$xType);
|
||||
} while ( $xType == IN_ENDSTMT);
|
||||
break;
|
||||
default:
|
||||
$this->error = true;
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* JSON Array Parser
|
||||
*
|
||||
* This method transform an json-array into a PHP
|
||||
* array
|
||||
* @access private
|
||||
* @param string $text String to parse
|
||||
* @return Array PHP Array
|
||||
*/
|
||||
function _unserializeArray($text) {
|
||||
$r = array();
|
||||
do {
|
||||
$f = $this->getNextToken($text,$i,$type);
|
||||
switch ( $type ) {
|
||||
case IN_STRING:
|
||||
case IN_ATOMIC:
|
||||
$r[] = $f;
|
||||
break;
|
||||
case IN_OBJECT:
|
||||
$r[] = $this->unserialize("{".$f."}");
|
||||
$i--;
|
||||
break;
|
||||
case IN_ARRAY:
|
||||
$r[] = $this->_unserializeArray($f);
|
||||
$i--;
|
||||
break;
|
||||
|
||||
}
|
||||
$this->getNextToken($text,$i,$type);
|
||||
} while ( $type == IN_ENDSTMT);
|
||||
|
||||
return $r;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tokenizer
|
||||
*
|
||||
* Return to the Parser the next valid token and the type
|
||||
* of the token. If the tokenizer fails it returns false.
|
||||
*
|
||||
* @access private
|
||||
* @param string $e Text to extract token
|
||||
* @param integer $i Start position to search next token
|
||||
* @param integer $state Variable to get the token type
|
||||
* @return string|bool Token in string or false on error.
|
||||
*/
|
||||
function getNextToken($e, &$i, &$state) {
|
||||
$state = IN_NOWHERE;
|
||||
$end = -1;
|
||||
$start = -1;
|
||||
while ( $i < strlen($e) && $end == -1 ) {
|
||||
switch( $e[$i] ) {
|
||||
/* objects */
|
||||
case "{":
|
||||
case "[":
|
||||
$_tag = $e[$i];
|
||||
$_endtag = $_tag == "{" ? "}" : "]";
|
||||
if ( $state == IN_NOWHERE ) {
|
||||
$start = $i+1;
|
||||
switch ($state) {
|
||||
case IN_NOWHERE:
|
||||
$aux = 1; /* for loop objects */
|
||||
$state = $_tag == "{" ? IN_OBJECT : IN_ARRAY;
|
||||
break;
|
||||
default:
|
||||
break 2; /* exit from switch and while */
|
||||
}
|
||||
while ( ++$i && $i < strlen($e) && $aux != 0 ) {
|
||||
switch( $e[$i] ) {
|
||||
case $_tag:
|
||||
$aux++;
|
||||
break;
|
||||
case $_endtag:
|
||||
$aux--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$end = $i-1;
|
||||
}
|
||||
break;
|
||||
|
||||
case '"':
|
||||
case "'":
|
||||
$state = IN_STRING;
|
||||
$buf = "";
|
||||
while ( ++$i && $i < strlen($e) && $e[$i] != '"' ) {
|
||||
if ( $e[$i] == "\\")
|
||||
$i++;
|
||||
$buf .= $e[$i];
|
||||
}
|
||||
$i++;
|
||||
return $buf;
|
||||
break;
|
||||
case ":":
|
||||
$state = IN_ASSIGN;
|
||||
$end = 1;
|
||||
break;
|
||||
case "n":
|
||||
if ( substr($e,$i,4) == "null" ) {
|
||||
$i=$i+4;
|
||||
$state = IN_ATOMIC;
|
||||
return NULL;
|
||||
}
|
||||
else break 2; /* exit from switch and while */
|
||||
case "t":
|
||||
if ( substr($e,$i,4) == "true") {
|
||||
$state = IN_ATOMIC;
|
||||
$i=$i+4;
|
||||
return true;
|
||||
}
|
||||
else break 2; /* exit from switch and while */
|
||||
break;
|
||||
case "f":
|
||||
if ( substr($e,$i,5) == "false") {
|
||||
$state = IN_ATOMIC;
|
||||
$i=$i+5;
|
||||
return false;
|
||||
}
|
||||
else break 2; /* exit from switch and while */
|
||||
break;
|
||||
case ",":
|
||||
$state = IN_ENDSTMT;
|
||||
$end = 1;
|
||||
break;
|
||||
case " ":
|
||||
case "\t":
|
||||
case "\r":
|
||||
case "\n":
|
||||
break;
|
||||
case "+":
|
||||
case "-":
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
case '.':
|
||||
$state = IN_ATOMIC;
|
||||
$start = (int)$i;
|
||||
if ( $e[$i] == "-" || $e[$i] == "+")
|
||||
$i++;
|
||||
for ( ; $i < strlen($e) && (is_numeric($e[$i]) || $e[$i] == "." || strtolower($e[$i]) == "e") ;$i++){
|
||||
$n = $i+1 < strlen($e) ? $e[$i+1] : "";
|
||||
$a = strtolower($e[$i]);
|
||||
if ( $a == "e" && ($n == "+" || $n == "-"))
|
||||
$i++;
|
||||
else if ( $a == "e")
|
||||
$this->error=true;
|
||||
}
|
||||
|
||||
$end = $i;
|
||||
break 2; /* break while too */
|
||||
default:
|
||||
$this->error = true;
|
||||
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
|
||||
return $start == -1 || $end == -1 ? false : substr($e, $start, $end - $start);
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal Serializer
|
||||
*
|
||||
* @param string $key Variable name
|
||||
* @param mixed $value Value of the variable
|
||||
* @access private
|
||||
* @return string Serialized variable
|
||||
*/
|
||||
function _serialize ( $key = '', &$value ) {
|
||||
$r = '';
|
||||
if ( $key != '')$r .= "\"${key}\" : ";
|
||||
if ( is_numeric($value) ) {
|
||||
$r .= ''.$value.'';
|
||||
} else if ( is_string($value) ) {
|
||||
$r .= '"'.$this->toString($value).'"';
|
||||
} else if ( is_object($value) ) {
|
||||
$r .= $this->serialize($value);
|
||||
} else if ( is_null($value) ) {
|
||||
$r .= "null";
|
||||
} else if ( is_bool($value) ) {
|
||||
$r .= $value ? "true":"false";
|
||||
} else if ( is_array($value) ) {
|
||||
foreach($value as $k => $v)
|
||||
$f[] = $this->_serialize('',$v);
|
||||
$r .= "[".implode(",",$f)."]";
|
||||
unset($f);
|
||||
}
|
||||
return $r;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert String variables
|
||||
*
|
||||
* @param string $e Variable with an string value
|
||||
* @access private
|
||||
* @return string Serialized variable
|
||||
*/
|
||||
function toString($e) {
|
||||
$rep = array("\\","\r","\n","\t","'",'"');
|
||||
$val = array("\\\\",'\r','\n','\t','\'','\"');
|
||||
$e = str_replace($rep, $val, $e);
|
||||
return $e;
|
||||
}
|
||||
}
|
||||
<?php
|
||||
/*
|
||||
***************************************************************************
|
||||
* Copyright (C) 2007 by Cesar D. Rodas *
|
||||
* crodas@phpy.org *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining *
|
||||
* a copy of this software and associated documentation files (the *
|
||||
* "Software"), to deal in the Software without restriction, including *
|
||||
* without limitation the rights to use, copy, modify, merge, publish, *
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to *
|
||||
* the following conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be *
|
||||
* included in all copies or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, *
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*
|
||||
* IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR *
|
||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR *
|
||||
* OTHER DEALINGS IN THE SOFTWARE. *
|
||||
***************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* Serialize and Unserialize PHP Objects and array
|
||||
* into JSON notation.
|
||||
*
|
||||
* @category Javascript
|
||||
* @package JSON
|
||||
* @author Cesar D. Rodas <crodas@phpy.org>
|
||||
* @copyright 2007 Cesar D. Rodas
|
||||
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
|
||||
* @version 1.0
|
||||
* @link http://cesars.users.phpclasses.org/json
|
||||
*/
|
||||
|
||||
define('IN_NOWHERE',0);
|
||||
define('IN_STRING',1);
|
||||
define('IN_OBJECT',2);
|
||||
define('IN_ATOMIC',3);
|
||||
define('IN_ASSIGN',4);
|
||||
define('IN_ENDSTMT',5);
|
||||
define('IN_ARRAY',6);
|
||||
|
||||
/**
|
||||
* JSON
|
||||
*
|
||||
* This class serilize an PHP OBJECT or an ARRAY into JSON
|
||||
* notation. Also convert a JSON text into a PHP OBJECT or
|
||||
* array.
|
||||
*
|
||||
* @category Javascript
|
||||
* @package JSON
|
||||
* @author Cesar D. Rodas <crodas@phpy.org>
|
||||
* @copyright 2007 Cesar D. Rodas
|
||||
* @license http://www.opensource.org/licenses/bsd-license.php BSD License
|
||||
* @version 1.0
|
||||
* @link http://cesars.users.phpclasses.org/json
|
||||
*/
|
||||
class JSON
|
||||
{
|
||||
/**
|
||||
* Was parsed with an error?
|
||||
*
|
||||
* var bool
|
||||
* @access private
|
||||
*/
|
||||
var $error;
|
||||
|
||||
function Json() {
|
||||
$this->error = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Serialize
|
||||
*
|
||||
* Serialize a PHP OBJECT or an ARRAY into
|
||||
* JSON notation.
|
||||
*
|
||||
* param mixed $obj Object or array to serialize
|
||||
* return string JSON.
|
||||
*/
|
||||
function serialize($obj) {
|
||||
if ( is_object($obj) ) {
|
||||
$e = get_object_vars($obj);
|
||||
/* bug reported by Ben Rowe */
|
||||
/* Adding default empty array if the */
|
||||
/* object doesn't have any property */
|
||||
$properties = array();
|
||||
foreach ($e as $k => $v) {
|
||||
$properties[] = $this->_serialize( $k,$v );
|
||||
}
|
||||
return "{".implode(",",$properties)."}";
|
||||
} else if ( is_array($obj) ) {
|
||||
return $this->_serialize('',$obj);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* UnSerialize
|
||||
*
|
||||
* Transform an JSON text into a PHP object
|
||||
* and return it.
|
||||
* @access public
|
||||
* @param string $text JSON text
|
||||
* @return mixed PHP Object, array or false.
|
||||
*/
|
||||
function unserialize( $text ) {
|
||||
$this->error = false;
|
||||
|
||||
return !$this->error ? $this->_unserialize($text) : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* UnSerialize
|
||||
*
|
||||
* Transform an JSON text into a PHP object
|
||||
* and return it.
|
||||
* @access private
|
||||
* @param string $text JSON text
|
||||
* @return mixed PHP Object, array or false.
|
||||
*/
|
||||
function _unserialize($text) {
|
||||
$ret = new stdClass;
|
||||
|
||||
while ( $f = $this->getNextToken($text,$i,$type) ) {
|
||||
switch ( $type ) {
|
||||
case IN_ARRAY:
|
||||
$tmp = $this->_unserializeArray($text);
|
||||
$ret = $tmp[0];
|
||||
break;
|
||||
case IN_OBJECT:
|
||||
$g=0;
|
||||
do {
|
||||
$varName = $this->getNextToken($f,$g,$xType);
|
||||
if ( $xType != IN_STRING ) {
|
||||
return false; /* error parsing */
|
||||
}
|
||||
$this->getNextToken($f,$g,$xType);
|
||||
if ( $xType != IN_ASSIGN) return false;
|
||||
$value = $this->getNextToken($f,$g,$xType);
|
||||
|
||||
if ( $xType == IN_OBJECT) {
|
||||
$ret->$varName = $this->unserialize( "{".$value."}" );
|
||||
$g--;
|
||||
} else if ($xType == IN_ARRAY) {
|
||||
$ret->$varName = $this->_unserializeArray( $value);
|
||||
$g--;
|
||||
} else
|
||||
$ret->$varName = $value;
|
||||
|
||||
$this->getNextToken($f,$g,$xType);
|
||||
} while ( $xType == IN_ENDSTMT);
|
||||
break;
|
||||
default:
|
||||
$this->error = true;
|
||||
break 2;
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* JSON Array Parser
|
||||
*
|
||||
* This method transform an json-array into a PHP
|
||||
* array
|
||||
* @access private
|
||||
* @param string $text String to parse
|
||||
* @return Array PHP Array
|
||||
*/
|
||||
function _unserializeArray($text) {
|
||||
$r = array();
|
||||
do {
|
||||
$f = $this->getNextToken($text,$i,$type);
|
||||
switch ( $type ) {
|
||||
case IN_STRING:
|
||||
case IN_ATOMIC:
|
||||
$r[] = $f;
|
||||
break;
|
||||
case IN_OBJECT:
|
||||
$r[] = $this->unserialize("{".$f."}");
|
||||
$i--;
|
||||
break;
|
||||
case IN_ARRAY:
|
||||
$r[] = $this->_unserializeArray($f);
|
||||
$i--;
|
||||
break;
|
||||
|
||||
}
|
||||
$this->getNextToken($text,$i,$type);
|
||||
} while ( $type == IN_ENDSTMT);
|
||||
|
||||
return $r;
|
||||
}
|
||||
|
||||
/**
|
||||
* Tokenizer
|
||||
*
|
||||
* Return to the Parser the next valid token and the type
|
||||
* of the token. If the tokenizer fails it returns false.
|
||||
*
|
||||
* @access private
|
||||
* @param string $e Text to extract token
|
||||
* @param integer $i Start position to search next token
|
||||
* @param integer $state Variable to get the token type
|
||||
* @return string|bool Token in string or false on error.
|
||||
*/
|
||||
function getNextToken($e, &$i, &$state) {
|
||||
$state = IN_NOWHERE;
|
||||
$end = -1;
|
||||
$start = -1;
|
||||
while ( $i < strlen($e) && $end == -1 ) {
|
||||
switch( $e[$i] ) {
|
||||
/* objects */
|
||||
case "{":
|
||||
case "[":
|
||||
$_tag = $e[$i];
|
||||
$_endtag = $_tag == "{" ? "}" : "]";
|
||||
if ( $state == IN_NOWHERE ) {
|
||||
$start = $i+1;
|
||||
switch ($state) {
|
||||
case IN_NOWHERE:
|
||||
$aux = 1; /* for loop objects */
|
||||
$state = $_tag == "{" ? IN_OBJECT : IN_ARRAY;
|
||||
break;
|
||||
default:
|
||||
break 2; /* exit from switch and while */
|
||||
}
|
||||
while ( ++$i && $i < strlen($e) && $aux != 0 ) {
|
||||
switch( $e[$i] ) {
|
||||
case $_tag:
|
||||
$aux++;
|
||||
break;
|
||||
case $_endtag:
|
||||
$aux--;
|
||||
break;
|
||||
}
|
||||
}
|
||||
$end = $i-1;
|
||||
}
|
||||
break;
|
||||
|
||||
case '"':
|
||||
case "'":
|
||||
$state = IN_STRING;
|
||||
$buf = "";
|
||||
while ( ++$i && $i < strlen($e) && $e[$i] != '"' ) {
|
||||
if ( $e[$i] == "\\")
|
||||
$i++;
|
||||
$buf .= $e[$i];
|
||||
}
|
||||
$i++;
|
||||
return $buf;
|
||||
break;
|
||||
case ":":
|
||||
$state = IN_ASSIGN;
|
||||
$end = 1;
|
||||
break;
|
||||
case "n":
|
||||
if ( substr($e,$i,4) == "null" ) {
|
||||
$i=$i+4;
|
||||
$state = IN_ATOMIC;
|
||||
return NULL;
|
||||
}
|
||||
else break 2; /* exit from switch and while */
|
||||
case "t":
|
||||
if ( substr($e,$i,4) == "true") {
|
||||
$state = IN_ATOMIC;
|
||||
$i=$i+4;
|
||||
return true;
|
||||
}
|
||||
else break 2; /* exit from switch and while */
|
||||
break;
|
||||
case "f":
|
||||
if ( substr($e,$i,5) == "false") {
|
||||
$state = IN_ATOMIC;
|
||||
$i=$i+5;
|
||||
return false;
|
||||
}
|
||||
else break 2; /* exit from switch and while */
|
||||
break;
|
||||
case ",":
|
||||
$state = IN_ENDSTMT;
|
||||
$end = 1;
|
||||
break;
|
||||
case " ":
|
||||
case "\t":
|
||||
case "\r":
|
||||
case "\n":
|
||||
break;
|
||||
case "+":
|
||||
case "-":
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
case '.':
|
||||
$state = IN_ATOMIC;
|
||||
$start = (int)$i;
|
||||
if ( $e[$i] == "-" || $e[$i] == "+")
|
||||
$i++;
|
||||
for ( ; $i < strlen($e) && (is_numeric($e[$i]) || $e[$i] == "." || strtolower($e[$i]) == "e") ;$i++){
|
||||
$n = $i+1 < strlen($e) ? $e[$i+1] : "";
|
||||
$a = strtolower($e[$i]);
|
||||
if ( $a == "e" && ($n == "+" || $n == "-"))
|
||||
$i++;
|
||||
else if ( $a == "e")
|
||||
$this->error=true;
|
||||
}
|
||||
|
||||
$end = $i;
|
||||
break 2; /* break while too */
|
||||
default:
|
||||
$this->error = true;
|
||||
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
|
||||
return $start == -1 || $end == -1 ? false : substr($e, $start, $end - $start);
|
||||
}
|
||||
|
||||
/**
|
||||
* Internal Serializer
|
||||
*
|
||||
* @param string $key Variable name
|
||||
* @param mixed $value Value of the variable
|
||||
* @access private
|
||||
* @return string Serialized variable
|
||||
*/
|
||||
function _serialize ( $key = '', &$value ) {
|
||||
$r = '';
|
||||
if ( $key != '')$r .= "\"${key}\" : ";
|
||||
if ( is_numeric($value) ) {
|
||||
$r .= ''.$value.'';
|
||||
} else if ( is_string($value) ) {
|
||||
$r .= '"'.$this->toString($value).'"';
|
||||
} else if ( is_object($value) ) {
|
||||
$r .= $this->serialize($value);
|
||||
} else if ( is_null($value) ) {
|
||||
$r .= "null";
|
||||
} else if ( is_bool($value) ) {
|
||||
$r .= $value ? "true":"false";
|
||||
} else if ( is_array($value) ) {
|
||||
foreach($value as $k => $v)
|
||||
$f[] = $this->_serialize('',$v);
|
||||
$r .= "[".implode(",",$f)."]";
|
||||
unset($f);
|
||||
}
|
||||
return $r;
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert String variables
|
||||
*
|
||||
* @param string $e Variable with an string value
|
||||
* @access private
|
||||
* @return string Serialized variable
|
||||
*/
|
||||
function toString($e) {
|
||||
$rep = array("\\","\r","\n","\t","'",'"');
|
||||
$val = array("\\\\",'\r','\n','\t','\'','\"');
|
||||
$e = str_replace($rep, $val, $e);
|
||||
return $e;
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,295 +1,295 @@
|
||||
<?php
|
||||
define('USER_AGENT', 'Disqus-WPPlugin/2.0-dev');
|
||||
define('SOCKET_TIMEOUT', 10);
|
||||
|
||||
function dsq_get_query_string($postdata) {
|
||||
$postdata_str = '';
|
||||
|
||||
if($postdata) {
|
||||
foreach($postdata as $key=>$value) {
|
||||
$postdata_str .= urlencode($key) . '=' . urlencode($value) . '&';
|
||||
}
|
||||
}
|
||||
|
||||
return $postdata_str;
|
||||
}
|
||||
|
||||
|
||||
function dsq_get_post_content($boundary, $postdata, $file_name, $file_field) {
|
||||
if(empty($file_name) || empty($file_field)) {
|
||||
return dsq_get_query_string($postdata);
|
||||
}
|
||||
|
||||
$content = array();
|
||||
$content[] = '--' . $boundary;
|
||||
foreach($postdata as $key=>$value) {
|
||||
$content[] = 'Content-Disposition: form-data; name="' . $key . '"' . "\r\n\r\n" . $value;
|
||||
$content[] = '--' . $boundary;
|
||||
}
|
||||
$content[] = 'Content-Disposition: form-data; name="' . $file_field . '"; filename="' . $file_name . '"';
|
||||
// HACK: We only need to handle text/plain files right now.
|
||||
$content[] = "Content-Type: text/plain\r\n";
|
||||
$content[] = file_get_contents($file_name);
|
||||
$content[] = '--' . $boundary . '--';
|
||||
$content = implode("\r\n", $content);
|
||||
return $content;
|
||||
}
|
||||
|
||||
|
||||
function dsq_get_http_headers_for_request($boundary, $content, $file_name, $file_field) {
|
||||
$headers = array();
|
||||
$headers[] = 'User-Agent: ' . USER_AGENT;
|
||||
$headers[] = 'Connection: close';
|
||||
if($content) {
|
||||
$headers[] = 'Content-Length: ' . strlen($content);
|
||||
if($file_name && $file_field) {
|
||||
$headers[] = 'Content-Type: multipart/form-data; boundary=' . $boundary;
|
||||
} else {
|
||||
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
|
||||
}
|
||||
}
|
||||
return implode("\r\n", $headers);
|
||||
}
|
||||
|
||||
|
||||
function _dsq_curl_urlopen($url, $postdata, &$response, $file_name, $file_field) {
|
||||
$c = curl_init($url);
|
||||
$postdata_str = dsq_get_query_string($postdata);
|
||||
|
||||
$c_options = array(
|
||||
CURLOPT_USERAGENT => USER_AGENT,
|
||||
CURLOPT_RETURNTRANSFER => true,
|
||||
CURLOPT_POST => ($postdata_str ? 1 : 0),
|
||||
CURLOPT_HEADER => true,
|
||||
CURLOPT_HTTPHEADER => array('Expect:'),
|
||||
CURLOPT_TIMEOUT => SOCKET_TIMEOUT
|
||||
);
|
||||
if($postdata) {
|
||||
$c_options[CURLOPT_POSTFIELDS] = $postdata_str;
|
||||
}
|
||||
if($file_name && $file_field) {
|
||||
$postdata[$file_field] = '@' . $file_name;
|
||||
$c_options[CURLOPT_POSTFIELDS] = $postdata;
|
||||
$c_options[CURLOPT_RETURNTRANSFER] = 1;
|
||||
}
|
||||
curl_setopt_array($c, $c_options);
|
||||
|
||||
$data = curl_exec($c);
|
||||
list($headers, $response['data']) = explode("\r\n\r\n", $data, 2);
|
||||
|
||||
$response['headers'] = _dsq_get_response_headers($headers, $response);
|
||||
$response['code'] = curl_getinfo($c, CURLINFO_HTTP_CODE);
|
||||
}
|
||||
|
||||
function _dsq_get_response_headers($headers, &$response) {
|
||||
$headers = explode("\r\n", $headers);
|
||||
list($unused, $response['code'], $unused) = explode(' ', $headers[0], 3);
|
||||
$headers = array_slice($headers, 1);
|
||||
|
||||
// Convert headers into associative array.
|
||||
foreach($headers as $unused=>$header) {
|
||||
$header = explode(':', $header);
|
||||
$header[0] = trim($header[0]);
|
||||
$header[1] = trim($header[1]);
|
||||
$headers[strtolower($header[0])] = $header[1];
|
||||
}
|
||||
|
||||
return $headers;
|
||||
}
|
||||
|
||||
function _dsq_fsockopen_urlopen($url, $postdata, &$response, $file_name, $file_field) {
|
||||
$buf = '';
|
||||
$req = '';
|
||||
$length = 0;
|
||||
$boundary = '----------' . md5(time());
|
||||
$postdata_str = dsq_get_post_content($boundary, $postdata, $file_name, $file_field);
|
||||
$url_pieces = parse_url($url);
|
||||
|
||||
// Set default port for supported schemes if none is provided.
|
||||
if(!isset($url_pieces['port'])) {
|
||||
switch($url_pieces['scheme']) {
|
||||
case 'http':
|
||||
$url_pieces['port'] = 80;
|
||||
break;
|
||||
case 'https':
|
||||
$url_pieces['port'] = 443;
|
||||
$url_pieces['host'] = 'ssl://' . $url_pieces['host'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Set default path if trailing slash is not provided.
|
||||
if(!isset($url_pieces['path'])) { $url_pieces['path'] = '/'; }
|
||||
|
||||
// Determine if we need to include the port in the Host header or not.
|
||||
if(($url_pieces['port'] == 80 && $url_pieces['scheme'] == 'http') ||
|
||||
($url_pieces['port'] == 443 && $url_pieces['scheme'] == 'https')) {
|
||||
$host = $url_pieces['host'];
|
||||
} else {
|
||||
$host = $url_pieces['host'] . ':' . $url_pieces['port'];
|
||||
}
|
||||
|
||||
$fp = @fsockopen($url_pieces['host'], $url_pieces['port'], $errno, $errstr, SOCKET_TIMEOUT);
|
||||
if(!$fp) { return false; }
|
||||
|
||||
$path = $url_pieces['path'];
|
||||
if ($url_pieces['query']) $path .= '?'.$url_pieces['query'];
|
||||
|
||||
$req .= ($postdata_str ? 'POST' : 'GET') . ' ' . $path . " HTTP/1.1\r\n";
|
||||
$req .= 'Host: ' . $host . "\r\n";
|
||||
$req .= dsq_get_http_headers_for_request($boundary, $postdata_str, $file_name, $file_field);
|
||||
if($postdata_str) {
|
||||
$req .= "\r\n\r\n" . $postdata_str;
|
||||
}
|
||||
$req .= "\r\n\r\n";
|
||||
|
||||
fwrite($fp, $req);
|
||||
while(!feof($fp)) {
|
||||
$buf .= fgets($fp, 4096);
|
||||
}
|
||||
|
||||
// Parse headers from the response buffers.
|
||||
list($headers, $response['data']) = explode("\r\n\r\n", $buf, 2);
|
||||
|
||||
// Get status code from headers.
|
||||
$headers = _dsq_get_response_headers($headers, $response);
|
||||
|
||||
// If transfer-coding is set to chunked, we need to join the message body
|
||||
// together.
|
||||
if(isset($headers['transfer-encoding']) && 'chunked' == strtolower($headers['transfer-encoding'])) {
|
||||
$chunk_data = $response['data'];
|
||||
$joined_data = '';
|
||||
while(true) {
|
||||
// Strip length from body.
|
||||
list($chunk_length, $chunk_data) = explode("\r\n", $chunk_data, 2);
|
||||
$chunk_length = hexdec($chunk_length);
|
||||
if(!$chunk_length || !strlen($chunk_data)) { break; }
|
||||
|
||||
$joined_data .= substr($chunk_data, 0, $chunk_length);
|
||||
$chunk_data = substr($chunk_data, $chunk_length + 1);
|
||||
$length += $chunk_length;
|
||||
}
|
||||
$response['data'] = $joined_data;
|
||||
} else {
|
||||
$length = $headers['content-length'];
|
||||
}
|
||||
$response['headers'] = $headers;
|
||||
}
|
||||
|
||||
|
||||
function _dsq_fopen_urlopen($url, $postdata, &$response, $file_name, $file_field) {
|
||||
$params = array();
|
||||
if($file_name && $file_field) {
|
||||
$boundary = '----------' . md5(time());
|
||||
$content = dsq_get_post_content($boundary, $postdata, $file_name, $file_field);
|
||||
$header = dsq_get_http_headers_for_request($boundary, $content, $file_name, $file_field);
|
||||
|
||||
$params = array('http' => array(
|
||||
'method' => 'POST',
|
||||
'header' => $header,
|
||||
'content' => $content,
|
||||
'timeout' => SOCKET_TIMEOUT
|
||||
));
|
||||
} else {
|
||||
if($postdata) {
|
||||
$params = array('http' => array(
|
||||
'method' => 'POST',
|
||||
'header' => 'Content-Type: application/x-www-form-urlencoded',
|
||||
'content' => dsq_get_query_string($postdata),
|
||||
'timeout' => SOCKET_TIMEOUT
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ini_set('user_agent', USER_AGENT);
|
||||
$ctx = stream_context_create($params);
|
||||
$fp = fopen($url, 'rb', false, $ctx);
|
||||
if(!$fp) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Get status code from headers.
|
||||
list($unused, $response['code'], $unused) = explode(' ', $http_response_header[0], 3);
|
||||
$headers = array_slice($http_response_header, 1);
|
||||
|
||||
// Convert headers into associative array.
|
||||
foreach($headers as $unused=>$header) {
|
||||
$header = explode(':', $header);
|
||||
$header[0] = trim($header[0]);
|
||||
$header[1] = trim($header[1]);
|
||||
$headers[strtolower($header[0])] = strtolower($header[1]);
|
||||
}
|
||||
|
||||
$response['data'] = stream_get_contents($fp);
|
||||
$response['headers'] = $headers;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Wrapper to provide a single interface for making an HTTP request.
|
||||
*
|
||||
* Attempts to use cURL, fopen(), or fsockopen(), whichever is available
|
||||
* first.
|
||||
*
|
||||
* @param string $url URL to make request to.
|
||||
* @param array $postdata (optional) If postdata is provided, the request
|
||||
* method is POST with the key/value pairs as
|
||||
* the data.
|
||||
* @param array $file (optional) Should provide associative array
|
||||
* with two keys: name and field. Name should
|
||||
* be the name of the file and field is the name
|
||||
* of the field to POST.
|
||||
*/
|
||||
function dsq_urlopen($url, $postdata=false, $file=false) {
|
||||
$response = array(
|
||||
'data' => '',
|
||||
'code' => 0
|
||||
);
|
||||
|
||||
if($file) {
|
||||
extract($file, EXTR_PREFIX_ALL, 'file');
|
||||
}
|
||||
if(empty($file_name) || empty($file_field)) {
|
||||
$file_name = false;
|
||||
$file_field = false;
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
// Try curl, fsockopen, fopen + stream (PHP5 only), exec wget
|
||||
if(function_exists('curl_init')) {
|
||||
if (!function_exists('curl_setopt_array')) {
|
||||
function curl_setopt_array(&$ch, $curl_options)
|
||||
{
|
||||
foreach ($curl_options as $option => $value) {
|
||||
if (!curl_setopt($ch, $option, $value)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
_dsq_curl_urlopen($url, $postdata, $response, $file_name, $file_field);
|
||||
} else if(ini_get('allow_url_fopen') && function_exists('stream_get_contents')) {
|
||||
_dsq_fopen_urlopen($url, $postdata, $response, $file_name, $file_field);
|
||||
} else {
|
||||
// TODO: Find the failure condition for fsockopen() (sockets?)
|
||||
_dsq_fsockopen_urlopen($url, $postdata, $response, $file_name, $file_field);
|
||||
}
|
||||
|
||||
// returns array with keys data and code (from headers)
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
function dsq_url_method() {
|
||||
if(function_exists('curl_init')) {
|
||||
return 'curl';
|
||||
} else if(ini_get('allow_url_fopen') && function_exists('stream_get_contents')) {
|
||||
return 'fopen';
|
||||
} else {
|
||||
return 'fsockopen';
|
||||
}
|
||||
}
|
||||
?>
|
||||
<?php
|
||||
define('USER_AGENT', 'Disqus-WPPlugin/2.0-dev');
|
||||
define('SOCKET_TIMEOUT', 10);
|
||||
|
||||
function dsq_get_query_string($postdata) {
|
||||
$postdata_str = '';
|
||||
|
||||
if($postdata) {
|
||||
foreach($postdata as $key=>$value) {
|
||||
$postdata_str .= urlencode($key) . '=' . urlencode($value) . '&';
|
||||
}
|
||||
}
|
||||
|
||||
return $postdata_str;
|
||||
}
|
||||
|
||||
|
||||
function dsq_get_post_content($boundary, $postdata, $file_name, $file_field) {
|
||||
if(empty($file_name) || empty($file_field)) {
|
||||
return dsq_get_query_string($postdata);
|
||||
}
|
||||
|
||||
$content = array();
|
||||
$content[] = '--' . $boundary;
|
||||
foreach($postdata as $key=>$value) {
|
||||
$content[] = 'Content-Disposition: form-data; name="' . $key . '"' . "\r\n\r\n" . $value;
|
||||
$content[] = '--' . $boundary;
|
||||
}
|
||||
$content[] = 'Content-Disposition: form-data; name="' . $file_field . '"; filename="' . $file_name . '"';
|
||||
// HACK: We only need to handle text/plain files right now.
|
||||
$content[] = "Content-Type: text/plain\r\n";
|
||||
$content[] = file_get_contents($file_name);
|
||||
$content[] = '--' . $boundary . '--';
|
||||
$content = implode("\r\n", $content);
|
||||
return $content;
|
||||
}
|
||||
|
||||
|
||||
function dsq_get_http_headers_for_request($boundary, $content, $file_name, $file_field) {
|
||||
$headers = array();
|
||||
$headers[] = 'User-Agent: ' . USER_AGENT;
|
||||
$headers[] = 'Connection: close';
|
||||
if($content) {
|
||||
$headers[] = 'Content-Length: ' . strlen($content);
|
||||
if($file_name && $file_field) {
|
||||
$headers[] = 'Content-Type: multipart/form-data; boundary=' . $boundary;
|
||||
} else {
|
||||
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
|
||||
}
|
||||
}
|
||||
return implode("\r\n", $headers);
|
||||
}
|
||||
|
||||
|
||||
function _dsq_curl_urlopen($url, $postdata, &$response, $file_name, $file_field) {
|
||||
$c = curl_init($url);
|
||||
$postdata_str = dsq_get_query_string($postdata);
|
||||
|
||||
$c_options = array(
|
||||
CURLOPT_USERAGENT => USER_AGENT,
|
||||
CURLOPT_RETURNTRANSFER => true,
|
||||
CURLOPT_POST => ($postdata_str ? 1 : 0),
|
||||
CURLOPT_HEADER => true,
|
||||
CURLOPT_HTTPHEADER => array('Expect:'),
|
||||
CURLOPT_TIMEOUT => SOCKET_TIMEOUT
|
||||
);
|
||||
if($postdata) {
|
||||
$c_options[CURLOPT_POSTFIELDS] = $postdata_str;
|
||||
}
|
||||
if($file_name && $file_field) {
|
||||
$postdata[$file_field] = '@' . $file_name;
|
||||
$c_options[CURLOPT_POSTFIELDS] = $postdata;
|
||||
$c_options[CURLOPT_RETURNTRANSFER] = 1;
|
||||
}
|
||||
curl_setopt_array($c, $c_options);
|
||||
|
||||
$data = curl_exec($c);
|
||||
list($headers, $response['data']) = explode("\r\n\r\n", $data, 2);
|
||||
|
||||
$response['headers'] = _dsq_get_response_headers($headers, $response);
|
||||
$response['code'] = curl_getinfo($c, CURLINFO_HTTP_CODE);
|
||||
}
|
||||
|
||||
function _dsq_get_response_headers($headers, &$response) {
|
||||
$headers = explode("\r\n", $headers);
|
||||
list($unused, $response['code'], $unused) = explode(' ', $headers[0], 3);
|
||||
$headers = array_slice($headers, 1);
|
||||
|
||||
// Convert headers into associative array.
|
||||
foreach($headers as $unused=>$header) {
|
||||
$header = explode(':', $header);
|
||||
$header[0] = trim($header[0]);
|
||||
$header[1] = trim($header[1]);
|
||||
$headers[strtolower($header[0])] = $header[1];
|
||||
}
|
||||
|
||||
return $headers;
|
||||
}
|
||||
|
||||
function _dsq_fsockopen_urlopen($url, $postdata, &$response, $file_name, $file_field) {
|
||||
$buf = '';
|
||||
$req = '';
|
||||
$length = 0;
|
||||
$boundary = '----------' . md5(time());
|
||||
$postdata_str = dsq_get_post_content($boundary, $postdata, $file_name, $file_field);
|
||||
$url_pieces = parse_url($url);
|
||||
|
||||
// Set default port for supported schemes if none is provided.
|
||||
if(!isset($url_pieces['port'])) {
|
||||
switch($url_pieces['scheme']) {
|
||||
case 'http':
|
||||
$url_pieces['port'] = 80;
|
||||
break;
|
||||
case 'https':
|
||||
$url_pieces['port'] = 443;
|
||||
$url_pieces['host'] = 'ssl://' . $url_pieces['host'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Set default path if trailing slash is not provided.
|
||||
if(!isset($url_pieces['path'])) { $url_pieces['path'] = '/'; }
|
||||
|
||||
// Determine if we need to include the port in the Host header or not.
|
||||
if(($url_pieces['port'] == 80 && $url_pieces['scheme'] == 'http') ||
|
||||
($url_pieces['port'] == 443 && $url_pieces['scheme'] == 'https')) {
|
||||
$host = $url_pieces['host'];
|
||||
} else {
|
||||
$host = $url_pieces['host'] . ':' . $url_pieces['port'];
|
||||
}
|
||||
|
||||
$fp = @fsockopen($url_pieces['host'], $url_pieces['port'], $errno, $errstr, SOCKET_TIMEOUT);
|
||||
if(!$fp) { return false; }
|
||||
|
||||
$path = $url_pieces['path'];
|
||||
if ($url_pieces['query']) $path .= '?'.$url_pieces['query'];
|
||||
|
||||
$req .= ($postdata_str ? 'POST' : 'GET') . ' ' . $path . " HTTP/1.1\r\n";
|
||||
$req .= 'Host: ' . $host . "\r\n";
|
||||
$req .= dsq_get_http_headers_for_request($boundary, $postdata_str, $file_name, $file_field);
|
||||
if($postdata_str) {
|
||||
$req .= "\r\n\r\n" . $postdata_str;
|
||||
}
|
||||
$req .= "\r\n\r\n";
|
||||
|
||||
fwrite($fp, $req);
|
||||
while(!feof($fp)) {
|
||||
$buf .= fgets($fp, 4096);
|
||||
}
|
||||
|
||||
// Parse headers from the response buffers.
|
||||
list($headers, $response['data']) = explode("\r\n\r\n", $buf, 2);
|
||||
|
||||
// Get status code from headers.
|
||||
$headers = _dsq_get_response_headers($headers, $response);
|
||||
|
||||
// If transfer-coding is set to chunked, we need to join the message body
|
||||
// together.
|
||||
if(isset($headers['transfer-encoding']) && 'chunked' == strtolower($headers['transfer-encoding'])) {
|
||||
$chunk_data = $response['data'];
|
||||
$joined_data = '';
|
||||
while(true) {
|
||||
// Strip length from body.
|
||||
list($chunk_length, $chunk_data) = explode("\r\n", $chunk_data, 2);
|
||||
$chunk_length = hexdec($chunk_length);
|
||||
if(!$chunk_length || !strlen($chunk_data)) { break; }
|
||||
|
||||
$joined_data .= substr($chunk_data, 0, $chunk_length);
|
||||
$chunk_data = substr($chunk_data, $chunk_length + 1);
|
||||
$length += $chunk_length;
|
||||
}
|
||||
$response['data'] = $joined_data;
|
||||
} else {
|
||||
$length = $headers['content-length'];
|
||||
}
|
||||
$response['headers'] = $headers;
|
||||
}
|
||||
|
||||
|
||||
function _dsq_fopen_urlopen($url, $postdata, &$response, $file_name, $file_field) {
|
||||
$params = array();
|
||||
if($file_name && $file_field) {
|
||||
$boundary = '----------' . md5(time());
|
||||
$content = dsq_get_post_content($boundary, $postdata, $file_name, $file_field);
|
||||
$header = dsq_get_http_headers_for_request($boundary, $content, $file_name, $file_field);
|
||||
|
||||
$params = array('http' => array(
|
||||
'method' => 'POST',
|
||||
'header' => $header,
|
||||
'content' => $content,
|
||||
'timeout' => SOCKET_TIMEOUT
|
||||
));
|
||||
} else {
|
||||
if($postdata) {
|
||||
$params = array('http' => array(
|
||||
'method' => 'POST',
|
||||
'header' => 'Content-Type: application/x-www-form-urlencoded',
|
||||
'content' => dsq_get_query_string($postdata),
|
||||
'timeout' => SOCKET_TIMEOUT
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ini_set('user_agent', USER_AGENT);
|
||||
$ctx = stream_context_create($params);
|
||||
$fp = fopen($url, 'rb', false, $ctx);
|
||||
if(!$fp) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Get status code from headers.
|
||||
list($unused, $response['code'], $unused) = explode(' ', $http_response_header[0], 3);
|
||||
$headers = array_slice($http_response_header, 1);
|
||||
|
||||
// Convert headers into associative array.
|
||||
foreach($headers as $unused=>$header) {
|
||||
$header = explode(':', $header);
|
||||
$header[0] = trim($header[0]);
|
||||
$header[1] = trim($header[1]);
|
||||
$headers[strtolower($header[0])] = strtolower($header[1]);
|
||||
}
|
||||
|
||||
$response['data'] = stream_get_contents($fp);
|
||||
$response['headers'] = $headers;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Wrapper to provide a single interface for making an HTTP request.
|
||||
*
|
||||
* Attempts to use cURL, fopen(), or fsockopen(), whichever is available
|
||||
* first.
|
||||
*
|
||||
* @param string $url URL to make request to.
|
||||
* @param array $postdata (optional) If postdata is provided, the request
|
||||
* method is POST with the key/value pairs as
|
||||
* the data.
|
||||
* @param array $file (optional) Should provide associative array
|
||||
* with two keys: name and field. Name should
|
||||
* be the name of the file and field is the name
|
||||
* of the field to POST.
|
||||
*/
|
||||
function dsq_urlopen($url, $postdata=false, $file=false) {
|
||||
$response = array(
|
||||
'data' => '',
|
||||
'code' => 0
|
||||
);
|
||||
|
||||
if($file) {
|
||||
extract($file, EXTR_PREFIX_ALL, 'file');
|
||||
}
|
||||
if(empty($file_name) || empty($file_field)) {
|
||||
$file_name = false;
|
||||
$file_field = false;
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
// Try curl, fsockopen, fopen + stream (PHP5 only), exec wget
|
||||
if(function_exists('curl_init')) {
|
||||
if (!function_exists('curl_setopt_array')) {
|
||||
function curl_setopt_array(&$ch, $curl_options)
|
||||
{
|
||||
foreach ($curl_options as $option => $value) {
|
||||
if (!curl_setopt($ch, $option, $value)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
_dsq_curl_urlopen($url, $postdata, $response, $file_name, $file_field);
|
||||
} else if(ini_get('allow_url_fopen') && function_exists('stream_get_contents')) {
|
||||
_dsq_fopen_urlopen($url, $postdata, $response, $file_name, $file_field);
|
||||
} else {
|
||||
// TODO: Find the failure condition for fsockopen() (sockets?)
|
||||
_dsq_fsockopen_urlopen($url, $postdata, $response, $file_name, $file_field);
|
||||
}
|
||||
|
||||
// returns array with keys data and code (from headers)
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
function dsq_url_method() {
|
||||
if(function_exists('curl_init')) {
|
||||
return 'curl';
|
||||
} else if(ini_get('allow_url_fopen') && function_exists('stream_get_contents')) {
|
||||
return 'fopen';
|
||||
} else {
|
||||
return 'fsockopen';
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -1,107 +1,107 @@
|
||||
<?php
|
||||
/**
|
||||
* Implementation of the Disqus API designed for WordPress.
|
||||
*
|
||||
* @author Disqus <team@disqus.com>
|
||||
* @copyright 2007-2010 Big Head Labs
|
||||
* @link http://disqus.com/
|
||||
* @package Disqus
|
||||
* @subpackage DisqusWordPressAPI
|
||||
* @version 2.0
|
||||
*/
|
||||
|
||||
require_once(ABSPATH.WPINC.'/http.php');
|
||||
require_once(dirname(__FILE__) . '/api/disqus/disqus.php');
|
||||
/** @#+
|
||||
* Constants
|
||||
*/
|
||||
/**
|
||||
* Base URL for Disqus.
|
||||
*/
|
||||
define('DISQUS_ALLOWED_HTML', '<b><u><i><h1><h2><h3><code><blockquote><br><hr>');
|
||||
|
||||
/**
|
||||
* Helper methods for all of the Disqus v2 API methods.
|
||||
*
|
||||
* @package Disqus
|
||||
* @subpackage DisqusWordPressAPI
|
||||
* @author DISQUS.com <team@disqus.com>
|
||||
* @copyright 2007-2008 Big Head Labs
|
||||
* @version 1.0
|
||||
*/
|
||||
class DisqusWordPressAPI {
|
||||
var $short_name;
|
||||
var $forum_api_key;
|
||||
|
||||
function DisqusWordPressAPI($short_name=null, $forum_api_key=null, $user_api_key=null) {
|
||||
$this->short_name = $short_name;
|
||||
$this->forum_api_key = $forum_api_key;
|
||||
$this->user_api_key = $user_api_key;
|
||||
$this->api = new DisqusAPI($user_api_key, $forum_api_key, DISQUS_API_URL);
|
||||
}
|
||||
|
||||
function get_last_error() {
|
||||
return $this->api->get_last_error();
|
||||
}
|
||||
|
||||
function get_user_api_key($username, $password) {
|
||||
$response = $this->api->call('get_user_api_key', array(
|
||||
'username' => $username,
|
||||
'password' => $password,
|
||||
), true);
|
||||
return $response;
|
||||
}
|
||||
|
||||
function get_forum_list($user_api_key) {
|
||||
$this->api->user_api_key = $user_api_key;
|
||||
return $this->api->get_forum_list();
|
||||
}
|
||||
|
||||
function get_forum_api_key($user_api_key, $id) {
|
||||
$this->api->user_api_key = $user_api_key;
|
||||
return $this->api->get_forum_api_key($id);
|
||||
}
|
||||
|
||||
function get_forum_posts($start_id=0) {
|
||||
$response = $this->api->get_forum_posts(null, array(
|
||||
'filter' => 'approved',
|
||||
'start_id' => $start_id,
|
||||
'limit' => 100,
|
||||
'order' => 'asc',
|
||||
'full_info' => 1
|
||||
));
|
||||
return $response;
|
||||
}
|
||||
|
||||
function import_wordpress_comments(&$wxr, $timestamp, $eof=true) {
|
||||
$http = new WP_Http();
|
||||
$response = $http->request(
|
||||
DISQUS_IMPORTER_URL . 'api/import-wordpress-comments/',
|
||||
array(
|
||||
'method' => 'POST',
|
||||
'timeout' => 60,
|
||||
'body' => array(
|
||||
'forum_url' => $this->short_name,
|
||||
'forum_api_key' => $this->forum_api_key,
|
||||
'response_type' => 'php',
|
||||
'wxr' => $wxr,
|
||||
'timestamp' => $timestamp,
|
||||
'eof' => (int)$eof
|
||||
),
|
||||
)
|
||||
);
|
||||
if ($response->errors) {
|
||||
// hack
|
||||
$this->api->last_error = $response->errors;
|
||||
return -1;
|
||||
}
|
||||
$data = unserialize($response['body']);
|
||||
if (!$data || $data['stat'] == 'fail') {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* Implementation of the Disqus API designed for WordPress.
|
||||
*
|
||||
* @author Disqus <team@disqus.com>
|
||||
* @copyright 2007-2010 Big Head Labs
|
||||
* @link http://disqus.com/
|
||||
* @package Disqus
|
||||
* @subpackage DisqusWordPressAPI
|
||||
* @version 2.0
|
||||
*/
|
||||
|
||||
require_once(ABSPATH.WPINC.'/http.php');
|
||||
require_once(dirname(__FILE__) . '/api/disqus/disqus.php');
|
||||
/** @#+
|
||||
* Constants
|
||||
*/
|
||||
/**
|
||||
* Base URL for Disqus.
|
||||
*/
|
||||
define('DISQUS_ALLOWED_HTML', '<b><u><i><h1><h2><h3><code><blockquote><br><hr>');
|
||||
|
||||
/**
|
||||
* Helper methods for all of the Disqus v2 API methods.
|
||||
*
|
||||
* @package Disqus
|
||||
* @subpackage DisqusWordPressAPI
|
||||
* @author DISQUS.com <team@disqus.com>
|
||||
* @copyright 2007-2008 Big Head Labs
|
||||
* @version 1.0
|
||||
*/
|
||||
class DisqusWordPressAPI {
|
||||
var $short_name;
|
||||
var $forum_api_key;
|
||||
|
||||
function DisqusWordPressAPI($short_name=null, $forum_api_key=null, $user_api_key=null) {
|
||||
$this->short_name = $short_name;
|
||||
$this->forum_api_key = $forum_api_key;
|
||||
$this->user_api_key = $user_api_key;
|
||||
$this->api = new DisqusAPI($user_api_key, $forum_api_key, DISQUS_API_URL);
|
||||
}
|
||||
|
||||
function get_last_error() {
|
||||
return $this->api->get_last_error();
|
||||
}
|
||||
|
||||
function get_user_api_key($username, $password) {
|
||||
$response = $this->api->call('get_user_api_key', array(
|
||||
'username' => $username,
|
||||
'password' => $password,
|
||||
), true);
|
||||
return $response;
|
||||
}
|
||||
|
||||
function get_forum_list($user_api_key) {
|
||||
$this->api->user_api_key = $user_api_key;
|
||||
return $this->api->get_forum_list();
|
||||
}
|
||||
|
||||
function get_forum_api_key($user_api_key, $id) {
|
||||
$this->api->user_api_key = $user_api_key;
|
||||
return $this->api->get_forum_api_key($id);
|
||||
}
|
||||
|
||||
function get_forum_posts($start_id=0) {
|
||||
$response = $this->api->get_forum_posts(null, array(
|
||||
'filter' => 'approved',
|
||||
'start_id' => $start_id,
|
||||
'limit' => 100,
|
||||
'order' => 'asc',
|
||||
'full_info' => 1
|
||||
));
|
||||
return $response;
|
||||
}
|
||||
|
||||
function import_wordpress_comments(&$wxr, $timestamp, $eof=true) {
|
||||
$http = new WP_Http();
|
||||
$response = $http->request(
|
||||
DISQUS_IMPORTER_URL . 'api/import-wordpress-comments/',
|
||||
array(
|
||||
'method' => 'POST',
|
||||
'timeout' => 60,
|
||||
'body' => array(
|
||||
'forum_url' => $this->short_name,
|
||||
'forum_api_key' => $this->forum_api_key,
|
||||
'response_type' => 'php',
|
||||
'wxr' => $wxr,
|
||||
'timestamp' => $timestamp,
|
||||
'eof' => (int)$eof
|
||||
),
|
||||
)
|
||||
);
|
||||
if ($response['response']['code'] !== 200) {
|
||||
// hack
|
||||
$this->api->last_error = $response->errors;
|
||||
return -1;
|
||||
}
|
||||
$data = unserialize($response['body']);
|
||||
if (!$data || $data['stat'] == 'fail') {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,88 +1,88 @@
|
||||
<?php
|
||||
/**
|
||||
* Helper script for setting up the WP command line environment
|
||||
*/
|
||||
error_reporting(E_ALL | E_STRICT);
|
||||
|
||||
if (php_sapi_name() != 'cli' && !empty($_SERVER['REMOTE_ADDR'])) {
|
||||
// Don't execute for web requests
|
||||
die("This script must be run from CLI.");
|
||||
}
|
||||
|
||||
if (!isset($argv)) {
|
||||
$argv = array();
|
||||
}
|
||||
|
||||
function print_line() {
|
||||
$args = func_get_args();
|
||||
$result = call_user_func_array('sprintf', $args);
|
||||
print("{$result}\n");
|
||||
}
|
||||
|
||||
define('DOING_AJAX', true);
|
||||
define('WP_USE_THEMES', false);
|
||||
if (isset($_ENV['WORDPRESS_PATH'])) {
|
||||
define('ABSPATH', $_ENV['WORDPRESS_PATH']);
|
||||
} else {
|
||||
if (substr($_SERVER['SCRIPT_FILENAME'], 0, 1) != '/') {
|
||||
$script_path = $_SERVER['PWD'] . $_SERVER['SCRIPT_FILENAME'];
|
||||
} else {
|
||||
$script_path = $_SERVER['SCRIPT_FILENAME'];
|
||||
}
|
||||
$tree = '';
|
||||
$paths = array();
|
||||
$chunks = explode('/', dirname($script_path));
|
||||
foreach ($chunks as $chunk) {
|
||||
if (!$chunk) continue;
|
||||
$tree = $tree.'/'.$chunk;
|
||||
array_push($paths, $tree);
|
||||
}
|
||||
$paths = array_reverse($paths);
|
||||
|
||||
foreach ($paths as $path) {
|
||||
if (is_file($path.'/wp-config.php')) {
|
||||
define('ABSPATH', $path . '/');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!defined('ABSPATH')) {
|
||||
print_line("Unable to determine wordpress path. Please set it using WORDPRESS_PATH.");
|
||||
die();
|
||||
}
|
||||
|
||||
$_SERVER = array(
|
||||
"HTTP_HOST" => "disqus.com",
|
||||
"SCRIPT_NAME" => "",
|
||||
"PHP_SELF" => __FILE__,
|
||||
"SERVER_NAME" => "localhost",
|
||||
"REQUEST_URI" => "/",
|
||||
"REQUEST_METHOD" => "GET"
|
||||
);
|
||||
require_once(ABSPATH . 'wp-config.php');
|
||||
|
||||
// swap out the object cache due to memory constraints
|
||||
|
||||
global $wp_object_cache;
|
||||
|
||||
class DummyWP_Object_Cache extends WP_Object_Cache {
|
||||
function set($id, $data, $group = 'default', $expire = '') {
|
||||
return;
|
||||
}
|
||||
function delete($id, $group = 'default', $force = false) {
|
||||
return;
|
||||
}
|
||||
function add($id, $data, $group = 'default', $expire = '') {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// HACK: kill all output buffers (some plugins, like Hyper Cache, use theses)
|
||||
while (@ob_end_flush());
|
||||
|
||||
// We cant simply replace the object cache incase set/add do something that
|
||||
// matters to the webserver
|
||||
// $wp_object_cache = new DummyWP_Object_Cache();
|
||||
|
||||
?>
|
||||
<?php
|
||||
/**
|
||||
* Helper script for setting up the WP command line environment
|
||||
*/
|
||||
error_reporting(E_ALL | E_STRICT);
|
||||
|
||||
if (php_sapi_name() != 'cli' && !empty($_SERVER['REMOTE_ADDR'])) {
|
||||
// Don't execute for web requests
|
||||
die("This script must be run from CLI.");
|
||||
}
|
||||
|
||||
if (!isset($argv)) {
|
||||
$argv = array();
|
||||
}
|
||||
|
||||
function print_line() {
|
||||
$args = func_get_args();
|
||||
$result = call_user_func_array('sprintf', $args);
|
||||
print("{$result}\n");
|
||||
}
|
||||
|
||||
define('DOING_AJAX', true);
|
||||
define('WP_USE_THEMES', false);
|
||||
if (isset($_ENV['WORDPRESS_PATH'])) {
|
||||
define('ABSPATH', $_ENV['WORDPRESS_PATH']);
|
||||
} else {
|
||||
if (substr($_SERVER['SCRIPT_FILENAME'], 0, 1) != '/') {
|
||||
$script_path = $_SERVER['PWD'] . $_SERVER['SCRIPT_FILENAME'];
|
||||
} else {
|
||||
$script_path = $_SERVER['SCRIPT_FILENAME'];
|
||||
}
|
||||
$tree = '';
|
||||
$paths = array();
|
||||
$chunks = explode('/', dirname($script_path));
|
||||
foreach ($chunks as $chunk) {
|
||||
if (!$chunk) continue;
|
||||
$tree = $tree.'/'.$chunk;
|
||||
array_push($paths, $tree);
|
||||
}
|
||||
$paths = array_reverse($paths);
|
||||
|
||||
foreach ($paths as $path) {
|
||||
if (is_file($path.'/wp-config.php')) {
|
||||
define('ABSPATH', $path . '/');
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!defined('ABSPATH')) {
|
||||
print_line("Unable to determine wordpress path. Please set it using WORDPRESS_PATH.");
|
||||
die();
|
||||
}
|
||||
|
||||
$_SERVER = array(
|
||||
"HTTP_HOST" => "disqus.com",
|
||||
"SCRIPT_NAME" => "",
|
||||
"PHP_SELF" => __FILE__,
|
||||
"SERVER_NAME" => "localhost",
|
||||
"REQUEST_URI" => "/",
|
||||
"REQUEST_METHOD" => "GET"
|
||||
);
|
||||
require_once(ABSPATH . 'wp-config.php');
|
||||
|
||||
// swap out the object cache due to memory constraints
|
||||
|
||||
global $wp_object_cache;
|
||||
|
||||
class DummyWP_Object_Cache extends WP_Object_Cache {
|
||||
function set($id, $data, $group = 'default', $expire = '') {
|
||||
return;
|
||||
}
|
||||
function delete($id, $group = 'default', $force = false) {
|
||||
return;
|
||||
}
|
||||
function add($id, $data, $group = 'default', $expire = '') {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// HACK: kill all output buffers (some plugins, like Hyper Cache, use theses)
|
||||
while (@ob_end_flush());
|
||||
|
||||
// We cant simply replace the object cache incase set/add do something that
|
||||
// matters to the webserver
|
||||
// $wp_object_cache = new DummyWP_Object_Cache();
|
||||
|
||||
?>
|
||||
Binary file not shown.
@@ -2,418 +2,483 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: disqus-wordpress\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-06-23 16:22-0800\n"
|
||||
"PO-Revision-Date: 2014-06-23 16:23-0800\n"
|
||||
"Last-Translator: Ryan Valentin <ryan@disqus.com>\n"
|
||||
"Language-Team: DISQUS <translation@disqus.com>\n"
|
||||
"POT-Creation-Date: 2014-11-10 11:06-0800\n"
|
||||
"PO-Revision-Date: 2014-11-10 11:07-0800\n"
|
||||
"Last-Translator: Ryan <ryan@disqus.com>\n"
|
||||
"Language-Team: Disqus <translation@disqus.com>\n"
|
||||
"Language: en_US\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Poedit-KeywordsList: _;gettext;gettext_noop;dsq_i;__;_e\n"
|
||||
"X-Poedit-Basepath: ../\n"
|
||||
"X-Generator: Poedit 1.6.5\n"
|
||||
"X-Generator: Poedit 1.6.10\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Poedit-SearchPath-0: ..\n"
|
||||
|
||||
#: ../disqus/comments.php:18 ../disqus/comments.php:34
|
||||
msgid "<span class=\"meta-nav\">←</span> Older Comments"
|
||||
#: ../disqus/comments.php:15 ../disqus/comments.php:37
|
||||
msgid "Older Comments"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/comments.php:19 ../disqus/comments.php:35
|
||||
msgid "Newer Comments <span class=\"meta-nav\">→</span>"
|
||||
#: ../disqus/comments.php:18 ../disqus/comments.php:40
|
||||
msgid "Newer Comments"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:442
|
||||
#: ../disqus/disqus.php:178
|
||||
msgid "Disqus needs to be configured"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:179
|
||||
msgid "Configure Disqus by clicking Comments to the left."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:527
|
||||
msgid ""
|
||||
"Your comments have been sent to Disqus and queued for import!<br/><a href=\""
|
||||
"Unable to export comments. Make sure you are accessing this page from the "
|
||||
"Wordpress dashboard."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:446
|
||||
#, php-format
|
||||
msgid "Processed comments on post #%s…"
|
||||
#: ../disqus/disqus.php:558 ../disqus/disqus.php:584
|
||||
msgid "Your comments have been sent to Disqus and queued for import!"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:456
|
||||
#, php-format
|
||||
#: ../disqus/disqus.php:560 ../disqus/disqus.php:586
|
||||
msgid "See the status of your import at Disqus"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:564
|
||||
msgid "Processed comments on post"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:574
|
||||
msgid "Sorry, something unexpected happened with the export. Please try again."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:576
|
||||
msgid ""
|
||||
"Sorry, something unexpected happened with the export. Please <a href=\"#\" "
|
||||
"id=\"dsq_export_retry\">try again</a></p><p>If your API key has changed, you "
|
||||
"may need to reinstall Disqus (deactivate the plugin and then reactivate it). "
|
||||
"If you are still having issues, refer to the <a href=\"%s\" onclick=\"window."
|
||||
"open(this.href); return false\">WordPress help page</a>."
|
||||
"If your API key has changed, you may need to reinstall Disqus (deactivate "
|
||||
"the plugin and then reactivate it)."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:461
|
||||
#: ../disqus/disqus.php:577
|
||||
#, php-format
|
||||
msgid ""
|
||||
"Your comments have been sent to Disqus and queued for import!<br/><a href="
|
||||
"\"%s\" target=\"_blank\">See the status of your import at Disqus</a>"
|
||||
msgid "If you are still having issues, refer to the %s WordPress help page"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:491
|
||||
#: ../disqus/disqus.php:608
|
||||
msgid ""
|
||||
"Unable to import comments. Make sure you are accessing this page from the "
|
||||
"Wordpress dashboard."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:631
|
||||
msgid "There was an error downloading your comments from Disqus."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:496
|
||||
#: ../disqus/disqus.php:636
|
||||
msgid ""
|
||||
"Your comments have been downloaded from Disqus and saved in your local "
|
||||
"database."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:499
|
||||
#: ../disqus/disqus.php:639
|
||||
#, php-format
|
||||
msgid "Import in progress (last post id: %s) …"
|
||||
msgid "Import in progress (last post id: %s)"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:833
|
||||
#: ../disqus/disqus.php:989
|
||||
msgid "Pingback:"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:833
|
||||
msgid "(Edit)"
|
||||
#: ../disqus/disqus.php:989
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:870
|
||||
#: ../disqus/disqus.php:1026
|
||||
msgid "Configure"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:872 ../disqus/manage.php:360
|
||||
#: ../disqus/disqus.php:1028 ../disqus/manage.php:394
|
||||
msgid "Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/disqus.php:1577
|
||||
#: ../disqus/disqus.php:1492
|
||||
msgid ""
|
||||
"Sorry, the built-in commenting system is disabled because Disqus is active."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:61
|
||||
#: ../disqus/manage.php:62
|
||||
msgid "Disqus Reset"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:64
|
||||
#: ../disqus/manage.php:65
|
||||
msgid "Disqus has been reset successfully."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:66
|
||||
#: ../disqus/manage.php:67
|
||||
msgid "Local settings for the plugin were removed."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:67
|
||||
#: ../disqus/manage.php:68
|
||||
msgid "Database changes by Disqus were reverted."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:69
|
||||
msgid ""
|
||||
"If you wish to <a href=\"?page=disqus&step=1\">reinstall</a>, you can do "
|
||||
"that now."
|
||||
#: ../disqus/manage.php:71
|
||||
msgid "If you wish to reinstall, you can do that now."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:182
|
||||
#: ../disqus/manage.php:72
|
||||
msgid "Reinstall"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:189
|
||||
msgid "Your settings have been changed."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:206
|
||||
msgid ""
|
||||
"There was an error completing the installation of Disqus. If you are still "
|
||||
"having issues, refer to the <a href=\"https://help.disqus.com/customer/"
|
||||
"portal/articles/472005-wordpress-troubleshooting\">WordPress help page</a>."
|
||||
#: ../disqus/manage.php:220
|
||||
msgid "There was an error completing the installation of Disqus."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:236
|
||||
#, php-format
|
||||
msgid ""
|
||||
"There aren't any sites associated with this account. Maybe you want to <a "
|
||||
"href=\"%s\">create a site</a>?"
|
||||
#: ../disqus/manage.php:222
|
||||
msgid "If you are still having issues, refer to the help documentation."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:246
|
||||
msgid "Moderate"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:246
|
||||
msgid "Install"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:247
|
||||
msgid "Plugin Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:256 ../disqus/manage.php:267 ../disqus/manage.php:301
|
||||
msgid "Install Disqus Comments"
|
||||
#: ../disqus/manage.php:225
|
||||
msgid "WordPress Help Page"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:258
|
||||
msgid ""
|
||||
"There aren't any sites associated with this account. Maybe you want to "
|
||||
"create a site?"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:261
|
||||
msgid "Create a site"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:274
|
||||
msgid "Moderate"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:274
|
||||
msgid "Install"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:277
|
||||
msgid "Plugin Settings"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:287 ../disqus/manage.php:301 ../disqus/manage.php:335
|
||||
msgid "Install Disqus Comments"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:289
|
||||
msgid "Disqus has been installed on your blog."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:259
|
||||
msgid ""
|
||||
"If you have existing comments, you may wish to <a href=\"?page=disqus&"
|
||||
"t=adv#export\">export them</a> now. Otherwise, you're all set, and the "
|
||||
"Disqus network is now powering comments on your blog."
|
||||
#: ../disqus/manage.php:291
|
||||
msgid "If you have existing comments, you may wish to export them now."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:260
|
||||
#: ../disqus/manage.php:292
|
||||
msgid ""
|
||||
"Otherwise, you're all set, and the Disqus network is now powering comments "
|
||||
"on your site."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:294
|
||||
msgid "Continue to the moderation dashboard"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:273
|
||||
#: ../disqus/manage.php:307
|
||||
msgid "Select a website"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:285
|
||||
#: ../disqus/manage.php:319
|
||||
msgid "Or register a new one on the Disqus website."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:307
|
||||
#: ../disqus/manage.php:341
|
||||
msgid "Username or email"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:310
|
||||
msgid "(don't have a Disqus Profile yet?)"
|
||||
#: ../disqus/manage.php:344
|
||||
msgid "don't have a Disqus Profile yet?"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:314
|
||||
#: ../disqus/manage.php:348
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:317
|
||||
msgid "(forgot your password?)"
|
||||
#: ../disqus/manage.php:351
|
||||
msgid "forgot your password?"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:361
|
||||
#: ../disqus/manage.php:371
|
||||
msgid "Go to Disqus Moderation"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:395
|
||||
#, php-format
|
||||
msgid "Version: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:365
|
||||
msgid ""
|
||||
"<p class=\"status\">Disqus comments are currently <span class=\"dsq-disabled-"
|
||||
"text\">disabled</span>. (<a href=\"?page=disqus&active=1\">Enable</a>)</"
|
||||
"p>"
|
||||
#: ../disqus/manage.php:401
|
||||
msgid "Disqus comments are currently "
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:367
|
||||
msgid ""
|
||||
"<p class=\"status\">Disqus comments are currently <span class=\"dsq-enabled-"
|
||||
"text\">enabled</span>. (<a href=\"?page=disqus&active=0\">Disable</a>)</"
|
||||
"p>"
|
||||
#: ../disqus/manage.php:404
|
||||
msgid "Disable"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:375
|
||||
msgid "<h3>General</h3>"
|
||||
#: ../disqus/manage.php:404
|
||||
msgid "Enable"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:378
|
||||
#: ../disqus/manage.php:413
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:416
|
||||
msgid "Forum Shortname"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:383
|
||||
#: ../disqus/manage.php:421
|
||||
msgid ""
|
||||
"This is the unique identifier for your website in Disqus, automatically set "
|
||||
"during installation."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:388
|
||||
msgid "<h3>Appearance</h3>"
|
||||
#: ../disqus/manage.php:426
|
||||
msgid "Appearance"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:391
|
||||
#: ../disqus/manage.php:429
|
||||
msgid "Use Disqus Comments on"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:394
|
||||
#: ../disqus/manage.php:432
|
||||
msgid "All blog posts."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:395
|
||||
#: ../disqus/manage.php:433
|
||||
msgid "Blog posts with closed comments only."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:399
|
||||
#: ../disqus/manage.php:437
|
||||
msgid ""
|
||||
"You have selected to only enable Disqus on posts with closed comments. If "
|
||||
"you aren't seeing Disqus on new posts, change this option to <strong>All "
|
||||
"blog posts</strong>."
|
||||
"you aren't seeing Disqus on new posts, change this option to \"All blog posts"
|
||||
"\"."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:400
|
||||
#: ../disqus/manage.php:438
|
||||
msgid ""
|
||||
"Shows comments on either all blog posts, or ones with closed comments. "
|
||||
"Select the <strong>Blog posts with closed comments only</strong> option if "
|
||||
"you plan on disabling Disqus, but want to keep it on posts which already "
|
||||
"have comments."
|
||||
"Select the \"Blog posts with closed comments only\" option if you plan on "
|
||||
"disabling Disqus, but want to keep it on posts which already have comments."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:406
|
||||
msgid "<h3>Sync</h3>"
|
||||
#: ../disqus/manage.php:444
|
||||
msgid "Sync"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:409
|
||||
#: ../disqus/manage.php:447
|
||||
msgid "Comment Importing"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:412
|
||||
#: ../disqus/manage.php:450
|
||||
msgid "Disable automated comment importing"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:413
|
||||
#: ../disqus/manage.php:451
|
||||
msgid ""
|
||||
"If you have problems with WP-Cron taking too long, or have a large number of "
|
||||
"comments, you may wish to disable automated sync. Comments will only be "
|
||||
"imported to your local Wordpress database if you do so manually."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:417
|
||||
#: ../disqus/manage.php:455
|
||||
msgid "Server-Side Rendering"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:420
|
||||
#: ../disqus/manage.php:458
|
||||
msgid "Disable server-side rendering of comments"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:421
|
||||
#: ../disqus/manage.php:459
|
||||
msgid "Hides comments from nearly all search engines."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:426
|
||||
msgid "<h3>Patches</h3>"
|
||||
#: ../disqus/manage.php:464
|
||||
msgid "Patches"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:430
|
||||
#: ../disqus/manage.php:468
|
||||
msgid "External Javascript Files"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:471
|
||||
msgid "Render Javascript in external files"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:472
|
||||
msgid ""
|
||||
"This will render the Disqus scripts as external files in the footer as "
|
||||
"recommended by Wordpress. Disable this if are not seeing Disqus appear on "
|
||||
"pages that normally have comments. This will fix the issue if your theme "
|
||||
"does not support the 'wp_enqueue_script' function, are caching your site on "
|
||||
"a CDN."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:477
|
||||
msgid "Template Conflicts"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:433
|
||||
#: ../disqus/manage.php:480
|
||||
msgid "Output JavaScript in footer"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:434
|
||||
#, php-format
|
||||
#: ../disqus/manage.php:481
|
||||
msgid ""
|
||||
"Enable this if you have problems with comment counts or other "
|
||||
"irregularities. For example: missing counts, counts always at 0, Disqus code "
|
||||
"showing on the page, broken image carousels, or longer-than-usual home page "
|
||||
"load times (<a href=\"%s\" onclick=\"window.open(this.href); return false"
|
||||
"\">more info</a>)."
|
||||
"load times"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:439
|
||||
#, php-format
|
||||
msgid ""
|
||||
"<h3>Advanced</h3><h4>Single Sign-On</h4><p>Allows users to log in to Disqus "
|
||||
"via WordPress. (<a href=\"%s\" onclick=\"window.open(this.href); return false"
|
||||
"\">More info on SSO</a>)</p>"
|
||||
#: ../disqus/manage.php:487
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:443
|
||||
#: ../disqus/manage.php:488
|
||||
msgid "Single Sign-On"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:490
|
||||
msgid "Allows users to log in to Disqus via WordPress."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:492
|
||||
msgid "More info on SSO"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:499
|
||||
msgid "Disqus Partner Key"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:450
|
||||
#: ../disqus/manage.php:506
|
||||
msgid "API Application Public Key"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:454 ../disqus/manage.php:462
|
||||
#, php-format
|
||||
msgid "Found at <a href=\"%s\">Disqus API Applications</a>."
|
||||
#: ../disqus/manage.php:510 ../disqus/manage.php:518
|
||||
msgid "Disqus API Applications"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:458
|
||||
#: ../disqus/manage.php:514
|
||||
msgid "API Application Secret Key"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:466
|
||||
#: ../disqus/manage.php:522
|
||||
msgid "Custom Log-in Button"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:516
|
||||
#: ../disqus/manage.php:536
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:516
|
||||
#: ../disqus/manage.php:536
|
||||
msgid "Choose"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:516
|
||||
#: ../disqus/manage.php:536
|
||||
msgid "button"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:522
|
||||
#, php-format
|
||||
msgid ""
|
||||
"Adds a button to the Disqus log-in interface. (<a href=\"%s\">Example "
|
||||
"screenshot</a>.)"
|
||||
#: ../disqus/manage.php:542
|
||||
msgid "Adds a button to the Disqus log-in interface."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:523
|
||||
#, php-format
|
||||
msgid ""
|
||||
"<br />See <a href=\"%s\">our SSO button documentation</a> for a template to "
|
||||
"create your own button."
|
||||
#: ../disqus/manage.php:543
|
||||
msgid "Example screenshot"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:541
|
||||
#: ../disqus/manage.php:545
|
||||
msgid "See our documentation for a template to create your own button."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:546
|
||||
msgid "SSO button documentation"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:564
|
||||
msgid "Export comments to Disqus"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:544
|
||||
#: ../disqus/manage.php:570
|
||||
msgid "Export Comments"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:544
|
||||
#: ../disqus/manage.php:571
|
||||
msgid "This will export your existing WordPress comments to Disqus"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:550
|
||||
#: ../disqus/manage.php:579
|
||||
msgid "Sync Disqus with WordPress"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:554
|
||||
#: ../disqus/manage.php:586
|
||||
msgid "Sync Comments"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:554
|
||||
#: ../disqus/manage.php:587
|
||||
msgid ""
|
||||
"This will download your Disqus comments and store them locally in WordPress"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:555
|
||||
#: ../disqus/manage.php:591
|
||||
msgid "Remove all imported Disqus comments before syncing."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:566
|
||||
#: ../disqus/manage.php:605
|
||||
msgid "Reset Disqus"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:570
|
||||
#: ../disqus/manage.php:610
|
||||
msgid "Are you sure you want to reset the Disqus plugin?"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:570
|
||||
#: ../disqus/manage.php:611
|
||||
msgid ""
|
||||
"This removes all Disqus-specific settings. Comments will remain unaffected."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:571
|
||||
#: ../disqus/manage.php:613
|
||||
msgid ""
|
||||
"If you have problems with resetting taking too long you may wish to first "
|
||||
"manually drop the <code>disqus_dupecheck</code> index from your "
|
||||
"<code>commentmeta</code> table."
|
||||
"manually drop the 'disqus_dupecheck' index from your 'commentmeta' table."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:578
|
||||
#: ../disqus/manage.php:620
|
||||
msgid "Debug Information"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:579
|
||||
#, php-format
|
||||
#: ../disqus/manage.php:622
|
||||
msgid ""
|
||||
"Having problems with the plugin? Check out our <a href=\"%s\" onclick="
|
||||
"\"window.open(this.href); return false\">WordPress Troubleshooting</a> "
|
||||
"documentation. You can also <a href=\"%s\">drop us a line</a> including the "
|
||||
"following details and we'll do what we can."
|
||||
"Having problems with the plugin? Check out our troubleshooting documentation."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:623
|
||||
msgid "WordPress troubleshooting ocumentation"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:624
|
||||
msgid "You can also email us and include the debug info below."
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/manage.php:625
|
||||
msgid "Contact support"
|
||||
msgstr ""
|
||||
|
||||
#: ../disqus/upgrade.php:12
|
||||
|
||||
Whitespace-only changes.
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,120 @@
|
||||
jQuery(document).ready(function($) {
|
||||
|
||||
// Replace comments dashboard link
|
||||
$('#dashboard_right_now .inside table td.last a, #dashboard_recent_comments .inside .textright a.button').attr('href', 'edit-comments.php?page=disqus');
|
||||
|
||||
// Focuses on username text box if present
|
||||
if ($('#dsq-username').length) {
|
||||
$('#dsq-username').focus();
|
||||
}
|
||||
|
||||
// Set current Disqus admin state
|
||||
$('#dsq-tabs li').click(function() {
|
||||
$('#dsq-tabs li.selected').removeClass('selected');
|
||||
$(this).addClass('selected');
|
||||
$('.dsq-main, .dsq-advanced').hide();
|
||||
$('.' + $(this).attr('rel')).show();
|
||||
});
|
||||
if (location.href.indexOf('#adv') != -1) {
|
||||
$('#dsq-tab-advanced').click();
|
||||
}
|
||||
|
||||
// Bind click events to export/sync buttons
|
||||
dsq_fire_export();
|
||||
dsq_fire_import();
|
||||
});
|
||||
|
||||
var dsq_fire_export = function() {
|
||||
jQuery(function($) {
|
||||
$('#dsq_export a.button').unbind().click(function() {
|
||||
$('#dsq_export .status').removeClass('dsq-export-fail').addClass('dsq-exporting').html('Processing...');
|
||||
dsq_export_comments();
|
||||
return false;
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
var dsq_export_comments = function() {
|
||||
jQuery(function($) {
|
||||
var status = $('#dsq_export .status');
|
||||
var nonce = $('#dsq-form_nonce_export').val();
|
||||
var export_info = (status.attr('rel') || '0|' + (new Date().getTime()/1000)).split('|');
|
||||
$.get(
|
||||
adminVars.indexUrl,
|
||||
{
|
||||
cf_action: 'export_comments',
|
||||
post_id: export_info[0],
|
||||
timestamp: export_info[1],
|
||||
_dsqexport_wpnonce: nonce
|
||||
},
|
||||
function(response) {
|
||||
switch (response.result) {
|
||||
case 'success':
|
||||
status.html(response.msg).attr('rel', response.post_id + '|' + response.timestamp);
|
||||
switch (response.status) {
|
||||
case 'partial':
|
||||
dsq_export_comments();
|
||||
break;
|
||||
case 'complete':
|
||||
status.removeClass('dsq-exporting').addClass('dsq-exported');
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'fail':
|
||||
status.parent().html(response.msg);
|
||||
dsq_fire_export();
|
||||
break;
|
||||
}
|
||||
},
|
||||
'json'
|
||||
);
|
||||
});
|
||||
};
|
||||
|
||||
var dsq_fire_import = function() {
|
||||
jQuery(function($) {
|
||||
$('#dsq_import a.button, #dsq_import_retry').unbind().click(function() {
|
||||
var wipe = $('#dsq_import_wipe').is(':checked');
|
||||
$('#dsq_import .status').removeClass('dsq-import-fail').addClass('dsq-importing').html('Processing...');
|
||||
dsq_import_comments(wipe);
|
||||
return false;
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
var dsq_import_comments = function(wipe) {
|
||||
jQuery(function($) {
|
||||
var status = $('#dsq_import .status');
|
||||
var nonce = $('#dsq-form_nonce_import').val();
|
||||
var last_comment_id = status.attr('rel') || '0';
|
||||
$.get(
|
||||
adminVars.indexUrl,
|
||||
{
|
||||
cf_action: 'import_comments',
|
||||
last_comment_id: last_comment_id,
|
||||
wipe: (wipe ? 1 : 0),
|
||||
_dsqimport_wpnonce: nonce
|
||||
},
|
||||
function(response) {
|
||||
switch (response.result) {
|
||||
case 'success':
|
||||
status.html(response.msg).attr('rel', response.last_comment_id);
|
||||
switch (response.status) {
|
||||
case 'partial':
|
||||
dsq_import_comments(false);
|
||||
break;
|
||||
case 'complete':
|
||||
status.removeClass('dsq-importing').addClass('dsq-imported');
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'fail':
|
||||
status.parent().html(response.msg);
|
||||
dsq_fire_import();
|
||||
break;
|
||||
}
|
||||
},
|
||||
'json'
|
||||
);
|
||||
});
|
||||
};
|
||||
@@ -0,0 +1,17 @@
|
||||
var disqus_shortname = countVars.disqusShortname;
|
||||
(function () {
|
||||
var nodes = document.getElementsByTagName('span');
|
||||
for (var i = 0, url; i < nodes.length; i++) {
|
||||
if (nodes[i].className.indexOf('dsq-postid') != -1) {
|
||||
nodes[i].parentNode.setAttribute('data-disqus-identifier', nodes[i].getAttribute('data-dsqidentifier'));
|
||||
url = nodes[i].parentNode.href.split('#', 1);
|
||||
if (url.length == 1) { url = url[0]; }
|
||||
else { url = url[1]; }
|
||||
nodes[i].parentNode.href = url + '#disqus_thread';
|
||||
}
|
||||
}
|
||||
var s = document.createElement('script'); s.async = true;
|
||||
s.type = 'text/javascript';
|
||||
s.src = '//' + disqus_shortname + '.disqus.com/count.js';
|
||||
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
|
||||
}());
|
||||
@@ -0,0 +1,15 @@
|
||||
jQuery(document).ready(function($) {
|
||||
|
||||
// fix menu
|
||||
var mc = $('#menu-comments');
|
||||
mc.find('a.wp-has-submenu').attr('href', 'edit-comments.php?page=disqus').end().find('.wp-submenu li:has(a[href="edit-comments.php?page=disqus"])').prependTo(mc.find('.wp-submenu ul'));
|
||||
|
||||
// fix admin bar
|
||||
$('#wp-admin-bar-comments').find('a.ab-item').attr('href', 'edit-comments.php?page=disqus');
|
||||
|
||||
// Remove trackbacks
|
||||
$('#dashboard_recent_comments div.trackback').remove();
|
||||
|
||||
// Replace comment counts
|
||||
$('#dashboard_right_now').find('.b-comments a').html(dashboardVars.stats.totalComments).end().find('.b_approved a').html(dashboardVars.stats.approved).end().find('.b-waiting a').html(dashboardVars.stats.moderated).end().find('.b-spam a').html(dashboardVars.stats.spam);
|
||||
});
|
||||
@@ -0,0 +1,56 @@
|
||||
var disqus_url = embedVars.disqusUrl;
|
||||
var disqus_identifier = embedVars.disqusIdentifier;
|
||||
var disqus_container_id = 'disqus_thread';
|
||||
var disqus_shortname = embedVars.disqusShortname;
|
||||
var disqus_title = embedVars.disqusTitle;
|
||||
var disqus_config_custom = window.disqus_config;
|
||||
var disqus_config = function () {
|
||||
/*
|
||||
All currently supported events:
|
||||
onReady: fires when everything is ready,
|
||||
onNewComment: fires when a new comment is posted,
|
||||
onIdentify: fires when user is authenticated
|
||||
*/
|
||||
if (typeof embedVars.disqusConfig.remote_auth_s3 !== 'undefined') {
|
||||
this.page.remote_auth_s3 = embedVars.disqusConfig.remote_auth_s3;
|
||||
}
|
||||
|
||||
if (typeof embedVars.disqusConfig.api_key !== 'undefined') {
|
||||
this.page.api_key = embedVars.disqusConfig.api_key;
|
||||
}
|
||||
|
||||
if (typeof embedVars.disqusConfig.sso !== 'undefined') {
|
||||
this.sso = {
|
||||
name: embedVars.disqusConfig.sso.name,
|
||||
button: embedVars.disqusConfig.sso.button,
|
||||
url: embedVars.disqusConfig.sso.url,
|
||||
logout: embedVars.disqusConfig.sso.logout,
|
||||
width: embedVars.disqusConfig.sso.width,
|
||||
height: embedVars.disqusConfig.sso.height
|
||||
};
|
||||
}
|
||||
|
||||
this.language = embedVars.disqusConfig.language;
|
||||
this.callbacks.onReady.push(function () {
|
||||
if (!embedVars.options.manualSync) {
|
||||
// sync comments in the background so we don't block the page
|
||||
var script = document.createElement('script');
|
||||
script.async = true;
|
||||
script.src = '?cf_action=sync_comments&post_id=' + embedVars.postId;
|
||||
|
||||
var firstScript = document.getElementsByTagName('script')[0];
|
||||
firstScript.parentNode.insertBefore(script, firstScript);
|
||||
}
|
||||
});
|
||||
|
||||
if (disqus_config_custom) {
|
||||
disqus_config_custom.call(this);
|
||||
}
|
||||
};
|
||||
|
||||
(function() {
|
||||
var dsq = document.createElement('script'); dsq.type = 'text/javascript';
|
||||
dsq.async = true;
|
||||
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
})();
|
||||
@@ -0,0 +1,19 @@
|
||||
jQuery(document).ready( function($) {
|
||||
alert('pointer.js loaded');
|
||||
console.log('pointerContent', pointerContent);
|
||||
|
||||
$('#menu-comments').pointer({
|
||||
content: pointerContent,
|
||||
position: {
|
||||
edge: 'left', // arrow direction
|
||||
align: 'center' // vertical alignment
|
||||
},
|
||||
pointerWidth: 350,
|
||||
close: function() {
|
||||
$.post(ajaxurl, {
|
||||
pointer: 'disqus_settings_pointer', // pointer ID
|
||||
action: 'dismiss-wp-pointer'
|
||||
});
|
||||
}
|
||||
}).pointer('open');
|
||||
});
|
||||
@@ -0,0 +1,34 @@
|
||||
var file_frame;
|
||||
|
||||
jQuery(document).ready(function($) {
|
||||
$('.upload_image_button').on('click', function(event) {
|
||||
event.preventDefault();
|
||||
|
||||
// If the media frame already exists, reopen it.
|
||||
if ( file_frame ) {
|
||||
file_frame.open();
|
||||
return;
|
||||
}
|
||||
|
||||
// Create the media frame.
|
||||
file_frame = wp.media.frames.file_frame = wp.media({
|
||||
title: $(this).data('uploader_title'),
|
||||
button: {
|
||||
text: $(this).data('uploader_button_text'),
|
||||
},
|
||||
multiple: false // Set to true to allow multiple files to be selected
|
||||
});
|
||||
|
||||
// When an image is selected, run a callback.
|
||||
file_frame.on('select', function() {
|
||||
// We set multiple to false so only get one image from the uploader
|
||||
attachment = file_frame.state().get('selection').first().toJSON();
|
||||
|
||||
// Do something with attachment.id and/or attachment.url here
|
||||
$('#disqus_sso_button').val(attachment.url);
|
||||
});
|
||||
|
||||
// Finally, open the modal
|
||||
file_frame.open();
|
||||
});
|
||||
});
|
||||
@@ -1,67 +1,67 @@
|
||||
/* Selectors required for pre-WordPress 2.5 */
|
||||
|
||||
.form-table {
|
||||
border-collapse: collapse;
|
||||
margin-top: 1em;
|
||||
width: 100%;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.form-table tr {
|
||||
background-color: #eaf3fa;
|
||||
}
|
||||
|
||||
.form-table td {
|
||||
margin-bottom: 9px;
|
||||
padding: 10px;
|
||||
line-height: 20px;
|
||||
font-size: 11px;
|
||||
border-bottom-width: 8px;
|
||||
border-bottom-style: solid;
|
||||
border-color: #fff;
|
||||
}
|
||||
|
||||
.form-table th {
|
||||
vertical-align: top;
|
||||
text-align: left;
|
||||
padding: 10px;
|
||||
width: 150px;
|
||||
border-bottom-width: 8px;
|
||||
border-bottom-style: solid;
|
||||
border-color: #fff;
|
||||
}
|
||||
|
||||
.form-table th.th-full {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.form-table input, .form-table textarea {
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
}
|
||||
|
||||
.form-table div.color-option {
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.form-table input.tog {
|
||||
margin-top: 2px;
|
||||
margin-right: 2px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.form-table table.color-palette {
|
||||
vertical-align: bottom;
|
||||
float: left;
|
||||
margin: -3px 3px 8px;
|
||||
}
|
||||
|
||||
.form-table .color-palette td {
|
||||
border-bottom: none;
|
||||
border: 1px solid #fff;
|
||||
font-size: 1px;
|
||||
line-height: 1px;
|
||||
}
|
||||
|
||||
#disqus_warning{ background-color:#ff0000; }
|
||||
/* Selectors required for pre-WordPress 2.5 */
|
||||
|
||||
.form-table {
|
||||
border-collapse: collapse;
|
||||
margin-top: 1em;
|
||||
width: 100%;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.form-table tr {
|
||||
background-color: #eaf3fa;
|
||||
}
|
||||
|
||||
.form-table td {
|
||||
margin-bottom: 9px;
|
||||
padding: 10px;
|
||||
line-height: 20px;
|
||||
font-size: 11px;
|
||||
border-bottom-width: 8px;
|
||||
border-bottom-style: solid;
|
||||
border-color: #fff;
|
||||
}
|
||||
|
||||
.form-table th {
|
||||
vertical-align: top;
|
||||
text-align: left;
|
||||
padding: 10px;
|
||||
width: 150px;
|
||||
border-bottom-width: 8px;
|
||||
border-bottom-style: solid;
|
||||
border-color: #fff;
|
||||
}
|
||||
|
||||
.form-table th.th-full {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.form-table input, .form-table textarea {
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
}
|
||||
|
||||
.form-table div.color-option {
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.form-table input.tog {
|
||||
margin-top: 2px;
|
||||
margin-right: 2px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.form-table table.color-palette {
|
||||
vertical-align: bottom;
|
||||
float: left;
|
||||
margin: -3px 3px 8px;
|
||||
}
|
||||
|
||||
.form-table .color-palette td {
|
||||
border-bottom: none;
|
||||
border: 1px solid #fff;
|
||||
font-size: 1px;
|
||||
line-height: 1px;
|
||||
}
|
||||
|
||||
#disqus_warning{ background-color:#ff0000; }
|
||||
@@ -1,52 +1,52 @@
|
||||
ul#dsq-tabs li:last-child {
|
||||
width: 100px;
|
||||
}
|
||||
ul#dsq-tabs li.selected {
|
||||
font-weight: bold;
|
||||
}
|
||||
ul#dsq-tabs li {
|
||||
float: left;
|
||||
color: #333;
|
||||
padding: 0.25em;
|
||||
height: 16px;
|
||||
cursor: pointer;
|
||||
margin-right: 8px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
ul#dsq-tabs {
|
||||
display: block;
|
||||
height: 20px;
|
||||
list-style: none;
|
||||
margin: 15px 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
select.disqus-replace {
|
||||
border-color: #C6D9E9;
|
||||
}
|
||||
|
||||
.dsq-content h2 {
|
||||
line-height: 41px;
|
||||
margin: 15px 0 10px;
|
||||
}
|
||||
|
||||
.dsq-alert {
|
||||
color: #fff;
|
||||
background: #e76c35;
|
||||
border: 1px solid #8f3e1c;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.dsq-disabled-text {
|
||||
color: #e76c35;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.dsq-enabled-text {
|
||||
color: #7fbd5a;
|
||||
font-weight: 700;
|
||||
ul#dsq-tabs li:last-child {
|
||||
width: 100px;
|
||||
}
|
||||
ul#dsq-tabs li.selected {
|
||||
font-weight: bold;
|
||||
}
|
||||
ul#dsq-tabs li {
|
||||
float: left;
|
||||
color: #333;
|
||||
padding: 0.25em;
|
||||
height: 16px;
|
||||
cursor: pointer;
|
||||
margin-right: 8px;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
ul#dsq-tabs {
|
||||
display: block;
|
||||
height: 20px;
|
||||
list-style: none;
|
||||
margin: 15px 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
select.disqus-replace {
|
||||
border-color: #C6D9E9;
|
||||
}
|
||||
|
||||
.dsq-content h2 {
|
||||
line-height: 41px;
|
||||
margin: 15px 0 10px;
|
||||
}
|
||||
|
||||
.dsq-alert {
|
||||
color: #fff;
|
||||
background: #e76c35;
|
||||
border: 1px solid #8f3e1c;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.dsq-disabled-text {
|
||||
color: #e76c35;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.dsq-enabled-text {
|
||||
color: #7fbd5a;
|
||||
font-weight: 700;
|
||||
}
|
||||
@@ -1,293 +1,321 @@
|
||||
=== Disqus Comment System ===
|
||||
Contributors: disqus, alexkingorg, crowdfavorite, zeeg, tail, thetylerhayes
|
||||
Tags: comments, threaded, email, notification, spam, avatars, community, profile, widget, disqus
|
||||
Requires at least: 2.8
|
||||
Tested up to: 3.9.1
|
||||
Stable tag: 2.77
|
||||
|
||||
The Disqus comment system replaces your WordPress comment system with your comments hosted and powered by Disqus.
|
||||
|
||||
== Description ==
|
||||
|
||||
Disqus, pronounced "discuss", is a service and tool for web comments and
|
||||
discussions. Disqus makes commenting easier and more interactive,
|
||||
while connecting websites and commenters across a thriving discussion
|
||||
community.
|
||||
|
||||
The Disqus for WordPress plugin seamlessly integrates using the Disqus API and by syncing with WordPress comments.
|
||||
|
||||
= Disqus for WordPress =
|
||||
|
||||
* Uses the Disqus API
|
||||
* Comments indexable by search engines (SEO-friendly)
|
||||
* Support for importing existing comments
|
||||
* Auto-sync (backup) of comments with Disqus and WordPress database
|
||||
|
||||
= Disqus Features =
|
||||
|
||||
* Threaded comments and replies
|
||||
* Notifications and reply by email
|
||||
* Subscribe and RSS options
|
||||
* Aggregated comments and social mentions
|
||||
* Powerful moderation and admin tools
|
||||
* Full spam filtering, blacklists and whitelists
|
||||
* Support for Disqus community widgets
|
||||
* Connected with a large discussion community
|
||||
* Increased exposure and readership
|
||||
|
||||
== Installation ==
|
||||
|
||||
**NOTE: It is recommended that you [backup your database](http://codex.wordpress.org/Backing_Up_Your_Database) before installing the plugin.**
|
||||
|
||||
1. Unpack archive to this archive to the 'wp-content/plugins/' directory inside
|
||||
of WordPress
|
||||
|
||||
* Maintain the directory structure of the archive (all extracted files
|
||||
should exist in 'wp-content/plugins/disqus-comment-system/'
|
||||
|
||||
2. From your blog administration, click on Comments to change settings
|
||||
(WordPress 2.0 users can find the settings under Options > Disqus.)
|
||||
|
||||
= More documentation =
|
||||
|
||||
Go to [http://disqus.com/help/wordpress](http://disqus.com/help/wordpress)
|
||||
|
||||
== Screenshots ==
|
||||
|
||||
1. Disqus Comments
|
||||
2. Discovery Box (part of Disqus Comments)
|
||||
3. Inline Moderation Interface
|
||||
|
||||
== Changes ==
|
||||
|
||||
2.77
|
||||
|
||||
* Fixes login by email issue
|
||||
* Make sure Disqus is enabled after installation
|
||||
* Additional security fixes
|
||||
|
||||
2.76
|
||||
|
||||
* Security fixes (Thanks to Nik Cubrilovic, Alexander Concha and Marc-Alexandre Montpas)
|
||||
* Bump tested Wordpress version to 3.9.1
|
||||
* Remove obsolete SSO button uploader
|
||||
* Enable 'Output javascript in footer' by default during installation
|
||||
* Fix for 'Reset' function not completely working the first time
|
||||
|
||||
2.75
|
||||
|
||||
* Bump supported WordPress version to 3.8.
|
||||
* Properly encode site name for SSO login button.
|
||||
* Increased timeout for comment exporter to 60 seconds.
|
||||
* Use https: for admin pages
|
||||
* Miscellaneous bug fixes and improvements.
|
||||
|
||||
2.74
|
||||
|
||||
* Updated settings UI
|
||||
* Add filter hook for setting custom Disqus language
|
||||
* For WP >= 3.5, use new media uploader
|
||||
* Disable internal Wordpress commenting if Disqus is enabled (thanks Artem Russakovskii)
|
||||
* Cleaned up installation and configuration flow
|
||||
* Added link to WP backup guide in README
|
||||
* Fix admin bar comments link
|
||||
* Added a check to avoid a missing key notice when WP_DEBUG=TRUE (thanks Jason Lengstorf)
|
||||
* Prevent 404 errors for embed.js from being reported by Google Webmaster Tools (missed in 2.73 README)
|
||||
|
||||
2.73
|
||||
|
||||
* Apply CDATA patch from Wordpress 3.4 to dsq_export_wxr_cdata() (thanks Artem
|
||||
Russakovskii for the patch).
|
||||
* Added Single Sign-On log-in button and icon to options (only for sites using SSO)
|
||||
* Output user website if set in SSO payload
|
||||
* Added plugin activation statuses to debug info
|
||||
* Bump supported WordPress version to 3.4.1
|
||||
* Fixed issue where disqus_dupecheck won't properly uninstall
|
||||
* Load second count.js (output-in-footer version) reference via SSL too
|
||||
* Added screenshots
|
||||
|
||||
2.72
|
||||
|
||||
* Load count.js via SSL when page is accessed via HTTPS
|
||||
* Fixed styling issue with Disqus admin.
|
||||
|
||||
2.71
|
||||
|
||||
* Fixed issue where embed wasn't using SSL if page was loaded via HTTPS
|
||||
* Fixed issue with syncing where to user's without a display_name would
|
||||
revert back to Anonymous (really this time).
|
||||
* Fixed issue where Google Webmaster Tools would incorrectly report 404s.
|
||||
* Fixed issue with Disqus admin display issues.
|
||||
|
||||
2.70
|
||||
|
||||
* Properly uninstall disqus_dupecheck index when uninstalling plugin.
|
||||
* Fixed issue with syncing where to user's without a display_name would
|
||||
revert back to Anonymous.
|
||||
* Fixed issue where IP addresses weren't being synced properly.
|
||||
* Allow non-Administrators (e.g., editors) to see Disqus Moderate panel
|
||||
inline (fixes GH-3)
|
||||
|
||||
2.69
|
||||
|
||||
* Bumped version number.
|
||||
|
||||
2.68
|
||||
|
||||
* Removed debugging information from web requests in CLI scripts (thanks
|
||||
Ryan Dewhurst for the report).
|
||||
* Reduced sync lock time to 1 hour.
|
||||
* Fixed an issue which was not allowing pending posts (for sync) to clear.
|
||||
* Fixed an issue with CLI scripts when used with certain caching plugins.
|
||||
|
||||
2.67
|
||||
|
||||
* Bumped synchronization timer delays to 5 minutes.
|
||||
* wp-cli.php now requires php_sapi_name to be set to 'cli' for execution.
|
||||
* Fixed a bug with imported comments not storing the correct relative date.
|
||||
* Added a lock for dsq_sync_forum, which can be overriden in the command line script
|
||||
with the --force tag.
|
||||
* dsq_sync_forum will now handle all pending post metadata updates (formerly a separate
|
||||
cron task, dsq_sync_post).
|
||||
|
||||
2.66
|
||||
|
||||
* Fixed issue with jQuery usage which conflicted with updated jQuery version.
|
||||
|
||||
2.65
|
||||
|
||||
* Corrected a bug that was causing posts to not appear due to invalid references.
|
||||
|
||||
2.64
|
||||
|
||||
* Added an option to disable Disqus without deactivating the plugin.
|
||||
* Added a second check for comment sync to prevent stampede race conditions in WP cron.
|
||||
|
||||
2.63
|
||||
|
||||
* Added command line script to import comments from DISQUS (scripts/import-comments.php).
|
||||
* Added command line script to export comments to DISQUS (scripts/export-comments.php).
|
||||
* The exporter will now only do one post at a time.
|
||||
* The exporter now only sends required attributes to DISQUS.
|
||||
* Moved media into its own directory.
|
||||
|
||||
2.62
|
||||
|
||||
* Changed legacy query to use = operator instead of LIKE so it can be indexed.
|
||||
|
||||
2.61
|
||||
|
||||
* Fixed an issue which was causing invalid information to be presented in RSS feeds.
|
||||
|
||||
2.60
|
||||
|
||||
* Added support for new Single Sign-On (API version 3.0).
|
||||
* Improved support for legacy Single Sign-On.
|
||||
|
||||
2.55
|
||||
|
||||
* Added support for get_comments_number in templates.
|
||||
|
||||
2.54
|
||||
|
||||
* Updated URL to forum moderation.
|
||||
|
||||
2.53
|
||||
|
||||
* Fixed an issue with fsockopen and GET requests (only affects certain users).
|
||||
|
||||
2.52
|
||||
|
||||
* Fixed issue with Disqus-API package not getting updated (only affecting PHP4).
|
||||
|
||||
2.51
|
||||
|
||||
* Added CDATA comments for JavaScript.
|
||||
* Syncing comments will now restore missing thread information from old imports.
|
||||
* Install and uninstall processes have been improved.
|
||||
* Fixed an issue in PHP4 with importing comments.
|
||||
* Fixed an issue that could cause duplicate comments in some places.
|
||||
* Added an option to remove existing imported comments when importing.
|
||||
|
||||
2.50
|
||||
|
||||
* Added missing file.
|
||||
|
||||
2.49
|
||||
|
||||
* Database usage has been optimized for storing comment meta data.
|
||||
|
||||
You can perform this migration automatically by visiting Comments -> Disqus, or if
|
||||
you have a large database, you may do this by hand:
|
||||
|
||||
CREATE INDEX disqus_dupecheck ON `wp_commentmeta` (meta_key, meta_value(11));
|
||||
INSERT INTO `wp_options` (blog_id, option_name, option_value, autoload) VALUES (0, 'disqus_version', '2.49', 'yes') ON DUPLICATE KEY UPDATE option_value = VALUES(option_value);
|
||||
|
||||
2.48
|
||||
|
||||
* Comment synchronization has been optimized to be a single call per-site.
|
||||
* disqus.css will now only load when displaying comments
|
||||
|
||||
2.47
|
||||
|
||||
* Fixed a security hole with comment importing.
|
||||
* Reverted ability to use default template comments design.
|
||||
* Comments will now store which version they were imported under.
|
||||
* Added an option to disable server side rendering.
|
||||
|
||||
2.46
|
||||
|
||||
* Better debugging information for export errors.
|
||||
* Added the ability to manual import Disqus comments into Wordpress.
|
||||
* Added thread_identifier support to exports.
|
||||
* Cleaned up API error messages.
|
||||
* Fixed a bug which was causing the import process to not grab only the latest set of comments.
|
||||
* Added an option to disable automated synchronization with Disqus.
|
||||
|
||||
2.45
|
||||
|
||||
* Comments should now store thread information as well as certain other meta data.
|
||||
* Optimize get_thread polling to only pull comments which aren't stored properly.
|
||||
|
||||
2.44
|
||||
|
||||
* Fixed JavaScript response for comments sync call.
|
||||
* Comments are now marked as closed while showing the embed (fixes showing default respond form).
|
||||
|
||||
2.43
|
||||
|
||||
* Fixed a JavaScript syntax error which would cause linting to fail.
|
||||
* Correct an issue that was causing comments.php to throw a syntax error under some configurations.
|
||||
|
||||
2.42
|
||||
|
||||
* Correct a bug with saving disqus_user_api_key (non-critical).
|
||||
* Added settings to Debug Information.
|
||||
* Adjusting all includes to use absolute paths.
|
||||
* Adjusted JSON usage to solve a problem for some clients.
|
||||
|
||||
2.41
|
||||
|
||||
* Correct a bug with double urlencoding titles.
|
||||
|
||||
2.40
|
||||
|
||||
* Comments are now synced with Disqus as a delayed asynchronous cron event.
|
||||
* Comment count code has been updated to use the new widget. (Comment counts
|
||||
must be linked to get tracked within "the loop" now).
|
||||
* API bindings have been migrated to the generic 1.1 Disqus API.
|
||||
* Pages will now properly update their permalink with Disqus when it changes. This is
|
||||
done within the sync event above.
|
||||
* There is now a Debug Information pane under Advanced to assist with support requests.
|
||||
* When Disqus is unreachable it will fallback to the theme's built-in comment display.
|
||||
* Legacy mode is no longer available.
|
||||
* The plugin management interface can now be localized.
|
||||
* The plugin is now valid HTML5.
|
||||
|
||||
== Support ==
|
||||
|
||||
* Visit http://disqus.com/help/wordpress for help documentation.
|
||||
|
||||
* Visit http://help.disqus.com for help from our support team.
|
||||
|
||||
* Disqus also recommends the [WordPress HelpCenter](http://wphelpcenter.com/) for extended help. Disqus is not associated with the WordPress HelpCenter in any way.
|
||||
=== Disqus Comment System ===
|
||||
Contributors: disqus, alexkingorg, crowdfavorite, zeeg, tail, thetylerhayes
|
||||
Tags: comments, threaded, email, notification, spam, avatars, community, profile, widget, disqus
|
||||
Requires at least: 2.8
|
||||
Tested up to: 4.0
|
||||
Stable tag: 2.83
|
||||
|
||||
The Disqus comment system replaces your WordPress comment system with your comments hosted and powered by Disqus.
|
||||
|
||||
== Description ==
|
||||
|
||||
Disqus, pronounced "discuss", is a service and tool for web comments and
|
||||
discussions. Disqus makes commenting easier and more interactive,
|
||||
while connecting websites and commenters across a thriving discussion
|
||||
community.
|
||||
|
||||
The Disqus for WordPress plugin seamlessly integrates using the Disqus API and by syncing with WordPress comments.
|
||||
|
||||
= Disqus for WordPress =
|
||||
|
||||
* Uses the Disqus API
|
||||
* Comments indexable by search engines (SEO-friendly)
|
||||
* Support for importing existing comments
|
||||
* Auto-sync (backup) of comments with Disqus and WordPress database
|
||||
|
||||
= Disqus Features =
|
||||
|
||||
* Threaded comments and replies
|
||||
* Notifications and reply by email
|
||||
* Subscribe and RSS options
|
||||
* Aggregated comments and social mentions
|
||||
* Powerful moderation and admin tools
|
||||
* Full spam filtering, blacklists and whitelists
|
||||
* Support for Disqus community widgets
|
||||
* Connected with a large discussion community
|
||||
* Increased exposure and readership
|
||||
|
||||
== Installation ==
|
||||
|
||||
**NOTE: It is recommended that you [backup your database](http://codex.wordpress.org/Backing_Up_Your_Database) before installing the plugin.**
|
||||
|
||||
1. Unpack archive to this archive to the 'wp-content/plugins/' directory inside
|
||||
of WordPress
|
||||
|
||||
* Maintain the directory structure of the archive (all extracted files
|
||||
should exist in 'wp-content/plugins/disqus-comment-system/'
|
||||
|
||||
2. From your blog administration, click on Comments to change settings
|
||||
(WordPress 2.0 users can find the settings under Options > Disqus.)
|
||||
|
||||
= More documentation =
|
||||
|
||||
Go to [http://disqus.com/help/wordpress](http://disqus.com/help/wordpress)
|
||||
|
||||
== Screenshots ==
|
||||
|
||||
1. Disqus Comments
|
||||
2. Discovery Box (part of Disqus Comments)
|
||||
3. Moderation Interface
|
||||
|
||||
== Changelog ==
|
||||
|
||||
= 2.83 =
|
||||
|
||||
* Fix errors when using SSO and rendering javascript inline
|
||||
|
||||
= 2.82 =
|
||||
|
||||
* Fix PHP errors when there are no comments to sync
|
||||
* Adds a new option to render Disqus javascript directly in page markup
|
||||
|
||||
= 2.81 =
|
||||
|
||||
* Fix for automatic comment syncing
|
||||
* Make sure all markup validates for HTML5
|
||||
|
||||
= 2.80 =
|
||||
|
||||
* Move all scripts to separate files instead of rendering them in php
|
||||
* Added a hook to attach custom functions to disqus_config in javascript
|
||||
* Fixed exporting bug introduced in 2.78 (Thanks to mkilian)
|
||||
* Numerous small compatibility and security enhancements
|
||||
|
||||
= 2.79 =
|
||||
|
||||
* Reinstate changes removed by 2.78
|
||||
|
||||
= 2.78 =
|
||||
|
||||
* Security fixes
|
||||
* Compatibility for Wordpress version 4.0
|
||||
|
||||
= 2.77 =
|
||||
|
||||
* Fixes login by email issue
|
||||
* Make sure Disqus is enabled after installation
|
||||
* Additional security fixes
|
||||
|
||||
= 2.76 =
|
||||
|
||||
* Security fixes (Thanks to Nik Cubrilovic, Alexander Concha and Marc-Alexandre Montpas)
|
||||
* Bump tested Wordpress version to 3.9.1
|
||||
* Remove obsolete SSO button uploader
|
||||
* Enable 'Output javascript in footer' by default during installation
|
||||
* Fix for 'Reset' function not completely working the first time
|
||||
|
||||
= 2.75 =
|
||||
|
||||
* Bump supported WordPress version to 3.8.
|
||||
* Properly encode site name for SSO login button.
|
||||
* Increased timeout for comment exporter to 60 seconds.
|
||||
* Use https: for admin pages
|
||||
* Miscellaneous bug fixes and improvements.
|
||||
|
||||
= 2.74 =
|
||||
|
||||
* Updated settings UI
|
||||
* Add filter hook for setting custom Disqus language
|
||||
* For WP >= 3.5, use new media uploader
|
||||
* Disable internal Wordpress commenting if Disqus is enabled (thanks Artem Russakovskii)
|
||||
* Cleaned up installation and configuration flow
|
||||
* Added link to WP backup guide in README
|
||||
* Fix admin bar comments link
|
||||
* Added a check to avoid a missing key notice when WP_DEBUG=TRUE (thanks Jason Lengstorf)
|
||||
* Prevent 404 errors for embed.js from being reported by Google Webmaster Tools (missed in 2.73 README)
|
||||
|
||||
= 2.73 =
|
||||
|
||||
* Apply CDATA patch from Wordpress 3.4 to dsq_export_wxr_cdata() (thanks Artem
|
||||
Russakovskii for the patch).
|
||||
* Added Single Sign-On log-in button and icon to options (only for sites using SSO)
|
||||
* Output user website if set in SSO payload
|
||||
* Added plugin activation statuses to debug info
|
||||
* Bump supported WordPress version to 3.4.1
|
||||
* Fixed issue where disqus_dupecheck won't properly uninstall
|
||||
* Load second count.js (output-in-footer version) reference via SSL too
|
||||
* Added screenshots
|
||||
|
||||
= 2.72 =
|
||||
|
||||
* Load count.js via SSL when page is accessed via HTTPS
|
||||
* Fixed styling issue with Disqus admin.
|
||||
|
||||
= 2.71 =
|
||||
|
||||
* Fixed issue where embed wasn't using SSL if page was loaded via HTTPS
|
||||
* Fixed issue with syncing where to user's without a display_name would
|
||||
revert back to Anonymous (really this time).
|
||||
* Fixed issue where Google Webmaster Tools would incorrectly report 404s.
|
||||
* Fixed issue with Disqus admin display issues.
|
||||
|
||||
= 2.70 =
|
||||
|
||||
* Properly uninstall disqus_dupecheck index when uninstalling plugin.
|
||||
* Fixed issue with syncing where to user's without a display_name would
|
||||
revert back to Anonymous.
|
||||
* Fixed issue where IP addresses weren't being synced properly.
|
||||
* Allow non-Administrators (e.g., editors) to see Disqus Moderate panel
|
||||
inline (fixes GH-3)
|
||||
|
||||
= 2.69 =
|
||||
|
||||
* Bumped version number.
|
||||
|
||||
= 2.68 =
|
||||
|
||||
* Removed debugging information from web requests in CLI scripts (thanks
|
||||
Ryan Dewhurst for the report).
|
||||
* Reduced sync lock time to 1 hour.
|
||||
* Fixed an issue which was not allowing pending posts (for sync) to clear.
|
||||
* Fixed an issue with CLI scripts when used with certain caching plugins.
|
||||
|
||||
= 2.67 =
|
||||
|
||||
* Bumped synchronization timer delays to 5 minutes.
|
||||
* wp-cli.php now requires php_sapi_name to be set to 'cli' for execution.
|
||||
* Fixed a bug with imported comments not storing the correct relative date.
|
||||
* Added a lock for dsq_sync_forum, which can be overriden in the command line script
|
||||
with the --force tag.
|
||||
* dsq_sync_forum will now handle all pending post metadata updates (formerly a separate
|
||||
cron task, dsq_sync_post).
|
||||
|
||||
= 2.66 =
|
||||
|
||||
* Fixed issue with jQuery usage which conflicted with updated jQuery version.
|
||||
|
||||
= 2.65 =
|
||||
|
||||
* Corrected a bug that was causing posts to not appear due to invalid references.
|
||||
|
||||
= 2.64 =
|
||||
|
||||
* Added an option to disable Disqus without deactivating the plugin.
|
||||
* Added a second check for comment sync to prevent stampede race conditions in WP cron.
|
||||
|
||||
= 2.63 =
|
||||
|
||||
* Added command line script to import comments from DISQUS (scripts/import-comments.php).
|
||||
* Added command line script to export comments to DISQUS (scripts/export-comments.php).
|
||||
* The exporter will now only do one post at a time.
|
||||
* The exporter now only sends required attributes to DISQUS.
|
||||
* Moved media into its own directory.
|
||||
|
||||
= 2.62 =
|
||||
|
||||
* Changed legacy query to use = operator instead of LIKE so it can be indexed.
|
||||
|
||||
= 2.61 =
|
||||
|
||||
* Fixed an issue which was causing invalid information to be presented in RSS feeds.
|
||||
|
||||
= 2.60 =
|
||||
|
||||
* Added support for new Single Sign-On (API version 3.0).
|
||||
* Improved support for legacy Single Sign-On.
|
||||
|
||||
= 2.55 =
|
||||
|
||||
* Added support for get_comments_number in templates.
|
||||
|
||||
= 2.54 =
|
||||
|
||||
* Updated URL to forum moderation.
|
||||
|
||||
= 2.53 =
|
||||
|
||||
* Fixed an issue with fsockopen and GET requests (only affects certain users).
|
||||
|
||||
= 2.52 =
|
||||
|
||||
* Fixed issue with Disqus-API package not getting updated (only affecting PHP4).
|
||||
|
||||
= 2.51 =
|
||||
|
||||
* Added CDATA comments for JavaScript.
|
||||
* Syncing comments will now restore missing thread information from old imports.
|
||||
* Install and uninstall processes have been improved.
|
||||
* Fixed an issue in PHP4 with importing comments.
|
||||
* Fixed an issue that could cause duplicate comments in some places.
|
||||
* Added an option to remove existing imported comments when importing.
|
||||
|
||||
= 2.50 =
|
||||
|
||||
* Added missing file.
|
||||
|
||||
= 2.49 =
|
||||
|
||||
* Database usage has been optimized for storing comment meta data.
|
||||
|
||||
You can perform this migration automatically by visiting Comments -> Disqus, or if
|
||||
you have a large database, you may do this by hand:
|
||||
|
||||
CREATE INDEX disqus_dupecheck ON `wp_commentmeta` (meta_key, meta_value(11));
|
||||
INSERT INTO `wp_options` (blog_id, option_name, option_value, autoload) VALUES (0, 'disqus_version', '2.49', 'yes') ON DUPLICATE KEY UPDATE option_value = VALUES(option_value);
|
||||
|
||||
= 2.48 =
|
||||
|
||||
* Comment synchronization has been optimized to be a single call per-site.
|
||||
* disqus.css will now only load when displaying comments
|
||||
|
||||
= 2.47 =
|
||||
|
||||
* Fixed a security hole with comment importing.
|
||||
* Reverted ability to use default template comments design.
|
||||
* Comments will now store which version they were imported under.
|
||||
* Added an option to disable server side rendering.
|
||||
|
||||
= 2.46 =
|
||||
|
||||
* Better debugging information for export errors.
|
||||
* Added the ability to manual import Disqus comments into Wordpress.
|
||||
* Added thread_identifier support to exports.
|
||||
* Cleaned up API error messages.
|
||||
* Fixed a bug which was causing the import process to not grab only the latest set of comments.
|
||||
* Added an option to disable automated synchronization with Disqus.
|
||||
|
||||
= 2.45 =
|
||||
|
||||
* Comments should now store thread information as well as certain other meta data.
|
||||
* Optimize get_thread polling to only pull comments which aren't stored properly.
|
||||
|
||||
= 2.44 =
|
||||
|
||||
* Fixed JavaScript response for comments sync call.
|
||||
* Comments are now marked as closed while showing the embed (fixes showing default respond form).
|
||||
|
||||
= 2.43 =
|
||||
|
||||
* Fixed a JavaScript syntax error which would cause linting to fail.
|
||||
* Correct an issue that was causing comments.php to throw a syntax error under some configurations.
|
||||
|
||||
= 2.42 =
|
||||
|
||||
* Correct a bug with saving disqus_user_api_key (non-critical).
|
||||
* Added settings to Debug Information.
|
||||
* Adjusting all includes to use absolute paths.
|
||||
* Adjusted JSON usage to solve a problem for some clients.
|
||||
|
||||
= 2.41 =
|
||||
|
||||
* Correct a bug with double urlencoding titles.
|
||||
|
||||
= 2.40 =
|
||||
|
||||
* Comments are now synced with Disqus as a delayed asynchronous cron event.
|
||||
* Comment count code has been updated to use the new widget. (Comment counts
|
||||
must be linked to get tracked within "the loop" now).
|
||||
* API bindings have been migrated to the generic 1.1 Disqus API.
|
||||
* Pages will now properly update their permalink with Disqus when it changes. This is
|
||||
done within the sync event above.
|
||||
* There is now a Debug Information pane under Advanced to assist with support requests.
|
||||
* When Disqus is unreachable it will fallback to the theme's built-in comment display.
|
||||
* Legacy mode is no longer available.
|
||||
* The plugin management interface can now be localized.
|
||||
* The plugin is now valid HTML5.
|
||||
|
||||
== Support ==
|
||||
|
||||
* Visit http://disqus.com/help/wordpress for help documentation.
|
||||
|
||||
* Visit http://help.disqus.com for help from our support team.
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 73 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 61 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 97 KiB |
@@ -1,106 +1,106 @@
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
/**
|
||||
* Incrementally (in chunks of EXPORT_CHUNK_SIZE) exports all comments to DISQUS.
|
||||
*
|
||||
* ``php export-comments.php``
|
||||
*/
|
||||
|
||||
require_once(dirname(__FILE__) . '/../lib/wp-cli.php');
|
||||
require_once(dirname(__FILE__) . '/../disqus.php');
|
||||
require_once(dirname(__FILE__) . '/../export.php');
|
||||
|
||||
define('EXPORT_CHUNK_SIZE', 100);
|
||||
|
||||
$forum_url = get_option('disqus_forum_url');
|
||||
|
||||
if (empty($forum_url)) {
|
||||
print_line("Disqus has not been configured on this installation!");
|
||||
die();
|
||||
}
|
||||
|
||||
print_line('---------------------------------------------------------');
|
||||
print_line('Discovered DISQUS forum shortname as %s', $forum_url);
|
||||
print_line('---------------------------------------------------------');
|
||||
|
||||
global $wpdb, $dsq_api;
|
||||
|
||||
$timestamp = 0;
|
||||
$post_id = 0;
|
||||
$total = 0;
|
||||
$eof = 0;
|
||||
$total_exported = 0;
|
||||
$global_start = microtime();
|
||||
|
||||
$max_post_id = $wpdb->get_var($wpdb->prepare("
|
||||
SELECT MAX(ID)
|
||||
FROM $wpdb->posts
|
||||
WHERE post_type != 'revision'
|
||||
AND post_status = 'publish'
|
||||
AND comment_count > 0
|
||||
AND ID > %d
|
||||
", $post_id));
|
||||
|
||||
print_line('Max post id is %d', $max_post_id);
|
||||
|
||||
while ($post_id < $max_post_id) {
|
||||
$start = microtime();
|
||||
|
||||
$post = $wpdb->get_results($wpdb->prepare("
|
||||
SELECT *
|
||||
FROM $wpdb->posts
|
||||
WHERE post_type != 'revision'
|
||||
AND post_status = 'publish'
|
||||
AND comment_count > 0
|
||||
AND ID > %d
|
||||
ORDER BY ID ASC
|
||||
LIMIT 1
|
||||
", $post_id));
|
||||
$post = $post[0];
|
||||
$post_id = $post->ID;
|
||||
|
||||
print_line(' Exporting comments for post id %d', $post_id);
|
||||
|
||||
$response = null;
|
||||
$query = $wpdb->get_results( $wpdb->prepare("SELECT COUNT(*) as total FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_agent NOT LIKE 'Disqus/%%' LIMIT ".EXPORT_CHUNK_SIZE, $post_id) );
|
||||
$total_comments = $query[0]->total;
|
||||
|
||||
$comments = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_agent NOT LIKE 'Disqus/%%' LIMIT ".EXPORT_CHUNK_SIZE, $post_id) );
|
||||
$group_id = null;
|
||||
$at = 0;
|
||||
|
||||
// we need to send empty files to ensure EOF happens
|
||||
while (($at === 0 && $post_id == $max_post_id) || $at < $total_comments) {
|
||||
if ($post_id == $max_post_id && ($at + EXPORT_CHUNK_SIZE) >= $total_comments) {
|
||||
$eof = 1;
|
||||
}
|
||||
$wxr = dsq_export_wp($post, $comments);
|
||||
$response = $dsq_api->import_wordpress_comments($wxr, $timestamp, $eof);
|
||||
if (!($response['group_id'] > 0)) {
|
||||
print_line('---------------------------------------------------------');
|
||||
print_line('There was an error communicating with DISQUS!');
|
||||
print_line($dsq_api->get_last_error());
|
||||
print_line('---------------------------------------------------------');
|
||||
}
|
||||
$group_id = $response['group_id'];
|
||||
print_line(' %d comments exported', count($comments), $time);
|
||||
$total_exported += count($comments);
|
||||
$at += EXPORT_CHUNK_SIZE;
|
||||
$comments = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_agent NOT LIKE 'Disqus/%%' LIMIT ".EXPORT_CHUNK_SIZE." OFFSET {$at}", $post->ID) );
|
||||
// assuming the cache is the internal, reset it's value to empty to avoid
|
||||
// large memory consumption
|
||||
$wp_object_cache->cache = array();
|
||||
}
|
||||
|
||||
$time = abs(microtime() - $start);
|
||||
print_line(' Done! (took %.2fs)', $time);
|
||||
}
|
||||
$total_time = abs(microtime() - $global_start);
|
||||
print_line('---------------------------------------------------------');
|
||||
print_line('Done (processing took %.2fs)! %d comments were sent to DISQUS', $total_time, $total_exported);
|
||||
if ($group_id) {
|
||||
print_line('');
|
||||
print_line('Status available at http://import.disqus.com/group/%d/', $group_id);
|
||||
}
|
||||
print_line('---------------------------------------------------------');
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
/**
|
||||
* Incrementally (in chunks of EXPORT_CHUNK_SIZE) exports all comments to DISQUS.
|
||||
*
|
||||
* ``php export-comments.php``
|
||||
*/
|
||||
|
||||
require_once(dirname(__FILE__) . '/../lib/wp-cli.php');
|
||||
require_once(dirname(__FILE__) . '/../disqus.php');
|
||||
require_once(dirname(__FILE__) . '/../export.php');
|
||||
|
||||
define('EXPORT_CHUNK_SIZE', 100);
|
||||
|
||||
$forum_url = get_option('disqus_forum_url');
|
||||
|
||||
if (empty($forum_url)) {
|
||||
print_line("Disqus has not been configured on this installation!");
|
||||
die();
|
||||
}
|
||||
|
||||
print_line('---------------------------------------------------------');
|
||||
print_line('Discovered DISQUS forum shortname as %s', $forum_url);
|
||||
print_line('---------------------------------------------------------');
|
||||
|
||||
global $wpdb, $dsq_api;
|
||||
|
||||
$timestamp = 0;
|
||||
$post_id = 0;
|
||||
$total = 0;
|
||||
$eof = 0;
|
||||
$total_exported = 0;
|
||||
$global_start = microtime();
|
||||
|
||||
$max_post_id = $wpdb->get_var($wpdb->prepare("
|
||||
SELECT MAX(ID)
|
||||
FROM $wpdb->posts
|
||||
WHERE post_type != 'revision'
|
||||
AND post_status = 'publish'
|
||||
AND comment_count > 0
|
||||
AND ID > %d
|
||||
", $post_id));
|
||||
|
||||
print_line('Max post id is %d', $max_post_id);
|
||||
|
||||
while ($post_id < $max_post_id) {
|
||||
$start = microtime();
|
||||
|
||||
$post = $wpdb->get_results($wpdb->prepare("
|
||||
SELECT *
|
||||
FROM $wpdb->posts
|
||||
WHERE post_type != 'revision'
|
||||
AND post_status = 'publish'
|
||||
AND comment_count > 0
|
||||
AND ID > %d
|
||||
ORDER BY ID ASC
|
||||
LIMIT 1
|
||||
", $post_id));
|
||||
$post = $post[0];
|
||||
$post_id = $post->ID;
|
||||
|
||||
print_line(' Exporting comments for post id %d', $post_id);
|
||||
|
||||
$response = null;
|
||||
$query = $wpdb->get_results( $wpdb->prepare("SELECT COUNT(*) as total FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_agent NOT LIKE 'Disqus/%%' LIMIT ".EXPORT_CHUNK_SIZE, $post_id) );
|
||||
$total_comments = $query[0]->total;
|
||||
|
||||
$comments = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_agent NOT LIKE 'Disqus/%%' LIMIT ".EXPORT_CHUNK_SIZE, $post_id) );
|
||||
$group_id = null;
|
||||
$at = 0;
|
||||
|
||||
// we need to send empty files to ensure EOF happens
|
||||
while (($at === 0 && $post_id == $max_post_id) || $at < $total_comments) {
|
||||
if ($post_id == $max_post_id && ($at + EXPORT_CHUNK_SIZE) >= $total_comments) {
|
||||
$eof = 1;
|
||||
}
|
||||
$wxr = dsq_export_wp($post, $comments);
|
||||
$response = $dsq_api->import_wordpress_comments($wxr, $timestamp, $eof);
|
||||
if (!($response['group_id'] > 0)) {
|
||||
print_line('---------------------------------------------------------');
|
||||
print_line('There was an error communicating with DISQUS!');
|
||||
print_line($dsq_api->get_last_error());
|
||||
print_line('---------------------------------------------------------');
|
||||
}
|
||||
$group_id = $response['group_id'];
|
||||
print_line(' %d comments exported', count($comments), $time);
|
||||
$total_exported += count($comments);
|
||||
$at += EXPORT_CHUNK_SIZE;
|
||||
$comments = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_agent NOT LIKE 'Disqus/%%' LIMIT ".EXPORT_CHUNK_SIZE." OFFSET {$at}", $post->ID) );
|
||||
// assuming the cache is the internal, reset it's value to empty to avoid
|
||||
// large memory consumption
|
||||
$wp_object_cache->cache = array();
|
||||
}
|
||||
|
||||
$time = abs(microtime() - $start);
|
||||
print_line(' Done! (took %.2fs)', $time);
|
||||
}
|
||||
$total_time = abs(microtime() - $global_start);
|
||||
print_line('---------------------------------------------------------');
|
||||
print_line('Done (processing took %.2fs)! %d comments were sent to DISQUS', $total_time, $total_exported);
|
||||
if ($group_id) {
|
||||
print_line('');
|
||||
print_line('Status available at http://import.disqus.com/group/%d/', $group_id);
|
||||
}
|
||||
print_line('---------------------------------------------------------');
|
||||
?>
|
||||
@@ -1,63 +1,63 @@
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
/**
|
||||
* Incrementally downloads all comments from DISQUS.
|
||||
*
|
||||
* ``php import-comments.php``
|
||||
*/
|
||||
|
||||
require_once(dirname(__FILE__) . '/../lib/wp-cli.php');
|
||||
require_once(dirname(__FILE__) . '/../disqus.php');
|
||||
|
||||
$forum_url = get_option('disqus_forum_url');
|
||||
|
||||
if (empty($forum_url)) {
|
||||
print_line("Disqus has not been configured on this installation!");
|
||||
die();
|
||||
}
|
||||
|
||||
print_line('---------------------------------------------------------');
|
||||
print_line('Discovered DISQUS forum shortname as %s', $forum_url);
|
||||
print_line('---------------------------------------------------------');
|
||||
|
||||
$imported = true;
|
||||
if (in_array('--reset', $argv)) {
|
||||
$last_comment_id = 0;
|
||||
} else {
|
||||
$last_comment_id = get_option('disqus_last_comment_id');
|
||||
}
|
||||
$force = (in_array('--force', $argv));
|
||||
$total = 0;
|
||||
$global_start = microtime();
|
||||
|
||||
$memory_usage = memory_get_peak_usage();
|
||||
while ($imported) {
|
||||
print_line(' Importing chunk starting at comment id %d', $last_comment_id);
|
||||
$start = microtime();
|
||||
$result = dsq_sync_forum($last_comment_id, $force);
|
||||
if ($result === false) {
|
||||
print_line('---------------------------------------------------------');
|
||||
print_line('There was an error communicating with DISQUS!');
|
||||
print_line($dsq_api->get_last_error());
|
||||
print_line('---------------------------------------------------------');
|
||||
die();
|
||||
break;
|
||||
} else {
|
||||
list($imported, $last_comment_id) = $result;
|
||||
}
|
||||
$total += $imported;
|
||||
$time = abs(microtime() - $start);
|
||||
|
||||
// assuming the cache is the internal, reset it's value to empty to avoid
|
||||
// large memory consump
|
||||
$wp_object_cache->cache = array();
|
||||
|
||||
$new_memory_usage = memory_get_peak_usage();
|
||||
print_line(' %d comments imported (took %.2fs, memory increased by %db)', $imported, $time, ($new_memory_usage - $memory_usage));
|
||||
$memory_usage = $new_memory_usage;
|
||||
}
|
||||
$total_time = abs(microtime() - $global_start);
|
||||
print_line('---------------------------------------------------------');
|
||||
print_line('Done (took %.2fs)! %d comments imported from DISQUS', $total_time, $total);
|
||||
print_line('---------------------------------------------------------');
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
/**
|
||||
* Incrementally downloads all comments from DISQUS.
|
||||
*
|
||||
* ``php import-comments.php``
|
||||
*/
|
||||
|
||||
require_once(dirname(__FILE__) . '/../lib/wp-cli.php');
|
||||
require_once(dirname(__FILE__) . '/../disqus.php');
|
||||
|
||||
$forum_url = get_option('disqus_forum_url');
|
||||
|
||||
if (empty($forum_url)) {
|
||||
print_line("Disqus has not been configured on this installation!");
|
||||
die();
|
||||
}
|
||||
|
||||
print_line('---------------------------------------------------------');
|
||||
print_line('Discovered DISQUS forum shortname as %s', $forum_url);
|
||||
print_line('---------------------------------------------------------');
|
||||
|
||||
$imported = true;
|
||||
if (in_array('--reset', $argv)) {
|
||||
$last_comment_id = 0;
|
||||
} else {
|
||||
$last_comment_id = get_option('disqus_last_comment_id');
|
||||
}
|
||||
$force = (in_array('--force', $argv));
|
||||
$total = 0;
|
||||
$global_start = microtime();
|
||||
|
||||
$memory_usage = memory_get_peak_usage();
|
||||
while ($imported) {
|
||||
print_line(' Importing chunk starting at comment id %d', $last_comment_id);
|
||||
$start = microtime();
|
||||
$result = dsq_sync_forum($last_comment_id, $force);
|
||||
if ($result === false) {
|
||||
print_line('---------------------------------------------------------');
|
||||
print_line('There was an error communicating with DISQUS!');
|
||||
print_line($dsq_api->get_last_error());
|
||||
print_line('---------------------------------------------------------');
|
||||
die();
|
||||
break;
|
||||
} else {
|
||||
list($imported, $last_comment_id) = $result;
|
||||
}
|
||||
$total += $imported;
|
||||
$time = abs(microtime() - $start);
|
||||
|
||||
// assuming the cache is the internal, reset it's value to empty to avoid
|
||||
// large memory consump
|
||||
$wp_object_cache->cache = array();
|
||||
|
||||
$new_memory_usage = memory_get_peak_usage();
|
||||
print_line(' %d comments imported (took %.2fs, memory increased by %db)', $imported, $time, ($new_memory_usage - $memory_usage));
|
||||
$memory_usage = $new_memory_usage;
|
||||
}
|
||||
$total_time = abs(microtime() - $global_start);
|
||||
print_line('---------------------------------------------------------');
|
||||
print_line('Done (took %.2fs)! %d comments imported from DISQUS', $total_time, $total);
|
||||
print_line('---------------------------------------------------------');
|
||||
?>
|
||||
@@ -1,21 +1,21 @@
|
||||
<?php
|
||||
require(ABSPATH . 'wp-includes/version.php');
|
||||
|
||||
if ( !current_user_can('manage_options') ) {
|
||||
die();
|
||||
}
|
||||
|
||||
$step = (isset($_GET['step']) ? $_GET['step'] : null);
|
||||
|
||||
?>
|
||||
<div class="wrap">
|
||||
<h2><?php echo dsq_i('Upgrade Disqus Comments'); ?></h2>
|
||||
<form method="POST" action="?page=disqus&step=<?php echo esc_attr($step); ?>">
|
||||
<?php wp_nonce_field('dsq-wpnonce_upgrade', 'dsq-form_nonce_upgrade'); ?>
|
||||
<p><?php echo dsq_i('You need to upgrade your database to continue.'); ?></p>
|
||||
|
||||
<p class="submit" style="text-align: left">
|
||||
<input type="submit" name="upgrade" value="Upgrade »" />
|
||||
</p>
|
||||
</form>
|
||||
<?php
|
||||
require(ABSPATH . 'wp-includes/version.php');
|
||||
|
||||
if ( !current_user_can('manage_options') ) {
|
||||
die();
|
||||
}
|
||||
|
||||
$step = (isset($_GET['step']) ? $_GET['step'] : null);
|
||||
|
||||
?>
|
||||
<div class="wrap">
|
||||
<h2><?php echo dsq_i('Upgrade Disqus Comments'); ?></h2>
|
||||
<form method="POST" action="?page=disqus&step=<?php echo esc_attr($step); ?>">
|
||||
<?php wp_nonce_field('dsq-wpnonce_upgrade', 'dsq-form_nonce_upgrade'); ?>
|
||||
<p><?php echo dsq_i('You need to upgrade your database to continue.'); ?></p>
|
||||
|
||||
<p class="submit" style="text-align: left">
|
||||
<input type="submit" name="upgrade" class="button-primary button" value="Upgrade »" />
|
||||
</p>
|
||||
</form>
|
||||
</div>
|
||||
@@ -1 +0,0 @@
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <body> <script src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/XdCommReceiver.js" type="text/javascript"></script> </body> </html>
|
||||
+338
-338
@@ -1,339 +1,339 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
||||
+322
-284
@@ -1,284 +1,322 @@
|
||||
=== Google Calendar Events ===
|
||||
Contributors: pderksen, nickyoung87, rosshanney
|
||||
Tags: google calendar, google, calendar, events, gcal
|
||||
Requires at least: 3.7.4
|
||||
Tested up to: 4.0
|
||||
Stable tag: trunk
|
||||
License: GPLv2 or later
|
||||
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
||||
|
||||
Parses Google Calendar feeds and displays the events as a calendar grid or list on a page, post or widget.
|
||||
|
||||
== Description ==
|
||||
|
||||
Parses Google Calendar feeds and displays the events as a calendar grid or list on a page, post or widget.
|
||||
|
||||
= Features =
|
||||
|
||||
* Parses Google Calendar feeds to extract events.
|
||||
* Displays events as a list or within a calendar grid.
|
||||
* Events from multiple Google Calendar feeds can be shown in a single list / grid.
|
||||
* Lists and grids can be displayed in posts, pages or within a widget.
|
||||
* Options to change the number of events retrieved, date / time format, cache duration, etc.
|
||||
* Complete customisation of the event information displayed.
|
||||
* Calendar grids can have the ability to change the month displayed.
|
||||
|
||||
[Plugin Documentation & Getting Started](http://wpdocs.philderksen.com/google-calendar-events/?utm_source=wordpress_org&utm_medium=link&utm_campaign=gce_lite)
|
||||
|
||||
###Feature Requests and Updates###
|
||||
|
||||
* [Public roadmap/feature requests](https://trello.com/b/ZQSzsarY)
|
||||
* [Get notified when new features are released](http://eepurl.com/0_VsT)
|
||||
* [Follow this project on Github](https://github.com/pderksen/WP-Google-Calendar-Events)
|
||||
|
||||
This plugin was originally created by [Ross Hanney](http://www.rhanney.co.uk), a web developer based in the UK specialising in WordPress and PHP.
|
||||
|
||||
## Available Translations ##
|
||||
|
||||
* Spanish - Provided by Eduardo Larequi of [educacion.navarra.es/web/pnte/](http://www.educacion.navarra.es/web/pnte/).
|
||||
* Italian - Provided by Francesco Paccagnella of [pacca.it](http://www.pacca.it/).
|
||||
* French - Provided by Vincent Bray.
|
||||
* German - Provided by Stefanie Drucker of [kreativhuhn.at](http://www.kreativhuhn.at/).
|
||||
* Norwegian - Provided by Tore Hjartland of [aliom.no](http://www.aliom.no/).
|
||||
|
||||
== Installation ==
|
||||
|
||||
There are three ways to install this plugin.
|
||||
|
||||
= 1. Admin Search =
|
||||
1. In your Admin, go to menu Plugins > Add.
|
||||
1. Search for `Google Calendar`.
|
||||
1. Find the plugin that's labeled `Google Calendar Events`.
|
||||
1. Look for the author name `Phil Derksen` on the plugin.
|
||||
1. Click to install.
|
||||
1. Activate the plugin.
|
||||
1. A new menu item `GCal Events` will appear in the main menu.
|
||||
|
||||
= 2. Download & Upload =
|
||||
1. Download the plugin (a zip file) on the right column of this page.
|
||||
1. In your Admin, go to menu Plugins > Add.
|
||||
1. Select the tab "Upload".
|
||||
1. Upload the .zip file you just downloaded.
|
||||
1. Activate the plugin.
|
||||
1. A new menu item `GCal Events` will appear in the main menu.
|
||||
|
||||
= 3. FTP Upload =
|
||||
1. Download the plugin (.zip file) on the right column of this page.
|
||||
1. Unzip the zip file contents.
|
||||
1. Upload the `google-calendar-events` folder to the `/wp-content/plugins/` directory of your site.
|
||||
1. Activate the plugin through the 'Plugins' menu in WordPress.
|
||||
1. A new menu item `GCal Events` will appear in the main menu.
|
||||
|
||||
== Frequently Asked Questions ==
|
||||
|
||||
[Plugin Documentation & Getting Started](http://wpdocs.philderksen.com/google-calendar-events/?utm_source=wordpress_org&utm_medium=link&utm_campaign=gce_lite)
|
||||
|
||||
== Screenshots ==
|
||||
|
||||
1. Grid display in full page with tooltip
|
||||
1. Grid display in widget
|
||||
1. List display in widget
|
||||
1. Simple display options
|
||||
1. Calendar feed settings
|
||||
1. Calendar widget settings
|
||||
1. Event display builder editor
|
||||
|
||||
== Changelog ==
|
||||
|
||||
= 2.0.6 =
|
||||
|
||||
* Added minimum and maximum feed date options to fix event display issues and boost performance.
|
||||
* Fixed a caching issue to increase performance.
|
||||
* Fixed bug where backslashes kept getting added to event titles that already contained single quotes when navigating through pages in widget.
|
||||
|
||||
= 2.0.5.1 =
|
||||
|
||||
* Fix timezone issue.
|
||||
|
||||
= 2.0.5 =
|
||||
|
||||
* Fixed display bug with event date and grouped lists.
|
||||
* Fixed broken paging links when feed IDs contain spaces between them.
|
||||
* Fixed bug with start offset and grouped lists not working properly.
|
||||
* Fixed bug where clear cache link was showing on any type of CPT.
|
||||
* Added German translation - Provided by Stefanie Drucker of [kreativhuhn.at](http://www.kreativhuhn.at/).
|
||||
* Added Norwegian translation - Provided by Tore Hjartland of [aliom.no](http://www.aliom.no/).
|
||||
|
||||
= 2.0.4 =
|
||||
|
||||
* Added option to show/hide paging.
|
||||
* Added option to limit display to any number of days or events per page.
|
||||
* Added option to set the start date offset any number of days back or ahead (list view).
|
||||
* Removed retrieve events from/until options now that display limit options will be used.
|
||||
* Removed max number of events to retrieve option.
|
||||
* Added shortcode attribute 'paging'.
|
||||
* Added shortcode attribute 'interval'.
|
||||
* Added shortcode attribute 'interval_count'.
|
||||
* Added shortcode attribute 'offset_interval_count'.
|
||||
* Added shortcode attribute 'offset_direction'.
|
||||
* Updated shortcode 'display' attribute to allow a value of 'grouped-list'.
|
||||
* Date no longer shows up for the title (list view).
|
||||
* HTML restructured to use div tags instead of an unordered list (list view).
|
||||
* Nav bar HTML (Back/Next links and month title) restructured to use div tags instead of span and percentages.
|
||||
* Moved clear cache button and changed style.
|
||||
* Added Italian translation - Provided by Francesco Paccagnella of [pacca.it](http://www.pacca.it/).
|
||||
* Added French translation - Provided by Vincent Bray.
|
||||
* Fixed PHP error during upgrade.
|
||||
* Fixed cross-site scripting (XSS) vulnerability.
|
||||
* JavaScript restructured to fit more in line with best practices.
|
||||
* Remove unused admin script file.
|
||||
|
||||
= 2.0.3.1 =
|
||||
|
||||
* Fixed bug where retrieve from/until dates were accidentally removed.
|
||||
|
||||
= 2.0.3 =
|
||||
|
||||
* Fixed bug where calendar feed caches weren't getting cleared properly.
|
||||
* Fixed feed settings metabox content wrapping issue.
|
||||
|
||||
= 2.0.2 =
|
||||
|
||||
* Added Spanish translation - Provided by Eduardo Larequi of [educacion.navarra.es/web/pnte/](http://www.educacion.navarra.es/web/pnte/).
|
||||
* Fixed timezone issues by forcing calendar feeds to use the timezone selected in the site's General Settings. Feed-specific timezone setting removed.
|
||||
* Fixed a bug with recurring events display.
|
||||
* Fixed an upgrade bug with multiple day events.
|
||||
|
||||
= 2.0.1 =
|
||||
|
||||
* Fixed display errors with certain event builder shortcodes.
|
||||
* Added language folder.
|
||||
|
||||
= 2.0.0 =
|
||||
|
||||
* Plugin rewritten from scratch.
|
||||
* Now using custom post types for storing and customizing Google calendar feeds.
|
||||
* Introduced the shortcode `[gcal]` (old shortcode still supported).
|
||||
|
||||
= 0.7.3.1 =
|
||||
|
||||
* Include missing file: upgrade-notice.php.
|
||||
|
||||
= 0.7.3 =
|
||||
|
||||
* Added warning about upcoming version 2.0 release.
|
||||
* Added option to save settings upon uninstall.
|
||||
* Tested with WordPress 4.0.
|
||||
|
||||
= 0.7.2 =
|
||||
|
||||
* Fixed a bug causing the "More details" Google Calendar information to be displayed in the wrong timezone
|
||||
* Fixed a bug that prevented setting the cache duration to 0 from working correctly
|
||||
* Fixed an issue that prevented Ajax from working with FORCE_SSL_ADMIN enabled
|
||||
* Now uses [wp_enqueue_scripts](http://wpdevel.wordpress.com/2011/12/12/use-wp_enqueue_scripts-not-wp_print_styles-to-enqueue-scripts-and-styles-for-the-frontend/)
|
||||
|
||||
= 0.7.1 =
|
||||
|
||||
* Fixed bug causing AJAX enabled calendar grids to not function correctly
|
||||
* Fixed bug causing all-day events from outside required date range to be displayed
|
||||
* Fixed bug causing tooltip date title heading setting to be ignored
|
||||
* Added further data sanitisation on output
|
||||
* Feeds with no events will now be cached to prevent HTTP requests on every page load
|
||||
|
||||
= 0.7 =
|
||||
|
||||
* Fixed bug causing event dates / times to be displayed in the wrong timezone
|
||||
* Changed the [link-path] Event Display Builder shortcode to [url]
|
||||
* Fixed an Opera specific CSS issue causing page lists to be hidden
|
||||
* Lists can now be displayed in descending or ascending order
|
||||
* Added [event-id] and [cal-id] Event Display Builder shortcodes
|
||||
* Added an offset parameter for date / time based Event Display Builder shortcodes
|
||||
* Added an autolink parameter for enabling / disabling automatic linking of URLs
|
||||
* Added gce-day-past or gce-day-future classes to calendar grid cells
|
||||
* Cleaned up CSS
|
||||
|
||||
= 0.6 =
|
||||
|
||||
* Drastically reduced memory usage
|
||||
* Improved feed data caching system
|
||||
* Improved error reporting
|
||||
* General performance and efficiency improvements
|
||||
* Added a few more shortcodes to the event display builder
|
||||
* Other [miscellaneous changes / additions and bug fixes](http://www.rhanney.co.uk/2011/04/29/google-calendar-events-0-6)
|
||||
|
||||
= 0.5 =
|
||||
|
||||
* Added [event display builder](http://www.rhanney.co.uk/plugins/google-calendar-events/event-display-builder) feature, which vastly improves the customization possibilities of the plugin. This feature encompasses many of the most requested features, such as:
|
||||
- All-day events can be handled differently than 'normal' events
|
||||
- Start and end times / dates can be displayed on the same line (as can any other event information)
|
||||
- HTML (and Markdown) entered in Google Calendar fields can be properly parsed
|
||||
* Start and end times for retrieval of events are now much more flexible
|
||||
* A custom error message for non-admin users can now be specified
|
||||
* No longer loads SimplePie when it is not required
|
||||
|
||||
= 0.4.1 =
|
||||
|
||||
* Fix / workaround for the long-running timezone bug. Please take a look at [this](http://www.rhanney.co.uk/2011/01/16/google-calendar-events-0-4-1) for more information.
|
||||
* Added additional 'Maximum no. events to display' option to widget / shortcode (mainly to address a further issue caused by the above fix)
|
||||
* i18n related bug fix
|
||||
* Added support for widget_title filter (courtesy of [James](http://lunasea-studios.com))
|
||||
* Added Hungarian (hu_HU) translation ([danieltakacs](http://ek.klog.hu))
|
||||
* Now using minified version of jQuery qTip script
|
||||
|
||||
= 0.4 =
|
||||
|
||||
* More control over how start and end dates / times are displayed
|
||||
* Events can now be limited to a specified timeframe (number of days)
|
||||
* Events on the same day in lists can now be shown under a single date title
|
||||
* JavaScript can now be added to the footer rather than the header, via an option
|
||||
* The 'Loading...' text can now be customized
|
||||
* Description text can now be limited to a specified number of words
|
||||
* Multi-day events can be shown on each day that they span ([sort of](http://www.rhanney.co.uk/2010/08/19/google-calendar-events-0-4#multiday))
|
||||
* Bug fixes
|
||||
* i18n / l10n fixes
|
||||
|
||||
= 0.3.1 =
|
||||
|
||||
* l10n / i18n fixes. Dates should now be localized correctly and should maintain localization after an AJAX request
|
||||
* MU / Multi-site issues. Issues preventing adding of feeds have been addressed
|
||||
|
||||
= 0.3 =
|
||||
|
||||
* Now allows events from multiple Google Calendar feeds to be displayed on a single calendar grid / list
|
||||
* Internationalization support added
|
||||
|
||||
= 0.2.1 =
|
||||
|
||||
* Added option to allow 'More details' links to open in new window / tab.
|
||||
* Added option to choose a specific timezone for each feed
|
||||
* Line breaks in an event description will now be preserved
|
||||
* Fixed a bug casing the title to not be displayed on lists
|
||||
* Other minor bug fixes
|
||||
|
||||
= 0.2 =
|
||||
|
||||
* Added customization options for how information is displayed.
|
||||
* Can now display: start time, end time and date, location, description and event link.
|
||||
* Tooltips now using qTip jQuery plugin.
|
||||
|
||||
= 0.1.4 =
|
||||
|
||||
* More bug fixes.
|
||||
|
||||
= 0.1.3 =
|
||||
|
||||
* Several bug fixes, including fixing JavaScript problems that prevented tooltips appearing.
|
||||
|
||||
= 0.1.2 =
|
||||
|
||||
* Bug fixes.
|
||||
|
||||
= 0.1.1 =
|
||||
|
||||
* Fix to prevent conflicts with other plugins.
|
||||
* Changes to readme.txt.
|
||||
|
||||
= 0.1 =
|
||||
|
||||
* Initial release.
|
||||
|
||||
== Upgrade Notice ==
|
||||
|
||||
= 2.0.0 =
|
||||
|
||||
This is a major upgrade to a new code base and structure. PLEASE make sure you backup your site before upgrading.
|
||||
=== Google Calendar Events ===
|
||||
Contributors: pderksen, nickyoung87, rosshanney
|
||||
Tags: google calendar, google, calendar, events, gcal
|
||||
Requires at least: 3.7.4
|
||||
Tested up to: 4.0
|
||||
Stable tag: trunk
|
||||
License: GPLv2 or later
|
||||
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
||||
|
||||
Parses Google Calendar feeds and displays the events as a calendar grid or list on a page, post or widget.
|
||||
|
||||
== Description ==
|
||||
|
||||
Parses Google Calendar feeds and displays the events as a calendar grid or list on a page, post or widget.
|
||||
|
||||
= Features =
|
||||
|
||||
* Parses Google Calendar feeds to extract events.
|
||||
* Displays events as a list or within a calendar grid.
|
||||
* Events from multiple Google Calendar feeds can be shown in a single list / grid.
|
||||
* Lists and grids can be displayed in posts, pages or within a widget.
|
||||
* Options to change the number of events retrieved, date / time format, cache duration, etc.
|
||||
* Complete customisation of the event information displayed.
|
||||
* Calendar grids can have the ability to change the month displayed.
|
||||
|
||||
[Plugin Documentation & Getting Started](http://wpdocs.philderksen.com/google-calendar-events/?utm_source=wordpress_org&utm_medium=link&utm_campaign=gce_lite)
|
||||
|
||||
###Feature Requests and Updates###
|
||||
|
||||
* [Public roadmap/feature requests](https://trello.com/b/ZQSzsarY)
|
||||
* [Get notified when new features are released](http://eepurl.com/0_VsT)
|
||||
* [Follow this project on Github](https://github.com/pderksen/WP-Google-Calendar-Events)
|
||||
|
||||
This plugin was originally created by [Ross Hanney](http://www.rhanney.co.uk), a web developer based in the UK specialising in WordPress and PHP.
|
||||
|
||||
## Available Translations ##
|
||||
|
||||
* Spanish - Provided by Eduardo Larequi of [educacion.navarra.es/web/pnte/](http://www.educacion.navarra.es/web/pnte/).
|
||||
* Italian - Provided by Francesco Paccagnella of [pacca.it](http://www.pacca.it/).
|
||||
* French - Provided by Vincent Bray.
|
||||
* German - Provided by Stefanie Drucker of [kreativhuhn.at](http://www.kreativhuhn.at/).
|
||||
* Norwegian - Provided by Tore Hjartland of [aliom.no](http://www.aliom.no/).
|
||||
* Polish - Provided by Michał Pasternak of [iplweb.pl](http://iplweb.pl/).
|
||||
* Lithuanian - Provided by Andrius Mazeika of [mazeika.info](http://mazeika.info/).
|
||||
|
||||
== Installation ==
|
||||
|
||||
There are three ways to install this plugin.
|
||||
|
||||
= 1. Admin Search =
|
||||
1. In your Admin, go to menu Plugins > Add.
|
||||
1. Search for `Google Calendar`.
|
||||
1. Find the plugin that's labeled `Google Calendar Events`.
|
||||
1. Look for the author name `Phil Derksen` on the plugin.
|
||||
1. Click to install.
|
||||
1. Activate the plugin.
|
||||
1. A new menu item `GCal Events` will appear in the main menu.
|
||||
|
||||
= 2. Download & Upload =
|
||||
1. Download the plugin (a zip file) on the right column of this page.
|
||||
1. In your Admin, go to menu Plugins > Add.
|
||||
1. Select the tab "Upload".
|
||||
1. Upload the .zip file you just downloaded.
|
||||
1. Activate the plugin.
|
||||
1. A new menu item `GCal Events` will appear in the main menu.
|
||||
|
||||
= 3. FTP Upload =
|
||||
1. Download the plugin (.zip file) on the right column of this page.
|
||||
1. Unzip the zip file contents.
|
||||
1. Upload the `google-calendar-events` folder to the `/wp-content/plugins/` directory of your site.
|
||||
1. Activate the plugin through the 'Plugins' menu in WordPress.
|
||||
1. A new menu item `GCal Events` will appear in the main menu.
|
||||
|
||||
== Frequently Asked Questions ==
|
||||
|
||||
[Plugin Documentation & Getting Started](http://wpdocs.philderksen.com/google-calendar-events/?utm_source=wordpress_org&utm_medium=link&utm_campaign=gce_lite)
|
||||
|
||||
== Screenshots ==
|
||||
|
||||
1. Grid display in full page with tooltip
|
||||
1. Grid display in widget
|
||||
1. List display in widget
|
||||
1. Simple display options
|
||||
1. Calendar feed settings
|
||||
1. Calendar widget settings
|
||||
1. Event display builder editor
|
||||
|
||||
== Changelog ==
|
||||
|
||||
= 2.1.1 =
|
||||
|
||||
* Fixed bug with all day events not displaying.
|
||||
* Added missing timezone parameter to internal query.
|
||||
|
||||
= 2.1.0 =
|
||||
|
||||
* Updated to use Google Calendar API version 3. Version 2 deprecated on Nov. 17, 2014.
|
||||
|
||||
= 2.0.7.1 =
|
||||
|
||||
* As of Nov. 17, 2014 the GCal API v2 is deprecated, which breaks all calendar feed displays. This update will temporarily hide the display while we work on a solution that uses GCal API v3.
|
||||
|
||||
= 2.0.7 =
|
||||
|
||||
* Events will now display if it hasn't ended yet for list views.
|
||||
* Fixed bug with date() call causing a display error in some cases.
|
||||
* Fixed bug with with widget tooltip text display.
|
||||
* Added cache clearing on upgrade.
|
||||
* Added filters for Previous and Next link text.
|
||||
* Internationalization and language file updates.
|
||||
* Simplified text domain function.
|
||||
* Added Lithuanian translation - Provided by Andrius Mazeika of [mazeika.info](http://mazeika.info/).
|
||||
|
||||
= 2.0.6.2 =
|
||||
|
||||
* Reverted previous bug fix that introduced new bugs.
|
||||
|
||||
= 2.0.6.1 =
|
||||
|
||||
* Added Polish translation - Provided by Michał Pasternak of [iplweb.pl](http://iplweb.pl/).
|
||||
* Updated Italian translation.
|
||||
* Updated French translation.
|
||||
* Fixed bug with date() call causing a display error in some cases.
|
||||
* Minor bug fixes.
|
||||
|
||||
= 2.0.6 =
|
||||
|
||||
* Added minimum and maximum feed date options to fix event display issues and boost performance.
|
||||
* Fixed a caching issue to increase performance.
|
||||
* Fixed bug where backslashes kept getting added to event titles that already contained single quotes when navigating through pages in widget.
|
||||
|
||||
= 2.0.5.1 =
|
||||
|
||||
* Fix timezone issue.
|
||||
|
||||
= 2.0.5 =
|
||||
|
||||
* Fixed display bug with event date and grouped lists.
|
||||
* Fixed broken paging links when feed IDs contain spaces between them.
|
||||
* Fixed bug with start offset and grouped lists not working properly.
|
||||
* Fixed bug where clear cache link was showing on any type of CPT.
|
||||
* Added German translation - Provided by Stefanie Drucker of [kreativhuhn.at](http://www.kreativhuhn.at/).
|
||||
* Added Norwegian translation - Provided by Tore Hjartland of [aliom.no](http://www.aliom.no/).
|
||||
|
||||
= 2.0.4 =
|
||||
|
||||
* Added option to show/hide paging.
|
||||
* Added option to limit display to any number of days or events per page.
|
||||
* Added option to set the start date offset any number of days back or ahead (list view).
|
||||
* Removed retrieve events from/until options now that display limit options will be used.
|
||||
* Removed max number of events to retrieve option.
|
||||
* Added shortcode attribute 'paging'.
|
||||
* Added shortcode attribute 'interval'.
|
||||
* Added shortcode attribute 'interval_count'.
|
||||
* Added shortcode attribute 'offset_interval_count'.
|
||||
* Added shortcode attribute 'offset_direction'.
|
||||
* Updated shortcode 'display' attribute to allow a value of 'grouped-list'.
|
||||
* Date no longer shows up for the title (list view).
|
||||
* HTML restructured to use div tags instead of an unordered list (list view).
|
||||
* Nav bar HTML (Back/Next links and month title) restructured to use div tags instead of span and percentages.
|
||||
* Moved clear cache button and changed style.
|
||||
* Added Italian translation - Provided by Francesco Paccagnella of [pacca.it](http://www.pacca.it/).
|
||||
* Added French translation - Provided by Vincent Bray.
|
||||
* Fixed PHP error during upgrade.
|
||||
* Fixed cross-site scripting (XSS) vulnerability.
|
||||
* JavaScript restructured to fit more in line with best practices.
|
||||
* Remove unused admin script file.
|
||||
|
||||
= 2.0.3.1 =
|
||||
|
||||
* Fixed bug where retrieve from/until dates were accidentally removed.
|
||||
|
||||
= 2.0.3 =
|
||||
|
||||
* Fixed bug where calendar feed caches weren't getting cleared properly.
|
||||
* Fixed feed settings metabox content wrapping issue.
|
||||
|
||||
= 2.0.2 =
|
||||
|
||||
* Added Spanish translation - Provided by Eduardo Larequi of [educacion.navarra.es/web/pnte/](http://www.educacion.navarra.es/web/pnte/).
|
||||
* Fixed timezone issues by forcing calendar feeds to use the timezone selected in the site's General Settings. Feed-specific timezone setting removed.
|
||||
* Fixed a bug with recurring events display.
|
||||
* Fixed an upgrade bug with multiple day events.
|
||||
|
||||
= 2.0.1 =
|
||||
|
||||
* Fixed display errors with certain event builder shortcodes.
|
||||
* Added language folder.
|
||||
|
||||
= 2.0.0 =
|
||||
|
||||
* Plugin rewritten from scratch.
|
||||
* Now using custom post types for storing and customizing Google calendar feeds.
|
||||
* Introduced the shortcode `[gcal]` (old shortcode still supported).
|
||||
|
||||
= 0.7.3.1 =
|
||||
|
||||
* Include missing file: upgrade-notice.php.
|
||||
|
||||
= 0.7.3 =
|
||||
|
||||
* Added warning about upcoming version 2.0 release.
|
||||
* Added option to save settings upon uninstall.
|
||||
* Tested with WordPress 4.0.
|
||||
|
||||
= 0.7.2 =
|
||||
|
||||
* Fixed a bug causing the "More details" Google Calendar information to be displayed in the wrong timezone
|
||||
* Fixed a bug that prevented setting the cache duration to 0 from working correctly
|
||||
* Fixed an issue that prevented Ajax from working with FORCE_SSL_ADMIN enabled
|
||||
* Now uses [wp_enqueue_scripts](http://wpdevel.wordpress.com/2011/12/12/use-wp_enqueue_scripts-not-wp_print_styles-to-enqueue-scripts-and-styles-for-the-frontend/)
|
||||
|
||||
= 0.7.1 =
|
||||
|
||||
* Fixed bug causing AJAX enabled calendar grids to not function correctly
|
||||
* Fixed bug causing all-day events from outside required date range to be displayed
|
||||
* Fixed bug causing tooltip date title heading setting to be ignored
|
||||
* Added further data sanitisation on output
|
||||
* Feeds with no events will now be cached to prevent HTTP requests on every page load
|
||||
|
||||
= 0.7 =
|
||||
|
||||
* Fixed bug causing event dates / times to be displayed in the wrong timezone
|
||||
* Changed the [link-path] Event Display Builder shortcode to [url]
|
||||
* Fixed an Opera specific CSS issue causing page lists to be hidden
|
||||
* Lists can now be displayed in descending or ascending order
|
||||
* Added [event-id] and [cal-id] Event Display Builder shortcodes
|
||||
* Added an offset parameter for date / time based Event Display Builder shortcodes
|
||||
* Added an autolink parameter for enabling / disabling automatic linking of URLs
|
||||
* Added gce-day-past or gce-day-future classes to calendar grid cells
|
||||
* Cleaned up CSS
|
||||
|
||||
= 0.6 =
|
||||
|
||||
* Drastically reduced memory usage
|
||||
* Improved feed data caching system
|
||||
* Improved error reporting
|
||||
* General performance and efficiency improvements
|
||||
* Added a few more shortcodes to the event display builder
|
||||
* Other [miscellaneous changes / additions and bug fixes](http://www.rhanney.co.uk/2011/04/29/google-calendar-events-0-6)
|
||||
|
||||
= 0.5 =
|
||||
|
||||
* Added [event display builder](http://www.rhanney.co.uk/plugins/google-calendar-events/event-display-builder) feature, which vastly improves the customization possibilities of the plugin. This feature encompasses many of the most requested features, such as:
|
||||
- All-day events can be handled differently than 'normal' events
|
||||
- Start and end times / dates can be displayed on the same line (as can any other event information)
|
||||
- HTML (and Markdown) entered in Google Calendar fields can be properly parsed
|
||||
* Start and end times for retrieval of events are now much more flexible
|
||||
* A custom error message for non-admin users can now be specified
|
||||
* No longer loads SimplePie when it is not required
|
||||
|
||||
= 0.4.1 =
|
||||
|
||||
* Fix / workaround for the long-running timezone bug. Please take a look at [this](http://www.rhanney.co.uk/2011/01/16/google-calendar-events-0-4-1) for more information.
|
||||
* Added additional 'Maximum no. events to display' option to widget / shortcode (mainly to address a further issue caused by the above fix)
|
||||
* i18n related bug fix
|
||||
* Added support for widget_title filter (courtesy of [James](http://lunasea-studios.com))
|
||||
* Added Hungarian (hu_HU) translation ([danieltakacs](http://ek.klog.hu))
|
||||
* Now using minified version of jQuery qTip script
|
||||
|
||||
= 0.4 =
|
||||
|
||||
* More control over how start and end dates / times are displayed
|
||||
* Events can now be limited to a specified timeframe (number of days)
|
||||
* Events on the same day in lists can now be shown under a single date title
|
||||
* JavaScript can now be added to the footer rather than the header, via an option
|
||||
* The 'Loading...' text can now be customized
|
||||
* Description text can now be limited to a specified number of words
|
||||
* Multi-day events can be shown on each day that they span ([sort of](http://www.rhanney.co.uk/2010/08/19/google-calendar-events-0-4#multiday))
|
||||
* Bug fixes
|
||||
* i18n / l10n fixes
|
||||
|
||||
= 0.3.1 =
|
||||
|
||||
* l10n / i18n fixes. Dates should now be localized correctly and should maintain localization after an AJAX request
|
||||
* MU / Multi-site issues. Issues preventing adding of feeds have been addressed
|
||||
|
||||
= 0.3 =
|
||||
|
||||
* Now allows events from multiple Google Calendar feeds to be displayed on a single calendar grid / list
|
||||
* Internationalization support added
|
||||
|
||||
= 0.2.1 =
|
||||
|
||||
* Added option to allow 'More details' links to open in new window / tab.
|
||||
* Added option to choose a specific timezone for each feed
|
||||
* Line breaks in an event description will now be preserved
|
||||
* Fixed a bug casing the title to not be displayed on lists
|
||||
* Other minor bug fixes
|
||||
|
||||
= 0.2 =
|
||||
|
||||
* Added customization options for how information is displayed.
|
||||
* Can now display: start time, end time and date, location, description and event link.
|
||||
* Tooltips now using qTip jQuery plugin.
|
||||
|
||||
= 0.1.4 =
|
||||
|
||||
* More bug fixes.
|
||||
|
||||
= 0.1.3 =
|
||||
|
||||
* Several bug fixes, including fixing JavaScript problems that prevented tooltips appearing.
|
||||
|
||||
= 0.1.2 =
|
||||
|
||||
* Bug fixes.
|
||||
|
||||
= 0.1.1 =
|
||||
|
||||
* Fix to prevent conflicts with other plugins.
|
||||
* Changes to readme.txt.
|
||||
|
||||
= 0.1 =
|
||||
|
||||
* Initial release.
|
||||
|
||||
== Upgrade Notice ==
|
||||
|
||||
= 2.1.0 =
|
||||
|
||||
Updated to use Google Calendar API version 3. Version 2 deprecated on Nov. 17, 2014.
|
||||
@@ -55,6 +55,70 @@ class Google_Calendar_Events_Admin {
|
||||
|
||||
// Add the options page and menu item.
|
||||
add_action( 'admin_menu', array( $this, 'add_plugin_admin_menu' ), 2 );
|
||||
|
||||
// Add admin notice for users upgrading from before 2.1.0.
|
||||
if( version_compare( $this->version, '2.1.0', '<' ) ) {
|
||||
add_action( 'admin_notices', array( $this, 'show_admin_notice' ) );
|
||||
}
|
||||
|
||||
// Add admin notice after plugin activation. Also check if should be hidden.
|
||||
add_action( 'admin_notices', array( $this, 'admin_api_settings_notice' ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Show notice after plugin install/activate
|
||||
* Also check if user chooses to hide it.
|
||||
*
|
||||
* @since 2.1.0
|
||||
*/
|
||||
public function admin_api_settings_notice() {
|
||||
// Exit all of this is stored value is false/0 or not set.
|
||||
if ( false == get_option( 'gce_show_admin_install_notice' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$screen = get_current_screen();
|
||||
|
||||
// Delete stored value if "hide" button click detected (custom querystring value set to 1).
|
||||
if ( ! empty( $_REQUEST['gce-dismiss-install-nag'] ) || in_array( $screen->id, $this->plugin_screen_hook_suffix ) ) {
|
||||
delete_option( 'gce_show_admin_install_notice' );
|
||||
return;
|
||||
}
|
||||
|
||||
// At this point show install notice. Show it only on the plugin screen.
|
||||
if( get_current_screen()->id == 'plugins' || $this->viewing_this_plugin() ) {
|
||||
include_once( 'views/admin/api-settings-notice.php' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if viewing one of this plugin's admin pages.
|
||||
*
|
||||
* @since 2.1.0
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private function viewing_this_plugin() {
|
||||
if ( ! isset( $this->plugin_screen_hook_suffix ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$screen = get_current_screen();
|
||||
|
||||
if ( $screen->id == 'edit-gce_feed' || $screen->id == 'gce_feed' ) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fired when the plugin is activated.
|
||||
*
|
||||
* @since 2.1.0
|
||||
*/
|
||||
public static function activate() {
|
||||
update_option( 'gce_show_admin_install_notice', 1 );
|
||||
}
|
||||
|
||||
public function add_plugin_admin_menu() {
|
||||
@@ -131,11 +195,27 @@ class Google_Calendar_Events_Admin {
|
||||
|
||||
return array_merge(
|
||||
array(
|
||||
'settings' => '<a href="' . admin_url( 'edit.php?post_type=gce_feed&page=google-calendar-events_general_settings' ) . '">' . __( 'General Settings', 'gce' ) . '</a>',
|
||||
'feeds' => '<a href="' . admin_url( 'edit.php?post_type=gce_feed' ) . '">' . __( 'Feeds', 'gce' ) . '</a>'
|
||||
//'settings' => '<a href="' . admin_url( 'edit.php?post_type=gce_feed&page=google-calendar-events_general_settings' ) . '">' . __( 'Settings', 'gce' ) . '</a>',
|
||||
),
|
||||
$links
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use to show an important admin notice.
|
||||
*
|
||||
* @since 2.0.7.1
|
||||
*/
|
||||
|
||||
/**
|
||||
* Example use in constructor:
|
||||
|
||||
if( version_compare( $this->version, '2.1.0', '<' ) ) {
|
||||
add_action( 'admin_notices', array( $this, 'show_admin_notice' ) );
|
||||
}
|
||||
*/
|
||||
function show_admin_notice() {
|
||||
include_once( 'includes/admin/admin-notice.php' );
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,7 @@ class Google_Calendar_Events {
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $version = '2.0.6';
|
||||
protected $version = '2.1.1';
|
||||
|
||||
/**
|
||||
* Unique identifier for the plugin.
|
||||
@@ -137,8 +137,9 @@ class Google_Calendar_Events {
|
||||
|
||||
wp_localize_script( $this->plugin_slug . '-public', 'gce',
|
||||
array(
|
||||
'ajaxurl' => admin_url( 'admin-ajax.php' ),
|
||||
'ajaxnonce' => wp_create_nonce( 'gce_ajax_nonce' )
|
||||
'ajaxurl' => admin_url( 'admin-ajax.php' ),
|
||||
'ajaxnonce' => wp_create_nonce( 'gce_ajax_nonce' ),
|
||||
'loadingText' => __( 'Loading...', 'gce' )
|
||||
) );
|
||||
}
|
||||
|
||||
@@ -196,26 +197,10 @@ class Google_Calendar_Events {
|
||||
* @since 2.0.0
|
||||
*/
|
||||
public function plugin_textdomain() {
|
||||
// Set filter for plugin's languages directory
|
||||
$gce_lang_dir = dirname( plugin_basename( GCE_MAIN_FILE ) ) . '/languages/';
|
||||
$gce_lang_dir = apply_filters( 'gce_languages_directory', $gce_lang_dir );
|
||||
|
||||
// Traditional WordPress plugin locale filter
|
||||
$locale = apply_filters( 'plugin_locale', get_locale(), 'gce' );
|
||||
$mofile = sprintf( '%1$s-%2$s.mo', 'gce', $locale );
|
||||
|
||||
// Setup paths to current locale file
|
||||
$mofile_local = $gce_lang_dir . $mofile;
|
||||
$mofile_global = WP_LANG_DIR . '/gce/' . $mofile;
|
||||
|
||||
if ( file_exists( $mofile_global ) ) {
|
||||
load_textdomain( 'gce', $mofile_global );
|
||||
} elseif ( file_exists( $mofile_local ) ) {
|
||||
load_textdomain( 'gce', $mofile_local );
|
||||
} else {
|
||||
// Load the default language files
|
||||
load_plugin_textdomain( 'gce', false, $gce_lang_dir );
|
||||
}
|
||||
|
||||
load_plugin_textdomain(
|
||||
'gce',
|
||||
false,
|
||||
dirname( plugin_basename( GCE_MAIN_FILE ) ) . '/languages/'
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,219 +1,219 @@
|
||||
/**
|
||||
* Public facing CSS file
|
||||
*
|
||||
* @package GCE
|
||||
* @author Phil Derksen <pderksen@gmail.com>, Nick Young <mycorpweb@gmail.com>
|
||||
* @license GPL-2.0+
|
||||
* @copyright 2014 Phil Derksen
|
||||
*/
|
||||
|
||||
/* Base line-height for all views & tooltip */
|
||||
|
||||
.gce-page-grid,
|
||||
.gce-page-list,
|
||||
.gce-widget-grid,
|
||||
.gce-widget-list,
|
||||
.gce-event-info {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* Month & list titles for all views */
|
||||
|
||||
.gce-month-title,
|
||||
.gce-list-title {
|
||||
font-weight: bold;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
/* Event titles with shaded background for all views */
|
||||
|
||||
.gce-list-event,
|
||||
.gce-tooltip-event {
|
||||
background-color: #ddd;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
/* PAGE GRID */
|
||||
|
||||
.gce-page-grid .gce-calendar .gce-caption{ /* Caption at top of calendar */
|
||||
color:#333333;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.gce-page-grid .gce-calendar{ /* Main calendar table */
|
||||
width:100%;
|
||||
border-collapse:collapse;
|
||||
border:1px solid #CCCCCC;
|
||||
color:#CCCCCC;
|
||||
}
|
||||
|
||||
.gce-page-grid .gce-calendar th{ /* Day headings (S, M etc.) */
|
||||
border:1px solid #CCCCCC;
|
||||
text-align:center;
|
||||
width:14.29%;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
.gce-page-grid .gce-calendar td{ /* Day table cells */
|
||||
border:1px solid #CCCCCC;
|
||||
text-align:center;
|
||||
height:80px;
|
||||
vertical-align:middle;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
.gce-page-grid .gce-calendar .gce-has-events{ /* Table cells with events */
|
||||
color:#333333;
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
.gce-page-grid .gce-calendar .gce-event-info{ /* Event information */
|
||||
display:none; /* Important! */
|
||||
}
|
||||
|
||||
.gce-page-grid .gce-calendar .gce-day-number{ /* Day number span */
|
||||
font-size:2em;
|
||||
}
|
||||
|
||||
.gce-page-grid .gce-calendar .gce-today{ /* Table cell that represents today */
|
||||
background-color:#DDDDDD;
|
||||
}
|
||||
|
||||
.gce-page-grid .gce-calendar th abbr{ /* Day letter abbreviation */
|
||||
border-bottom:none;
|
||||
}
|
||||
|
||||
/* PAGE LIST */
|
||||
|
||||
.gce-page-list .gce-feed {
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.gce-page-list .gce-list p{ /* Each piece of information in the list */
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.gce-page-list .gce-list p span,
|
||||
.gce-page-list .gce-list div span{ /* The text displayed before each piece of info, 'Starts:' for example */
|
||||
color:#999999;
|
||||
}
|
||||
|
||||
/* WIDGET GRID */
|
||||
|
||||
.gce-widget-grid .gce-calendar .gce-caption{
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.gce-widget-grid .gce-calendar{ /* Main calendar table */
|
||||
width:100%;
|
||||
border:1px solid #CCCCCC;
|
||||
border-collapse:collapse;
|
||||
}
|
||||
|
||||
.gce-widget-grid .gce-calendar th{ /* Day headings (S, M etc.) */
|
||||
width:14.29%;
|
||||
border:1px solid #CCCCCC;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.gce-widget-grid .gce-calendar td{ /* Day table cells */
|
||||
color:#CCCCCC;
|
||||
width:14.29%;
|
||||
border:1px solid #CCCCCC;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.gce-widget-grid .gce-calendar .gce-has-events{ /* Table cells with events */
|
||||
cursor:pointer;
|
||||
color:#666666;
|
||||
}
|
||||
|
||||
.gce-widget-grid .gce-calendar .gce-today{ /* Table cell that represents today */
|
||||
background-color:#DDDDDD;
|
||||
}
|
||||
|
||||
.gce-widget-grid .gce-calendar .gce-event-info{ /* Event information */
|
||||
display:none; /* Important! */
|
||||
}
|
||||
|
||||
.gce-widget-grid .gce-calendar th abbr{ /* Day name abbreviations */
|
||||
border-bottom:none;
|
||||
}
|
||||
|
||||
/* WIDGET LIST */
|
||||
|
||||
.gce-widget-list .gce-list p{ /* Each piece of information in the list */
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.gce-widget-list .gce-list p span,
|
||||
.gce-widget-list .gce-list div span{ /* The text displayed before each piece of info, 'Starts:' for example */
|
||||
color:#999999;
|
||||
}
|
||||
|
||||
/* TOOLTIP */
|
||||
|
||||
.gce-event-info{ /* Tooltip container */
|
||||
background-color:#FFFFFF;
|
||||
border:1px solid #333333;
|
||||
max-width:300px;
|
||||
}
|
||||
|
||||
.gce-event-info .gce-tooltip-title{ /* 'Events on...' text */
|
||||
margin:5px;
|
||||
font-weight:bold;
|
||||
font-size:1.2em;
|
||||
}
|
||||
|
||||
.gce-event-info ul{ /* Events list */
|
||||
padding:0;
|
||||
margin:5px;
|
||||
list-style-type:none;
|
||||
}
|
||||
|
||||
.gce-event-info ul li{ /* Event list item */
|
||||
margin:10px 0 0 0;
|
||||
}
|
||||
|
||||
.gce-event-info ul li p{ /* Each piece of information */
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.gce-event-info ul li p span,
|
||||
.gce-event-info ul li div span{ /* The text displayed before each piece of info, 'Starts:' for example */
|
||||
color:#999999;
|
||||
}
|
||||
|
||||
/** Calendar navigation bar, Prev/Next links & month title. **/
|
||||
|
||||
.gce-navbar {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
clear: both;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.gce-next,
|
||||
.gce-prev {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.gce-prev {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.gce-next {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.gce-month-title {
|
||||
display: inline-block;
|
||||
margin: 0 auto;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* Grouped List */
|
||||
|
||||
.gce-list-grouped .gce-feed {
|
||||
margin-left: 5%;
|
||||
}
|
||||
/**
|
||||
* Public facing CSS file
|
||||
*
|
||||
* @package GCE
|
||||
* @author Phil Derksen <pderksen@gmail.com>, Nick Young <mycorpweb@gmail.com>
|
||||
* @license GPL-2.0+
|
||||
* @copyright 2014 Phil Derksen
|
||||
*/
|
||||
|
||||
/* Base line-height for all views & tooltip */
|
||||
|
||||
.gce-page-grid,
|
||||
.gce-page-list,
|
||||
.gce-widget-grid,
|
||||
.gce-widget-list,
|
||||
.gce-event-info {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* Month & list titles for all views */
|
||||
|
||||
.gce-month-title,
|
||||
.gce-list-title {
|
||||
font-weight: bold;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
|
||||
/* Event titles with shaded background for all views */
|
||||
|
||||
.gce-list-event,
|
||||
.gce-tooltip-event {
|
||||
background-color: #ddd;
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
/* PAGE GRID */
|
||||
|
||||
.gce-page-grid .gce-calendar .gce-caption{ /* Caption at top of calendar */
|
||||
color:#333333;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.gce-page-grid .gce-calendar{ /* Main calendar table */
|
||||
width:100%;
|
||||
border-collapse:collapse;
|
||||
border:1px solid #CCCCCC;
|
||||
color:#CCCCCC;
|
||||
}
|
||||
|
||||
.gce-page-grid .gce-calendar th{ /* Day headings (S, M etc.) */
|
||||
border:1px solid #CCCCCC;
|
||||
text-align:center;
|
||||
width:14.29%;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
.gce-page-grid .gce-calendar td{ /* Day table cells */
|
||||
border:1px solid #CCCCCC;
|
||||
text-align:center;
|
||||
height:80px;
|
||||
vertical-align:middle;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
.gce-page-grid .gce-calendar .gce-has-events{ /* Table cells with events */
|
||||
color:#333333;
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
.gce-page-grid .gce-calendar .gce-event-info{ /* Event information */
|
||||
display:none; /* Important! */
|
||||
}
|
||||
|
||||
.gce-page-grid .gce-calendar .gce-day-number{ /* Day number span */
|
||||
font-size:2em;
|
||||
}
|
||||
|
||||
.gce-page-grid .gce-calendar .gce-today{ /* Table cell that represents today */
|
||||
background-color:#DDDDDD;
|
||||
}
|
||||
|
||||
.gce-page-grid .gce-calendar th abbr{ /* Day letter abbreviation */
|
||||
border-bottom:none;
|
||||
}
|
||||
|
||||
/* PAGE LIST */
|
||||
|
||||
.gce-page-list .gce-feed {
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.gce-page-list .gce-list p{ /* Each piece of information in the list */
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.gce-page-list .gce-list p span,
|
||||
.gce-page-list .gce-list div span{ /* The text displayed before each piece of info, 'Starts:' for example */
|
||||
color:#999999;
|
||||
}
|
||||
|
||||
/* WIDGET GRID */
|
||||
|
||||
.gce-widget-grid .gce-calendar .gce-caption{
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.gce-widget-grid .gce-calendar{ /* Main calendar table */
|
||||
width:100%;
|
||||
border:1px solid #CCCCCC;
|
||||
border-collapse:collapse;
|
||||
}
|
||||
|
||||
.gce-widget-grid .gce-calendar th{ /* Day headings (S, M etc.) */
|
||||
width:14.29%;
|
||||
border:1px solid #CCCCCC;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.gce-widget-grid .gce-calendar td{ /* Day table cells */
|
||||
color:#CCCCCC;
|
||||
width:14.29%;
|
||||
border:1px solid #CCCCCC;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.gce-widget-grid .gce-calendar .gce-has-events{ /* Table cells with events */
|
||||
cursor:pointer;
|
||||
color:#666666;
|
||||
}
|
||||
|
||||
.gce-widget-grid .gce-calendar .gce-today{ /* Table cell that represents today */
|
||||
background-color:#DDDDDD;
|
||||
}
|
||||
|
||||
.gce-widget-grid .gce-calendar .gce-event-info{ /* Event information */
|
||||
display:none; /* Important! */
|
||||
}
|
||||
|
||||
.gce-widget-grid .gce-calendar th abbr{ /* Day name abbreviations */
|
||||
border-bottom:none;
|
||||
}
|
||||
|
||||
/* WIDGET LIST */
|
||||
|
||||
.gce-widget-list .gce-list p{ /* Each piece of information in the list */
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.gce-widget-list .gce-list p span,
|
||||
.gce-widget-list .gce-list div span{ /* The text displayed before each piece of info, 'Starts:' for example */
|
||||
color:#999999;
|
||||
}
|
||||
|
||||
/* TOOLTIP */
|
||||
|
||||
.gce-event-info{ /* Tooltip container */
|
||||
background-color:#FFFFFF;
|
||||
border:1px solid #333333;
|
||||
max-width:300px;
|
||||
}
|
||||
|
||||
.gce-event-info .gce-tooltip-title{ /* 'Events on...' text */
|
||||
margin:5px;
|
||||
font-weight:bold;
|
||||
font-size:1.2em;
|
||||
}
|
||||
|
||||
.gce-event-info ul{ /* Events list */
|
||||
padding:0;
|
||||
margin:5px;
|
||||
list-style-type:none;
|
||||
}
|
||||
|
||||
.gce-event-info ul li{ /* Event list item */
|
||||
margin:10px 0 0 0;
|
||||
}
|
||||
|
||||
.gce-event-info ul li p{ /* Each piece of information */
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.gce-event-info ul li p span,
|
||||
.gce-event-info ul li div span{ /* The text displayed before each piece of info, 'Starts:' for example */
|
||||
color:#999999;
|
||||
}
|
||||
|
||||
/** Calendar navigation bar, Prev/Next links & month title. **/
|
||||
|
||||
.gce-navbar {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
clear: both;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.gce-next,
|
||||
.gce-prev {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.gce-prev {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.gce-next {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.gce-month-title {
|
||||
display: inline-block;
|
||||
margin: 0 auto;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* Grouped List */
|
||||
|
||||
.gce-list-grouped .gce-feed {
|
||||
margin-left: 5%;
|
||||
}
|
||||
@@ -1,60 +1,67 @@
|
||||
<?php
|
||||
/**
|
||||
* Google Calendar Events
|
||||
*
|
||||
* @package GCE
|
||||
* @author Phil Derksen <pderksen@gmail.com>, Nick Young <mycorpweb@gmail.com>
|
||||
* @license GPL-2.0+
|
||||
* @link http://philderksen.com
|
||||
* @copyright 2014 Phil Derksen
|
||||
*
|
||||
* @wordpress-plugin
|
||||
* Plugin Name: Google Calendar Events
|
||||
* Plugin URI: https://github.com/pderksen/WP-Google-Calendar-Events
|
||||
* Description: Parses Google Calendar feeds and displays the events as a calendar grid or list on a page, post or widget.
|
||||
* Version: 2.0.6
|
||||
* Author: Phil Derksen
|
||||
* Author URI: http://philderksen.com
|
||||
* License: GPL-2.0+
|
||||
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
|
||||
* Text Domain: gce
|
||||
* Domain Path: /languages
|
||||
*/
|
||||
|
||||
// If this file is called directly, abort.
|
||||
if ( ! defined( 'WPINC' ) ) {
|
||||
die;
|
||||
}
|
||||
|
||||
/*
|
||||
* Include the main plugin file
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
require_once( 'class-google-calendar-events.php' );
|
||||
|
||||
/**
|
||||
* Define constant pointing to this file
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
if( ! defined( 'GCE_MAIN_FILE' ) ) {
|
||||
define( 'GCE_MAIN_FILE', __FILE__ );
|
||||
}
|
||||
|
||||
/*
|
||||
* Get instance of our plugin
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
add_action( 'plugins_loaded', array( 'Google_Calendar_Events', 'get_instance' ) );
|
||||
|
||||
/*
|
||||
* If we are in admin then load the Admin class
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
if ( is_admin() && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
|
||||
require_once( 'class-google-calendar-events-admin.php' );
|
||||
add_action( 'plugins_loaded', array( 'Google_Calendar_Events_Admin', 'get_instance' ) );
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* Google Calendar Events
|
||||
*
|
||||
* @package GCE
|
||||
* @author Phil Derksen <pderksen@gmail.com>, Nick Young <mycorpweb@gmail.com>
|
||||
* @license GPL-2.0+
|
||||
* @link http://philderksen.com
|
||||
* @copyright 2014 Phil Derksen
|
||||
*
|
||||
* @wordpress-plugin
|
||||
* Plugin Name: Google Calendar Events
|
||||
* Plugin URI: https://github.com/pderksen/WP-Google-Calendar-Events
|
||||
* Description: Parses Google Calendar feeds and displays the events as a calendar grid or list on a page, post or widget.
|
||||
* Version: 2.1.1
|
||||
* Author: Phil Derksen
|
||||
* Author URI: http://philderksen.com
|
||||
* License: GPL-2.0+
|
||||
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
|
||||
* Text Domain: gce
|
||||
* Domain Path: /languages
|
||||
*/
|
||||
|
||||
// If this file is called directly, abort.
|
||||
if ( ! defined( 'WPINC' ) ) {
|
||||
die;
|
||||
}
|
||||
|
||||
/*
|
||||
* Include the main plugin file
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
require_once( 'class-google-calendar-events.php' );
|
||||
|
||||
/**
|
||||
* Define constant pointing to this file
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
if( ! defined( 'GCE_MAIN_FILE' ) ) {
|
||||
define( 'GCE_MAIN_FILE', __FILE__ );
|
||||
}
|
||||
|
||||
/*
|
||||
* Get instance of our plugin
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
add_action( 'plugins_loaded', array( 'Google_Calendar_Events', 'get_instance' ) );
|
||||
|
||||
/*
|
||||
* If we are in admin then load the Admin class
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
if ( is_admin() && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
|
||||
require_once( 'class-google-calendar-events-admin.php' );
|
||||
|
||||
// Register hooks that are fired when the plugin is activated, deactivated, and uninstalled, respectively.
|
||||
register_activation_hook( __FILE__, array( 'Google_Calendar_Events_Admin', 'activate' ) );
|
||||
|
||||
// Get plugin admin class instance
|
||||
add_action( 'plugins_loaded', array( 'Google_Calendar_Events_Admin', 'get_instance' ) );
|
||||
}
|
||||
|
||||
|
||||
@@ -32,11 +32,11 @@ function gce_default_editor_content( $content, $post ) {
|
||||
|
||||
if( $post->post_type == 'gce_feed' ) {
|
||||
$content = '<div class="gce-list-event gce-tooltip-event">[event-title]</div>' . "\n";
|
||||
$content .= '<div><span>Starts:</span> [start-time]</div>' . "\n";
|
||||
$content .= '<div><span>Ends:</span> [end-date] - [end-time]</div>' . "\n";
|
||||
$content .= '[if-location]<div><span>Location:</span> [location]</div>[/if-location]' . "\n";
|
||||
$content .= '[if-description]<div><span>Description:</span> [description]</div>[/if-description]' . "\n";
|
||||
$content .= '<div>[link newwindow="true"]More details...[/link]</div>' . "\n";
|
||||
$content .= '<div><span>' . __( 'Starts:', 'gce' ) . '</span> [start-time]</div>' . "\n";
|
||||
$content .= '<div><span>' . __( 'Ends:', 'gce' ) . '</span> [end-date] - [end-time]</div>' . "\n";
|
||||
$content .= '[if-location]<div><span>' . __( 'Location:', 'gce' ) . '</span> [location]</div>[/if-location]' . "\n";
|
||||
$content .= '[if-description]<div><span>' . __( 'Description:', 'gce' ) . '</span> [description]</div>[/if-description]' . "\n";
|
||||
$content .= '<div>[link newwindow="true"]' . __( 'More details...', 'gce' ) . '[/link]</div>' . "\n";
|
||||
|
||||
// Default Post Meta Options
|
||||
add_post_meta( $post->ID, 'gce_expand_recurring', 1 );
|
||||
@@ -54,14 +54,14 @@ function gce_default_editor_content( $content, $post ) {
|
||||
|
||||
// Default Simple Display Options
|
||||
add_post_meta( $post->ID, 'gce_display_start', 'time' );
|
||||
add_post_meta( $post->ID, 'gce_display_start_text', 'Starts:' );
|
||||
add_post_meta( $post->ID, 'gce_display_start_text', __( 'Starts:', 'gce' ) );
|
||||
add_post_meta( $post->ID, 'gce_display_end', 'time-date' );
|
||||
add_post_meta( $post->ID, 'gce_display_end_text', 'Ends:' );
|
||||
add_post_meta( $post->ID, 'gce_display_end_text', __( 'Ends:', 'gce' ) );
|
||||
add_post_meta( $post->ID, 'gce_display_separator', ', ' );
|
||||
add_post_meta( $post->ID, 'gce_display_location_text', 'Location:' );
|
||||
add_post_meta( $post->ID, 'gce_display_description_text', 'Description:' );
|
||||
add_post_meta( $post->ID, 'gce_display_location_text', __( 'Location:', 'gce' ) );
|
||||
add_post_meta( $post->ID, 'gce_display_description_text', __( 'Description:', 'gce' ) );
|
||||
add_post_meta( $post->ID, 'gce_display_link', 1 );
|
||||
add_post_meta( $post->ID, 'gce_display_link_text', 'More Details' );
|
||||
add_post_meta( $post->ID, 'gce_display_link_text', __( 'More Details', 'gce' ) );
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
/**
|
||||
* Show important upgrade notice.
|
||||
*
|
||||
* @package GCE
|
||||
* @author Phil Derksen <pderksen@gmail.com>, Nick Young <mycorpweb@gmail.com>
|
||||
* @license GPL-2.0+
|
||||
* @copyright 2014 Phil Derksen
|
||||
*/
|
||||
|
||||
// Exit if accessed directly.
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<!-- class="updated" or class="error" -->
|
||||
<div id="gce-admin-notice" class="error">
|
||||
<p>
|
||||
<strong>GCal Events Important Update Nov. 17, 2014:</strong><br/>
|
||||
Google took version 2 of the GCal API offline, which breaks all calendar feed displays.<br/>
|
||||
<strong><a href="https://wordpress.org/support/topic/nov-17-temporary-easy-embed-display-fix" target="_blank">Here's a temporary fix for your calendar display</a></strong>
|
||||
while we move the plugin to using the new GCal API this week. Thanks for your patience.
|
||||
</p>
|
||||
</div>
|
||||
@@ -22,6 +22,10 @@ function gce_upgrade() {
|
||||
$version = get_option( 'gce_version' );
|
||||
|
||||
if( ! empty( $version ) ) {
|
||||
|
||||
// Clear out cache when upgrading no matter the version
|
||||
gce_upgrade_clear_cache();
|
||||
|
||||
// Check if under version 2 and run the v2 upgrade if we are
|
||||
if( version_compare( $version, '2.0.0-beta1', '<' ) && false === get_option( 'gce_upgrade_has_run' ) ) {
|
||||
gce_v2_upgrade();
|
||||
@@ -36,6 +40,10 @@ function gce_upgrade() {
|
||||
if( version_compare( $version, '2.0.6', '<' ) ) {
|
||||
gce_v206_upgrade();
|
||||
}
|
||||
|
||||
if( version_compare( $version, '2.1.0', '<' ) ) {
|
||||
gce_v210_upgrade();
|
||||
}
|
||||
}
|
||||
|
||||
$new_version = Google_Calendar_Events::get_instance()->get_plugin_version();
|
||||
@@ -44,6 +52,30 @@ function gce_upgrade() {
|
||||
add_option( 'gce_upgrade_has_run', 1 );
|
||||
}
|
||||
|
||||
/*
|
||||
* Run the upgrade to version 2.1.0
|
||||
*/
|
||||
function gce_v210_upgrade() {
|
||||
|
||||
$q = new WP_Query( 'post_type=gce_feed' );
|
||||
|
||||
if( $q->have_posts() ) {
|
||||
while( $q->have_posts() ) {
|
||||
$q->the_post();
|
||||
|
||||
$url = get_post_meta( get_the_ID(), 'gce_feed_url', true );
|
||||
|
||||
// https://www.google.com/calendar/feeds/umsb0ekhivs1a2ubtq6vlqvcjk%40group.calendar.google.com/public/basic
|
||||
|
||||
$url = str_replace( 'https://www.google.com/calendar/feeds/', '', $url );
|
||||
$url = str_replace( '/public/basic', '', $url );
|
||||
$url = str_replace( '%40', '@', $url );
|
||||
|
||||
update_post_meta( get_the_ID(), 'gce_feed_url', $url );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Run the upgrade to version 2.0.6
|
||||
*
|
||||
@@ -336,4 +368,23 @@ function update_widget_feed_ids() {
|
||||
update_option( 'widget_gce_widget', $widget );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Update widget IDs
|
||||
*
|
||||
* @since 2.0.6.3
|
||||
*/
|
||||
function gce_upgrade_clear_cache() {
|
||||
// Update feeds
|
||||
$q = new WP_Query( 'post_type=gce_feed' );
|
||||
|
||||
if( $q->have_posts() ) {
|
||||
while( $q->have_posts() ) {
|
||||
|
||||
$q->the_post();
|
||||
|
||||
delete_transient( 'gce_feed_' . get_the_ID() );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -56,20 +56,12 @@ class GCE_Display {
|
||||
*/
|
||||
private function get_event_days() {
|
||||
$event_days = array();
|
||||
|
||||
//Total number of events retrieved
|
||||
$count = count( $this->merged_feeds );
|
||||
|
||||
//Loop through entire array of events, or until maximum number of events to be displayed has been reached
|
||||
for ( $i = 0; $i < $count; $i++ ) {
|
||||
$event = $this->merged_feeds[$i];
|
||||
|
||||
//Check that event ends, or starts (or both) within the required date range. This prevents all-day events from before / after date range from showing up.
|
||||
//if ( $event->end_time > $event->start_time && $event->start_time < $event->end_time ) {
|
||||
foreach ( $event->get_days() as $day ) {
|
||||
$event_days[$day][] = $event;
|
||||
}
|
||||
foreach ( $this->merged_feeds as $event ) {
|
||||
foreach ( $event->get_days() as $day ) {
|
||||
$event_days[$day][] = $event;
|
||||
}
|
||||
}
|
||||
|
||||
return $event_days;
|
||||
}
|
||||
@@ -112,8 +104,7 @@ class GCE_Display {
|
||||
|
||||
//Array of previous and next link stuff for use in gce_generate_calendar (below)
|
||||
foreach( $event_days as $key => $event_day ) {
|
||||
|
||||
if( $paging == null && $paging != 0 ) {
|
||||
if( $paging === null ) {
|
||||
$paging = get_post_meta( $event_day[0]->feed->id, 'gce_paging', true );
|
||||
}
|
||||
}
|
||||
@@ -223,25 +214,26 @@ class GCE_Display {
|
||||
// Get all the event days
|
||||
$event_days = $this->get_event_days();
|
||||
|
||||
foreach( $event_days as $key => $event_day ) {
|
||||
if( $paging_interval == null ) {
|
||||
$max_num = get_post_meta( $event_day[0]->feed->id, 'gce_list_max_num', true );
|
||||
|
||||
if( $paging_type == null ) {
|
||||
$max_length = get_post_meta( $event_day[0]->feed->id, 'gce_list_max_length', true );
|
||||
$paging_type = $max_length;
|
||||
}
|
||||
}
|
||||
|
||||
if( $paging == null && $paging != 0 ) {
|
||||
$paging = get_post_meta( $event_day[0]->feed->id, 'gce_paging', true );
|
||||
}
|
||||
$an_event_feed_id = current( $event_days );
|
||||
$an_event_feed_id = $an_event_feed_id[0]->feed->id;
|
||||
|
||||
if( $paging_interval == null ) {
|
||||
$max_num = get_post_meta( $an_event_feed_id, 'gce_list_max_num', true );
|
||||
|
||||
if( $start_offset == null && $start_offset != 0 ) {
|
||||
$start_offset_num = get_post_meta( $event_day[0]->feed->id, 'gce_list_start_offset_num', true );
|
||||
$start_offset_direction = get_post_meta( $event_day[0]->feed->id, 'gce_list_start_offset_direction', true );
|
||||
if( $paging_type == null ) {
|
||||
$max_length = get_post_meta( $an_event_feed_id, 'gce_list_max_length', true );
|
||||
$paging_type = $max_length;
|
||||
}
|
||||
}
|
||||
|
||||
if( $paging === null ) {
|
||||
$paging = get_post_meta( $an_event_feed_id, 'gce_paging', true );
|
||||
}
|
||||
|
||||
if( $start_offset === null ) {
|
||||
$start_offset_num = get_post_meta( $an_event_feed_id, 'gce_list_start_offset_num', true );
|
||||
$start_offset_direction = get_post_meta( $an_event_feed_id, 'gce_list_start_offset_direction', true );
|
||||
}
|
||||
|
||||
if( empty( $max_num ) || $max_num == 0 ) {
|
||||
$max_num = 7;
|
||||
@@ -251,7 +243,7 @@ class GCE_Display {
|
||||
$paging_interval = $max_num * 86400;
|
||||
}
|
||||
|
||||
if( $start_offset == null && $start_offset != 0 ) {
|
||||
if( $start_offset === null ) {
|
||||
if( $start_offset_direction == 'back' ) {
|
||||
$start_offset_direction = -1;
|
||||
} else {
|
||||
@@ -274,8 +266,15 @@ class GCE_Display {
|
||||
$markup = '<div class="gce-list" data-gce-start-offset="' . $start_offset . '" data-gce-start="' . ( $start + $paging_interval ) . '" data-gce-paging-interval="' . $paging_interval . '" data-gce-paging="' . $paging . '" data-gce-feeds="' . $feeds . '" data-gce-title="' . stripslashes( $this->title ) . '" data-gce-grouped="' . $grouped . '" data-gce-sort="' . $this->sort . '">' . "\n";
|
||||
|
||||
if( ( $paging != 0 ) && $max_length != 'events' ) {
|
||||
$p = '<div class="gce-prev"><a href="#" class="gce-change-month-list" title="' . esc_attr__( 'Previous month', 'gce' ) . '" data-gce-paging-direction="back" data-gce-paging-type="' . $paging_type . '">'. __( 'Back', 'gce' ) . '</a></div>';
|
||||
$n = '<div class="gce-next"><a href="#" class="gce-change-month-list" title="' . esc_attr__( 'Next month', 'gce' ) . '" data-gce-paging-direction="forward" data-gce-paging-type="' . $paging_type . '">' . __( 'Next', 'gce' ) . '</a></div>';
|
||||
|
||||
$prev_text = __( 'Back', 'gce' );
|
||||
$next_text = __( 'Next', 'gce' );
|
||||
|
||||
$prev_text = apply_filters( 'gce_prev_text', $prev_text );
|
||||
$next_text = apply_filters( 'gce_next_text', $next_text );
|
||||
|
||||
$p = '<div class="gce-prev"><a href="#" class="gce-change-month-list" title="' . esc_attr__( 'Previous month', 'gce' ) . '" data-gce-paging-direction="back" data-gce-paging-type="' . $paging_type . '">'. $prev_text . '</a></div>';
|
||||
$n = '<div class="gce-next"><a href="#" class="gce-change-month-list" title="' . esc_attr__( 'Next month', 'gce' ) . '" data-gce-paging-direction="forward" data-gce-paging-type="' . $paging_type . '">' . $next_text . '</a></div>';
|
||||
|
||||
$markup .= '<caption class="gce-caption">' .
|
||||
'<div class="gce-navbar">' .
|
||||
@@ -287,6 +286,7 @@ class GCE_Display {
|
||||
}
|
||||
$max_count = 1;
|
||||
$has_events = false;
|
||||
$event_counter = 0;
|
||||
|
||||
if( $max_length == 'events' ) {
|
||||
if( $start_offset === null ) {
|
||||
@@ -299,7 +299,6 @@ class GCE_Display {
|
||||
|
||||
}
|
||||
|
||||
$event_counter = 0;
|
||||
|
||||
if( $max_events == null ) {
|
||||
$max_events = $max_num;
|
||||
@@ -308,56 +307,51 @@ class GCE_Display {
|
||||
|
||||
if ( $grouped ) {
|
||||
$markup .=
|
||||
'<div class="gce-list-grouped" ' . ( ( $key == $start ) ? ' class="gce-today"' : '' ) . '>' ;
|
||||
'<div class="gce-list-grouped">' ;
|
||||
}
|
||||
|
||||
if( $max_length != 'events' ) {
|
||||
$max_events = INF;
|
||||
}
|
||||
else {
|
||||
$end_time = INF;
|
||||
}
|
||||
|
||||
foreach ( $event_days as $key => $event_day ) {
|
||||
|
||||
if( $max_length != 'events' ) {
|
||||
|
||||
if( $grouped && $key >= $start && $key < $end_time ) {
|
||||
$markup .= '<div class="gce-list-title">' . stripslashes( $this->title ) . ' ' . date_i18n( $event_day[0]->feed->date_format, $key ) . '</div>';
|
||||
}
|
||||
|
||||
foreach ( $event_day as $num_in_day => $event ) {
|
||||
//Create the markup for this event
|
||||
if( ( $event->start_time >= $start && $event->end_time <= $end_time ) || ( $event->day_type == 'MWD' && $event->start_time > $start && $event->start_time < $end_time ) ) {
|
||||
// If this is a grouped list, generate a per-date group title with date.
|
||||
if( $grouped && $key >= $start && $key < $end_time && $event_counter < $max_events ) {
|
||||
$markup .= '<div class="gce-list-title">' . stripslashes( $this->title ) . ' ' . date_i18n( $event_day[0]->feed->date_format, $key ) . '</div>';
|
||||
}
|
||||
|
||||
$markup .=
|
||||
'<div class="gce-feed gce-feed-' . $event->feed->id . '">' .
|
||||
//If this isn't a grouped list and a date title should be displayed, add the date title
|
||||
( ( ! $grouped && isset( $event->title ) ) ? '<div class="gce-list-title">' . stripslashes( $this->title ) . '</div>' : '' ) .
|
||||
//Add the event markup
|
||||
$event->get_event_markup( 'list', $num_in_day, $i ) .
|
||||
'</div>';
|
||||
foreach ( $event_day as $num_in_day => $event ) {
|
||||
//Create the markup for this event
|
||||
if( ( $max_length != 'events' && (( $event->start_time >= $start && // Condition for limited by days
|
||||
$event->end_time <= $end_time ) ||
|
||||
( $event->day_type == 'MWD' &&
|
||||
$event->start_time > $start &&
|
||||
$event->start_time < $end_time )
|
||||
)
|
||||
) ||
|
||||
( $max_length == 'events' && ( $event->end_time >= $time_now && // Condition for limited by events
|
||||
$event_counter < $max_events )
|
||||
)
|
||||
) {
|
||||
|
||||
$markup .=
|
||||
'<div class="gce-feed gce-feed-' . $event->feed->id . '">' .
|
||||
//If this isn't a grouped list, generate a per-event title with date.
|
||||
( ( ! $grouped ) ? ( ( isset( $this->title ) && $this->title !== '' ) )
|
||||
? '<div class="gce-list-title">' . stripslashes( $this->title ) . ' ' . date_i18n( $event->feed->date_format, $event->start_time ) . '</div>'
|
||||
: '' : '' ) .
|
||||
//Add the event markup
|
||||
$event->get_event_markup( 'list', $num_in_day, $i ) .
|
||||
'</div>';
|
||||
|
||||
$has_events = true;
|
||||
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
||||
if( $grouped && $key >= $start && $event_counter < $max_events ) {
|
||||
$markup .= '<div class="gce-list-title">' . stripslashes( $this->title ) . ' ' . date_i18n( $event_day[0]->feed->date_format, $key ) . '</div>';
|
||||
}
|
||||
|
||||
foreach ( $event_day as $num_in_day => $event ) {
|
||||
//Create the markup for this event
|
||||
if( ( $event->start_time >= $time_now ) && ( $event_counter < $max_events ) ) {
|
||||
$markup .=
|
||||
'<div class="gce-feed gce-feed-' . $event->feed->id . '">' .
|
||||
'<div class="gce-list-title">' . stripslashes( $this->title ) . '</div>' .
|
||||
//Add the event markup
|
||||
$event->get_event_markup( 'list', $num_in_day, $i ) .
|
||||
'</div>';
|
||||
|
||||
$has_events = true;
|
||||
|
||||
$i++;
|
||||
|
||||
$event_counter++;
|
||||
}
|
||||
$has_events = true;
|
||||
$i++;
|
||||
$event_counter++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -50,32 +50,37 @@ class GCE_Event {
|
||||
*
|
||||
* @since 2.0.0
|
||||
*/
|
||||
function get_days() {
|
||||
//Round start date to nearest day
|
||||
$start_time = mktime( 0, 0, 0, date( 'm', $this->start_time ), date( 'd', $this->start_time ) , date( 'Y', $this->start_time ) );
|
||||
function get_days() {
|
||||
|
||||
if( $this->start_time !== null ) {
|
||||
//Round start date to nearest day
|
||||
$start_time = mktime( 0, 0, 0, date( 'm', $this->start_time ), date( 'd', $this->start_time ) , date( 'Y', $this->start_time ) );
|
||||
|
||||
$days = array();
|
||||
$days = array();
|
||||
|
||||
//If multiple day events should be handled, and this event is a multi-day event, add multiple day event to required days
|
||||
if ( $this->feed->multiple_day_events && ( 'MPD' == $this->day_type || 'MWD' == $this->day_type ) ) {
|
||||
$on_next_day = true;
|
||||
$next_day = $start_time;
|
||||
//If multiple day events should be handled, and this event is a multi-day event, add multiple day event to required days
|
||||
if ( $this->feed->multiple_day_events && ( 'MPD' == $this->day_type || 'MWD' == $this->day_type ) ) {
|
||||
$on_next_day = true;
|
||||
$next_day = $start_time;
|
||||
|
||||
while ( $on_next_day ) {
|
||||
//If the end time of the event is after 00:00 on the next day (therefore, not doesn't end on this day)
|
||||
if ( $this->end_time > $next_day ) {
|
||||
$days[] = $next_day;
|
||||
} else {
|
||||
$on_next_day = false;
|
||||
while ( $on_next_day ) {
|
||||
//If the end time of the event is after 00:00 on the next day (therefore, not doesn't end on this day)
|
||||
if ( $this->end_time > $next_day ) {
|
||||
$days[] = $next_day;
|
||||
} else {
|
||||
$on_next_day = false;
|
||||
}
|
||||
$next_day += 86400;
|
||||
}
|
||||
$next_day += 86400;
|
||||
} else {
|
||||
//Add event into array of events for that day
|
||||
$days[] = $start_time;
|
||||
}
|
||||
} else {
|
||||
//Add event into array of events for that day
|
||||
$days[] = $start_time;
|
||||
}
|
||||
|
||||
return $days;
|
||||
return $days;
|
||||
} else {
|
||||
return array();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -84,10 +89,6 @@ class GCE_Event {
|
||||
* @since 2.0.0
|
||||
*/
|
||||
function get_event_markup( $display_type, $num_in_day, $num ) {
|
||||
|
||||
|
||||
|
||||
|
||||
//Set the display type (either tooltip or list)
|
||||
$this->type = $display_type;
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
class GCE_Feed {
|
||||
|
||||
public $id,
|
||||
$calendar_id,
|
||||
$feed_url,
|
||||
$date_format,
|
||||
$time_format,
|
||||
@@ -24,6 +25,9 @@ class GCE_Feed {
|
||||
|
||||
public $events = array();
|
||||
|
||||
// Google API Key
|
||||
private $api_key = 'AIzaSyAssdKVved1mPVY0UJCrx96OUOF9u17AuY';
|
||||
|
||||
/**
|
||||
* Class constructor
|
||||
*
|
||||
@@ -33,12 +37,13 @@ class GCE_Feed {
|
||||
// Set the ID
|
||||
$this->id = $id;
|
||||
|
||||
$this->calendar_id = get_post_meta( $this->id, 'gce_feed_url', true );
|
||||
|
||||
// Set up all other data based on the ID
|
||||
$this->setup_attributes();
|
||||
|
||||
// Now create the Feed
|
||||
$this->create_feed();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -77,6 +82,8 @@ class GCE_Feed {
|
||||
private function create_feed() {
|
||||
//Break the feed URL up into its parts (scheme, host, path, query)
|
||||
|
||||
global $gce_options;
|
||||
|
||||
if( empty( $this->feed_url ) ) {
|
||||
if( current_user_can( 'manage_options' ) ) {
|
||||
echo '<p>' . __( 'The feed URL has not been set. Please make sure to set it correctly in the Feed settings.', 'gce' ) . '</p>';
|
||||
@@ -85,51 +92,42 @@ class GCE_Feed {
|
||||
return;
|
||||
}
|
||||
|
||||
$url_parts = parse_url( $this->feed_url );
|
||||
$args = array();
|
||||
|
||||
$scheme = ( is_ssl() ? 'https://' : 'http://' );
|
||||
|
||||
$scheme_and_host = $scheme . $url_parts['host'];
|
||||
|
||||
//Remove the exisitng projection from the path, and replace it with '/full-noattendees'
|
||||
$path = substr( $url_parts['path'], 0, strrpos( $url_parts['path'], '/' ) ) . '/full-noattendees';
|
||||
|
||||
//Add the default parameters to the querystring (retrieving JSON, not XML)
|
||||
$query = '?alt=json&sortorder=ascending&orderby=starttime';
|
||||
if( ! empty( $gce_options['api_key'] ) ) {
|
||||
$api_key = $gce_options['api_key'];
|
||||
} else {
|
||||
$api_key = $this->api_key;
|
||||
}
|
||||
|
||||
$start = $this->get_feed_start();
|
||||
$query = 'https://www.googleapis.com/calendar/v3/calendars/' . $this->calendar_id . '/events';
|
||||
|
||||
$end = $this->get_feed_end();
|
||||
// Set API key
|
||||
$query .= '?key=' . $api_key;
|
||||
|
||||
$gmt_offset = abs( get_option( 'gmt_offset' ) * 3600 );
|
||||
$args['orderBy'] = 'startTime';
|
||||
|
||||
$query .= '&start-min=' . date( 'Y-m-d\TH:i:s', $start - $gmt_offset );
|
||||
$args['timeMin'] = urlencode( $this->get_feed_start() );
|
||||
|
||||
$query .= '&start-max=' . date( 'Y-m-d\TH:i:s', $end - $gmt_offset );
|
||||
$args['timeMax'] = urlencode( $this->get_feed_end() );
|
||||
|
||||
|
||||
// Max results limit for performance.
|
||||
$query .= '&max-results=10000';
|
||||
$args['maxResults'] = 10000;
|
||||
|
||||
$ctz = get_option( 'timezone_string' );
|
||||
|
||||
if( ! empty( $ctz ) ) {
|
||||
$query .= '&ctz=' . $ctz;
|
||||
$args['timeZone'] = $ctz;
|
||||
}
|
||||
|
||||
if ( ! empty( $this->search_query ) ) {
|
||||
$query .= '&q=' . rawurlencode( $this->search_query );
|
||||
$args['q'] = rawurlencode( $this->search_query );
|
||||
}
|
||||
|
||||
if ( $this->expand_recurring ) {
|
||||
$query .= '&singleevents=true';
|
||||
}
|
||||
|
||||
//Put the URL back together
|
||||
$this->display_url = $scheme_and_host . $path . $query;
|
||||
$args['singleEvents'] = 'true';
|
||||
|
||||
// Get all the feed data
|
||||
$this->get_feed_data( $this->display_url );
|
||||
$query = add_query_arg( $args, $query );
|
||||
|
||||
$this->get_feed_data( $query );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -138,62 +136,56 @@ class GCE_Feed {
|
||||
* @since 2.0.0
|
||||
*/
|
||||
private function get_feed_data( $url ) {
|
||||
|
||||
|
||||
// First check for transient data to use
|
||||
if( false !== get_transient( 'gce_feed_' . $this->id ) ) {
|
||||
$this->events = get_transient( 'gce_feed_' . $this->id );
|
||||
} else {
|
||||
|
||||
// Moved the remote get here to be more efficient
|
||||
// Pointed out to us by John McManigle ( github.com/mcmanigle )
|
||||
$raw_data = wp_remote_get( $url, array(
|
||||
'sslverify' => false, //sslverify is set to false to ensure https URLs work reliably. Data source is Google's servers, so is trustworthy
|
||||
'timeout' => 10 //Increase timeout from the default 5 seconds to ensure even large feeds are retrieved successfully
|
||||
) );
|
||||
|
||||
'sslverify' => false, //sslverify is set to false to ensure https URLs work reliably. Data source is Google's servers, so is trustworthy
|
||||
'timeout' => 10 //Increase timeout from the default 5 seconds to ensure even large feeds are retrieved successfully
|
||||
) );
|
||||
//If $raw_data is a WP_Error, something went wrong
|
||||
if ( ! is_wp_error( $raw_data ) ) {
|
||||
//If response code isn't 200, something went wrong
|
||||
if ( 200 == $raw_data['response']['code'] ) {
|
||||
//Attempt to convert the returned JSON into an array
|
||||
$raw_data = json_decode( $raw_data['body'], true );
|
||||
|
||||
//If decoding was successful
|
||||
if ( ! empty( $raw_data ) ) {
|
||||
//If there are some entries (events) to process
|
||||
if ( isset( $raw_data['feed']['entry'] ) ) {
|
||||
//if ( isset( $raw_data['feed']['entry'] ) ) {
|
||||
//Loop through each event, extracting the relevant information
|
||||
foreach ( $raw_data['feed']['entry'] as $event ) {
|
||||
$id = ( isset( $event['gCal$uid']['value'] ) ? esc_html( substr( $event['gCal$uid']['value'], 0, strpos( $event['gCal$uid']['value'], '@' ) ) ) : '' );
|
||||
$title = ( isset( $event['title']['$t'] ) ? esc_html( $event['title']['$t'] ) : '' );
|
||||
$description = ( isset( $event['content']['$t'] ) ? esc_html( $event['content']['$t'] ) : '' );
|
||||
$link = ( isset( $event['link'][0]['href'] ) ? esc_url( $event['link'][0]['href'] ) : '' );
|
||||
$location = ( isset( $event['gd$where'][0]['valueString'] ) ? esc_html( $event['gd$where'][0]['valueString'] ) : '' );
|
||||
$start_time = ( isset( $event['gd$when'][0]['startTime'] ) ? $this->iso_to_ts( $event['gd$when'][0]['startTime'] ) : '' );
|
||||
$end_time = ( isset( $event['gd$when'][0]['endTime'] ) ? $this->iso_to_ts( $event['gd$when'][0]['endTime'] ) : '' );
|
||||
|
||||
foreach ( $raw_data['items'] as $event ) {
|
||||
$id = ( isset( $event['id'] ) ? esc_html( $event['id'] ) : '' );
|
||||
$title = ( isset( $event['summary'] ) ? esc_html( $event['summary'] ) : '' );
|
||||
$description = ( isset( $event['description'] ) ? esc_html( $event['description'] ) : '' );
|
||||
$link = ( isset( $event['htmlLink'] ) ? esc_url( $event['htmlLink'] ) : '' );
|
||||
$location = ( isset( $event['location'] ) ? esc_html( $event['location'] ) : '' );
|
||||
|
||||
if( isset( $event['start']['dateTime'] ) ) {
|
||||
$start_time = $this->iso_to_ts( $event['start']['dateTime'] );
|
||||
} else if( isset( $event['start']['date'] ) ) {
|
||||
$start_time = $this->iso_to_ts( $event['start']['date'] );
|
||||
} else {
|
||||
$start_time = null;
|
||||
}
|
||||
|
||||
if( isset( $event['end']['dateTime'] ) ) {
|
||||
$end_time = $this->iso_to_ts( $event['end']['dateTime'] );
|
||||
} else if( isset( $event['end']['date'] ) ) {
|
||||
$end_time = $this->iso_to_ts( $event['end']['date'] );
|
||||
} else {
|
||||
$end_time = null;
|
||||
}
|
||||
|
||||
//Create a GCE_Event using the above data. Add it to the array of events
|
||||
$this->events[] = new GCE_Event( $this, $id, $title, $description, $location, $start_time, $end_time, $link );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//json_decode failed
|
||||
$this->error = __( 'Some data was retrieved, but could not be parsed successfully. Please ensure your feed URL is correct.', 'gce' );
|
||||
$this->error = __( 'Some data was retrieved, but could not be parsed successfully. Please ensure your feed settings are correct.', 'gce' );
|
||||
}
|
||||
} else {
|
||||
//The response code wasn't 200, so generate a helpful(ish) error message depending on error code
|
||||
switch ( $raw_data['response']['code'] ) {
|
||||
case 404:
|
||||
$this->error = __( 'The feed could not be found (404). Please ensure your feed URL is correct.', 'gce' );
|
||||
break;
|
||||
case 403:
|
||||
$this->error = __( 'Access to this feed was denied (403). Please ensure you have public sharing enabled for your calendar.', 'gce' );
|
||||
break;
|
||||
default:
|
||||
$this->error = sprintf( __( 'The feed data could not be retrieved. Error code: %s. Please ensure your feed URL is correct.', 'gce' ), $raw_data['response']['code'] );
|
||||
}
|
||||
}
|
||||
}else{
|
||||
} else{
|
||||
//Generate an error message from the returned WP_Error
|
||||
$this->error = $raw_data->get_error_message() . __( ' Please ensure your feed URL is correct.', 'gce' );
|
||||
}
|
||||
@@ -228,15 +220,15 @@ class GCE_Feed {
|
||||
|
||||
switch( $interval ) {
|
||||
case 'days':
|
||||
return time() - ( $start * 86400 );
|
||||
return date( 'c', time() - ( $start * 86400 ) );
|
||||
case 'months':
|
||||
return time() - ( $start * 2629743 );
|
||||
return date( 'c', time() - ( $start * 2629743 ) );
|
||||
case 'years':
|
||||
return time() - ( $start * 31556926 );
|
||||
return date( 'c', time() - ( $start * 31556926 ) );
|
||||
}
|
||||
|
||||
// fall back just in case. Falls back to 1 year ago
|
||||
return time() - 31556926;
|
||||
return date( 'c', time() - 31556926 );
|
||||
}
|
||||
|
||||
private function get_feed_end() {
|
||||
@@ -246,15 +238,15 @@ class GCE_Feed {
|
||||
|
||||
switch( $interval ) {
|
||||
case 'days':
|
||||
return time() + ( $end * 86400 );
|
||||
return date( 'c', time() + ( $end * 86400 ) );
|
||||
case 'months':
|
||||
return time() + ( $end * 2629743 );
|
||||
return date( 'c', time() + ( $end * 2629743 ) );
|
||||
case 'years':
|
||||
return time() + ( $end * 31556926 );
|
||||
return date( 'c', time() + ( $end * 31556926 ) );
|
||||
}
|
||||
|
||||
// Falls back to 1 year ahead just in case
|
||||
return time() + 31556926;
|
||||
return date( 'c', time() + 31556926 );
|
||||
}
|
||||
|
||||
function get_builder() {
|
||||
|
||||
@@ -67,9 +67,9 @@ function gce_feed_messages( $messages ) {
|
||||
global $post, $post_ID;
|
||||
|
||||
$url1 = '<a href="' . get_permalink( $post_ID ) . '">';
|
||||
$url2 = 'feed';
|
||||
$url2 = __( 'feed', 'gce' );
|
||||
$url3 = '</a>';
|
||||
$s1 = 'Feed';
|
||||
$s1 = __( 'Feed', 'gce' );
|
||||
|
||||
$messages['gce_feed'] = array(
|
||||
1 => sprintf( __( '%4$s updated. %1$sView %2$s%3$s', 'gce' ), $url1, $url2, $url3, $s1 ),
|
||||
@@ -94,7 +94,7 @@ function gce_cpt_meta() {
|
||||
add_meta_box( 'gce_feed_meta', 'Feed Settings', 'gce_display_meta', 'gce_feed', 'advanced', 'core' );
|
||||
|
||||
// Sidebar meta box below publish section.
|
||||
add_meta_box( 'gce_feed_sidebar_help', 'Helpful Links', 'gce_feed_sidebar_help', 'gce_feed', 'side', 'core' );
|
||||
add_meta_box( 'gce_feed_sidebar_help', __( 'Helpful Links', 'gce' ), 'gce_feed_sidebar_help', 'gce_feed', 'side', 'core' );
|
||||
|
||||
add_meta_box( 'gce_display_options_meta', 'Display Options', 'gce_display_options_meta', 'gce_feed', 'side', 'core' );
|
||||
}
|
||||
@@ -182,7 +182,15 @@ function gce_save_meta( $post_id ) {
|
||||
foreach ( $post_meta_fields as $pmf ) {
|
||||
if ( isset( $_POST[$pmf] ) && ! empty( $_POST[$pmf] ) ) {
|
||||
if( $pmf == 'gce_feed_url' ) {
|
||||
update_post_meta( $post_id, $pmf, esc_url( $_POST[$pmf] ) );
|
||||
|
||||
$str = $_POST[$pmf];
|
||||
|
||||
// convert from URL if user enters a URL link (like the old versions required)
|
||||
$id = str_replace( 'https://www.google.com/calendar/feeds/', '', $str );
|
||||
$id = str_replace( '/public/basic', '', $id );
|
||||
$id = str_replace( '%40', '@', $id );
|
||||
|
||||
update_post_meta( $post_id, $pmf, $id );
|
||||
} else {
|
||||
update_post_meta( $post_id, $pmf, stripslashes( $_POST[$pmf] ) );
|
||||
}
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
* @since 2.0.0
|
||||
*/
|
||||
function gce_print_calendar( $feed_ids, $display = 'grid', $args = array(), $widget = false ) {
|
||||
|
||||
$defaults = array(
|
||||
|
||||
$defaults = array(
|
||||
'title_text' => '',
|
||||
'sort' => 'asc',
|
||||
'grouped' => 0,
|
||||
@@ -47,7 +47,7 @@ function gce_print_calendar( $feed_ids, $display = 'grid', $args = array(), $wid
|
||||
|
||||
// If paging is not set then we need to set it now
|
||||
foreach( $ids as $id ) {
|
||||
if( $paging == null && $paging != 0 ) {
|
||||
if( $paging === null ) {
|
||||
$paging = get_post_meta( $id, 'gce_paging', true );
|
||||
}
|
||||
}
|
||||
@@ -94,7 +94,7 @@ function gce_print_calendar( $feed_ids, $display = 'grid', $args = array(), $wid
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $markup;
|
||||
}
|
||||
|
||||
@@ -237,3 +237,4 @@ function gce_ga_campaign_url( $base_url, $source, $medium, $campaign ) {
|
||||
|
||||
return $url;
|
||||
}
|
||||
|
||||
@@ -45,6 +45,12 @@ function gce_generate_calendar( $year, $month, $days = array(), $day_name_length
|
||||
list( $p, $pl ) = each( $pn );
|
||||
list( $n, $nl ) = each( $pn ); #previous and next links, if applicable
|
||||
|
||||
// Previous filter
|
||||
$p = apply_filters( 'gce_prev_text', $p );
|
||||
|
||||
// Next filter
|
||||
$n = apply_filters( 'gce_next_text', $n );
|
||||
|
||||
if( $widget ) {
|
||||
$p = '<div class="gce-prev">' . ( ( $pl ) ? ( '<a href="#" class="gce-change-month" title="' . esc_attr__( 'Previous month', 'gce' ) . '" name="' . $pl . '" data-gce-grid-paging="' . $paging . '">' . $p . '</a>' ) : $p ) . '</div>';
|
||||
} else {
|
||||
|
||||
@@ -24,6 +24,16 @@ function gce_register_settings() {
|
||||
|
||||
/* General Settings */
|
||||
'general' => array(
|
||||
'api_key' => array(
|
||||
'id' => 'api_key',
|
||||
'name' => __( 'Google API Key', 'gce' ),
|
||||
'desc' => __( 'If left blank all displayed Google calendars will use a public Google API key shared across all plugin users.', 'gce' ) . ' ' .
|
||||
__( 'Currently the shared key is limited to 500,000 requests per day and 5 requests per second.', 'gce' ) . '<br/>' .
|
||||
sprintf( __( 'To avoid these limits <a href="%s" target="_blank">click here for instructions on how to generate and use your own Google API key.</a>', 'gce' ),
|
||||
gce_ga_campaign_url( 'http://wpdocs.philderksen.com/google-calendar-events/getting-started/api-key-settings/', 'gce_lite', 'settings_link', 'docs' ) ),
|
||||
'size' => 'regular-text',
|
||||
'type' => 'text'
|
||||
),
|
||||
'save_settings' => array(
|
||||
'id' => 'save_settings',
|
||||
'name' => __( 'Save Settings', 'gce' ),
|
||||
@@ -111,6 +121,33 @@ function gce_checkbox_callback( $args ) {
|
||||
echo $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Textbox callback function
|
||||
* Valid built-in size CSS class values:
|
||||
* small-text, regular-text, large-text
|
||||
*
|
||||
* @since 2.1.0
|
||||
*
|
||||
*/
|
||||
function gce_text_callback( $args ) {
|
||||
global $gce_options;
|
||||
|
||||
if ( isset( $gce_options[ $args['id'] ] ) )
|
||||
$value = $gce_options[ $args['id'] ];
|
||||
else
|
||||
$value = isset( $args['std'] ) ? $args['std'] : '';
|
||||
|
||||
$size = ( isset( $args['size'] ) && ! is_null( $args['size'] ) ) ? $args['size'] : '';
|
||||
$html = "\n" . '<input type="text" class="' . $size . '" id="gce_settings_' . $args['section'] . '[' . $args['id'] . ']" name="gce_settings_' . $args['section'] . '[' . $args['id'] . ']" value="' . esc_attr( $value ) . '"/>' . "\n";
|
||||
|
||||
// Render and style description text underneath if it exists.
|
||||
if ( ! empty( $args['desc'] ) ) {
|
||||
$html .= '<p class="description">' . $args['desc'] . '</p>' . "\n";
|
||||
}
|
||||
|
||||
echo $html;
|
||||
}
|
||||
|
||||
/*
|
||||
* Function we can use to sanitize the input data and return it when saving options
|
||||
*
|
||||
@@ -154,4 +191,4 @@ function gce_get_settings() {
|
||||
$general_settings = is_array( get_option( 'gce_settings_general' ) ) ? get_option( 'gce_settings_general' ) : array();
|
||||
|
||||
return $general_settings;
|
||||
}
|
||||
}
|
||||
@@ -1,106 +1,106 @@
|
||||
|
||||
/**
|
||||
* Public JS functions
|
||||
*
|
||||
* @package GCE
|
||||
* @author Phil Derksen <pderksen@gmail.com>, Nick Young <mycorpweb@gmail.com>
|
||||
* @license GPL-2.0+
|
||||
* @copyright 2014 Phil Derksen
|
||||
*/
|
||||
(function($) {
|
||||
'use strict';
|
||||
|
||||
$(function() {
|
||||
|
||||
gce_tooltips('.gce-has-events');
|
||||
|
||||
if( typeof gce_grid != 'undefined' ) {
|
||||
|
||||
$('body').on( 'click', '.gce-change-month', function(e) {
|
||||
|
||||
var id = $(this).closest('.gce-calendar').parent().attr('id');
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
//Extract month and year
|
||||
var month_year = $(this).attr('name').split('-', 2);
|
||||
var paging = $(this).attr('data-gce-grid-paging');
|
||||
|
||||
//Add loading text to table caption
|
||||
$('#' + gce_grid[id].target_element + ' caption').html('Loading...');
|
||||
//Send AJAX request
|
||||
$.post(gce.ajaxurl,{
|
||||
action:'gce_ajax',
|
||||
gce_type: gce_grid[id].type,
|
||||
gce_feed_ids: gce_grid[id].feed_ids,
|
||||
gce_title_text: gce_grid[id].title_text,
|
||||
gce_widget_id: gce_grid[id].target_element,
|
||||
gce_month: month_year[0],
|
||||
gce_year: month_year[1],
|
||||
gce_paging: paging,
|
||||
gce_nonce: gce.ajaxnonce
|
||||
}, function(data){
|
||||
//Replace existing data with returned AJAX data
|
||||
if(gce_grid[id].type == 'widget'){
|
||||
$('#' + gce_grid[id].target_element).html(data);
|
||||
}else{
|
||||
$('#' + gce_grid[id].target_element).replaceWith(data);
|
||||
}
|
||||
gce_tooltips('#' + gce_grid[id].target_element + ' .gce-has-events');
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
$('body').on( 'click', '.gce-change-month-list', function(e) {
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
var element = $(this);
|
||||
|
||||
var start = $(this).parent().parent().parent().data('gce-start');
|
||||
var grouped = $(this).parent().parent().parent().data('gce-grouped');
|
||||
var title_text = $(this).parent().parent().parent().data('gce-title');
|
||||
var feed_ids = $(this).parent().parent().parent().data( 'gce-feeds');
|
||||
var sort = $(this).parent().parent().parent().data('gce-sort');
|
||||
var paging = $(this).parent().parent().parent().data('gce-paging');
|
||||
var paging_interval = $(this).parent().parent().parent().data('gce-paging-interval');
|
||||
var paging_direction = $(this).data('gce-paging-direction');
|
||||
var start_offset = $(this).parent().parent().parent().data('gce-start-offset');
|
||||
var paging_type = $(this).data('gce-paging-type');
|
||||
|
||||
//Add loading text to table caption
|
||||
$(this).parent().parent().parent().find('.gce-month-title').html('Loading...');
|
||||
|
||||
//Send AJAX request
|
||||
jQuery.post(gce.ajaxurl,{
|
||||
action:'gce_ajax_list',
|
||||
gce_feed_ids:feed_ids,
|
||||
gce_title_text:title_text,
|
||||
gce_start: start,
|
||||
gce_grouped: grouped,
|
||||
gce_sort: sort,
|
||||
gce_paging: paging,
|
||||
gce_paging_interval: paging_interval,
|
||||
gce_paging_direction: paging_direction,
|
||||
gce_start_offset: start_offset,
|
||||
gce_paging_type: paging_type,
|
||||
gce_nonce: gce.ajaxnonce
|
||||
}, function(data){
|
||||
element.parent().parent().parent().html(data);
|
||||
});
|
||||
});
|
||||
|
||||
function gce_tooltips(target_items) {
|
||||
$(target_items).each(function(){
|
||||
//Add qtip to all target items
|
||||
$(this).qtip({
|
||||
content: $(this).children('.gce-event-info'),
|
||||
position: { corner: { target: 'center', tooltip: 'bottomLeft' }, adjust: { screen: true } },
|
||||
hide: { fixed: true, delay: 100, effect: { length: 0 } },
|
||||
show: { solo: true, delay: 0, effect: { length: 0 } },
|
||||
style: { padding: "0", classes: { tooltip: 'gce-qtip', tip: 'gce-qtip-tip', title: 'gce-qtip-title', content: 'gce-qtip-content', active: 'gce-qtip-active' }, border: { width: 0 } }
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Public JS functions
|
||||
*
|
||||
* @package GCE
|
||||
* @author Phil Derksen <pderksen@gmail.com>, Nick Young <mycorpweb@gmail.com>
|
||||
* @license GPL-2.0+
|
||||
* @copyright 2014 Phil Derksen
|
||||
*/
|
||||
(function($) {
|
||||
'use strict';
|
||||
|
||||
$(function() {
|
||||
|
||||
gce_tooltips('.gce-has-events');
|
||||
|
||||
if( typeof gce_grid != 'undefined' ) {
|
||||
|
||||
$('body').on( 'click', '.gce-change-month', function(e) {
|
||||
|
||||
var id = $(this).closest('.gce-calendar').parent().attr('id');
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
//Extract month and year
|
||||
var month_year = $(this).attr('name').split('-', 2);
|
||||
var paging = $(this).attr('data-gce-grid-paging');
|
||||
|
||||
//Add loading text to table caption
|
||||
$('#' + gce_grid[id].target_element + ' caption').html(gce.loadingText);
|
||||
//Send AJAX request
|
||||
$.post(gce.ajaxurl,{
|
||||
action:'gce_ajax',
|
||||
gce_type: gce_grid[id].type,
|
||||
gce_feed_ids: gce_grid[id].feed_ids,
|
||||
gce_title_text: gce_grid[id].title_text,
|
||||
gce_widget_id: gce_grid[id].target_element,
|
||||
gce_month: month_year[0],
|
||||
gce_year: month_year[1],
|
||||
gce_paging: paging,
|
||||
gce_nonce: gce.ajaxnonce
|
||||
}, function(data){
|
||||
//Replace existing data with returned AJAX data
|
||||
if(gce_grid[id].type == 'widget'){
|
||||
$('#' + gce_grid[id].target_element).html(data);
|
||||
}else{
|
||||
$('#' + gce_grid[id].target_element).replaceWith(data);
|
||||
}
|
||||
gce_tooltips('#' + gce_grid[id].target_element + ' .gce-has-events');
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
$('body').on( 'click', '.gce-change-month-list', function(e) {
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
var element = $(this);
|
||||
|
||||
var start = $(this).parent().parent().parent().data('gce-start');
|
||||
var grouped = $(this).parent().parent().parent().data('gce-grouped');
|
||||
var title_text = $(this).parent().parent().parent().data('gce-title');
|
||||
var feed_ids = $(this).parent().parent().parent().data( 'gce-feeds');
|
||||
var sort = $(this).parent().parent().parent().data('gce-sort');
|
||||
var paging = $(this).parent().parent().parent().data('gce-paging');
|
||||
var paging_interval = $(this).parent().parent().parent().data('gce-paging-interval');
|
||||
var paging_direction = $(this).data('gce-paging-direction');
|
||||
var start_offset = $(this).parent().parent().parent().data('gce-start-offset');
|
||||
var paging_type = $(this).data('gce-paging-type');
|
||||
|
||||
//Add loading text to table caption
|
||||
$(this).parent().parent().parent().find('.gce-month-title').html(gce.loadingText);
|
||||
|
||||
//Send AJAX request
|
||||
jQuery.post(gce.ajaxurl,{
|
||||
action:'gce_ajax_list',
|
||||
gce_feed_ids:feed_ids,
|
||||
gce_title_text:title_text,
|
||||
gce_start: start,
|
||||
gce_grouped: grouped,
|
||||
gce_sort: sort,
|
||||
gce_paging: paging,
|
||||
gce_paging_interval: paging_interval,
|
||||
gce_paging_direction: paging_direction,
|
||||
gce_start_offset: start_offset,
|
||||
gce_paging_type: paging_type,
|
||||
gce_nonce: gce.ajaxnonce
|
||||
}, function(data){
|
||||
element.parent().parent().parent().html(data);
|
||||
});
|
||||
});
|
||||
|
||||
function gce_tooltips(target_items) {
|
||||
$(target_items).each(function(){
|
||||
//Add qtip to all target items
|
||||
$(this).qtip({
|
||||
content: $(this).children('.gce-event-info'),
|
||||
position: { corner: { target: 'center', tooltip: 'bottomLeft' }, adjust: { screen: true } },
|
||||
hide: { fixed: true, delay: 100, effect: { length: 0 } },
|
||||
show: { solo: true, delay: 0, effect: { length: 0 } },
|
||||
style: { padding: "0", classes: { tooltip: 'gce-qtip', tip: 'gce-qtip-tip', title: 'gce-qtip-title', content: 'gce-qtip-content', active: 'gce-qtip-active' }, border: { width: 0 } }
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
}(jQuery))
|
||||
+14
-14
@@ -1,15 +1,15 @@
|
||||
/*!
|
||||
* jquery.qtip. The jQuery tooltip plugin
|
||||
*
|
||||
* Copyright (c) 2009 Craig Thompson
|
||||
* http://craigsworks.com
|
||||
*
|
||||
* Licensed under MIT
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
*
|
||||
* Launch : February 2009
|
||||
* Version : 1.0.0-rc3
|
||||
* Released: Tuesday 12th May, 2009 - 00:00
|
||||
* Debug: jquery.qtip.debug.js
|
||||
*/
|
||||
/*!
|
||||
* jquery.qtip. The jQuery tooltip plugin
|
||||
*
|
||||
* Copyright (c) 2009 Craig Thompson
|
||||
* http://craigsworks.com
|
||||
*
|
||||
* Licensed under MIT
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
*
|
||||
* Launch : February 2009
|
||||
* Version : 1.0.0-rc3
|
||||
* Released: Tuesday 12th May, 2009 - 00:00
|
||||
* Debug: jquery.qtip.debug.js
|
||||
*/
|
||||
(function(f){f.fn.qtip=function(B,u){var y,t,A,s,x,w,v,z;if(typeof B=="string"){if(typeof f(this).data("qtip")!=="object"){f.fn.qtip.log.error.call(self,1,f.fn.qtip.constants.NO_TOOLTIP_PRESENT,false)}if(B=="api"){return f(this).data("qtip").interfaces[f(this).data("qtip").current]}else{if(B=="interfaces"){return f(this).data("qtip").interfaces}}}else{if(!B){B={}}if(typeof B.content!=="object"||(B.content.jquery&&B.content.length>0)){B.content={text:B.content}}if(typeof B.content.title!=="object"){B.content.title={text:B.content.title}}if(typeof B.position!=="object"){B.position={corner:B.position}}if(typeof B.position.corner!=="object"){B.position.corner={target:B.position.corner,tooltip:B.position.corner}}if(typeof B.show!=="object"){B.show={when:B.show}}if(typeof B.show.when!=="object"){B.show.when={event:B.show.when}}if(typeof B.show.effect!=="object"){B.show.effect={type:B.show.effect}}if(typeof B.hide!=="object"){B.hide={when:B.hide}}if(typeof B.hide.when!=="object"){B.hide.when={event:B.hide.when}}if(typeof B.hide.effect!=="object"){B.hide.effect={type:B.hide.effect}}if(typeof B.style!=="object"){B.style={name:B.style}}B.style=c(B.style);s=f.extend(true,{},f.fn.qtip.defaults,B);s.style=a.call({options:s},s.style);s.user=f.extend(true,{},B)}return f(this).each(function(){if(typeof B=="string"){w=B.toLowerCase();A=f(this).qtip("interfaces");if(typeof A=="object"){if(u===true&&w=="destroy"){while(A.length>0){A[A.length-1].destroy()}}else{if(u!==true){A=[f(this).qtip("api")]}for(y=0;y<A.length;y++){if(w=="destroy"){A[y].destroy()}else{if(A[y].status.rendered===true){if(w=="show"){A[y].show()}else{if(w=="hide"){A[y].hide()}else{if(w=="focus"){A[y].focus()}else{if(w=="disable"){A[y].disable(true)}else{if(w=="enable"){A[y].disable(false)}}}}}}}}}}}else{v=f.extend(true,{},s);v.hide.effect.length=s.hide.effect.length;v.show.effect.length=s.show.effect.length;if(v.position.container===false){v.position.container=f(document.body)}if(v.position.target===false){v.position.target=f(this)}if(v.show.when.target===false){v.show.when.target=f(this)}if(v.hide.when.target===false){v.hide.when.target=f(this)}t=f.fn.qtip.interfaces.length;for(y=0;y<t;y++){if(typeof f.fn.qtip.interfaces[y]=="undefined"){t=y;break}}x=new d(f(this),v,t);f.fn.qtip.interfaces[t]=x;if(typeof f(this).data("qtip")==="object"&&f(this).data("qtip")){if(typeof f(this).attr("qtip")==="undefined"){f(this).data("qtip").current=f(this).data("qtip").interfaces.length}f(this).data("qtip").interfaces.push(x)}else{f(this).data("qtip",{current:0,interfaces:[x]})}if(v.content.prerender===false&&v.show.when.event!==false&&v.show.ready!==true){v.show.when.target.bind(v.show.when.event+".qtip-"+t+"-create",{qtip:t},function(C){z=f.fn.qtip.interfaces[C.data.qtip];z.options.show.when.target.unbind(z.options.show.when.event+".qtip-"+C.data.qtip+"-create");z.cache.mouse={x:C.pageX,y:C.pageY};p.call(z);z.options.show.when.target.trigger(z.options.show.when.event)})}else{x.cache.mouse={x:v.show.when.target.offset().left,y:v.show.when.target.offset().top};p.call(x)}}})};function d(u,t,v){var s=this;s.id=v;s.options=t;s.status={animated:false,rendered:false,disabled:false,focused:false};s.elements={target:u.addClass(s.options.style.classes.target),tooltip:null,wrapper:null,content:null,contentWrapper:null,title:null,button:null,tip:null,bgiframe:null};s.cache={mouse:{},position:{},toggle:0};s.timers={};f.extend(s,s.options.api,{show:function(y){var x,z;if(!s.status.rendered){return f.fn.qtip.log.error.call(s,2,f.fn.qtip.constants.TOOLTIP_NOT_RENDERED,"show")}if(s.elements.tooltip.css("display")!=="none"){return s}s.elements.tooltip.stop(true,false);x=s.beforeShow.call(s,y);if(x===false){return s}function w(){if(s.options.position.type!=="static"){s.focus()}s.onShow.call(s,y);if(f.browser.msie){s.elements.tooltip.get(0).style.removeAttribute("filter")}}s.cache.toggle=1;if(s.options.position.type!=="static"){s.updatePosition(y,(s.options.show.effect.length>0))}if(typeof s.options.show.solo=="object"){z=f(s.options.show.solo)}else{if(s.options.show.solo===true){z=f("div.qtip").not(s.elements.tooltip)}}if(z){z.each(function(){if(f(this).qtip("api").status.rendered===true){f(this).qtip("api").hide()}})}if(typeof s.options.show.effect.type=="function"){s.options.show.effect.type.call(s.elements.tooltip,s.options.show.effect.length);s.elements.tooltip.queue(function(){w();f(this).dequeue()})}else{switch(s.options.show.effect.type.toLowerCase()){case"fade":s.elements.tooltip.fadeIn(s.options.show.effect.length,w);break;case"slide":s.elements.tooltip.slideDown(s.options.show.effect.length,function(){w();if(s.options.position.type!=="static"){s.updatePosition(y,true)}});break;case"grow":s.elements.tooltip.show(s.options.show.effect.length,w);break;default:s.elements.tooltip.show(null,w);break}s.elements.tooltip.addClass(s.options.style.classes.active)}return f.fn.qtip.log.error.call(s,1,f.fn.qtip.constants.EVENT_SHOWN,"show")},hide:function(y){var x;if(!s.status.rendered){returnLine truncated
|
||||
Binary file not shown.
File diff suppressed because it is too large.
Load diff
Binary file not shown.
File diff suppressed because it is too large.
Load diff
Binary file not shown.
File diff suppressed because it is too large.
Load diff
Binary file not shown.
File diff suppressed because it is too large.
Load diff
Binary file not shown.
@@ -0,0 +1,767 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Google Calendar Events\n"
|
||||
"POT-Creation-Date: 2014-10-22 20:41-0700\n"
|
||||
"PO-Revision-Date: 2014-10-23 12:22+0200\n"
|
||||
"Last-Translator: Andrius Mazeika <andrius@mazeika.info>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: lt\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.6.10\n"
|
||||
"X-Poedit-Basepath: .\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
|
||||
"%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"X-Poedit-KeywordsList: __;_e\n"
|
||||
"X-Poedit-SearchPath-0: google-calendar-events\n"
|
||||
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:64
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:65
|
||||
#: google-calendar-events/includes/register-settings.php:44
|
||||
msgid "General Settings"
|
||||
msgstr "Bendrieji nustatymai"
|
||||
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:122
|
||||
#: google-calendar-events/views/widgets.php:27
|
||||
msgid "Google Calendar Events"
|
||||
msgstr "Google kalendoriaus įvykiai"
|
||||
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:134
|
||||
msgid "Feeds"
|
||||
msgstr "Srautai"
|
||||
|
||||
#: google-calendar-events/class-google-calendar-events.php:142
|
||||
msgid "Loading..."
|
||||
msgstr "Kraunama..."
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:20
|
||||
msgid "Cache has been cleared for this feed."
|
||||
msgstr "Srauto laikinoji talpyklė išvalyta."
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:35
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:57
|
||||
msgid "Starts:"
|
||||
msgstr "Prasideda:"
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:36
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:59
|
||||
msgid "Ends:"
|
||||
msgstr "Baigiasi:"
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:37
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:61
|
||||
msgid "Location:"
|
||||
msgstr "Vieta:"
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:38
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:62
|
||||
msgid "Description:"
|
||||
msgstr "Aprašymas:"
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:39
|
||||
msgid "More details..."
|
||||
msgstr "Plačiau..."
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:64
|
||||
msgid "More Details"
|
||||
msgstr "Plačiau..."
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:78
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:256
|
||||
msgid "Clear Cache"
|
||||
msgstr "Išvalyti laikinąją talpyklę."
|
||||
|
||||
#: google-calendar-events/includes/class-gce-display.php:188
|
||||
#: google-calendar-events/includes/class-gce-display.php:277
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:185
|
||||
#: google-calendar-events/views/widgets.php:252
|
||||
msgid "Back"
|
||||
msgstr "Atgal"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-display.php:192
|
||||
#: google-calendar-events/includes/class-gce-display.php:278
|
||||
msgid "Next"
|
||||
msgstr "Pirmyn"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-display.php:372
|
||||
msgid "No events to display."
|
||||
msgstr "Įvykių nėra."
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:503
|
||||
#, php-format
|
||||
msgid "%s year"
|
||||
msgstr "%s metai"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:503
|
||||
#, php-format
|
||||
msgid "%s years"
|
||||
msgstr "%s metai"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:504
|
||||
#, php-format
|
||||
msgid "%s month"
|
||||
msgstr "%s mėnuo"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:504
|
||||
#, php-format
|
||||
msgid "%s months"
|
||||
msgstr "%s mėnesiai"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:505
|
||||
#, php-format
|
||||
msgid "%s week"
|
||||
msgstr "%s savaitė"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:505
|
||||
#, php-format
|
||||
msgid "%s weeks"
|
||||
msgstr "%s savaitės"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:506
|
||||
#, php-format
|
||||
msgid "%s day"
|
||||
msgstr "%s diena"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:506
|
||||
#, php-format
|
||||
msgid "%s days"
|
||||
msgstr "%s dienos"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:507
|
||||
#, php-format
|
||||
msgid "%s hour"
|
||||
msgstr "%s valanda"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:507
|
||||
#, php-format
|
||||
msgid "%s hours"
|
||||
msgstr "%s valandos"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:508
|
||||
#, php-format
|
||||
msgid "%s min"
|
||||
msgstr "%s minutė"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:508
|
||||
#, php-format
|
||||
msgid "%s mins"
|
||||
msgstr "%s minutės"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:82
|
||||
msgid ""
|
||||
"The feed URL has not been set. Please make sure to set it correctly in the "
|
||||
"Feed settings."
|
||||
msgstr ""
|
||||
"Srauto adresas (URL) nenurodytas. Įrašykite tikslų srauto adresą į 'Srauto "
|
||||
"nustatymus'."
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:181
|
||||
msgid ""
|
||||
"Some data was retrieved, but could not be parsed successfully. Please ensure "
|
||||
"your feed URL is correct."
|
||||
msgstr ""
|
||||
"Dalis duomenų gauta, bet nepavyko jų apdoroti. Patikrinkite, ar įvestas "
|
||||
"srauto adresas (URL) yra teisingas."
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:187
|
||||
msgid ""
|
||||
"The feed could not be found (404). Please ensure your feed URL is correct."
|
||||
msgstr ""
|
||||
"Nepavyko rasti nurodyto srauto (404). Patikrinkite, ar įvestas srauto "
|
||||
"adresas (URL) yra teisingas."
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:190
|
||||
msgid ""
|
||||
"Access to this feed was denied (403). Please ensure you have public sharing "
|
||||
"enabled for your calendar."
|
||||
msgstr ""
|
||||
"Prieiga prie šio srauto uždrausta (403). Patikrinkite, ar jūsų kalendoriuje "
|
||||
"yra įjungtas viešasis dalinimasis. "
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:193
|
||||
#, php-format
|
||||
msgid ""
|
||||
"The feed data could not be retrieved. Error code: %s. Please ensure your "
|
||||
"feed URL is correct."
|
||||
msgstr ""
|
||||
"Nepavyko gauti srauto duomenų. Klaidos kodas %s. Patikrinkite, ar įvestas "
|
||||
"srauto adresas (URL) yra teisingas."
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:198
|
||||
msgid " Please ensure your feed URL is correct."
|
||||
msgstr "Patikrinkite, ar įvestas srauto adresas (URL) yra teisingas."
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:21
|
||||
msgid "Google Calendar Feeds"
|
||||
msgstr "Google kalendoriaus srautai"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:22
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:24
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:72
|
||||
msgid "Feed"
|
||||
msgstr "Srautas"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:23
|
||||
msgid "GCal Events"
|
||||
msgstr "GCal įvykiai"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:25
|
||||
msgid "Add New"
|
||||
msgstr "Įtraukti naują"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:26
|
||||
msgid "Add New Feed"
|
||||
msgstr "Įtraukti naują srautą"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:27
|
||||
msgid "New Feed"
|
||||
msgstr "Naujas srautas"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:28
|
||||
msgid "Edit Feed"
|
||||
msgstr "Redaguoti srautą"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:29
|
||||
msgid "View Feed"
|
||||
msgstr "Peržiūrėti srautą"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:30
|
||||
msgid "All GCal Feeds"
|
||||
msgstr "Visi GCal srautai"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:31
|
||||
msgid "Search GCal Feeds"
|
||||
msgstr "Paieška GCal srautuose"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:32
|
||||
msgid "No feeds found."
|
||||
msgstr "Srautų nerasta."
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:33
|
||||
msgid "No feeds found in Trash."
|
||||
msgstr "Šiukšlinėje srautų nerasta."
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:70
|
||||
msgid "feed"
|
||||
msgstr "srautas"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:75
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:76
|
||||
#, php-format
|
||||
msgid "%4$s updated. %1$sView %2$s%3$s"
|
||||
msgstr "%4$s atnaujinta. %1$sPeržiūrėti %2$s%3$s"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:77
|
||||
#, php-format
|
||||
msgid "%4$s published. %1$sView %2$s%3$s"
|
||||
msgstr "%4$s publikuota. %1$sPeržiūrėti %2$s%3$s"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:78
|
||||
#, php-format
|
||||
msgid "%4$s saved. %1$sView %2$s%3$s"
|
||||
msgstr "%4$s įrašyta. %1$sPeržiūrėti %2$s%3$s"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:79
|
||||
#, php-format
|
||||
msgid "%4$s submitted. %1$sView %2$s%3$s"
|
||||
msgstr "%4$s pateikta. %1$sPeržiūrėti %2$s%3$s"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:80
|
||||
#, php-format
|
||||
msgid "%4$s draft updated. %1$sView %2$s%3$s"
|
||||
msgstr "%4$s juodraštis atnaujintas. %1$sPeržiūrėti %2$s%3$s"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:97
|
||||
msgid "Helpful Links"
|
||||
msgstr "Naudingos nuorodos"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:209
|
||||
msgid "Feed ID"
|
||||
msgstr "Srauto ID"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:210
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:73
|
||||
msgid "Feed Shortcode"
|
||||
msgstr "Srauto trumpasis kodas"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:211
|
||||
msgid "Display Type"
|
||||
msgstr "Rodymo būdas"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:238
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:152
|
||||
#: google-calendar-events/views/widgets.php:218
|
||||
msgid "Grid"
|
||||
msgstr "Tinklelis"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:240
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:153
|
||||
#: google-calendar-events/views/widgets.php:219
|
||||
msgid "List"
|
||||
msgstr "Sąrašas"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:242
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:154
|
||||
#: google-calendar-events/views/widgets.php:220
|
||||
msgid "Grouped List"
|
||||
msgstr "Sugrupuotas sąrašas"
|
||||
|
||||
#: google-calendar-events/includes/register-settings.php:29
|
||||
msgid "Save Settings"
|
||||
msgstr "Įšsaugoti nustatymus"
|
||||
|
||||
#: google-calendar-events/includes/register-settings.php:30
|
||||
msgid ""
|
||||
"Save your settings when uninstalling this plugin. Useful when upgrading or "
|
||||
"re-installing."
|
||||
msgstr ""
|
||||
"Išsaugokite nustatymus prieš pašalindami šį įskiepį. Naudinga atliekant "
|
||||
"atnaujinimą ar diegiant iš naujo."
|
||||
|
||||
#: google-calendar-events/includes/register-settings.php:132
|
||||
#, php-format
|
||||
msgid ""
|
||||
"The callback function used for the <strong>%s</strong> setting is missing."
|
||||
msgstr ""
|
||||
"Nerasta atsakymo (callback) funkcija, naudojama <strong>%s</strong> "
|
||||
"nustatyme."
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:39
|
||||
msgid ""
|
||||
"Check this box to use the simple display options below instead of the Event "
|
||||
"Builder code on the left."
|
||||
msgstr ""
|
||||
"Pažymėkite, jeigu norite naudoti paprastąsias atvaizdavimo parinktis vietoje "
|
||||
"'Event Builder' kodo rodomo kairėje."
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:44
|
||||
msgid "Start date / time display"
|
||||
msgstr "Pradžios datos / laiko rodymas"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:45
|
||||
msgid "Select how to display the start date / time."
|
||||
msgstr "Pasirinkite, kaip rodyti pradžios datą / laiką"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:47
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:61
|
||||
msgid "None"
|
||||
msgstr "Nieko"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:48
|
||||
msgid "Start time"
|
||||
msgstr "Pradžios laikas"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:49
|
||||
msgid "Start date"
|
||||
msgstr "Pradžios data"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:50
|
||||
msgid "Start time and date"
|
||||
msgstr "Pradžios laikas ir data"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:51
|
||||
msgid "Start date and time"
|
||||
msgstr "Pradžios data ir laikas"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:53
|
||||
msgid "Text to display before the start time."
|
||||
msgstr "Rodyti šį tekstą prieš pradžios laiką"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:58
|
||||
msgid "End time/date display"
|
||||
msgstr "Pabaigos laiko / datos rodymas"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:59
|
||||
msgid "Select how to display the end date / time."
|
||||
msgstr "Pasirinkite, kaip rodyti pabaigos datą / laiką."
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:62
|
||||
msgid "End time"
|
||||
msgstr "Pabaigos laikas"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:63
|
||||
msgid "End date"
|
||||
msgstr "Pabaigos data"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:64
|
||||
msgid "End time and date"
|
||||
msgstr "Pabaigos laikas ir data"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:65
|
||||
msgid "End date and time"
|
||||
msgstr "Pabaigos data ir laikas"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:67
|
||||
msgid "Text to display before the end time."
|
||||
msgstr "Rodyti šį tekstą prieš pabaigos laiką."
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:72
|
||||
msgid "Separator"
|
||||
msgstr "Skirtukas"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:74
|
||||
msgid ""
|
||||
"If you have chosen to display both the time and date above, enter the text / "
|
||||
"characters to display between the time and date here (including any spaces)."
|
||||
msgstr ""
|
||||
"Jeigu pasirinkote rodyti ir laiką ir datą, įveskite tekstą / simbolius, "
|
||||
"kuriais norite atskirti datą nuo laiko (įskaitant ir tarpus)."
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:80
|
||||
msgid "Location"
|
||||
msgstr "Vieta"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:82
|
||||
msgid "Show the location of events?"
|
||||
msgstr "Ar rodyti įvykių vietą?"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:83
|
||||
msgid "Text to display before the location."
|
||||
msgstr "Rodyti šį tekstą prieš įvykio vietą"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:88
|
||||
msgid "Description"
|
||||
msgstr "Aprašymas"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:91
|
||||
msgid ""
|
||||
"Show the description of events? (URLs in the description will be made into "
|
||||
"links)."
|
||||
msgstr ""
|
||||
"Ar rodyti įvykių aprašymus? (URL adresai aprašymuose bus konvertuoti į "
|
||||
"nuorodas)."
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:93
|
||||
msgid "Text to display before the description."
|
||||
msgstr "Rodyti šį tekstą prieš įvykio aprašymą."
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:95
|
||||
msgid ""
|
||||
"Maximum number of words to show from description. Leave blank for no limit."
|
||||
msgstr ""
|
||||
"Maksimalus žodžių skaičius, kurį norite rodyti įvykio aprašyme. Palikite "
|
||||
"tuščią, jeigu apriboti nenorite."
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:100
|
||||
msgid "Event Link"
|
||||
msgstr "Įvykio nuoroda"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:103
|
||||
msgid "Show a link to the Google Calendar page for an event?"
|
||||
msgstr "Ar rodyti nuorodą į įvykio puslapį Google kalendoriuje?"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:107
|
||||
msgid "Links open in a new window / tab?"
|
||||
msgstr "Ar atversti nuorodas naujame lange / kortelėje?"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:109
|
||||
msgid "The link text to be displayed."
|
||||
msgstr "Nuorodos tekstas."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:54
|
||||
msgid ""
|
||||
"We're <strong>smack dab</strong> in the middle of building additional "
|
||||
"features for this plugin. Have ideas?"
|
||||
msgstr ""
|
||||
"Mes dar tik <strong>pusiaukelėje</strong> šio įskiepio kūrime. Turite idėjų?"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:57
|
||||
msgid "Visit our roadmap and tell us what you're looking for"
|
||||
msgstr "Peržvelkite tolimesnius mūsų planus ir parašykite mums savo poreikius"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:63
|
||||
msgid "Want to be in the know?"
|
||||
msgstr "Norite sekti įskiepio naujienas?"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:66
|
||||
msgid "Get notified when new features are released"
|
||||
msgstr "Gaukite pranešimus apie naujas įskiepio galimybes"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:77
|
||||
msgid ""
|
||||
"Copy and paste this shortcode to display this Google Calendar feed on any "
|
||||
"post or page."
|
||||
msgstr ""
|
||||
"Nukopijuokite ir įklijuokite šį trumpąjį kodą norėdami atvaizduoti šį Google "
|
||||
"kalendoriaus srautą bet kuriame įraše ar puslapyje."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:78
|
||||
msgid ""
|
||||
"To avoid display issues, make sure to paste the shortcode in the Text tab of "
|
||||
"the post editor."
|
||||
msgstr ""
|
||||
"Tam, kad išvengtumėte nesklandumų, įklijuokite šį trumpąjį kodą naudodami "
|
||||
"tekstinį įrašo redaktorių."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:83
|
||||
msgid "GCal Feed URL"
|
||||
msgstr "GCal srauto adresas (URL)"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:87
|
||||
msgid "The Google Calendar feed URL."
|
||||
msgstr "Google kalendoriaus srauto adresas (URL)."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:87
|
||||
msgid "Example"
|
||||
msgstr "Pavyzdys"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:89
|
||||
msgid "How to find your GCal feed URL"
|
||||
msgstr "Kaip rasti GCal srauto adresą (URL)?"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:95
|
||||
msgid "Search Query"
|
||||
msgstr "Paieškos užklausa"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:98
|
||||
msgid "Find and show events based on a search query."
|
||||
msgstr "Surasti ir rodyti įvykius pagal įvestą paieškos užklausą."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:103
|
||||
msgid "Expand Recurring Events?"
|
||||
msgstr "Ar išskleisti pasikartojančius įvykius?"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:105
|
||||
msgid "Yes"
|
||||
msgstr "Taip"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:106
|
||||
msgid ""
|
||||
"This will show recurring events each time they occur, otherwise it will only "
|
||||
"show the event the first time it occurs."
|
||||
msgstr ""
|
||||
"Pažymėkite, jeigu norite rodyti pasikartojančius įvykius kiekvieną kartą. "
|
||||
"Nepasirinkus šio nustatymo bus rodomas tik pirmasis įvykis."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:111
|
||||
msgid "Date Format"
|
||||
msgstr "Datos formatas"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:115
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:126
|
||||
#, php-format
|
||||
msgid "Use %sPHP date formatting%s."
|
||||
msgstr "Naudoti %sPHP datos formatą%s."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:116
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:127
|
||||
msgid "Leave blank to use the default."
|
||||
msgstr "Palikite tuščią, jei norite naudoti numatytąją reikšmę."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:122
|
||||
msgid "Time Format"
|
||||
msgstr "Laiko formatas"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:133
|
||||
msgid "Cache Duration"
|
||||
msgstr "Laikinosios atminties saugojimo trukmė"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:136
|
||||
msgid ""
|
||||
"The length of time, in seconds, to cache the feed (43200 = 12 hours). If "
|
||||
"this feed changes regularly, you may want to reduce the cache duration."
|
||||
msgstr ""
|
||||
"Kiek laiko (sekundėmis) laikyti srauto duomenis laikinojoje atmintyje (43200 "
|
||||
"= 12 valandų). Jei šio srauto duomenys keičiasi dažnai, sumažinkite "
|
||||
"laikinosios atminties trukmę."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:141
|
||||
msgid "Multiple Day Events"
|
||||
msgstr "Kelias dienas trunkantys įvykiai"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:143
|
||||
msgid "Show on each day"
|
||||
msgstr "Rodyti kiekvieną dieną"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:144
|
||||
msgid ""
|
||||
"Show events that span multiple days on each day that they span, rather than "
|
||||
"just the first day."
|
||||
msgstr ""
|
||||
"Rodyti kelių dienų trukmės įvykius kiekvieną įvykio dieną, o ne tik pirmąją."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:149
|
||||
msgid "Display Mode"
|
||||
msgstr "Rodymo būdas"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:156
|
||||
msgid "Choose how you want your calendar to be displayed."
|
||||
msgstr "Pasirinkite kalendoriaus atvaizdavimo būdą."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:161
|
||||
msgid "Show Paging Links"
|
||||
msgstr "Rodyti puslapių numeracijos nuorodas"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:163
|
||||
#: google-calendar-events/views/widgets.php:227
|
||||
msgid "Check this option to display Next and Back navigation links."
|
||||
msgstr ""
|
||||
"Pažymėkite, jeigu norite rodyti 'Pirmyn' ir 'Atgal' navigacijos nuorodas."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:168
|
||||
msgid "Number of Events per Page"
|
||||
msgstr "Viename puslapyje rodomų įvykių skaičius"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:172
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:183
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:197
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:211
|
||||
#: google-calendar-events/views/widgets.php:242
|
||||
#: google-calendar-events/views/widgets.php:250
|
||||
msgid "Days"
|
||||
msgstr "Dienos"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:173
|
||||
#: google-calendar-events/views/widgets.php:243
|
||||
msgid "Events"
|
||||
msgstr "Įvykiai"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:175
|
||||
msgid "How many events to display per page (List View only)."
|
||||
msgstr "Kiek įvykių rodyti viename puslapyje (galioja tik sąrašo rodiniui)?"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:180
|
||||
msgid "Display Start Date Offset"
|
||||
msgstr "Rodyti pradžios datos poslinkį [offset]"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:186
|
||||
#: google-calendar-events/views/widgets.php:253
|
||||
msgid "Ahead"
|
||||
msgstr "Priekyje"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:188
|
||||
msgid ""
|
||||
"Change if you need to initially display events on a date other than today "
|
||||
"(List View only)."
|
||||
msgstr ""
|
||||
"Pakeiskite, jeigu reikia rodyti ne šiandienos įvykius (galioja tik sąrašo "
|
||||
"rodiniui)."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:193
|
||||
msgid "Minimum Feed Start Date"
|
||||
msgstr "Minimali srauto pradžios data"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:198
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:212
|
||||
msgid "Months"
|
||||
msgstr "Mėnesiai"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:199
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:213
|
||||
msgid "Years"
|
||||
msgstr "Metai"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:201
|
||||
msgid "back"
|
||||
msgstr "atgal"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:202
|
||||
msgid ""
|
||||
"Set how far back to retrieve events regardless of month or page being "
|
||||
"displayed."
|
||||
msgstr ""
|
||||
"Pasirinkite, kiek istorinių įvykių rodyti nepaisant rodomo mėnesio ar "
|
||||
"puslapio."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:207
|
||||
msgid "Maximum Feed End Date"
|
||||
msgstr "Maksimali srauto pabaigos data"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:215
|
||||
msgid "forward"
|
||||
msgstr "pirmyn"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:216
|
||||
msgid ""
|
||||
"Set how far in the future to retrieve events regardless of month or page "
|
||||
"being displayed."
|
||||
msgstr ""
|
||||
"Pasirinkite, kiek ateities įvykių rodyti nepaisant rodomo mėnesio ar "
|
||||
"puslapio."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-sidebar-help.php:6
|
||||
msgid "Documentation & getting started"
|
||||
msgstr "Dokumentacija ir pradžios pagalba"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-sidebar-help.php:12
|
||||
msgid "Community support forums"
|
||||
msgstr "Bendruomenės palaikymo forumai"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-sidebar-help.php:18
|
||||
msgid "Get notified of new features"
|
||||
msgstr "Gaukite pranešimus apie naujas įskiepio galimybes"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-sidebar-help.php:24
|
||||
msgid "Rate this plugin"
|
||||
msgstr "Įvertinkite šį įskiepį"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:28
|
||||
msgid ""
|
||||
"Display a list or calendar grid of events from one or more Google Calendar "
|
||||
"feeds you have added"
|
||||
msgstr ""
|
||||
"Rodyti įvykių sąrašą arba kalendoriaus tinklelį iš vieno ar daugiau Google "
|
||||
"kalendoriaus srautų."
|
||||
|
||||
#: google-calendar-events/views/widgets.php:111
|
||||
msgid ""
|
||||
"No valid Feed IDs have been entered for this widget. Please check that you "
|
||||
"have entered the IDs correctly in the widget settings (Appearance > "
|
||||
"Widgets), and that the Feeds have not been deleted."
|
||||
msgstr ""
|
||||
"Neįvestas nei vienas veikiantis srauto ID. Patikrinkite, ar teisingai "
|
||||
"įvedėte srauto ID numerius į valdiklio nustatymus (Išvaizda > Valdikliai) ir "
|
||||
"ar srautai nebuvo ištrinti."
|
||||
|
||||
#: google-calendar-events/views/widgets.php:144
|
||||
msgid "You have not added any feeds yet."
|
||||
msgstr "Kol kas neįtraukėte nei vieno srauto."
|
||||
|
||||
#: google-calendar-events/views/widgets.php:186
|
||||
msgid "There are no feeds created yet."
|
||||
msgstr "Kol kas nėra jokių srautų."
|
||||
|
||||
#: google-calendar-events/views/widgets.php:187
|
||||
msgid "Add your first feed!"
|
||||
msgstr "Įtraukite pirmąjį srautą."
|
||||
|
||||
#: google-calendar-events/views/widgets.php:211
|
||||
msgid "Feeds to Display (comma separated list - i.e. 101,102,103):"
|
||||
msgstr "Rodyti šiuos srautus (atskirti kableliais - pav. 101,102,103):"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:216
|
||||
msgid "Display Events as:"
|
||||
msgstr "Rodyti įvykius kaip:"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:225
|
||||
msgid "Show Paging Links:"
|
||||
msgstr "Rodyti puslapių keitimo nuorodas:"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:231
|
||||
msgid "Sort Order (List View only):"
|
||||
msgstr "Rikiavimas (galioja tik sąrašo rodiniui)"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:233
|
||||
msgid "Ascending"
|
||||
msgstr "Didėjimo tvarka"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:234
|
||||
msgid "Descending"
|
||||
msgstr "Mažėjimo tvarka"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:239
|
||||
msgid "Number of Events per Page (List View only):"
|
||||
msgstr "Įvykių skaičius viename puslapyje (galioja tik sąrašo rodiniui):"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:248
|
||||
msgid "Display Start Date Offset (List View only):"
|
||||
msgstr "Rodyti pradžios datos poslinkį [offset] (galioja tik sąrašo rodiniui):"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:258
|
||||
msgid ""
|
||||
"Display Title on Tooltip/List Item (e.g. 'Events on 7th March'). Grouped "
|
||||
"lists always have a title displayed."
|
||||
msgstr ""
|
||||
"Rodyti įvykio pavadinimą ant mygtuko etiketės [tooltip] (pav. 'Įvykiai kovo "
|
||||
"7-ąją'). Įvykio pavadinimas visuomet rodomas sugrupuoto sąrašo rodinyje."
|
||||
Binary file not shown.
File diff suppressed because it is too large.
Load diff
Binary file not shown.
@@ -0,0 +1,778 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Google Calendar Events\n"
|
||||
"POT-Creation-Date: 2014-10-28 10:39-0700\n"
|
||||
"PO-Revision-Date: 2014-10-31 19:32+0100\n"
|
||||
"Last-Translator: Michał Pasternak <michal.dtz@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: en\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.6.10\n"
|
||||
"X-Poedit-Basepath: .\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Poedit-KeywordsList: __;_e\n"
|
||||
"X-Poedit-SearchPath-0: google-calendar-events\n"
|
||||
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:64
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:65
|
||||
#: google-calendar-events/includes/register-settings.php:44
|
||||
msgid "General Settings"
|
||||
msgstr "Ustawienia ogólne"
|
||||
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:122
|
||||
#: google-calendar-events/views/widgets.php:27
|
||||
msgid "Google Calendar Events"
|
||||
msgstr "Wydarzenia w kalendarzu Google"
|
||||
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:134
|
||||
msgid "Feeds"
|
||||
msgstr "Kalendarze"
|
||||
|
||||
#: google-calendar-events/class-google-calendar-events.php:142
|
||||
msgid "Loading..."
|
||||
msgstr "Wczytuję..."
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:20
|
||||
msgid "Cache has been cleared for this feed."
|
||||
msgstr "Pamięć podręczna została wyczyszczona dla tego kalendarza."
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:35
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:57
|
||||
msgid "Starts:"
|
||||
msgstr "Początek: "
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:36
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:59
|
||||
msgid "Ends:"
|
||||
msgstr "Koniec: "
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:37
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:61
|
||||
msgid "Location:"
|
||||
msgstr "Miejsce: "
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:38
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:62
|
||||
msgid "Description:"
|
||||
msgstr "Opis:"
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:39
|
||||
msgid "More details..."
|
||||
msgstr "Więcej szczegółów..."
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:64
|
||||
msgid "More Details"
|
||||
msgstr "Więcej szczegółów"
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:78
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:256
|
||||
msgid "Clear Cache"
|
||||
msgstr "Wyczyść pamięć podręczną"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-display.php:179
|
||||
#: google-calendar-events/includes/class-gce-display.php:270
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:185
|
||||
#: google-calendar-events/views/widgets.php:252
|
||||
msgid "Back"
|
||||
msgstr "Wstecz"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-display.php:183
|
||||
#: google-calendar-events/includes/class-gce-display.php:271
|
||||
msgid "Next"
|
||||
msgstr "Następny"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-display.php:366
|
||||
msgid "No events to display."
|
||||
msgstr "Brak zdarzeń do wyświetlenia."
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:504
|
||||
#, php-format
|
||||
msgid "%s year"
|
||||
msgstr "%s rok"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:504
|
||||
#, php-format
|
||||
msgid "%s years"
|
||||
msgstr "%s lat"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:505
|
||||
#, php-format
|
||||
msgid "%s month"
|
||||
msgstr "%s miesiąc"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:505
|
||||
#, php-format
|
||||
msgid "%s months"
|
||||
msgstr "%s miesiące"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:506
|
||||
#, php-format
|
||||
msgid "%s week"
|
||||
msgstr "%s tydzień"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:506
|
||||
#, php-format
|
||||
msgid "%s weeks"
|
||||
msgstr "%s tygodnie"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:507
|
||||
#, php-format
|
||||
msgid "%s day"
|
||||
msgstr "%s dzień"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:507
|
||||
#, php-format
|
||||
msgid "%s days"
|
||||
msgstr "%s dni"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:508
|
||||
#, php-format
|
||||
msgid "%s hour"
|
||||
msgstr "%s godzina"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:508
|
||||
#, php-format
|
||||
msgid "%s hours"
|
||||
msgstr "%s godziny"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:509
|
||||
#, php-format
|
||||
msgid "%s min"
|
||||
msgstr "%s minuta"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:509
|
||||
#, php-format
|
||||
msgid "%s mins"
|
||||
msgstr "%s minuty"
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:81
|
||||
msgid ""
|
||||
"The feed URL has not been set. Please make sure to set it correctly in the "
|
||||
"Feed settings."
|
||||
msgstr ""
|
||||
"Adres URL kalendarza nie został ustawiony. Upewnij się, że wpisałeś/aś go "
|
||||
"poprawnie w Ustawieniach kalendarza."
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:177
|
||||
msgid ""
|
||||
"Some data was retrieved, but could not be parsed successfully. Please ensure "
|
||||
"your feed URL is correct."
|
||||
msgstr ""
|
||||
"Otrzymano część danych, ale nie mogły być one zanalizowane prawidłowo. "
|
||||
"Upewnij się, że adres URL kalendarza jest poprawny."
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:183
|
||||
msgid ""
|
||||
"The feed could not be found (404). Please ensure your feed URL is correct."
|
||||
msgstr ""
|
||||
"Nie znaleziono kalendarza (błąd 404 Not found). Upewnij się, że adres URL "
|
||||
"jest prawidłowy."
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:186
|
||||
msgid ""
|
||||
"Access to this feed was denied (403). Please ensure you have public sharing "
|
||||
"enabled for your calendar."
|
||||
msgstr ""
|
||||
"Brak dostępu (błąd 403 Forbidden). Upewnij się, że ten kalendarz jest "
|
||||
"publicznie dostępny."
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:189
|
||||
#, php-format
|
||||
msgid ""
|
||||
"The feed data could not be retrieved. Error code: %s. Please ensure your "
|
||||
"feed URL is correct."
|
||||
msgstr ""
|
||||
"Nie otrzymano danych kalendarza. Kod błędu: %s. Upewnij się, że adres URL "
|
||||
"kalendarza jest poprawny."
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:194
|
||||
msgid " Please ensure your feed URL is correct."
|
||||
msgstr "Upewnij się, że adres URL kalendarza jest poprawny."
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:21
|
||||
msgid "Google Calendar Feeds"
|
||||
msgstr "Kalendarze Google"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:22
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:24
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:72
|
||||
msgid "Feed"
|
||||
msgstr "Kalendarz"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:23
|
||||
msgid "GCal Events"
|
||||
msgstr "Wydarzenia GCal"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:25
|
||||
msgid "Add New"
|
||||
msgstr "Dodaj nowy"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:26
|
||||
msgid "Add New Feed"
|
||||
msgstr "Dodaj nowy kalendarz"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:27
|
||||
msgid "New Feed"
|
||||
msgstr "Nowy kalendarz"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:28
|
||||
msgid "Edit Feed"
|
||||
msgstr "Edytuj kalendarz"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:29
|
||||
msgid "View Feed"
|
||||
msgstr "Pokaż kalendarz"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:30
|
||||
msgid "All GCal Feeds"
|
||||
msgstr "Wszystkie kalendarze"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:31
|
||||
msgid "Search GCal Feeds"
|
||||
msgstr "Przeszukaj kalendarze"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:32
|
||||
msgid "No feeds found."
|
||||
msgstr "Nie znaleziono kalendarzy."
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:33
|
||||
msgid "No feeds found in Trash."
|
||||
msgstr "Nie znaleziono kalendarzy w Śmietniku."
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:70
|
||||
#, fuzzy
|
||||
msgid "feed"
|
||||
msgstr "Kalendarz"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:75
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:76
|
||||
#, php-format
|
||||
msgid "%4$s updated. %1$sView %2$s%3$s"
|
||||
msgstr "%4$s zaktualizowano. %1$sObejrzyj %2$s%3$s"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:77
|
||||
#, php-format
|
||||
msgid "%4$s published. %1$sView %2$s%3$s"
|
||||
msgstr "%4$s opublikowano. %1$sObejrzyj %2$s%3$s"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:78
|
||||
#, php-format
|
||||
msgid "%4$s saved. %1$sView %2$s%3$s"
|
||||
msgstr "%4$s zapisano. %1$sObejrzyj %2$s%3$s"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:79
|
||||
#, php-format
|
||||
msgid "%4$s submitted. %1$sView %2$s%3$s"
|
||||
msgstr "%4$s wysłano. %1$sObejrzyj %2$s%3$s"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:80
|
||||
#, php-format
|
||||
msgid "%4$s draft updated. %1$sView %2$s%3$s"
|
||||
msgstr "%4$s szkiców zaktualizowano. %1$sObejrzyj %2$s%3$s"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:97
|
||||
msgid "Helpful Links"
|
||||
msgstr "Pomocne adresy"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:209
|
||||
msgid "Feed ID"
|
||||
msgstr "ID kalendarza"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:210
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:73
|
||||
msgid "Feed Shortcode"
|
||||
msgstr "Krótki kod kalednarza"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:211
|
||||
msgid "Display Type"
|
||||
msgstr "Rodzaj widoku"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:238
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:152
|
||||
#: google-calendar-events/views/widgets.php:218
|
||||
msgid "Grid"
|
||||
msgstr "Siatka"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:240
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:153
|
||||
#: google-calendar-events/views/widgets.php:219
|
||||
msgid "List"
|
||||
msgstr "Lista"
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:242
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:154
|
||||
#: google-calendar-events/views/widgets.php:220
|
||||
msgid "Grouped List"
|
||||
msgstr "Zgrupowana lista"
|
||||
|
||||
#: google-calendar-events/includes/register-settings.php:29
|
||||
msgid "Save Settings"
|
||||
msgstr "Zapisz ustawienia"
|
||||
|
||||
#: google-calendar-events/includes/register-settings.php:30
|
||||
msgid ""
|
||||
"Save your settings when uninstalling this plugin. Useful when upgrading or "
|
||||
"re-installing."
|
||||
msgstr ""
|
||||
"Zapisz swoje ustawienia gdy odinstalowujesz tą wtyczkę. Użyteczne gdy "
|
||||
"aktualizujesz lub re-instalujesz."
|
||||
|
||||
#: google-calendar-events/includes/register-settings.php:132
|
||||
#, php-format
|
||||
msgid ""
|
||||
"The callback function used for the <strong>%s</strong> setting is missing."
|
||||
msgstr "Brakuje funkcji callback używanej dla ustawienia <strong>%s</strong>. "
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:39
|
||||
msgid ""
|
||||
"Check this box to use the simple display options below instead of the Event "
|
||||
"Builder code on the left."
|
||||
msgstr ""
|
||||
"Zaznacz tą opcję, aby użyć opcji prostego wyświetlania dostępnych poniżej, "
|
||||
"zamiast kodu Budowniczego Wydarzeń dostępnego po lewej. "
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:44
|
||||
msgid "Start date / time display"
|
||||
msgstr "Wyświetlaj początkową datę / czas"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:45
|
||||
msgid "Select how to display the start date / time."
|
||||
msgstr "Określ, jak wyświetlać początkową datę / czas"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:47
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:61
|
||||
msgid "None"
|
||||
msgstr "Nie wyświetlaj"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:48
|
||||
msgid "Start time"
|
||||
msgstr "Początkowy czas"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:49
|
||||
msgid "Start date"
|
||||
msgstr "Początkowa data"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:50
|
||||
msgid "Start time and date"
|
||||
msgstr "Początkowy czas i data"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:51
|
||||
msgid "Start date and time"
|
||||
msgstr "Początkowa data i czas"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:53
|
||||
msgid "Text to display before the start time."
|
||||
msgstr "Tekst do wyświetlenia przed czasem rozpoczęcia."
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:58
|
||||
msgid "End time/date display"
|
||||
msgstr "Wyświetlaj końcowy czas/datę"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:59
|
||||
msgid "Select how to display the end date / time."
|
||||
msgstr "Określ, jak wyświetlać końcową datę i czas."
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:62
|
||||
msgid "End time"
|
||||
msgstr "Końcowy czas"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:63
|
||||
msgid "End date"
|
||||
msgstr "Końcowa data"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:64
|
||||
msgid "End time and date"
|
||||
msgstr "Końcowy czas i data"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:65
|
||||
msgid "End date and time"
|
||||
msgstr "Końcowa data i czas"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:67
|
||||
msgid "Text to display before the end time."
|
||||
msgstr "Tekst do wyświetlenia przed czasem zakończenia."
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:72
|
||||
msgid "Separator"
|
||||
msgstr "Separator"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:74
|
||||
msgid ""
|
||||
"If you have chosen to display both the time and date above, enter the text / "
|
||||
"characters to display between the time and date here (including any spaces)."
|
||||
msgstr ""
|
||||
"Jeżeli wybrałeś/aś aby wyświetlać zarówno czas i datę powyżej, wpisz tekst / "
|
||||
"znaki do wyświetlenia pomiędzy czasem i datą (ze spacjami włącznie)."
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:80
|
||||
msgid "Location"
|
||||
msgstr "Miejsce"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:82
|
||||
msgid "Show the location of events?"
|
||||
msgstr "Wyświetlać miejsce zdarzenia?"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:83
|
||||
msgid "Text to display before the location."
|
||||
msgstr "Tekst do wyświetlenia przed miejscem."
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:88
|
||||
msgid "Description"
|
||||
msgstr "Opis"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:91
|
||||
msgid ""
|
||||
"Show the description of events? (URLs in the description will be made into "
|
||||
"links)."
|
||||
msgstr ""
|
||||
"Czy pokazywać opis wydarzeń? (adresy URL w opisie zostaną zamienione na "
|
||||
"odnośniki)."
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:93
|
||||
msgid "Text to display before the description."
|
||||
msgstr "Tekst do wyświetlenia przed opisem."
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:95
|
||||
msgid ""
|
||||
"Maximum number of words to show from description. Leave blank for no limit."
|
||||
msgstr ""
|
||||
"Maksymalna liczba słów opisu do wyświetlenia. Pozostaw puste aby nie "
|
||||
"ograniczać."
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:100
|
||||
msgid "Event Link"
|
||||
msgstr "Odnośnik do wydarzenia"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:103
|
||||
msgid "Show a link to the Google Calendar page for an event?"
|
||||
msgstr "Czy pokazywać odnośnik do kalendarza Google dla zdarzenia?"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:107
|
||||
msgid "Links open in a new window / tab?"
|
||||
msgstr "Odnośniki otwierają się w nowym oknie / zakładce?"
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:109
|
||||
msgid "The link text to be displayed."
|
||||
msgstr "Tekst odnośnika do wyświetlenia."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:54
|
||||
msgid ""
|
||||
"We're <strong>smack dab</strong> in the middle of building additional "
|
||||
"features for this plugin. Have ideas?"
|
||||
msgstr "Obecnie rozbudowujemy tą wtyczkę. Masz jakieś pomysły?"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:57
|
||||
msgid "Visit our roadmap and tell us what you're looking for"
|
||||
msgstr "Obejrzyj nasz plan pracy i powiedz nam, czego poszukujesz"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:63
|
||||
msgid "Want to be in the know?"
|
||||
msgstr "Chcesz być poinformowany?"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:66
|
||||
msgid "Get notified when new features are released"
|
||||
msgstr "Bądź poinformowany, gdy nowe funkcje będą dostępne"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:77
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Copy and paste this shortcode to display this Google Calendar feed on any "
|
||||
"post or page."
|
||||
msgstr ""
|
||||
"Skopiuj i wklej ten krótki kod, aby wyświetlić ten kalendarz Google na "
|
||||
"dowolnej stronie lub wpisie."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:78
|
||||
msgid ""
|
||||
"To avoid display issues, make sure to paste the shortcode in the Text tab of "
|
||||
"the post editor."
|
||||
msgstr ""
|
||||
"Aby uniknąć problemów z wyświetlaniem, upewnij się, że wklejasz ten krótki "
|
||||
"kod do zakładki \"Tekst\" edytora wpisów."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:83
|
||||
msgid "GCal Feed URL"
|
||||
msgstr "Adres kalendarza"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:87
|
||||
msgid "The Google Calendar feed URL."
|
||||
msgstr "Adres kalendarza w Google Calendar"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:87
|
||||
msgid "Example"
|
||||
msgstr "Przykład"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:89
|
||||
msgid "How to find your GCal feed URL"
|
||||
msgstr "Jak odnaleźć adres kalendarza Google?"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:95
|
||||
msgid "Search Query"
|
||||
msgstr "Zapytanie"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:98
|
||||
msgid "Find and show events based on a search query."
|
||||
msgstr "Znajdź i wyświetl wydarzenia, bazując na wyszukiwaniu"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:103
|
||||
msgid "Expand Recurring Events?"
|
||||
msgstr "Wyświetlać wszystkie powtórzenia dla powtarzającego się wydarzenia?"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:105
|
||||
msgid "Yes"
|
||||
msgstr "Tak"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:106
|
||||
msgid ""
|
||||
"This will show recurring events each time they occur, otherwise it will only "
|
||||
"show the event the first time it occurs."
|
||||
msgstr ""
|
||||
"Ta opcja pokaże wydarzenia powtarzające się za każdym razem, gdy występują, "
|
||||
"w przeciwnym wypadku pokaże tylko pierwsze wystąpienie danego wydarzenia."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:111
|
||||
msgid "Date Format"
|
||||
msgstr "Format daty"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:115
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:126
|
||||
#, php-format
|
||||
msgid "Use %sPHP date formatting%s."
|
||||
msgstr "Użyj %sPHP date formatting%s."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:116
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:127
|
||||
msgid "Leave blank to use the default."
|
||||
msgstr "Pozostaw puste, aby użyć wartości domyślnej."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:122
|
||||
msgid "Time Format"
|
||||
msgstr "Format czasu"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:133
|
||||
msgid "Cache Duration"
|
||||
msgstr "Okres pamięci podręcznej"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:136
|
||||
msgid ""
|
||||
"The length of time, in seconds, to cache the feed (43200 = 12 hours). If "
|
||||
"this feed changes regularly, you may want to reduce the cache duration."
|
||||
msgstr ""
|
||||
"Okres czasu, w sekundach, przez który kalendarz będzie przetrzymywany w "
|
||||
"pamięci podręcznej. Jeżeli ten kalendarz zmienia się często, możesz "
|
||||
"zmniejszyć tą wartość. 43200 = 12 godzin. "
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:141
|
||||
msgid "Multiple Day Events"
|
||||
msgstr "Wydarzenia kilkudniowe"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:143
|
||||
msgid "Show on each day"
|
||||
msgstr "Pokazuj każdego dnia"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:144
|
||||
msgid ""
|
||||
"Show events that span multiple days on each day that they span, rather than "
|
||||
"just the first day."
|
||||
msgstr ""
|
||||
"Pokazuj wydarzenia, które rozciągają się na klika dni, przez wszystkie dni, "
|
||||
"zamiast tylko pierwszego dnia."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:149
|
||||
msgid "Display Mode"
|
||||
msgstr "Tryb wyświetlania"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:156
|
||||
msgid "Choose how you want your calendar to be displayed."
|
||||
msgstr "Wybierz, jak chcesz wyświetlać swój kalendarz."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:161
|
||||
msgid "Show Paging Links"
|
||||
msgstr "Pokaż przewijanie"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:163
|
||||
#: google-calendar-events/views/widgets.php:227
|
||||
msgid "Check this option to display Next and Back navigation links."
|
||||
msgstr ""
|
||||
"Zaznacz tą opcję, aby pokazywać nawigację (\"poprzedni\", \"następny\")"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:168
|
||||
msgid "Number of Events per Page"
|
||||
msgstr "Ilość wydarzeń na stronę"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:172
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:183
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:197
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:211
|
||||
#: google-calendar-events/views/widgets.php:242
|
||||
#: google-calendar-events/views/widgets.php:250
|
||||
msgid "Days"
|
||||
msgstr "Dni"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:173
|
||||
#: google-calendar-events/views/widgets.php:243
|
||||
msgid "Events"
|
||||
msgstr "Wydarzenia"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:175
|
||||
msgid "How many events to display per page (List View only)."
|
||||
msgstr "Jak dużo wydarzeń wyświetlać na stronie (tylko widok listy). "
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:180
|
||||
#, fuzzy
|
||||
msgid "Display Start Date Offset"
|
||||
msgstr "Przesunięcie daty początkowej"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:186
|
||||
#: google-calendar-events/views/widgets.php:253
|
||||
msgid "Ahead"
|
||||
msgstr "W przód"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:188
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Change if you need to initially display events on a date other than today "
|
||||
"(List View only)."
|
||||
msgstr ""
|
||||
"Jeżeli potrzebujesz pokazać zdarzenia zaczynające się innego dnia, niż "
|
||||
"dzisiaj (tylko widok listy)."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:193
|
||||
msgid "Minimum Feed Start Date"
|
||||
msgstr "Minimalna początkowa data"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:198
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:212
|
||||
#, fuzzy
|
||||
msgid "Months"
|
||||
msgstr "%s miesiące"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:199
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:213
|
||||
#, fuzzy
|
||||
msgid "Years"
|
||||
msgstr "%s lat"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:201
|
||||
msgid "back"
|
||||
msgstr "wstecz"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:202
|
||||
msgid ""
|
||||
"Set how far back to retrieve events regardless of month or page being "
|
||||
"displayed."
|
||||
msgstr ""
|
||||
"Ustal, jak dawne wydarzenia pobierać, niezależnie od wyświetlanego miesiąca "
|
||||
"lub strony. "
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:207
|
||||
#, fuzzy
|
||||
msgid "Maximum Feed End Date"
|
||||
msgstr "Końcowa data"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:215
|
||||
msgid "forward"
|
||||
msgstr "naprzód"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:216
|
||||
msgid ""
|
||||
"Set how far in the future to retrieve events regardless of month or page "
|
||||
"being displayed."
|
||||
msgstr ""
|
||||
"Ustaw, jak daleko w przyszłość wybiegać pobierając wydarzenia, niezależnie "
|
||||
"od wyświetlanego miesiąca lub strony."
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-sidebar-help.php:6
|
||||
msgid "Documentation & getting started"
|
||||
msgstr "Dokumentacja & konfiguracja wstępna"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-sidebar-help.php:12
|
||||
msgid "Community support forums"
|
||||
msgstr "Forum wsparcia"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-sidebar-help.php:18
|
||||
msgid "Get notified of new features"
|
||||
msgstr "Bądź informowany o nowych możliwościach"
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-sidebar-help.php:24
|
||||
msgid "Rate this plugin"
|
||||
msgstr "Oceń tą wtyczkę"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:28
|
||||
msgid ""
|
||||
"Display a list or calendar grid of events from one or more Google Calendar "
|
||||
"feeds you have added"
|
||||
msgstr ""
|
||||
"Wyświetla listę lub siatkę wydarzeń z jednego lub więcej kalendarzy Google"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:111
|
||||
msgid ""
|
||||
"No valid Feed IDs have been entered for this widget. Please check that you "
|
||||
"have entered the IDs correctly in the widget settings (Appearance > "
|
||||
"Widgets), and that the Feeds have not been deleted."
|
||||
msgstr ""
|
||||
"Nie wpisano prawidłowych ID kalendarzy. Proszę upewnij się, że wpisano "
|
||||
"prawidłowe ID kalendarzy w ustawieniach kontrolki (Wygląd -> Widżety) oraz, "
|
||||
"że kalendarz nie został usunięty."
|
||||
|
||||
#: google-calendar-events/views/widgets.php:144
|
||||
msgid "You have not added any feeds yet."
|
||||
msgstr "Nie dodano żadnych kalendarzy"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:186
|
||||
msgid "There are no feeds created yet."
|
||||
msgstr "Nie utworzono żadnych kalendarzy"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:187
|
||||
msgid "Add your first feed!"
|
||||
msgstr "Dodaj swój pierwszy kalendarz!"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:211
|
||||
msgid "Feeds to Display (comma separated list - i.e. 101,102,103):"
|
||||
msgstr ""
|
||||
"Kalendarze do wyświetlenia (w formacie listy oddzielanej przecinkami, czyli "
|
||||
"101,102,103):"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:216
|
||||
#, fuzzy
|
||||
msgid "Display Events as:"
|
||||
msgstr "Wyświetlaj wydarzenia jako:"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:225
|
||||
msgid "Show Paging Links:"
|
||||
msgstr "Pokaż przewijanie"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:231
|
||||
msgid "Sort Order (List View only):"
|
||||
msgstr "Porządek wyświetlania (tylko widok listy):"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:233
|
||||
msgid "Ascending"
|
||||
msgstr "Rosnąco"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:234
|
||||
msgid "Descending"
|
||||
msgstr "Malejąco"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:239
|
||||
#, fuzzy
|
||||
msgid "Number of Events per Page (List View only):"
|
||||
msgstr "Ilość zdarzeń na stronę (tylko widok listy):"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:248
|
||||
#, fuzzy
|
||||
msgid "Display Start Date Offset (List View only):"
|
||||
msgstr "Przesunięcie daty początkowej (tylko widok listy):"
|
||||
|
||||
#: google-calendar-events/views/widgets.php:258
|
||||
msgid ""
|
||||
"Display Title on Tooltip/List Item (e.g. 'Events on 7th March'). Grouped "
|
||||
"lists always have a title displayed."
|
||||
msgstr ""
|
||||
"Wyświetlaj tytuł na etykiecie narzędzia/elemencie listy (np. 'Wydarzenia 7. "
|
||||
"marca'). Etykieta narzędziowa zawsze wyświetlana jest dla list zgrupowanych."
|
||||
|
||||
#~ msgid "Show paging links:"
|
||||
#~ msgstr "Pokazuj przyciski przewijania stron:"
|
||||
@@ -1,8 +1,8 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Google Calendar Events\n"
|
||||
"POT-Creation-Date: 2014-10-09 13:21-0700\n"
|
||||
"PO-Revision-Date: 2014-10-09 13:21-0700\n"
|
||||
"POT-Creation-Date: 2014-11-19 00:09-0700\n"
|
||||
"PO-Revision-Date: 2014-11-19 00:10-0700\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"Language: en\n"
|
||||
@@ -15,137 +15,152 @@ msgstr ""
|
||||
"X-Poedit-KeywordsList: __;_e\n"
|
||||
"X-Poedit-SearchPath-0: google-calendar-events\n"
|
||||
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:64
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:65
|
||||
#: google-calendar-events/includes/register-settings.php:44
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:128
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:129
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:198
|
||||
#: google-calendar-events/includes/register-settings.php:54
|
||||
msgid "General Settings"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:122
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:186
|
||||
#: google-calendar-events/views/widgets.php:27
|
||||
msgid "Google Calendar Events"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:134
|
||||
#: google-calendar-events/class-google-calendar-events-admin.php:199
|
||||
msgid "Feeds"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/class-google-calendar-events.php:142
|
||||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:20
|
||||
msgid "Cache has been cleared for this feed."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:74
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:252
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:35
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:57
|
||||
msgid "Starts:"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:36
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:59
|
||||
msgid "Ends:"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:37
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:61
|
||||
msgid "Location:"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:38
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:62
|
||||
msgid "Description:"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:39
|
||||
msgid "More details..."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:64
|
||||
msgid "More Details"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/admin/admin-functions.php:78
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:264
|
||||
msgid "Clear Cache"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-display.php:188
|
||||
#: google-calendar-events/includes/class-gce-display.php:277
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:170
|
||||
#: google-calendar-events/includes/class-gce-display.php:179
|
||||
#: google-calendar-events/includes/class-gce-display.php:270
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:185
|
||||
#: google-calendar-events/views/widgets.php:252
|
||||
msgid "Back"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-display.php:192
|
||||
#: google-calendar-events/includes/class-gce-display.php:278
|
||||
#: google-calendar-events/includes/class-gce-display.php:183
|
||||
#: google-calendar-events/includes/class-gce-display.php:271
|
||||
msgid "Next"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-display.php:372
|
||||
#: google-calendar-events/includes/class-gce-display.php:366
|
||||
msgid "No events to display."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:496
|
||||
#: google-calendar-events/includes/class-gce-event.php:504
|
||||
#, php-format
|
||||
msgid "%s year"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:496
|
||||
#: google-calendar-events/includes/class-gce-event.php:504
|
||||
#, php-format
|
||||
msgid "%s years"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:497
|
||||
#: google-calendar-events/includes/class-gce-event.php:505
|
||||
#, php-format
|
||||
msgid "%s month"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:497
|
||||
#: google-calendar-events/includes/class-gce-event.php:505
|
||||
#, php-format
|
||||
msgid "%s months"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:498
|
||||
#: google-calendar-events/includes/class-gce-event.php:506
|
||||
#, php-format
|
||||
msgid "%s week"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:498
|
||||
#: google-calendar-events/includes/class-gce-event.php:506
|
||||
#, php-format
|
||||
msgid "%s weeks"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:499
|
||||
#: google-calendar-events/includes/class-gce-event.php:507
|
||||
#, php-format
|
||||
msgid "%s day"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:499
|
||||
#: google-calendar-events/includes/class-gce-event.php:507
|
||||
#, php-format
|
||||
msgid "%s days"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:500
|
||||
#: google-calendar-events/includes/class-gce-event.php:508
|
||||
#, php-format
|
||||
msgid "%s hour"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:500
|
||||
#: google-calendar-events/includes/class-gce-event.php:508
|
||||
#, php-format
|
||||
msgid "%s hours"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:501
|
||||
#: google-calendar-events/includes/class-gce-event.php:509
|
||||
#, php-format
|
||||
msgid "%s min"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-event.php:501
|
||||
#: google-calendar-events/includes/class-gce-event.php:509
|
||||
#, php-format
|
||||
msgid "%s mins"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:82
|
||||
#: google-calendar-events/includes/class-gce-feed.php:89
|
||||
msgid ""
|
||||
"The feed URL has not been set. Please make sure to set it correctly in the "
|
||||
"Feed settings."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:162
|
||||
#: google-calendar-events/includes/class-gce-feed.php:165
|
||||
msgid ""
|
||||
"Some data was retrieved, but could not be parsed successfully. Please ensure "
|
||||
"your feed URL is correct."
|
||||
"your feed settings are correct."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:168
|
||||
msgid ""
|
||||
"The feed could not be found (404). Please ensure your feed URL is correct."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:171
|
||||
msgid ""
|
||||
"Access to this feed was denied (403). Please ensure you have public sharing "
|
||||
"enabled for your calendar."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:174
|
||||
#, php-format
|
||||
msgid ""
|
||||
"The feed data could not be retrieved. Error code: %s. Please ensure your "
|
||||
"feed URL is correct."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/class-gce-feed.php:179
|
||||
#: google-calendar-events/includes/class-gce-feed.php:169
|
||||
msgid " Please ensure your feed URL is correct."
|
||||
msgstr ""
|
||||
|
||||
@@ -155,6 +170,7 @@ msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:22
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:24
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:72
|
||||
msgid "Feed"
|
||||
msgstr ""
|
||||
|
||||
@@ -198,6 +214,10 @@ msgstr ""
|
||||
msgid "No feeds found in Trash."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:70
|
||||
msgid "feed"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:75
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:76
|
||||
#, php-format
|
||||
@@ -224,53 +244,108 @@ msgstr ""
|
||||
msgid "%4$s draft updated. %1$sView %2$s%3$s"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:205
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:97
|
||||
msgid "Helpful Links"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:217
|
||||
msgid "Feed ID"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:206
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:61
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:218
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:73
|
||||
msgid "Feed Shortcode"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:207
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:219
|
||||
msgid "Display Type"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:234
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:137
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:246
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:152
|
||||
#: google-calendar-events/views/widgets.php:218
|
||||
msgid "Grid"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:236
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:138
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:248
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:153
|
||||
#: google-calendar-events/views/widgets.php:219
|
||||
msgid "List"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:238
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:139
|
||||
#: google-calendar-events/includes/gce-feed-cpt.php:250
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:154
|
||||
#: google-calendar-events/views/widgets.php:220
|
||||
msgid "Grouped List"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/register-settings.php:29
|
||||
msgid "Save Settings"
|
||||
msgid "Google API Key"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/register-settings.php:30
|
||||
msgid ""
|
||||
"If left blank all displayed Google calendars will use a public Google API "
|
||||
"key shared across all plugin users."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/register-settings.php:31
|
||||
msgid ""
|
||||
"Currently the shared key is limited to 500,000 requests per day and 5 "
|
||||
"requests per second."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/register-settings.php:32
|
||||
#, php-format
|
||||
msgid ""
|
||||
"To avoid these limits <a href=\"%s\" target=\"_blank\">click here for "
|
||||
"instructions on how to generate and use your own Google API key.</a>"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/register-settings.php:39
|
||||
msgid "Save Settings"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/register-settings.php:40
|
||||
msgid ""
|
||||
"Save your settings when uninstalling this plugin. Useful when upgrading or "
|
||||
"re-installing."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/includes/register-settings.php:132
|
||||
#: google-calendar-events/includes/register-settings.php:169
|
||||
#, php-format
|
||||
msgid ""
|
||||
"The callback function used for the <strong>%s</strong> setting is missing."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/api-settings-notice.php:27
|
||||
msgid "GCal Events Important Update (Nov. 19, 2014):"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/api-settings-notice.php:28
|
||||
msgid ""
|
||||
"GCal Events now uses the Google API version 3, which requires use of a "
|
||||
"public key."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/api-settings-notice.php:29
|
||||
msgid ""
|
||||
"By default a shared key is used across all plugin users, which is limited to "
|
||||
"500,000 requests per day and 5 requests per second."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/api-settings-notice.php:30
|
||||
msgid "To avoid these limits you can use your own Google API key."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/api-settings-notice.php:33
|
||||
msgid "Update your API settings now"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/api-settings-notice.php:34
|
||||
msgid "Hide this"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:39
|
||||
msgid ""
|
||||
"Check this box to use the simple display options below instead of the Event "
|
||||
@@ -348,6 +423,18 @@ msgid ""
|
||||
"characters to display between the time and date here (including any spaces)."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:80
|
||||
msgid "Location"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:82
|
||||
msgid "Show the location of events?"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:83
|
||||
msgid "Text to display before the location."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/display-options-meta.php:88
|
||||
msgid "Description"
|
||||
msgstr ""
|
||||
@@ -383,156 +470,207 @@ msgstr ""
|
||||
msgid "The link text to be displayed."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:42
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:54
|
||||
msgid ""
|
||||
"We're <strong>smack dab</strong> in the middle of building additional "
|
||||
"features for this plugin. Have ideas?"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:45
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:57
|
||||
msgid "Visit our roadmap and tell us what you're looking for"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:51
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:63
|
||||
msgid "Want to be in the know?"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:54
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:66
|
||||
msgid "Get notified when new features are released"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:64
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:77
|
||||
msgid ""
|
||||
"Copy and paste this shortcode to display this Google Calendar feed in any "
|
||||
"Copy and paste this shortcode to display this Google Calendar feed on any "
|
||||
"post or page."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:68
|
||||
msgid "GCal Feed URL"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:72
|
||||
msgid "The Google Calendar feed URL."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:73
|
||||
msgid "Example"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:74
|
||||
msgid "How to find your GCal feed URL"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:80
|
||||
msgid "Search Query"
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:78
|
||||
msgid ""
|
||||
"To avoid display issues, make sure to paste the shortcode in the Text tab of "
|
||||
"the post editor."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:83
|
||||
msgid "Google Calendar ID"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:87
|
||||
msgid "The Google Calendar ID."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:87
|
||||
msgid "Example"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:89
|
||||
msgid "How to find your GCal calendar ID"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:95
|
||||
msgid "Search Query"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:98
|
||||
msgid "Find and show events based on a search query."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:88
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:103
|
||||
msgid "Expand Recurring Events?"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:90
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:105
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:91
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:106
|
||||
msgid ""
|
||||
"This will show recurring events each time they occur, otherwise it will only "
|
||||
"show the event the first time it occurs."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:96
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:111
|
||||
msgid "Date Format"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:100
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:111
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:115
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:126
|
||||
#, php-format
|
||||
msgid "Use %sPHP date formatting%s."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:107
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:116
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:127
|
||||
msgid "Leave blank to use the default."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:122
|
||||
msgid "Time Format"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:118
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:133
|
||||
msgid "Cache Duration"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:121
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:136
|
||||
msgid ""
|
||||
"The length of time, in seconds, to cache the feed (43200 = 12 hours). If "
|
||||
"this feed changes regularly, you may want to reduce the cache duration."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:126
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:141
|
||||
msgid "Multiple Day Events"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:128
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:143
|
||||
msgid "Show on each day"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:129
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:144
|
||||
msgid ""
|
||||
"Show events that span multiple days on each day that they span, rather than "
|
||||
"just the first day."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:134
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:149
|
||||
msgid "Display Mode"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:141
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:156
|
||||
msgid "Choose how you want your calendar to be displayed."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:146
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:161
|
||||
msgid "Show Paging Links"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:148
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:163
|
||||
#: google-calendar-events/views/widgets.php:227
|
||||
msgid "Check this option to display Next and Back navigation links."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:153
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:168
|
||||
msgid "Number of Events per Page"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:157
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:168
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:172
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:183
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:197
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:211
|
||||
#: google-calendar-events/views/widgets.php:242
|
||||
#: google-calendar-events/views/widgets.php:250
|
||||
msgid "Days"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:158
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:173
|
||||
#: google-calendar-events/views/widgets.php:243
|
||||
msgid "Events"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:160
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:175
|
||||
msgid "How many events to display per page (List View only)."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:165
|
||||
msgid "Start Date Offset"
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:180
|
||||
msgid "Display Start Date Offset"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:171
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:186
|
||||
#: google-calendar-events/views/widgets.php:253
|
||||
msgid "Ahead"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:173
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:188
|
||||
msgid ""
|
||||
"If you need to show events starting on a day other than today. (List View "
|
||||
"only)."
|
||||
"Change if you need to initially display events on a date other than today "
|
||||
"(List View only)."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:193
|
||||
msgid "Minimum Feed Start Date"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:198
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:212
|
||||
msgid "Months"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:199
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:213
|
||||
msgid "Years"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:201
|
||||
msgid "back"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:202
|
||||
msgid ""
|
||||
"Set how far back to retrieve events regardless of month or page being "
|
||||
"displayed."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:207
|
||||
msgid "Maximum Feed End Date"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:215
|
||||
msgid "forward"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-meta-display.php:216
|
||||
msgid ""
|
||||
"Set how far in the future to retrieve events regardless of month or page "
|
||||
"being displayed."
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/admin/gce-feed-sidebar-help.php:6
|
||||
@@ -577,19 +715,19 @@ msgid "Add your first feed!"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/widgets.php:211
|
||||
msgid "Feeds to display, as a comma separated list (e.g. 101,102,103):"
|
||||
msgid "Feeds to Display (comma separated list - i.e. 101,102,103):"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/widgets.php:216
|
||||
msgid "Display events as:"
|
||||
msgid "Display Events as:"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/widgets.php:225
|
||||
msgid "Show paging links:"
|
||||
msgid "Show Paging Links:"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/widgets.php:231
|
||||
msgid "Sort order (List View only):"
|
||||
msgid "Sort Order (List View only):"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/widgets.php:233
|
||||
@@ -601,15 +739,15 @@ msgid "Descending"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/widgets.php:239
|
||||
msgid "Number of events per page (List View only):"
|
||||
msgid "Number of Events per Page (List View only):"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/widgets.php:248
|
||||
msgid "Start date offset (List View only):"
|
||||
msgid "Display Start Date Offset (List View only):"
|
||||
msgstr ""
|
||||
|
||||
#: google-calendar-events/views/widgets.php:258
|
||||
msgid ""
|
||||
"Display title on tooltip/list item (e.g. 'Events on 7th March'). Grouped "
|
||||
"Display Title on Tooltip/List Item (e.g. 'Events on 7th March'). Grouped "
|
||||
"lists always have a title displayed."
|
||||
msgstr ""
|
||||
@@ -1,75 +1,75 @@
|
||||
<?php
|
||||
/**
|
||||
* Fired when the plugin is uninstalled.
|
||||
*
|
||||
* @package GCE
|
||||
* @author Phil Derksen <pderksen@gmail.com>, Nick Young <mycorpweb@gmail.com>
|
||||
* @license GPL-2.0+
|
||||
* @copyright 2014 Phil Derksen
|
||||
*/
|
||||
|
||||
// If uninstall not called from WordPress, then exit
|
||||
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
$general = get_option( 'gce_settings_general' );
|
||||
|
||||
// If this is empty then it means it is unchecked and we should delete everything
|
||||
if ( empty( $general['save_settings'] ) ) {
|
||||
|
||||
/*** VERSION 2.0.0 GCE OPTIONS ***/
|
||||
|
||||
// Remove CPTs and transients
|
||||
$feeds = get_posts( array(
|
||||
'post_type' => 'gce_feed',
|
||||
'post_status' => array(
|
||||
'any',
|
||||
'trash',
|
||||
'auto-draft'
|
||||
)
|
||||
));
|
||||
|
||||
foreach( $feeds as $f ) {
|
||||
// delete the transient while we have the post ID available
|
||||
delete_transient( 'gce_feed_' . $f->ID );
|
||||
|
||||
// Now delete the post
|
||||
wp_delete_post( $f->ID, true );
|
||||
}
|
||||
|
||||
// Remove all post meta
|
||||
delete_post_meta_by_key( 'gce_feed_url' );
|
||||
delete_post_meta_by_key( 'gce_retrieve_from' );
|
||||
delete_post_meta_by_key( 'gce_retrieve_until' );
|
||||
delete_post_meta_by_key( 'gce_retrieve_max' );
|
||||
delete_post_meta_by_key( 'gce_date_format' );
|
||||
delete_post_meta_by_key( 'gce_time_format' );
|
||||
delete_post_meta_by_key( 'gce_cache' );
|
||||
delete_post_meta_by_key( 'gce_multi_day_events' );
|
||||
delete_post_meta_by_key( 'gce_display_mode' );
|
||||
delete_post_meta_by_key( 'gce_custom_from' );
|
||||
delete_post_meta_by_key( 'gce_custom_until' );
|
||||
delete_post_meta_by_key( 'gce_paging' );
|
||||
delete_post_meta_by_key( 'gce_list_max_num' );
|
||||
delete_post_meta_by_key( 'gce_list_max_length' );
|
||||
delete_post_meta_by_key( 'gce_list_start_offset_num' );
|
||||
delete_post_meta_by_key( 'gce_list_start_offset_direction' );
|
||||
|
||||
// Remove options
|
||||
delete_option( 'gce_upgrade_has_run' );
|
||||
delete_option( 'gce_version' );
|
||||
delete_option( 'gce_settings_general' );
|
||||
delete_option( 'gce_cpt_setup' );
|
||||
|
||||
// Remove widgets
|
||||
delete_option( 'widget_gce_widget' );
|
||||
|
||||
|
||||
/*** OLD GCE VERSION OPTIONS ***/
|
||||
|
||||
delete_option( 'gce_options' );
|
||||
delete_option( 'gce_general' );
|
||||
delete_option( 'gce_clear_old_transients' );
|
||||
delete_option( 'gce_show_upgrade_notice' );
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* Fired when the plugin is uninstalled.
|
||||
*
|
||||
* @package GCE
|
||||
* @author Phil Derksen <pderksen@gmail.com>, Nick Young <mycorpweb@gmail.com>
|
||||
* @license GPL-2.0+
|
||||
* @copyright 2014 Phil Derksen
|
||||
*/
|
||||
|
||||
// If uninstall not called from WordPress, then exit
|
||||
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
$general = get_option( 'gce_settings_general' );
|
||||
|
||||
// If this is empty then it means it is unchecked and we should delete everything
|
||||
if ( empty( $general['save_settings'] ) ) {
|
||||
|
||||
/*** VERSION 2.0.0 GCE OPTIONS ***/
|
||||
|
||||
// Remove CPTs and transients
|
||||
$feeds = get_posts( array(
|
||||
'post_type' => 'gce_feed',
|
||||
'post_status' => array(
|
||||
'any',
|
||||
'trash',
|
||||
'auto-draft'
|
||||
)
|
||||
));
|
||||
|
||||
foreach( $feeds as $f ) {
|
||||
// delete the transient while we have the post ID available
|
||||
delete_transient( 'gce_feed_' . $f->ID );
|
||||
|
||||
// Now delete the post
|
||||
wp_delete_post( $f->ID, true );
|
||||
}
|
||||
|
||||
// Remove all post meta
|
||||
delete_post_meta_by_key( 'gce_feed_url' );
|
||||
delete_post_meta_by_key( 'gce_retrieve_from' );
|
||||
delete_post_meta_by_key( 'gce_retrieve_until' );
|
||||
delete_post_meta_by_key( 'gce_retrieve_max' );
|
||||
delete_post_meta_by_key( 'gce_date_format' );
|
||||
delete_post_meta_by_key( 'gce_time_format' );
|
||||
delete_post_meta_by_key( 'gce_cache' );
|
||||
delete_post_meta_by_key( 'gce_multi_day_events' );
|
||||
delete_post_meta_by_key( 'gce_display_mode' );
|
||||
delete_post_meta_by_key( 'gce_custom_from' );
|
||||
delete_post_meta_by_key( 'gce_custom_until' );
|
||||
delete_post_meta_by_key( 'gce_paging' );
|
||||
delete_post_meta_by_key( 'gce_list_max_num' );
|
||||
delete_post_meta_by_key( 'gce_list_max_length' );
|
||||
delete_post_meta_by_key( 'gce_list_start_offset_num' );
|
||||
delete_post_meta_by_key( 'gce_list_start_offset_direction' );
|
||||
|
||||
// Remove options
|
||||
delete_option( 'gce_upgrade_has_run' );
|
||||
delete_option( 'gce_version' );
|
||||
delete_option( 'gce_settings_general' );
|
||||
delete_option( 'gce_cpt_setup' );
|
||||
|
||||
// Remove widgets
|
||||
delete_option( 'widget_gce_widget' );
|
||||
|
||||
|
||||
/*** OLD GCE VERSION OPTIONS ***/
|
||||
|
||||
delete_option( 'gce_options' );
|
||||
delete_option( 'gce_general' );
|
||||
delete_option( 'gce_clear_old_transients' );
|
||||
delete_option( 'gce_show_upgrade_notice' );
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Show notice for API Settings
|
||||
*
|
||||
* @package GCE
|
||||
* @subpackage admin/views
|
||||
* @author Phil Derksen <pderksen@gmail.com>, Nick Young <mycorpweb@gmail.com>
|
||||
*/
|
||||
|
||||
// Exit if accessed directly.
|
||||
if ( ! defined( 'ABSPATH' ) ) {
|
||||
exit;
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
<style>
|
||||
/* #gce-install-notice .button-primary, */
|
||||
#gce-install-notice .button-secondary {
|
||||
margin-left: 15px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="gce-install-notice" class="updated">
|
||||
<p>
|
||||
<strong><?php echo __( 'GCal Events Important Update (Nov. 19, 2014):', 'gce' ); ?></strong><br/>
|
||||
<?php echo __( 'GCal Events now uses the Google API version 3, which requires use of a public key.', 'gce' ); ?>
|
||||
<?php echo __( 'By default a shared key is used across all plugin users, which is limited to 500,000 requests per day and 5 requests per second.', 'gce' ); ?>
|
||||
<?php echo __( 'To avoid these limits you can use your own Google API key.', 'gce' ); ?>
|
||||
</p>
|
||||
<p>
|
||||
<a href="<?php echo admin_url( 'edit.php?post_type=gce_feed&page=google-calendar-events_general_settings' ); ?>" class="button-primary"><?php _e( 'Update your API settings now', 'gce' ); ?></a>
|
||||
<a href="<?php echo add_query_arg( 'gce-dismiss-install-nag', 1 ); ?>" class="button-secondary"><?php _e( 'Hide this', 'gce' ); ?></a>
|
||||
</p>
|
||||
</div>
|
||||
@@ -77,10 +77,10 @@
|
||||
</div>
|
||||
|
||||
<div class="gce-meta-control">
|
||||
<strong>Location</strong>
|
||||
<strong><?php _e( 'Location', 'gce' ); ?></strong>
|
||||
<p><input type="checkbox" name="gce_display_location" id="gce_display_location" value="1" <?php checked( $gce_display_location, '1' ); ?> />
|
||||
<label for="gce_display_location">Show the location of events?</label></p>
|
||||
<label class="description" for="gce_display_location_text">Text to display before the location.</label>
|
||||
<label for="gce_display_location"><?php _e( 'Show the location of events?', 'gce' ); ?></label></p>
|
||||
<label class="description" for="gce_display_location_text"><?php _e( 'Text to display before the location.', 'gce' ); ?></label>
|
||||
<input type="text" name="gce_display_location_text" id="gce_display_location_text" value="<?php echo $gce_display_location_text; ?>" />
|
||||
</div>
|
||||
|
||||
|
||||
@@ -80,13 +80,13 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row"><label for="gce_feed_url"><?php _e( 'GCal Feed URL', 'gce' ); ?></label></th>
|
||||
<th scope="row"><label for="gce_feed_url"><?php _e( 'Google Calendar ID', 'gce' ); ?></label></th>
|
||||
<td>
|
||||
<input type="text" class="large-text" name="gce_feed_url" id="gce_feed_url" value="<?php echo $gce_feed_url; ?>" />
|
||||
<input type="text" class="regular-text" style="width: 30em;" name="gce_feed_url" id="gce_feed_url" value="<?php echo $gce_feed_url; ?>" />
|
||||
<p class="description">
|
||||
<?php _e( 'The Google Calendar feed URL.', 'gce' ); ?> <?php _e( 'Example', 'gce' ); ?>:<br/>
|
||||
<code>https://www.google.com/calendar/feeds/em3luo1919fjcjum4j874j5ejg%40group.calendar.google.com/public/basic</code><br/>
|
||||
<a href="http://wpdocs.philderksen.com/google-calendar-events/getting-started/find-feed-url/" target="_blank"><?php _e( 'How to find your GCal feed URL', 'gce' ); ?></a>
|
||||
<?php _e( 'The Google Calendar ID.', 'gce' ); ?> <?php _e( 'Example', 'gce' ); ?>:<br/>
|
||||
<code>umsb0ekhivs1a2ubtq6vlqvcjk@group.calendar.google.com</code><br/>
|
||||
<a href="<?php echo gce_ga_campaign_url( 'http://wpdocs.philderksen.com/google-calendar-events/getting-started/find-calendar-id/', 'gce_lite', 'settings_link', 'docs' ); ?>" target="_blank"><?php _e( 'How to find your GCal calendar ID', 'gce' ); ?></a>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -113,7 +113,7 @@
|
||||
<input type="text" class="" name="gce_date_format" id="gce_date_format" value="<?php echo $gce_date_format; ?>" />
|
||||
<p class="description">
|
||||
<?php printf( __( 'Use %sPHP date formatting%s.', 'gce' ), '<a href="http://php.net/manual/en/function.date.php" target="_blank">', '</a>' ); ?>
|
||||
<?php echo _x( 'Leave blank to use the default.', 'References the Date Format option', 'gce' ); ?>
|
||||
<?php _e( 'Leave blank to use the default.', 'gce' ); ?>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -124,7 +124,7 @@
|
||||
<input type="text" class="" name="gce_time_format" id="gce_time_format" value="<?php echo $gce_time_format; ?>" />
|
||||
<p class="description">
|
||||
<?php printf( __( 'Use %sPHP date formatting%s.', 'gce' ), '<a href="http://php.net/manual/en/function.date.php" target="_blank">', '</a>' ); ?>
|
||||
<?php echo _x( 'Leave blank to use the default.', 'References the Time Format option', 'gce' ); ?>
|
||||
<?php _e( 'Leave blank to use the default.', 'gce' ); ?>
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
<li>
|
||||
<div class="dashicons dashicons-arrow-right-alt2"></div>
|
||||
<a href="http://wordpress.org/support/plugin/google-calendar-events" target="_blank">
|
||||
<a href="https://wordpress.org/support/plugin/google-calendar-events" target="_blank">
|
||||
<?php _e( 'Community support forums', 'gce' ); ?></a>
|
||||
</li>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
<li>
|
||||
<div class="dashicons dashicons-arrow-right-alt2"></div>
|
||||
<a href="http://wordpress.org/support/view/plugin-reviews/google-calendar-events" target="_blank">
|
||||
<a href="https://wordpress.org/support/view/plugin-reviews/google-calendar-events" target="_blank">
|
||||
<?php _e( 'Rate this plugin', 'gce' ); ?></a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -1334,7 +1334,7 @@ class Ure_Lib extends Garvs_WP_Lib {
|
||||
// end of switch
|
||||
if (!empty($url)) {
|
||||
$link = '<a href="' . $url . '" title="read about ' . $capability . ' user capability" target="new"><img src="' .
|
||||
URE_PLUGIN_URL . '/images/help.png" alt="' . esc_html__('Help', 'ure') . '" /></a>';
|
||||
URE_PLUGIN_URL . 'images/help.png" alt="' . esc_html__('Help', 'ure') . '" /></a>';
|
||||
} else {
|
||||
$link = '';
|
||||
}
|
||||
|
||||
@@ -36,9 +36,12 @@ class URE_Screen_Help {
|
||||
protected function get_additional_modules_tab() {
|
||||
$text = '<h2>User Role Editor Options page help</h2>
|
||||
<p>
|
||||
<ul>
|
||||
<li><strong>' . esc_html__('Count users without role', 'ure').'</strong> - ' .
|
||||
esc_html__('select roles below','ure') . '</li>';
|
||||
<ul>';
|
||||
if (!is_multisite()) {
|
||||
$text .= '<li><strong>' . esc_html__('Count users without role', 'ure').'</strong> - ' .
|
||||
esc_html__('Show at the "Users" page a quant of users without role. Module allows to assign all of them '.
|
||||
'an empty role "No rights", in order to look on the users list with role "No rights" at the separate tab then.','ure') . '</li>';
|
||||
}
|
||||
$text = apply_filters('ure_get_settings_additional_modules_tab_help', $text);
|
||||
$text .='
|
||||
</ul>
|
||||
|
||||
@@ -547,7 +547,7 @@ class User_Role_Editor {
|
||||
'title' => esc_html__('General'),
|
||||
'content' => $screen_help->get_settings_help('general')
|
||||
));
|
||||
if ($this->lib->pro || !$this->lib->multisite) {
|
||||
if ($this->lib->is_pro() || !$this->lib->multisite) {
|
||||
$screen->add_help_tab( array(
|
||||
'id' => 'additional_modules',
|
||||
'title' => esc_html__('Additional Modules'),
|
||||
@@ -559,11 +559,13 @@ class User_Role_Editor {
|
||||
'title' => esc_html__('Default Roles'),
|
||||
'content' => $screen_help->get_settings_help('default_roles')
|
||||
));
|
||||
$screen->add_help_tab( array(
|
||||
'id' => 'multisite',
|
||||
'title' => esc_html__('Multisite'),
|
||||
'content' => $screen_help->get_settings_help('multisite')
|
||||
));
|
||||
if ($this->lib->multisite) {
|
||||
$screen->add_help_tab( array(
|
||||
'id' => 'multisite',
|
||||
'title' => esc_html__('Multisite'),
|
||||
'content' => $screen_help->get_settings_help('multisite')
|
||||
));
|
||||
}
|
||||
}
|
||||
// end of settings_screen_configure()
|
||||
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large.
Load diff
Binary file not shown.
@@ -2,9 +2,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: User Role Editor 2.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-10-01 12:45+0700\n"
|
||||
"POT-Creation-Date: 2014-10-21 10:21+0700\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Vladimir Garagulya <vladimir@shinephp.com>\n"
|
||||
"Last-Translator: Vladimir Garagulya <support@role-editor.com>\n"
|
||||
"Language-Team: ShinePHP.com <vladimir@shinephp.com>\n"
|
||||
"Language: es_ES\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -38,7 +38,7 @@ msgid "Default Roles"
|
||||
msgstr "Rol Predeterminado"
|
||||
|
||||
#: ../includes/settings-template.php:34
|
||||
#: ../includes/class-user-role-editor.php:564
|
||||
#: ../includes/class-user-role-editor.php:565
|
||||
msgid "Multisite"
|
||||
msgstr ""
|
||||
|
||||
@@ -68,7 +68,7 @@ msgid "Save"
|
||||
msgstr "Guardar"
|
||||
|
||||
#: ../includes/settings-template.php:102
|
||||
#: ../includes/class-ure-screen-help.php:40
|
||||
#: ../includes/class-ure-screen-help.php:41
|
||||
msgid "Count users without role"
|
||||
msgstr ""
|
||||
|
||||
@@ -118,73 +118,73 @@ msgid "Settings"
|
||||
msgstr "Configuración"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:525
|
||||
#: ../includes/class-ure-lib.php:2292
|
||||
#: ../includes/class-ure-lib.php:2295
|
||||
msgid "Changelog"
|
||||
msgstr "Registro de cambios"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:573
|
||||
#: ../includes/class-user-role-editor.php:601
|
||||
#: ../includes/class-user-role-editor.php:946
|
||||
#: ../includes/class-ure-lib.php:248
|
||||
#: ../includes/class-user-role-editor.php:575
|
||||
#: ../includes/class-user-role-editor.php:603
|
||||
#: ../includes/class-user-role-editor.php:948
|
||||
#: ../includes/class-ure-lib.php:251
|
||||
msgid "User Role Editor"
|
||||
msgstr "Editor de Roles"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:658
|
||||
#: ../includes/class-user-role-editor.php:676
|
||||
#: ../includes/class-user-role-editor.php:720
|
||||
#: ../includes/class-user-role-editor.php:660
|
||||
#: ../includes/class-user-role-editor.php:678
|
||||
#: ../includes/class-user-role-editor.php:722
|
||||
msgid "User Role Editor options are updated"
|
||||
msgstr "Opciones actualizadas"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:704
|
||||
#: ../includes/class-user-role-editor.php:706
|
||||
#, fuzzy
|
||||
msgid "Default Roles are updated"
|
||||
msgstr "Rol Predeterminado"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:728
|
||||
#: ../includes/class-user-role-editor.php:730
|
||||
msgid ""
|
||||
"You do not have sufficient permissions to manage options for User Role "
|
||||
"Editor."
|
||||
msgstr "Permisos insuficientes para trabajar"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:807
|
||||
#: ../includes/class-user-role-editor.php:809
|
||||
msgid "Insufficient permissions to work with User Role Editor"
|
||||
msgstr "Permisos insuficientes para trabajar con el Editor de Roles"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:888
|
||||
#: ../includes/class-user-role-editor.php:890
|
||||
msgid "Select All"
|
||||
msgstr "Seleccionar todo"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:889
|
||||
#: ../includes/class-user-role-editor.php:891
|
||||
msgid "Unselect All"
|
||||
msgstr "Deseleccionar todo"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:890
|
||||
#: ../includes/class-user-role-editor.php:892
|
||||
msgid "Reverse"
|
||||
msgstr "Revertir"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:891
|
||||
#: ../includes/class-user-role-editor.php:893
|
||||
msgid "Update"
|
||||
msgstr "Actualizar"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:892
|
||||
#: ../includes/class-user-role-editor.php:894
|
||||
msgid "Please confirm permissions update"
|
||||
msgstr "Por favor confirma las actualizaciones de permisos"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:893
|
||||
#: ../includes/class-user-role-editor.php:895
|
||||
msgid "Add New Role"
|
||||
msgstr "Agregar nuevo Rol"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:894
|
||||
#: ../includes/class-user-role-editor.php:899
|
||||
#: ../includes/class-user-role-editor.php:896
|
||||
#: ../includes/class-user-role-editor.php:901
|
||||
#, fuzzy
|
||||
msgid "Rename Role"
|
||||
msgstr "Eliminar Rol"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:895
|
||||
#: ../includes/class-user-role-editor.php:897
|
||||
msgid " Role name (ID) can not be empty!"
|
||||
msgstr "¡El nombre del Rol (ID) no puede estar vacío!"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:896
|
||||
#: ../includes/class-user-role-editor.php:898
|
||||
msgid ""
|
||||
" Role name (ID) must contain latin characters, digits, hyphens or underscore "
|
||||
"only!"
|
||||
@@ -192,66 +192,66 @@ msgstr ""
|
||||
"¡El nombre del Rol (ID) sólo debe contener caracteres alfanuméricos, guiones "
|
||||
"altos o bajos!"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:897
|
||||
#: ../includes/class-user-role-editor.php:899
|
||||
msgid ""
|
||||
" WordPress does not support numeric Role name (ID). Add latin characters to "
|
||||
"it."
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-user-role-editor.php:898
|
||||
#: ../includes/class-user-role-editor.php:900
|
||||
msgid "Add Role"
|
||||
msgstr "Agregar Rol"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:900
|
||||
#: ../includes/class-user-role-editor.php:902
|
||||
msgid "Delete Role"
|
||||
msgstr "Eliminar Rol"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:901
|
||||
#: ../includes/class-user-role-editor.php:903
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:902
|
||||
#: ../includes/class-user-role-editor.php:904
|
||||
msgid "Add Capability"
|
||||
msgstr "Agregar Capacidad"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:903
|
||||
#: ../includes/class-user-role-editor.php:912
|
||||
#: ../includes/class-user-role-editor.php:905
|
||||
#: ../includes/class-user-role-editor.php:914
|
||||
msgid "Delete Capability"
|
||||
msgstr "Eliminar Capacidades"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:904
|
||||
#: ../includes/class-user-role-editor.php:906
|
||||
msgid "Reset"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:905
|
||||
#: ../includes/class-user-role-editor.php:907
|
||||
msgid "DANGER! Resetting will restore default settings from WordPress Core."
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-user-role-editor.php:906
|
||||
#: ../includes/class-user-role-editor.php:908
|
||||
msgid ""
|
||||
"If any plugins have changed capabilities in any way upon installation (such "
|
||||
"as S2Member, WooCommerce, and many more), those capabilities will be DELETED!"
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-user-role-editor.php:907
|
||||
#: ../includes/class-user-role-editor.php:909
|
||||
msgid ""
|
||||
"For more information on how to undo changes and restore plugin capabilities "
|
||||
"go to"
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-user-role-editor.php:909
|
||||
#: ../includes/class-user-role-editor.php:911
|
||||
msgid "Continue?"
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-user-role-editor.php:910
|
||||
#: ../includes/class-user-role-editor.php:912
|
||||
msgid "Default Role"
|
||||
msgstr "Rol Predeterminado"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:911
|
||||
#: ../includes/class-user-role-editor.php:913
|
||||
msgid "Set New Default Role"
|
||||
msgstr "Establecer nuevo Rol"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:913
|
||||
#: ../includes/class-user-role-editor.php:915
|
||||
msgid ""
|
||||
"Warning! Be careful - removing critical capability could crash some plugin "
|
||||
"or other custom code"
|
||||
@@ -259,11 +259,11 @@ msgstr ""
|
||||
"¡Atención! Ten cuidado - Eliminar Capacidadess esenciales podría inhabilitar "
|
||||
"algún plugin o código personalizado"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:914
|
||||
#: ../includes/class-user-role-editor.php:916
|
||||
msgid " Capability name (ID) can not be empty!"
|
||||
msgstr "¡El nombre de la Capacidad (ID) no puede estar vacío!"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:915
|
||||
#: ../includes/class-user-role-editor.php:917
|
||||
msgid ""
|
||||
" Capability name (ID) must contain latin characters, digits, hyphens or "
|
||||
"underscore only!"
|
||||
@@ -271,12 +271,12 @@ msgstr ""
|
||||
"¡El nombre de la Capacidad (ID) sólo debe contener caracteres alfanuméricos, "
|
||||
"guiones altos o bajos!"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:949
|
||||
#: ../includes/class-user-role-editor.php:978
|
||||
#: ../includes/class-user-role-editor.php:951
|
||||
#: ../includes/class-user-role-editor.php:980
|
||||
msgid "Other Roles"
|
||||
msgstr "Otros Roles"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:960
|
||||
#: ../includes/class-user-role-editor.php:962
|
||||
msgid "Edit"
|
||||
msgstr "Editar"
|
||||
|
||||
@@ -310,80 +310,80 @@ msgstr "Filtro rápido:"
|
||||
msgid "Custom capabilities:"
|
||||
msgstr "Capacidades personalizadas:"
|
||||
|
||||
#: ../includes/class-ure-lib.php:156
|
||||
#: ../includes/class-ure-lib.php:159
|
||||
msgid "Error: wrong request"
|
||||
msgstr "Error: Petición inválida"
|
||||
|
||||
#: ../includes/class-ure-lib.php:189 ../includes/class-ure-lib.php:200
|
||||
#: ../includes/class-ure-lib.php:192 ../includes/class-ure-lib.php:203
|
||||
msgid "Role name (ID): "
|
||||
msgstr "Nombre del Rol (ID):"
|
||||
|
||||
#: ../includes/class-ure-lib.php:191 ../includes/class-ure-lib.php:202
|
||||
#: ../includes/class-ure-lib.php:194 ../includes/class-ure-lib.php:205
|
||||
msgid "Display Role Name: "
|
||||
msgstr "Mostrar nombre del Rol:"
|
||||
|
||||
#: ../includes/class-ure-lib.php:193
|
||||
#: ../includes/class-ure-lib.php:196
|
||||
msgid "Make copy of: "
|
||||
msgstr "Hacer copia de:"
|
||||
|
||||
#: ../includes/class-ure-lib.php:209
|
||||
#: ../includes/class-ure-lib.php:212
|
||||
msgid "Select Role:"
|
||||
msgstr "Seleccionar Rol:"
|
||||
|
||||
#: ../includes/class-ure-lib.php:224
|
||||
#: ../includes/class-ure-lib.php:227
|
||||
msgid "Delete:"
|
||||
msgstr "Eliminar:"
|
||||
|
||||
#: ../includes/class-ure-lib.php:231
|
||||
#: ../includes/class-ure-lib.php:234
|
||||
msgid "Capability name (ID): "
|
||||
msgstr "Nombre de la Capacidad (ID):"
|
||||
|
||||
#: ../includes/class-ure-lib.php:345
|
||||
#: ../includes/class-ure-lib.php:348
|
||||
msgid "Error: "
|
||||
msgstr "Error:"
|
||||
|
||||
#: ../includes/class-ure-lib.php:345
|
||||
#: ../includes/class-ure-lib.php:348
|
||||
msgid "Role"
|
||||
msgstr "Rol"
|
||||
|
||||
#: ../includes/class-ure-lib.php:346
|
||||
#: ../includes/class-ure-lib.php:349
|
||||
msgid "does not exist"
|
||||
msgstr "no existe"
|
||||
|
||||
#: ../includes/class-ure-lib.php:389
|
||||
#: ../includes/class-ure-lib.php:392
|
||||
msgid "Role is updated successfully"
|
||||
msgstr "El Rol fue exitosamente actualizado"
|
||||
|
||||
#: ../includes/class-ure-lib.php:391
|
||||
#: ../includes/class-ure-lib.php:394
|
||||
msgid "Roles are updated for all network"
|
||||
msgstr "Roles actualizados en toda la Red"
|
||||
|
||||
#: ../includes/class-ure-lib.php:397
|
||||
#: ../includes/class-ure-lib.php:400
|
||||
msgid "Error occured during role(s) update"
|
||||
msgstr "Ocurrió un error durante la actualización del Rol"
|
||||
|
||||
#: ../includes/class-ure-lib.php:404
|
||||
#: ../includes/class-ure-lib.php:407
|
||||
msgid "User capabilities are updated successfully"
|
||||
msgstr "Las Capacidades de Usuario fueron actualizadas exitosamente"
|
||||
|
||||
#: ../includes/class-ure-lib.php:409
|
||||
#: ../includes/class-ure-lib.php:412
|
||||
msgid "Error occured during user update"
|
||||
msgstr "Ocurrió un error durante la actualización del Usuario"
|
||||
|
||||
#: ../includes/class-ure-lib.php:467
|
||||
#: ../includes/class-ure-lib.php:470
|
||||
msgid "User Roles are restored to WordPress default values. "
|
||||
msgstr ""
|
||||
"Los Roles de Usuario fueron restaurados a los predeterminados de WordPress"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1334
|
||||
#: ../includes/class-ure-lib.php:1337
|
||||
msgid "Help"
|
||||
msgstr "Ayuda"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1692
|
||||
#: ../includes/class-ure-lib.php:1695
|
||||
msgid "Error is occur. Please check the log file."
|
||||
msgstr "Un error ha ocurrido. Por favor revisa el archivo de registro."
|
||||
|
||||
#: ../includes/class-ure-lib.php:1735 ../includes/class-ure-lib.php:1802
|
||||
#: ../includes/class-ure-lib.php:1738 ../includes/class-ure-lib.php:1805
|
||||
msgid ""
|
||||
"Error: Role ID must contain latin characters, digits, hyphens or underscore "
|
||||
"only!"
|
||||
@@ -391,386 +391,386 @@ msgstr ""
|
||||
"Error: ¡La ID del Rol sólo debe contener caracteres alfanuméricos, guiones "
|
||||
"altos o bajos!"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1739 ../includes/class-ure-lib.php:1806
|
||||
#: ../includes/class-ure-lib.php:1742 ../includes/class-ure-lib.php:1809
|
||||
msgid ""
|
||||
"Error: WordPress does not support numeric Role name (ID). Add latin "
|
||||
"characters to it."
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-ure-lib.php:1754
|
||||
#: ../includes/class-ure-lib.php:1757
|
||||
#, php-format
|
||||
msgid "Role %s exists already"
|
||||
msgstr "El Rol %s ya existe"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1769
|
||||
#: ../includes/class-ure-lib.php:1772
|
||||
msgid "Error is encountered during new role create operation"
|
||||
msgstr "Un error fue encontrado durante la creación del nuevo Rol"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1771
|
||||
#: ../includes/class-ure-lib.php:1774
|
||||
#, php-format
|
||||
msgid "Role %s is created successfully"
|
||||
msgstr "El Rol %s fue creado exitosamente"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1795
|
||||
#: ../includes/class-ure-lib.php:1798
|
||||
msgid "Error: Role ID is empty!"
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-ure-lib.php:1813
|
||||
#: ../includes/class-ure-lib.php:1816
|
||||
msgid "Error: Empty role display name is not allowed."
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-ure-lib.php:1820
|
||||
#: ../includes/class-ure-lib.php:1823
|
||||
#, fuzzy, php-format
|
||||
msgid "Role %s does not exists"
|
||||
msgstr "no existe"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1828
|
||||
#: ../includes/class-ure-lib.php:1831
|
||||
#, fuzzy, php-format
|
||||
msgid "Role %s is renamed to %s successfully"
|
||||
msgstr "El Rol %s fue creado exitosamente"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1895
|
||||
#: ../includes/class-ure-lib.php:1898
|
||||
msgid "Error encountered during role delete operation"
|
||||
msgstr "Un error fue encontrado durante la eliminación del Rol"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1897
|
||||
#: ../includes/class-ure-lib.php:1900
|
||||
msgid "Unused roles are deleted successfully"
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-ure-lib.php:1899
|
||||
#: ../includes/class-ure-lib.php:1902
|
||||
#, php-format
|
||||
msgid "Role %s is deleted successfully"
|
||||
msgstr "El Rol %s fue eliminado exitosamente"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1924
|
||||
#: ../includes/class-ure-lib.php:1927
|
||||
msgid "Error encountered during default role change operation"
|
||||
msgstr "Un error fue encontrado durante el cambio del Rol predeterminado"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1930
|
||||
#: ../includes/class-ure-lib.php:1933
|
||||
#, php-format
|
||||
msgid "Default role for new users is set to %s successfully"
|
||||
msgstr "El Rol predeterminado para nuevos usuarios ha sido establecido a %s"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1949
|
||||
#: ../includes/class-ure-lib.php:1952
|
||||
msgid "Editor"
|
||||
msgstr "Editor"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1950
|
||||
#: ../includes/class-ure-lib.php:1953
|
||||
msgid "Author"
|
||||
msgstr "Autor"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1951
|
||||
#: ../includes/class-ure-lib.php:1954
|
||||
msgid "Contributor"
|
||||
msgstr "Contribuyente"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1952
|
||||
#: ../includes/class-ure-lib.php:1955
|
||||
msgid "Subscriber"
|
||||
msgstr "Suscriptor"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1954
|
||||
#: ../includes/class-ure-lib.php:1957
|
||||
msgid "Switch themes"
|
||||
msgstr "Cambiar temas (plantillas)"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1955
|
||||
#: ../includes/class-ure-lib.php:1958
|
||||
msgid "Edit themes"
|
||||
msgstr "Editar temas (plantillas)"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1956
|
||||
#: ../includes/class-ure-lib.php:1959
|
||||
msgid "Activate plugins"
|
||||
msgstr "Activar plugins"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1957
|
||||
#: ../includes/class-ure-lib.php:1960
|
||||
msgid "Edit plugins"
|
||||
msgstr "Editar plugins"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1958
|
||||
#: ../includes/class-ure-lib.php:1961
|
||||
msgid "Edit users"
|
||||
msgstr "Editar usuarios"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1959
|
||||
#: ../includes/class-ure-lib.php:1962
|
||||
msgid "Edit files"
|
||||
msgstr "Editar archivos"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1960
|
||||
#: ../includes/class-ure-lib.php:1963
|
||||
msgid "Manage options"
|
||||
msgstr "Administrar opciones"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1961
|
||||
#: ../includes/class-ure-lib.php:1964
|
||||
msgid "Moderate comments"
|
||||
msgstr "Moderar comentarios"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1962
|
||||
#: ../includes/class-ure-lib.php:1965
|
||||
msgid "Manage categories"
|
||||
msgstr "Administrar categorías"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1963
|
||||
#: ../includes/class-ure-lib.php:1966
|
||||
msgid "Manage links"
|
||||
msgstr "Administrar enlaces"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1964
|
||||
#: ../includes/class-ure-lib.php:1967
|
||||
msgid "Upload files"
|
||||
msgstr "Subir archivos"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1965
|
||||
#: ../includes/class-ure-lib.php:1968
|
||||
msgid "Import"
|
||||
msgstr "Importar"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1966
|
||||
#: ../includes/class-ure-lib.php:1969
|
||||
msgid "Unfiltered html"
|
||||
msgstr "HTML sin filtrar"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1967
|
||||
#: ../includes/class-ure-lib.php:1970
|
||||
msgid "Edit posts"
|
||||
msgstr "Editar entradas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1968
|
||||
#: ../includes/class-ure-lib.php:1971
|
||||
msgid "Edit others posts"
|
||||
msgstr "Editar entradas ajenas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1969
|
||||
#: ../includes/class-ure-lib.php:1972
|
||||
msgid "Edit published posts"
|
||||
msgstr "Editar entradas publicadas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1970
|
||||
#: ../includes/class-ure-lib.php:1973
|
||||
msgid "Publish posts"
|
||||
msgstr "Publicar entradas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1971
|
||||
#: ../includes/class-ure-lib.php:1974
|
||||
msgid "Edit pages"
|
||||
msgstr "Editar páginas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1972
|
||||
#: ../includes/class-ure-lib.php:1975
|
||||
msgid "Read"
|
||||
msgstr "Leer"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1973
|
||||
#: ../includes/class-ure-lib.php:1976
|
||||
msgid "Level 10"
|
||||
msgstr "Nivel 10"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1974
|
||||
#: ../includes/class-ure-lib.php:1977
|
||||
msgid "Level 9"
|
||||
msgstr "Nivel 9"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1975
|
||||
#: ../includes/class-ure-lib.php:1978
|
||||
msgid "Level 8"
|
||||
msgstr "Nivel 8"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1976
|
||||
#: ../includes/class-ure-lib.php:1979
|
||||
msgid "Level 7"
|
||||
msgstr "Nivel 7"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1977
|
||||
#: ../includes/class-ure-lib.php:1980
|
||||
msgid "Level 6"
|
||||
msgstr "Nivel 6"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1978
|
||||
#: ../includes/class-ure-lib.php:1981
|
||||
msgid "Level 5"
|
||||
msgstr "Nivel 5"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1979
|
||||
#: ../includes/class-ure-lib.php:1982
|
||||
msgid "Level 4"
|
||||
msgstr "Nivel 4"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1980
|
||||
#: ../includes/class-ure-lib.php:1983
|
||||
msgid "Level 3"
|
||||
msgstr "Nivel 3"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1981
|
||||
#: ../includes/class-ure-lib.php:1984
|
||||
msgid "Level 2"
|
||||
msgstr "Nivel 2"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1982
|
||||
#: ../includes/class-ure-lib.php:1985
|
||||
msgid "Level 1"
|
||||
msgstr "Nivel 1"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1983
|
||||
#: ../includes/class-ure-lib.php:1986
|
||||
msgid "Level 0"
|
||||
msgstr "Nivel 0"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1984
|
||||
#: ../includes/class-ure-lib.php:1987
|
||||
msgid "Edit others pages"
|
||||
msgstr "Editar páginas ajenas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1985
|
||||
#: ../includes/class-ure-lib.php:1988
|
||||
msgid "Edit published pages"
|
||||
msgstr "Editar páginas publicadas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1986
|
||||
#: ../includes/class-ure-lib.php:1989
|
||||
msgid "Publish pages"
|
||||
msgstr "Publicar páginas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1987
|
||||
#: ../includes/class-ure-lib.php:1990
|
||||
msgid "Delete pages"
|
||||
msgstr "Eliminar páginas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1988
|
||||
#: ../includes/class-ure-lib.php:1991
|
||||
msgid "Delete others pages"
|
||||
msgstr "Eliminar páginas ajenas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1989
|
||||
#: ../includes/class-ure-lib.php:1992
|
||||
msgid "Delete published pages"
|
||||
msgstr "Eliminar páginas publicadas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1990
|
||||
#: ../includes/class-ure-lib.php:1993
|
||||
msgid "Delete posts"
|
||||
msgstr "Eliminar entradas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1991
|
||||
#: ../includes/class-ure-lib.php:1994
|
||||
msgid "Delete others posts"
|
||||
msgstr "Eliminar entradas ajenas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1992
|
||||
#: ../includes/class-ure-lib.php:1995
|
||||
msgid "Delete published posts"
|
||||
msgstr "Eliminar entradas publicadas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1993
|
||||
#: ../includes/class-ure-lib.php:1996
|
||||
msgid "Delete private posts"
|
||||
msgstr "Eliminar entradas privadas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1994
|
||||
#: ../includes/class-ure-lib.php:1997
|
||||
msgid "Edit private posts"
|
||||
msgstr "Editar entradas privadas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1995
|
||||
#: ../includes/class-ure-lib.php:1998
|
||||
msgid "Read private posts"
|
||||
msgstr "Leer entradas privadas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1996
|
||||
#: ../includes/class-ure-lib.php:1999
|
||||
msgid "Delete private pages"
|
||||
msgstr "Eliminar páginas privadas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1997
|
||||
#: ../includes/class-ure-lib.php:2000
|
||||
msgid "Edit private pages"
|
||||
msgstr "Editar páginas privadas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1998
|
||||
#: ../includes/class-ure-lib.php:2001
|
||||
msgid "Read private pages"
|
||||
msgstr "Leer páginas privadas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1999
|
||||
#: ../includes/class-ure-lib.php:2002
|
||||
msgid "Delete users"
|
||||
msgstr "Eliminar usuarios"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2000
|
||||
#: ../includes/class-ure-lib.php:2003
|
||||
msgid "Create users"
|
||||
msgstr "Crear usuarios"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2001
|
||||
#: ../includes/class-ure-lib.php:2004
|
||||
msgid "Unfiltered upload"
|
||||
msgstr "Subir sin filtrado"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2002
|
||||
#: ../includes/class-ure-lib.php:2005
|
||||
msgid "Edit dashboard"
|
||||
msgstr "Editar escritorio"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2003
|
||||
#: ../includes/class-ure-lib.php:2006
|
||||
msgid "Update plugins"
|
||||
msgstr "Actualizar plugins"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2004
|
||||
#: ../includes/class-ure-lib.php:2007
|
||||
msgid "Delete plugins"
|
||||
msgstr "Eliminar plugins"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2005
|
||||
#: ../includes/class-ure-lib.php:2008
|
||||
msgid "Install plugins"
|
||||
msgstr "Instalar plugins"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2006
|
||||
#: ../includes/class-ure-lib.php:2009
|
||||
msgid "Update themes"
|
||||
msgstr "Actualizar temas (plantillas)"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2007
|
||||
#: ../includes/class-ure-lib.php:2010
|
||||
msgid "Install themes"
|
||||
msgstr "Instalar temas (plantillas)"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2008
|
||||
#: ../includes/class-ure-lib.php:2011
|
||||
msgid "Update core"
|
||||
msgstr "Actualizar núcleo"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2009
|
||||
#: ../includes/class-ure-lib.php:2012
|
||||
msgid "List users"
|
||||
msgstr "Listar usuarios"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2010
|
||||
#: ../includes/class-ure-lib.php:2013
|
||||
msgid "Remove users"
|
||||
msgstr "Eliminar usuarios"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2011
|
||||
#: ../includes/class-ure-lib.php:2014
|
||||
msgid "Add users"
|
||||
msgstr "Agregar usuarios"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2012
|
||||
#: ../includes/class-ure-lib.php:2015
|
||||
msgid "Promote users"
|
||||
msgstr "Promover usuarios"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2013
|
||||
#: ../includes/class-ure-lib.php:2016
|
||||
msgid "Edit theme options"
|
||||
msgstr "Editar opciones del tema (plantilla)"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2014
|
||||
#: ../includes/class-ure-lib.php:2017
|
||||
msgid "Delete themes"
|
||||
msgstr "Eliminar temas (plantillas)"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2015
|
||||
#: ../includes/class-ure-lib.php:2018
|
||||
msgid "Export"
|
||||
msgstr "Exportar"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2125
|
||||
#: ../includes/class-ure-lib.php:2128
|
||||
msgid "Error: Capability name must contain latin characters and digits only!"
|
||||
msgstr ""
|
||||
"Error: El nombre de la Capacidad sólo debe contener caracteres alfanuméricos!"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2138
|
||||
#: ../includes/class-ure-lib.php:2141
|
||||
#, php-format
|
||||
msgid "Capability %s is added successfully"
|
||||
msgstr "La Capacidad %s fue agregada exitosamente"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2140
|
||||
#: ../includes/class-ure-lib.php:2143
|
||||
#, php-format
|
||||
msgid "Capability %s exists already"
|
||||
msgstr "La Capacidad %s ya existe"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2165
|
||||
#: ../includes/class-ure-lib.php:2168
|
||||
#, php-format
|
||||
msgid "Error! You do not have permission to delete this capability: %s!"
|
||||
msgstr ""
|
||||
"¡Error! No cuentas con suficientes permisos para eliminar esta Capacidad: %s!"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2184
|
||||
#: ../includes/class-ure-lib.php:2187
|
||||
#, php-format
|
||||
msgid "Capability %s is removed successfully"
|
||||
msgstr "La Capacidad %s fue eliminada exitosamente"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2288
|
||||
#: ../includes/class-ure-lib.php:2291
|
||||
msgid "Version:"
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-ure-lib.php:2289
|
||||
#: ../includes/class-ure-lib.php:2292
|
||||
msgid "Author's website"
|
||||
msgstr "Sitio web del Autor"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2290
|
||||
#: ../includes/class-ure-lib.php:2293
|
||||
msgid "Plugin webpage"
|
||||
msgstr "Página web del Plugin"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2291
|
||||
#: ../includes/class-ure-lib.php:2294
|
||||
#, fuzzy
|
||||
msgid "Plugin download"
|
||||
msgstr "Página web del Plugin"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2293
|
||||
#: ../includes/class-ure-lib.php:2296
|
||||
msgid "FAQ"
|
||||
msgstr "FAQ"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2341
|
||||
#: ../includes/class-ure-lib.php:2344
|
||||
msgid "None"
|
||||
msgstr "Ninguno"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2368
|
||||
#: ../includes/class-ure-lib.php:2371
|
||||
msgid "Delete All Unused Roles"
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-ure-lib.php:2392
|
||||
#: ../includes/class-ure-lib.php:2395
|
||||
msgid "— No role for this site —"
|
||||
msgstr ""
|
||||
|
||||
@@ -816,16 +816,18 @@ msgid ""
|
||||
"deprecated capabilities."
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:41
|
||||
#, fuzzy
|
||||
msgid "select roles below"
|
||||
msgstr "Deseleccionar todo"
|
||||
#: ../includes/class-ure-screen-help.php:42
|
||||
msgid ""
|
||||
"Show at the \"Users\" page a quant of users without role. Module allows to "
|
||||
"assign all of them an empty role \"No rights\", in order to look on the "
|
||||
"users list with role \"No rights\" at the separate tab then."
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:56
|
||||
#: ../includes/class-ure-screen-help.php:59
|
||||
msgid "Other default roles for new registered user"
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:57
|
||||
#: ../includes/class-ure-screen-help.php:60
|
||||
msgid ""
|
||||
"select roles below to assign them to the new user automatically as an "
|
||||
"addition to the primary role. Note for multisite environment: take into "
|
||||
@@ -833,17 +835,21 @@ msgid ""
|
||||
"assigned to the new registered users."
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:75
|
||||
#: ../includes/class-ure-screen-help.php:78
|
||||
msgid "Allow non super-admininstrators to create, edit and delete users"
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:76
|
||||
#: ../includes/class-ure-screen-help.php:79
|
||||
msgid ""
|
||||
"Super administrator only may create, edit and delete users under WordPress "
|
||||
"multi-site by default. Turn this option on in order to remove this "
|
||||
"limitation."
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "select roles below"
|
||||
#~ msgstr "Deseleccionar todo"
|
||||
|
||||
#~ msgid "About this Plugin:"
|
||||
#~ msgstr "Acerca de este Plugin:"
|
||||
|
||||
|
||||
Binary file not shown.
@@ -2,9 +2,9 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: User Role Editor 2.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-10-01 12:45+0700\n"
|
||||
"POT-Creation-Date: 2014-10-21 10:21+0700\n"
|
||||
"PO-Revision-Date: \n"
|
||||
"Last-Translator: Vladimir Garagulya <vladimir@shinephp.com>\n"
|
||||
"Last-Translator: Vladimir Garagulya <support@role-editor.com>\n"
|
||||
"Language-Team: Morteza Gholami <Morteza.Gholami@Yahoo.Com>\n"
|
||||
"Language: en_RU\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
@@ -37,7 +37,7 @@ msgid "Default Roles"
|
||||
msgstr "نقشهای پیشفرض"
|
||||
|
||||
#: ../includes/settings-template.php:34
|
||||
#: ../includes/class-user-role-editor.php:564
|
||||
#: ../includes/class-user-role-editor.php:565
|
||||
msgid "Multisite"
|
||||
msgstr "چندسایتی"
|
||||
|
||||
@@ -66,7 +66,7 @@ msgid "Save"
|
||||
msgstr "ذخیره"
|
||||
|
||||
#: ../includes/settings-template.php:102
|
||||
#: ../includes/class-ure-screen-help.php:40
|
||||
#: ../includes/class-ure-screen-help.php:41
|
||||
msgid "Count users without role"
|
||||
msgstr "شمارش کاربران بدون نقش"
|
||||
|
||||
@@ -117,115 +117,115 @@ msgid "Settings"
|
||||
msgstr "تنظیمات"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:525
|
||||
#: ../includes/class-ure-lib.php:2292
|
||||
#: ../includes/class-ure-lib.php:2295
|
||||
msgid "Changelog"
|
||||
msgstr "گزارش تغییرات"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:573
|
||||
#: ../includes/class-user-role-editor.php:601
|
||||
#: ../includes/class-user-role-editor.php:946
|
||||
#: ../includes/class-ure-lib.php:248
|
||||
#: ../includes/class-user-role-editor.php:575
|
||||
#: ../includes/class-user-role-editor.php:603
|
||||
#: ../includes/class-user-role-editor.php:948
|
||||
#: ../includes/class-ure-lib.php:251
|
||||
msgid "User Role Editor"
|
||||
msgstr "ویرایشگر نقش کاربر"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:658
|
||||
#: ../includes/class-user-role-editor.php:676
|
||||
#: ../includes/class-user-role-editor.php:720
|
||||
#: ../includes/class-user-role-editor.php:660
|
||||
#: ../includes/class-user-role-editor.php:678
|
||||
#: ../includes/class-user-role-editor.php:722
|
||||
msgid "User Role Editor options are updated"
|
||||
msgstr "تنظیمات ویرایشگر نقش کاربر بروز شد"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:704
|
||||
#: ../includes/class-user-role-editor.php:706
|
||||
msgid "Default Roles are updated"
|
||||
msgstr "نقشهای پیش فرض بروز شدند"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:728
|
||||
#: ../includes/class-user-role-editor.php:730
|
||||
msgid ""
|
||||
"You do not have sufficient permissions to manage options for User Role "
|
||||
"Editor."
|
||||
msgstr "شما مجوز کافی برای مدیریت تنظیمات ویرایشگر نقش کاربر را ندارید."
|
||||
|
||||
#: ../includes/class-user-role-editor.php:807
|
||||
#: ../includes/class-user-role-editor.php:809
|
||||
msgid "Insufficient permissions to work with User Role Editor"
|
||||
msgstr "مجوز ناکافی برای کار با ویرایشگر نقش کاربر"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:888
|
||||
#: ../includes/class-user-role-editor.php:890
|
||||
msgid "Select All"
|
||||
msgstr "انتخاب همه"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:889
|
||||
#: ../includes/class-user-role-editor.php:891
|
||||
msgid "Unselect All"
|
||||
msgstr "عدمانتخاب همه"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:890
|
||||
#: ../includes/class-user-role-editor.php:892
|
||||
msgid "Reverse"
|
||||
msgstr "وارونه"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:891
|
||||
#: ../includes/class-user-role-editor.php:893
|
||||
msgid "Update"
|
||||
msgstr "بروزرسانی"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:892
|
||||
#: ../includes/class-user-role-editor.php:894
|
||||
msgid "Please confirm permissions update"
|
||||
msgstr "لطفا مجوز بروزرسانی را تایید کنید"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:893
|
||||
#: ../includes/class-user-role-editor.php:895
|
||||
msgid "Add New Role"
|
||||
msgstr "افزودن نقش جدید"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:894
|
||||
#: ../includes/class-user-role-editor.php:899
|
||||
#: ../includes/class-user-role-editor.php:896
|
||||
#: ../includes/class-user-role-editor.php:901
|
||||
#, fuzzy
|
||||
msgid "Rename Role"
|
||||
msgstr "حذف نقش"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:895
|
||||
#: ../includes/class-user-role-editor.php:897
|
||||
msgid " Role name (ID) can not be empty!"
|
||||
msgstr " نام نقش (شناسه) نمی تواند خالی باشد!"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:896
|
||||
#: ../includes/class-user-role-editor.php:898
|
||||
msgid ""
|
||||
" Role name (ID) must contain latin characters, digits, hyphens or underscore "
|
||||
"only!"
|
||||
msgstr ""
|
||||
" نام نقش (شناسه) باید فقط شامل حروف لاتین، اعداد، خط فاصله یا زیرخط باشد!"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:897
|
||||
#: ../includes/class-user-role-editor.php:899
|
||||
msgid ""
|
||||
" WordPress does not support numeric Role name (ID). Add latin characters to "
|
||||
"it."
|
||||
msgstr ""
|
||||
" وردپرس از نام نقش (شناسه) عددی پشتیبانی نمیکند. حروف لاتین به آن اضافه کنید."
|
||||
|
||||
#: ../includes/class-user-role-editor.php:898
|
||||
#: ../includes/class-user-role-editor.php:900
|
||||
msgid "Add Role"
|
||||
msgstr "افزودن نقش"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:900
|
||||
#: ../includes/class-user-role-editor.php:902
|
||||
msgid "Delete Role"
|
||||
msgstr "حذف نقش"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:901
|
||||
#: ../includes/class-user-role-editor.php:903
|
||||
msgid "Cancel"
|
||||
msgstr "لغو"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:902
|
||||
#: ../includes/class-user-role-editor.php:904
|
||||
msgid "Add Capability"
|
||||
msgstr "افزودن قابلیت"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:903
|
||||
#: ../includes/class-user-role-editor.php:912
|
||||
#: ../includes/class-user-role-editor.php:905
|
||||
#: ../includes/class-user-role-editor.php:914
|
||||
msgid "Delete Capability"
|
||||
msgstr "حذف قابلیت"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:904
|
||||
#: ../includes/class-user-role-editor.php:906
|
||||
msgid "Reset"
|
||||
msgstr "بازنشانی"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:905
|
||||
#: ../includes/class-user-role-editor.php:907
|
||||
msgid "DANGER! Resetting will restore default settings from WordPress Core."
|
||||
msgstr "خطر! بازنشانی، تنظیمات پیشفرض را از هستهی وردپرس بازمیگرداند."
|
||||
|
||||
#: ../includes/class-user-role-editor.php:906
|
||||
#: ../includes/class-user-role-editor.php:908
|
||||
msgid ""
|
||||
"If any plugins have changed capabilities in any way upon installation (such "
|
||||
"as S2Member, WooCommerce, and many more), those capabilities will be DELETED!"
|
||||
@@ -233,7 +233,7 @@ msgstr ""
|
||||
"اگر هریک از افزونهها پس از نصب به هر نحو قابلیتها را تغییر دهند (مانند "
|
||||
"S2Member ، WooCommerce و بسیاری دیگر) آن قابلیتها حذف خواهند شد!"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:907
|
||||
#: ../includes/class-user-role-editor.php:909
|
||||
msgid ""
|
||||
"For more information on how to undo changes and restore plugin capabilities "
|
||||
"go to"
|
||||
@@ -241,19 +241,19 @@ msgstr ""
|
||||
"برای کسب اطلاعات بیشتر درباره چگونگی خنثیسازی تغییرات و ترمیمکردن قابلیت ها "
|
||||
"مراجعه کنید به"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:909
|
||||
#: ../includes/class-user-role-editor.php:911
|
||||
msgid "Continue?"
|
||||
msgstr "ادامه؟"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:910
|
||||
#: ../includes/class-user-role-editor.php:912
|
||||
msgid "Default Role"
|
||||
msgstr "نقش پیشفرض"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:911
|
||||
#: ../includes/class-user-role-editor.php:913
|
||||
msgid "Set New Default Role"
|
||||
msgstr "نشاندن نقش پیشفرض جدید"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:913
|
||||
#: ../includes/class-user-role-editor.php:915
|
||||
msgid ""
|
||||
"Warning! Be careful - removing critical capability could crash some plugin "
|
||||
"or other custom code"
|
||||
@@ -261,23 +261,23 @@ msgstr ""
|
||||
"اخطار! مراقب باشید - حذف قابلیت مهم میتواند برخی از افزونهها یا دیگر کدهای "
|
||||
"سفارشی را دچار سانحه کند"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:914
|
||||
#: ../includes/class-user-role-editor.php:916
|
||||
msgid " Capability name (ID) can not be empty!"
|
||||
msgstr " نام قابلیت (شناسه) نمی تواند خالی باشد!"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:915
|
||||
#: ../includes/class-user-role-editor.php:917
|
||||
msgid ""
|
||||
" Capability name (ID) must contain latin characters, digits, hyphens or "
|
||||
"underscore only!"
|
||||
msgstr ""
|
||||
" نام قابلیت (شناسه) باید فقط شامل حروف لاتین، اعداد، خط فاصله یا زیرخط باشد!"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:949
|
||||
#: ../includes/class-user-role-editor.php:978
|
||||
#: ../includes/class-user-role-editor.php:951
|
||||
#: ../includes/class-user-role-editor.php:980
|
||||
msgid "Other Roles"
|
||||
msgstr "دیگر نقشها"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:960
|
||||
#: ../includes/class-user-role-editor.php:962
|
||||
msgid "Edit"
|
||||
msgstr "ویرایش"
|
||||
|
||||
@@ -309,86 +309,86 @@ msgstr "فیلتر سریع:"
|
||||
msgid "Custom capabilities:"
|
||||
msgstr "قابلیتهای سفارشی:"
|
||||
|
||||
#: ../includes/class-ure-lib.php:156
|
||||
#: ../includes/class-ure-lib.php:159
|
||||
msgid "Error: wrong request"
|
||||
msgstr "خطا: درخواست اشتباه"
|
||||
|
||||
#: ../includes/class-ure-lib.php:189 ../includes/class-ure-lib.php:200
|
||||
#: ../includes/class-ure-lib.php:192 ../includes/class-ure-lib.php:203
|
||||
msgid "Role name (ID): "
|
||||
msgstr "نام نقش (شناسه): "
|
||||
|
||||
#: ../includes/class-ure-lib.php:191 ../includes/class-ure-lib.php:202
|
||||
#: ../includes/class-ure-lib.php:194 ../includes/class-ure-lib.php:205
|
||||
msgid "Display Role Name: "
|
||||
msgstr "نمایش نام نقش: "
|
||||
|
||||
#: ../includes/class-ure-lib.php:193
|
||||
#: ../includes/class-ure-lib.php:196
|
||||
msgid "Make copy of: "
|
||||
msgstr "ایجاد رونوشت از: "
|
||||
|
||||
#: ../includes/class-ure-lib.php:209
|
||||
#: ../includes/class-ure-lib.php:212
|
||||
msgid "Select Role:"
|
||||
msgstr "انتخاب نقش:"
|
||||
|
||||
#: ../includes/class-ure-lib.php:224
|
||||
#: ../includes/class-ure-lib.php:227
|
||||
msgid "Delete:"
|
||||
msgstr "حذف:"
|
||||
|
||||
#: ../includes/class-ure-lib.php:231
|
||||
#: ../includes/class-ure-lib.php:234
|
||||
msgid "Capability name (ID): "
|
||||
msgstr "نام قابلیت (شناسه): "
|
||||
|
||||
#: ../includes/class-ure-lib.php:345
|
||||
#: ../includes/class-ure-lib.php:348
|
||||
msgid "Error: "
|
||||
msgstr "خطا: "
|
||||
|
||||
#: ../includes/class-ure-lib.php:345
|
||||
#: ../includes/class-ure-lib.php:348
|
||||
msgid "Role"
|
||||
msgstr "نقش"
|
||||
|
||||
#: ../includes/class-ure-lib.php:346
|
||||
#: ../includes/class-ure-lib.php:349
|
||||
msgid "does not exist"
|
||||
msgstr "موجود نمیباشد"
|
||||
|
||||
#: ../includes/class-ure-lib.php:389
|
||||
#: ../includes/class-ure-lib.php:392
|
||||
msgid "Role is updated successfully"
|
||||
msgstr "نقش با موفقیت بروز شد"
|
||||
|
||||
#: ../includes/class-ure-lib.php:391
|
||||
#: ../includes/class-ure-lib.php:394
|
||||
msgid "Roles are updated for all network"
|
||||
msgstr "نقشها برای تمامی شبکه بروز شد"
|
||||
|
||||
#: ../includes/class-ure-lib.php:397
|
||||
#: ../includes/class-ure-lib.php:400
|
||||
msgid "Error occured during role(s) update"
|
||||
msgstr "خطایی در هنگام بروزسانی نقش(ها) رخ داد"
|
||||
|
||||
#: ../includes/class-ure-lib.php:404
|
||||
#: ../includes/class-ure-lib.php:407
|
||||
msgid "User capabilities are updated successfully"
|
||||
msgstr "قابلیتهای کاربر با موفقیت بروز شدند"
|
||||
|
||||
#: ../includes/class-ure-lib.php:409
|
||||
#: ../includes/class-ure-lib.php:412
|
||||
msgid "Error occured during user update"
|
||||
msgstr "خطایی در هنگام بروزرسانی کاربر رخ داد"
|
||||
|
||||
#: ../includes/class-ure-lib.php:467
|
||||
#: ../includes/class-ure-lib.php:470
|
||||
msgid "User Roles are restored to WordPress default values. "
|
||||
msgstr "نقشهای کاربر به مقدار پیشفرض وردپرس ترمیم شد."
|
||||
|
||||
#: ../includes/class-ure-lib.php:1334
|
||||
#: ../includes/class-ure-lib.php:1337
|
||||
msgid "Help"
|
||||
msgstr "راهنما"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1692
|
||||
#: ../includes/class-ure-lib.php:1695
|
||||
msgid "Error is occur. Please check the log file."
|
||||
msgstr "خطایی رخ داده است. لطفا فایل گزارش را چک کنید."
|
||||
|
||||
#: ../includes/class-ure-lib.php:1735 ../includes/class-ure-lib.php:1802
|
||||
#: ../includes/class-ure-lib.php:1738 ../includes/class-ure-lib.php:1805
|
||||
msgid ""
|
||||
"Error: Role ID must contain latin characters, digits, hyphens or underscore "
|
||||
"only!"
|
||||
msgstr ""
|
||||
"خطا: شناسهی نقش باید فقط شامل حروف لاتین، اعداد، خط فاصله یا زیرخط باشد!"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1739 ../includes/class-ure-lib.php:1806
|
||||
#: ../includes/class-ure-lib.php:1742 ../includes/class-ure-lib.php:1809
|
||||
msgid ""
|
||||
"Error: WordPress does not support numeric Role name (ID). Add latin "
|
||||
"characters to it."
|
||||
@@ -396,377 +396,377 @@ msgstr ""
|
||||
"خطا: وردپرس از نام نقش (شناسه) عددی پشتیبانی نمیکند. حروف لاتین به آن اضافه "
|
||||
"کنید."
|
||||
|
||||
#: ../includes/class-ure-lib.php:1754
|
||||
#: ../includes/class-ure-lib.php:1757
|
||||
#, php-format
|
||||
msgid "Role %s exists already"
|
||||
msgstr "نقش %s از پیش موجود است"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1769
|
||||
#: ../includes/class-ure-lib.php:1772
|
||||
msgid "Error is encountered during new role create operation"
|
||||
msgstr "با خطایی در هنگام عملیات ساخت نقش جدید روبرو شدیم"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1771
|
||||
#: ../includes/class-ure-lib.php:1774
|
||||
#, php-format
|
||||
msgid "Role %s is created successfully"
|
||||
msgstr "نقش %s با موفقیت ایجاد شد"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1795
|
||||
#: ../includes/class-ure-lib.php:1798
|
||||
msgid "Error: Role ID is empty!"
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-ure-lib.php:1813
|
||||
#: ../includes/class-ure-lib.php:1816
|
||||
msgid "Error: Empty role display name is not allowed."
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-ure-lib.php:1820
|
||||
#: ../includes/class-ure-lib.php:1823
|
||||
#, fuzzy, php-format
|
||||
msgid "Role %s does not exists"
|
||||
msgstr "موجود نمیباشد"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1828
|
||||
#: ../includes/class-ure-lib.php:1831
|
||||
#, fuzzy, php-format
|
||||
msgid "Role %s is renamed to %s successfully"
|
||||
msgstr "نقش %s با موفقیت ایجاد شد"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1895
|
||||
#: ../includes/class-ure-lib.php:1898
|
||||
msgid "Error encountered during role delete operation"
|
||||
msgstr "با خطایی در هنگام عملیات حذف نقش روبرو شدیم"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1897
|
||||
#: ../includes/class-ure-lib.php:1900
|
||||
msgid "Unused roles are deleted successfully"
|
||||
msgstr "نقشهای استفاده نشده با موفقیت حذف شدند"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1899
|
||||
#: ../includes/class-ure-lib.php:1902
|
||||
#, php-format
|
||||
msgid "Role %s is deleted successfully"
|
||||
msgstr "نقش %s با موفقیت حذف شد"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1924
|
||||
#: ../includes/class-ure-lib.php:1927
|
||||
msgid "Error encountered during default role change operation"
|
||||
msgstr "با خطایی در هنگام عملیات تغییر نقش پیشفرض روبرو شدیم"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1930
|
||||
#: ../includes/class-ure-lib.php:1933
|
||||
#, php-format
|
||||
msgid "Default role for new users is set to %s successfully"
|
||||
msgstr "نقش پیشفرض برای کاربران جدید با موفقیت روی %s نشانده شد"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1949
|
||||
#: ../includes/class-ure-lib.php:1952
|
||||
msgid "Editor"
|
||||
msgstr "ویرایشگر"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1950
|
||||
#: ../includes/class-ure-lib.php:1953
|
||||
msgid "Author"
|
||||
msgstr "نویسنده"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1951
|
||||
#: ../includes/class-ure-lib.php:1954
|
||||
msgid "Contributor"
|
||||
msgstr "مشارکتکننده"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1952
|
||||
#: ../includes/class-ure-lib.php:1955
|
||||
msgid "Subscriber"
|
||||
msgstr "مشترک"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1954
|
||||
#: ../includes/class-ure-lib.php:1957
|
||||
msgid "Switch themes"
|
||||
msgstr "تغییر پوستهها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1955
|
||||
#: ../includes/class-ure-lib.php:1958
|
||||
msgid "Edit themes"
|
||||
msgstr "ویرایش پوستهها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1956
|
||||
#: ../includes/class-ure-lib.php:1959
|
||||
msgid "Activate plugins"
|
||||
msgstr "فعالسازی افزونهها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1957
|
||||
#: ../includes/class-ure-lib.php:1960
|
||||
msgid "Edit plugins"
|
||||
msgstr "ویرایش افزونهها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1958
|
||||
#: ../includes/class-ure-lib.php:1961
|
||||
msgid "Edit users"
|
||||
msgstr "ویرایش کاربران"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1959
|
||||
#: ../includes/class-ure-lib.php:1962
|
||||
msgid "Edit files"
|
||||
msgstr "ویرایش فایلها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1960
|
||||
#: ../includes/class-ure-lib.php:1963
|
||||
msgid "Manage options"
|
||||
msgstr "مدیریت تنظیمات"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1961
|
||||
#: ../includes/class-ure-lib.php:1964
|
||||
msgid "Moderate comments"
|
||||
msgstr "مدیریت دیدگاهها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1962
|
||||
#: ../includes/class-ure-lib.php:1965
|
||||
msgid "Manage categories"
|
||||
msgstr "مدیریت دستهها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1963
|
||||
#: ../includes/class-ure-lib.php:1966
|
||||
msgid "Manage links"
|
||||
msgstr "مدیریت پیوندها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1964
|
||||
#: ../includes/class-ure-lib.php:1967
|
||||
msgid "Upload files"
|
||||
msgstr "بارگذاری فایلها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1965
|
||||
#: ../includes/class-ure-lib.php:1968
|
||||
msgid "Import"
|
||||
msgstr "درونریزی"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1966
|
||||
#: ../includes/class-ure-lib.php:1969
|
||||
msgid "Unfiltered html"
|
||||
msgstr "اچتیامال فیلترنشده"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1967
|
||||
#: ../includes/class-ure-lib.php:1970
|
||||
msgid "Edit posts"
|
||||
msgstr "ویرایش نوشتهها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1968
|
||||
#: ../includes/class-ure-lib.php:1971
|
||||
msgid "Edit others posts"
|
||||
msgstr "ویرایش نوشتهی دیگران"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1969
|
||||
#: ../includes/class-ure-lib.php:1972
|
||||
msgid "Edit published posts"
|
||||
msgstr "ویرایش نوشتههای منتشرشده"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1970
|
||||
#: ../includes/class-ure-lib.php:1973
|
||||
msgid "Publish posts"
|
||||
msgstr "انتشار نوشتهها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1971
|
||||
#: ../includes/class-ure-lib.php:1974
|
||||
msgid "Edit pages"
|
||||
msgstr "ویرایش صفحات"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1972
|
||||
#: ../includes/class-ure-lib.php:1975
|
||||
msgid "Read"
|
||||
msgstr "خواندن"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1973
|
||||
#: ../includes/class-ure-lib.php:1976
|
||||
msgid "Level 10"
|
||||
msgstr "سطح ۱۰"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1974
|
||||
#: ../includes/class-ure-lib.php:1977
|
||||
msgid "Level 9"
|
||||
msgstr "سطح ۹"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1975
|
||||
#: ../includes/class-ure-lib.php:1978
|
||||
msgid "Level 8"
|
||||
msgstr "سطح ۸"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1976
|
||||
#: ../includes/class-ure-lib.php:1979
|
||||
msgid "Level 7"
|
||||
msgstr "سطح ۷"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1977
|
||||
#: ../includes/class-ure-lib.php:1980
|
||||
msgid "Level 6"
|
||||
msgstr "سطح ۶"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1978
|
||||
#: ../includes/class-ure-lib.php:1981
|
||||
msgid "Level 5"
|
||||
msgstr "سطح ۵"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1979
|
||||
#: ../includes/class-ure-lib.php:1982
|
||||
msgid "Level 4"
|
||||
msgstr "سطح ۴"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1980
|
||||
#: ../includes/class-ure-lib.php:1983
|
||||
msgid "Level 3"
|
||||
msgstr "سطح ۳"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1981
|
||||
#: ../includes/class-ure-lib.php:1984
|
||||
msgid "Level 2"
|
||||
msgstr "سطح ۲"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1982
|
||||
#: ../includes/class-ure-lib.php:1985
|
||||
msgid "Level 1"
|
||||
msgstr "سطح ۱"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1983
|
||||
#: ../includes/class-ure-lib.php:1986
|
||||
msgid "Level 0"
|
||||
msgstr "سطح ۰"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1984
|
||||
#: ../includes/class-ure-lib.php:1987
|
||||
msgid "Edit others pages"
|
||||
msgstr "ویرایش صفحات دیگران"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1985
|
||||
#: ../includes/class-ure-lib.php:1988
|
||||
msgid "Edit published pages"
|
||||
msgstr "ویرایش صفحات منتشرشده"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1986
|
||||
#: ../includes/class-ure-lib.php:1989
|
||||
msgid "Publish pages"
|
||||
msgstr "انتشار صفحات"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1987
|
||||
#: ../includes/class-ure-lib.php:1990
|
||||
msgid "Delete pages"
|
||||
msgstr "حذف صفحات"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1988
|
||||
#: ../includes/class-ure-lib.php:1991
|
||||
msgid "Delete others pages"
|
||||
msgstr "حذف صفحات دیگران"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1989
|
||||
#: ../includes/class-ure-lib.php:1992
|
||||
msgid "Delete published pages"
|
||||
msgstr "حذف صفحات منتشرشده"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1990
|
||||
#: ../includes/class-ure-lib.php:1993
|
||||
msgid "Delete posts"
|
||||
msgstr "حذف صفحات"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1991
|
||||
#: ../includes/class-ure-lib.php:1994
|
||||
msgid "Delete others posts"
|
||||
msgstr "حذف نوشتههای دیگران"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1992
|
||||
#: ../includes/class-ure-lib.php:1995
|
||||
msgid "Delete published posts"
|
||||
msgstr "حذف نوشتههای منتشرشده"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1993
|
||||
#: ../includes/class-ure-lib.php:1996
|
||||
msgid "Delete private posts"
|
||||
msgstr "حذف نوشتههای خصوصی"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1994
|
||||
#: ../includes/class-ure-lib.php:1997
|
||||
msgid "Edit private posts"
|
||||
msgstr "ویرایش نوشتههای خصوصی"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1995
|
||||
#: ../includes/class-ure-lib.php:1998
|
||||
msgid "Read private posts"
|
||||
msgstr "خواندن نوشتههای خصوصی"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1996
|
||||
#: ../includes/class-ure-lib.php:1999
|
||||
msgid "Delete private pages"
|
||||
msgstr "حذف صفحات خصوصی"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1997
|
||||
#: ../includes/class-ure-lib.php:2000
|
||||
msgid "Edit private pages"
|
||||
msgstr "ویرایش صفحات خصوصی"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1998
|
||||
#: ../includes/class-ure-lib.php:2001
|
||||
msgid "Read private pages"
|
||||
msgstr "خواندن صفحات خصوصی"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1999
|
||||
#: ../includes/class-ure-lib.php:2002
|
||||
msgid "Delete users"
|
||||
msgstr "حذف کاربران"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2000
|
||||
#: ../includes/class-ure-lib.php:2003
|
||||
msgid "Create users"
|
||||
msgstr "ایجاد کاربران"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2001
|
||||
#: ../includes/class-ure-lib.php:2004
|
||||
msgid "Unfiltered upload"
|
||||
msgstr "بارگذاری فیلترشده"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2002
|
||||
#: ../includes/class-ure-lib.php:2005
|
||||
msgid "Edit dashboard"
|
||||
msgstr "ویرایش پیشخوان"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2003
|
||||
#: ../includes/class-ure-lib.php:2006
|
||||
msgid "Update plugins"
|
||||
msgstr "بروزرسانی افزونهها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2004
|
||||
#: ../includes/class-ure-lib.php:2007
|
||||
msgid "Delete plugins"
|
||||
msgstr "حذف افزونهها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2005
|
||||
#: ../includes/class-ure-lib.php:2008
|
||||
msgid "Install plugins"
|
||||
msgstr "نصب افزونهها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2006
|
||||
#: ../includes/class-ure-lib.php:2009
|
||||
msgid "Update themes"
|
||||
msgstr "بروزرسانی پوستهها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2007
|
||||
#: ../includes/class-ure-lib.php:2010
|
||||
msgid "Install themes"
|
||||
msgstr "نصب پوستهها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2008
|
||||
#: ../includes/class-ure-lib.php:2011
|
||||
msgid "Update core"
|
||||
msgstr "بروزرسانی هسته"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2009
|
||||
#: ../includes/class-ure-lib.php:2012
|
||||
msgid "List users"
|
||||
msgstr "فهرست کاربران"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2010
|
||||
#: ../includes/class-ure-lib.php:2013
|
||||
msgid "Remove users"
|
||||
msgstr "حذف کابران"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2011
|
||||
#: ../includes/class-ure-lib.php:2014
|
||||
msgid "Add users"
|
||||
msgstr "افزودن کاربران"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2012
|
||||
#: ../includes/class-ure-lib.php:2015
|
||||
msgid "Promote users"
|
||||
msgstr "ارتقاء کاربران"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2013
|
||||
#: ../includes/class-ure-lib.php:2016
|
||||
msgid "Edit theme options"
|
||||
msgstr "ویرایش تنظیمات پوسته"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2014
|
||||
#: ../includes/class-ure-lib.php:2017
|
||||
msgid "Delete themes"
|
||||
msgstr "حذف پوستهها"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2015
|
||||
#: ../includes/class-ure-lib.php:2018
|
||||
msgid "Export"
|
||||
msgstr "برونریزی"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2125
|
||||
#: ../includes/class-ure-lib.php:2128
|
||||
msgid "Error: Capability name must contain latin characters and digits only!"
|
||||
msgstr "خطا: نام قابلیت باید فقط شامل حروف لاتین و اعداد باشد!"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2138
|
||||
#: ../includes/class-ure-lib.php:2141
|
||||
#, php-format
|
||||
msgid "Capability %s is added successfully"
|
||||
msgstr "قابلیت %s با موفقیت افزوده شد"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2140
|
||||
#: ../includes/class-ure-lib.php:2143
|
||||
#, php-format
|
||||
msgid "Capability %s exists already"
|
||||
msgstr "قابلیت %s از پیش موجود است"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2165
|
||||
#: ../includes/class-ure-lib.php:2168
|
||||
#, php-format
|
||||
msgid "Error! You do not have permission to delete this capability: %s!"
|
||||
msgstr "خطا! شما اجازهی حذف این قابلیت را ندارید: %s!"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2184
|
||||
#: ../includes/class-ure-lib.php:2187
|
||||
#, php-format
|
||||
msgid "Capability %s is removed successfully"
|
||||
msgstr "قابلیت %s با موفقیت حذف شد"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2288
|
||||
#: ../includes/class-ure-lib.php:2291
|
||||
msgid "Version:"
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-ure-lib.php:2289
|
||||
#: ../includes/class-ure-lib.php:2292
|
||||
msgid "Author's website"
|
||||
msgstr "وبگاه نویسنده"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2290
|
||||
#: ../includes/class-ure-lib.php:2293
|
||||
msgid "Plugin webpage"
|
||||
msgstr "صفحه افزونه"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2291
|
||||
#: ../includes/class-ure-lib.php:2294
|
||||
msgid "Plugin download"
|
||||
msgstr "بارگیری افزونه"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2293
|
||||
#: ../includes/class-ure-lib.php:2296
|
||||
msgid "FAQ"
|
||||
msgstr "سوالات مکرر"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2341
|
||||
#: ../includes/class-ure-lib.php:2344
|
||||
msgid "None"
|
||||
msgstr "هیچکدام"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2368
|
||||
#: ../includes/class-ure-lib.php:2371
|
||||
msgid "Delete All Unused Roles"
|
||||
msgstr "حذف همهی نقشهای استفادهنشده"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2392
|
||||
#: ../includes/class-ure-lib.php:2395
|
||||
msgid "— No role for this site —"
|
||||
msgstr "— هیچ نقشی برای این سایت —"
|
||||
|
||||
@@ -822,17 +822,19 @@ msgstr ""
|
||||
"کد افزونهها باقی گذاشته شدهاند. روشن کردن این گزینه، آن قابلیتهای بد دانسته "
|
||||
"شده را نمایش میدهد."
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:41
|
||||
#, fuzzy
|
||||
msgid "select roles below"
|
||||
msgstr "عدمانتخاب همه"
|
||||
#: ../includes/class-ure-screen-help.php:42
|
||||
msgid ""
|
||||
"Show at the \"Users\" page a quant of users without role. Module allows to "
|
||||
"assign all of them an empty role \"No rights\", in order to look on the "
|
||||
"users list with role \"No rights\" at the separate tab then."
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:56
|
||||
#: ../includes/class-ure-screen-help.php:59
|
||||
#, fuzzy
|
||||
msgid "Other default roles for new registered user"
|
||||
msgstr "دیگر نقشهای پیشفرض برای کاربران تازه ثبتنام شده: "
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:57
|
||||
#: ../includes/class-ure-screen-help.php:60
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"select roles below to assign them to the new user automatically as an "
|
||||
@@ -843,12 +845,12 @@ msgstr ""
|
||||
"قابل توجه محیط چند سایتی: رفتن به حسابی که در سایت نقشهای پیش فرض دیگری "
|
||||
"موجود است، به منظور اختصاص دادن به کاربران تازه ثبتنام شده."
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:75
|
||||
#: ../includes/class-ure-screen-help.php:78
|
||||
#, fuzzy
|
||||
msgid "Allow non super-admininstrators to create, edit and delete users"
|
||||
msgstr "اجازه به غیر مدیران اصلی برای ایجاد، ویرایش و حذف کاربران"
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:76
|
||||
#: ../includes/class-ure-screen-help.php:79
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
"Super administrator only may create, edit and delete users under WordPress "
|
||||
@@ -858,6 +860,10 @@ msgstr ""
|
||||
"در وردپرس چند سایتی تنها مدیران اصلی اجازهی ایجاد، ویرایش و حذف کاربران را "
|
||||
"دارند. این "
|
||||
|
||||
#, fuzzy
|
||||
#~ msgid "select roles below"
|
||||
#~ msgstr "عدمانتخاب همه"
|
||||
|
||||
#~ msgid "Overview"
|
||||
#~ msgstr "مرور کلی"
|
||||
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,890 @@
|
||||
#
|
||||
# Translators:
|
||||
# FxB <fxb@wp-translations.org>, 2014
|
||||
# Sébastien Grillot <sebastien@insidedaweb.fr>, 2014
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: User Role Editor\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2014-10-21 10:23+0700\n"
|
||||
"PO-Revision-Date: 2014-10-21 10:24+0700\n"
|
||||
"Last-Translator: Vladimir Garagulya <support@role-editor.com>\n"
|
||||
"Language-Team: French (France) (http://www.transifex.com/projects/p/user-"
|
||||
"role-editor/language/fr_FR/)\n"
|
||||
"Language: fr_FR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
"X-Generator: Poedit 1.5.4\n"
|
||||
"X-Poedit-Basepath: .\n"
|
||||
"X-Poedit-KeywordsList: __;_e;esc_html__;esc_html_e\n"
|
||||
"X-Poedit-SourceCharset: UTF-8\n"
|
||||
"X-Poedit-SearchPath-0: ..\n"
|
||||
|
||||
#: ../includes/settings-template.php:17
|
||||
msgid "User Role Editor - Options"
|
||||
msgstr "User Role Editor - Options"
|
||||
|
||||
#: ../includes/settings-template.php:21
|
||||
#: ../includes/class-user-role-editor.php:547
|
||||
msgid "General"
|
||||
msgstr "Général"
|
||||
|
||||
#: ../includes/settings-template.php:26
|
||||
#: ../includes/class-user-role-editor.php:553
|
||||
msgid "Additional Modules"
|
||||
msgstr "Modules complémentaires"
|
||||
|
||||
#: ../includes/settings-template.php:30
|
||||
#: ../includes/class-user-role-editor.php:559
|
||||
msgid "Default Roles"
|
||||
msgstr " Rôles par défaut"
|
||||
|
||||
#: ../includes/settings-template.php:34
|
||||
#: ../includes/class-user-role-editor.php:565
|
||||
msgid "Multisite"
|
||||
msgstr "Multisite"
|
||||
|
||||
#: ../includes/settings-template.php:39
|
||||
msgid "About"
|
||||
msgstr "À propos"
|
||||
|
||||
#: ../includes/settings-template.php:53
|
||||
#: ../includes/class-ure-screen-help.php:15
|
||||
msgid "Show Administrator role at User Role Editor"
|
||||
msgstr "Montrer le rôle Administrateur dans User Role Editor"
|
||||
|
||||
#: ../includes/settings-template.php:61
|
||||
#: ../includes/class-ure-screen-help.php:18
|
||||
msgid "Show capabilities in the human readable form"
|
||||
msgstr "Montrer les capacités dans une forme lisible par l'homme"
|
||||
|
||||
#: ../includes/settings-template.php:69 ../includes/ure-role-edit.php:40
|
||||
#: ../includes/ure-user-edit.php:63 ../includes/class-ure-screen-help.php:21
|
||||
msgid "Show deprecated capabilities"
|
||||
msgstr "Voir les capacités obsolètes"
|
||||
|
||||
#: ../includes/settings-template.php:81 ../includes/settings-template.php:117
|
||||
#: ../includes/settings-template.php:149 ../includes/settings-template.php:181
|
||||
msgid "Save"
|
||||
msgstr "Sauvegarder"
|
||||
|
||||
#: ../includes/settings-template.php:102
|
||||
#: ../includes/class-ure-screen-help.php:41
|
||||
msgid "Count users without role"
|
||||
msgstr "Compter les utilisateurs sans rôle"
|
||||
|
||||
#: ../includes/settings-template.php:129
|
||||
msgid "Primary default role: "
|
||||
msgstr "Rôle primaire par défaut : "
|
||||
|
||||
#: ../includes/settings-template.php:136
|
||||
msgid "Other default roles for new registered user: "
|
||||
msgstr "Autres rôles par défaut pour les nouveaux utilisateurs enregistrés : "
|
||||
|
||||
#: ../includes/settings-template.php:142
|
||||
msgid ""
|
||||
"Note for multisite environment: take into account that other default roles "
|
||||
"should exist at the site, in order to be assigned to the new registered "
|
||||
"users."
|
||||
msgstr ""
|
||||
"Note pour les environnements multisite : Prenez en considération que "
|
||||
"d'autres rôles par défauts doivent exister sur le site, afin qu'ils soient "
|
||||
"assignés aux nouveaux utilisateurs enregistrés."
|
||||
|
||||
#: ../includes/settings-template.php:168
|
||||
msgid "Allow non super administrators to create, edit, and delete users"
|
||||
msgstr ""
|
||||
"Autoriser les utilisateurs qui ne sont pas super-administrateurs à créer, "
|
||||
"modifier ou supprimer des utilisateurs"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:195
|
||||
msgid "Change role for users without role"
|
||||
msgstr "Changer le rôle pour les utilisateurs sans rôle"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:196
|
||||
msgid "No rights"
|
||||
msgstr "Aucun droit"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:197
|
||||
msgid "Provide new role"
|
||||
msgstr "Fournir un nouveau rôle"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:281
|
||||
#: ../includes/class-user-role-editor.php:283
|
||||
msgid "You do not have permission to edit this user."
|
||||
msgstr ""
|
||||
"Vous n’avez pas l’autorisation de modifier cet utilisateur."
|
||||
|
||||
#: ../includes/class-user-role-editor.php:422
|
||||
msgid "Capabilities"
|
||||
msgstr "Capacités"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:514
|
||||
msgid "Settings"
|
||||
msgstr "Paramètres"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:525
|
||||
#: ../includes/class-ure-lib.php:2295
|
||||
msgid "Changelog"
|
||||
msgstr "Journal des modifications"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:575
|
||||
#: ../includes/class-user-role-editor.php:603
|
||||
#: ../includes/class-user-role-editor.php:948
|
||||
#: ../includes/class-ure-lib.php:251
|
||||
msgid "User Role Editor"
|
||||
msgstr "User Role Editor"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:660
|
||||
#: ../includes/class-user-role-editor.php:678
|
||||
#: ../includes/class-user-role-editor.php:722
|
||||
msgid "User Role Editor options are updated"
|
||||
msgstr "Les options de User Role Editor ont été mises à jour"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:706
|
||||
msgid "Default Roles are updated"
|
||||
msgstr "Les rôles par défauts ont été mis à jour"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:730
|
||||
msgid ""
|
||||
"You do not have sufficient permissions to manage options for User Role "
|
||||
"Editor."
|
||||
msgstr ""
|
||||
"Vous n'avez pas les permissions suffisantes pour gérer les options de User "
|
||||
"Role Editor."
|
||||
|
||||
#: ../includes/class-user-role-editor.php:809
|
||||
msgid "Insufficient permissions to work with User Role Editor"
|
||||
msgstr "Permissions insuffisantes pour travailler avec User Role Editor"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:890
|
||||
msgid "Select All"
|
||||
msgstr "Tout sélectionner"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:891
|
||||
msgid "Unselect All"
|
||||
msgstr "Tout déselectionner"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:892
|
||||
msgid "Reverse"
|
||||
msgstr "Inverser"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:893
|
||||
msgid "Update"
|
||||
msgstr "Mettre à jour"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:894
|
||||
msgid "Please confirm permissions update"
|
||||
msgstr "Merci de confirmer la mise à jour des permissions"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:895
|
||||
msgid "Add New Role"
|
||||
msgstr "Ajouter un nouveau rôle"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:896
|
||||
#: ../includes/class-user-role-editor.php:901
|
||||
msgid "Rename Role"
|
||||
msgstr "Renommer le Rôle"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:897
|
||||
msgid " Role name (ID) can not be empty!"
|
||||
msgstr "Le nom du rôle (ID) ne peut pas être vide !"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:898
|
||||
msgid ""
|
||||
" Role name (ID) must contain latin characters, digits, hyphens or underscore "
|
||||
"only!"
|
||||
msgstr ""
|
||||
"Le nom du rôle (ID) peut contenir seulement des caractères latin, des "
|
||||
"chiffres, des traits d'union ou des caractères de soulignement !"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:899
|
||||
msgid ""
|
||||
" WordPress does not support numeric Role name (ID). Add latin characters to "
|
||||
"it."
|
||||
msgstr ""
|
||||
"WordPress ne supporte pas les noms de rôle (ID) alphanumériques. Ajouter des "
|
||||
"caractères latin à celui-ci."
|
||||
|
||||
#: ../includes/class-user-role-editor.php:900
|
||||
msgid "Add Role"
|
||||
msgstr "Ajouter un rôle"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:902
|
||||
msgid "Delete Role"
|
||||
msgstr "Supprimer un rôle"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:903
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:904
|
||||
msgid "Add Capability"
|
||||
msgstr "Ajouter la capacité"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:905
|
||||
#: ../includes/class-user-role-editor.php:914
|
||||
msgid "Delete Capability"
|
||||
msgstr "Supprimer la capacité"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:906
|
||||
msgid "Reset"
|
||||
msgstr "Réinitialiser"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:907
|
||||
msgid "DANGER! Resetting will restore default settings from WordPress Core."
|
||||
msgstr ""
|
||||
"DANGER ! La réinitialisation va restaurer les paramètres par défaut du cœur "
|
||||
"de WordPress."
|
||||
|
||||
#: ../includes/class-user-role-editor.php:908
|
||||
msgid ""
|
||||
"If any plugins have changed capabilities in any way upon installation (such "
|
||||
"as S2Member, WooCommerce, and many more), those capabilities will be DELETED!"
|
||||
msgstr ""
|
||||
"Si aucune extension n'a modifié les capacités (comme S2Member ou WooCommerce "
|
||||
"et bien d'autres), ces capacités seront SUPPRIMÉES ! "
|
||||
|
||||
#: ../includes/class-user-role-editor.php:909
|
||||
msgid ""
|
||||
"For more information on how to undo changes and restore plugin capabilities "
|
||||
"go to"
|
||||
msgstr ""
|
||||
"Pour de plus amples informations sur la façon d'annuler les modifications et "
|
||||
"rétablir les fonctions de l'extension, aller sur "
|
||||
|
||||
#: ../includes/class-user-role-editor.php:911
|
||||
msgid "Continue?"
|
||||
msgstr "Continuer ?"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:912
|
||||
msgid "Default Role"
|
||||
msgstr " Rôle par défaut"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:913
|
||||
msgid "Set New Default Role"
|
||||
msgstr "Régler le nouveau rôle par défaut"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:915
|
||||
msgid ""
|
||||
"Warning! Be careful - removing critical capability could crash some plugin "
|
||||
"or other custom code"
|
||||
msgstr ""
|
||||
"Attention ! Enlever des capacités critiques pourrait faire planter certaines "
|
||||
"extension ou autres codes personnalisés"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:916
|
||||
msgid " Capability name (ID) can not be empty!"
|
||||
msgstr "Le nom de la capacité (ID) ne peut pas être vide !"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:917
|
||||
msgid ""
|
||||
" Capability name (ID) must contain latin characters, digits, hyphens or "
|
||||
"underscore only!"
|
||||
msgstr ""
|
||||
"Le nom de la capacité (ID) doit contenir seulement des caractères latins, "
|
||||
"des chiffres, des traits d'union ou des caractères de soulignement !"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:951
|
||||
#: ../includes/class-user-role-editor.php:980
|
||||
msgid "Other Roles"
|
||||
msgstr "Autres rôles"
|
||||
|
||||
#: ../includes/class-user-role-editor.php:962
|
||||
msgid "Edit"
|
||||
msgstr "Modifier"
|
||||
|
||||
#: ../includes/ure-role-edit.php:17
|
||||
msgid "Select Role and change its capabilities:"
|
||||
msgstr "Sélectionner un rôle et changer ses capacités : "
|
||||
|
||||
#: ../includes/ure-role-edit.php:30 ../includes/ure-user-edit.php:53
|
||||
msgid "Show capabilities in human readable form"
|
||||
msgstr "Montrer les capacités dans une forme lisible par l'homme"
|
||||
|
||||
#: ../includes/ure-role-edit.php:44
|
||||
msgid "If checked, then apply action to ALL sites of this Network"
|
||||
msgstr ""
|
||||
"Si coché, alors appliquer toutes les actions à tous les sites du réseau"
|
||||
|
||||
#: ../includes/ure-role-edit.php:56
|
||||
msgid "Apply to All Sites"
|
||||
msgstr "Appliquer à tous les sites"
|
||||
|
||||
#: ../includes/ure-role-edit.php:63 ../includes/ure-user-edit.php:109
|
||||
msgid "Core capabilities:"
|
||||
msgstr "Capacités du core :"
|
||||
|
||||
#: ../includes/ure-role-edit.php:65 ../includes/ure-user-edit.php:111
|
||||
msgid "Quick filter:"
|
||||
msgstr "Filtre rapide : "
|
||||
|
||||
#: ../includes/ure-role-edit.php:83 ../includes/ure-user-edit.php:130
|
||||
msgid "Custom capabilities:"
|
||||
msgstr "Capacités personnalisées :"
|
||||
|
||||
#: ../includes/class-ure-lib.php:159
|
||||
msgid "Error: wrong request"
|
||||
msgstr "Erreur : mauvaise requête"
|
||||
|
||||
#: ../includes/class-ure-lib.php:192 ../includes/class-ure-lib.php:203
|
||||
msgid "Role name (ID): "
|
||||
msgstr "Nom du rôle (ID) :"
|
||||
|
||||
#: ../includes/class-ure-lib.php:194 ../includes/class-ure-lib.php:205
|
||||
msgid "Display Role Name: "
|
||||
msgstr "Afficher le nom du rôle : "
|
||||
|
||||
#: ../includes/class-ure-lib.php:196
|
||||
msgid "Make copy of: "
|
||||
msgstr "Faire une copie de : "
|
||||
|
||||
#: ../includes/class-ure-lib.php:212
|
||||
msgid "Select Role:"
|
||||
msgstr "Sélectionner le rôle :"
|
||||
|
||||
#: ../includes/class-ure-lib.php:227
|
||||
msgid "Delete:"
|
||||
msgstr "Supprimer :"
|
||||
|
||||
#: ../includes/class-ure-lib.php:234
|
||||
msgid "Capability name (ID): "
|
||||
msgstr "Nom de la capacité (ID) : "
|
||||
|
||||
#: ../includes/class-ure-lib.php:348
|
||||
msgid "Error: "
|
||||
msgstr "Erreur : "
|
||||
|
||||
#: ../includes/class-ure-lib.php:348
|
||||
msgid "Role"
|
||||
msgstr "Rôle"
|
||||
|
||||
#: ../includes/class-ure-lib.php:349
|
||||
msgid "does not exist"
|
||||
msgstr "N'existe pas"
|
||||
|
||||
#: ../includes/class-ure-lib.php:392
|
||||
msgid "Role is updated successfully"
|
||||
msgstr "Le rôle à été bien été mis à jour"
|
||||
|
||||
#: ../includes/class-ure-lib.php:394
|
||||
msgid "Roles are updated for all network"
|
||||
msgstr "Les rôles ont été mis à jour sur tous les réseaux"
|
||||
|
||||
#: ../includes/class-ure-lib.php:400
|
||||
msgid "Error occured during role(s) update"
|
||||
msgstr "Une erreur est survenue pendant la mise à jour du (des) rôle(s)"
|
||||
|
||||
#: ../includes/class-ure-lib.php:407
|
||||
msgid "User capabilities are updated successfully"
|
||||
msgstr "Les capacités de l'utilisateur ont bien été mises à jour"
|
||||
|
||||
#: ../includes/class-ure-lib.php:412
|
||||
msgid "Error occured during user update"
|
||||
msgstr "Une erreur est survenue pendant le mise à jour de l'utilisateur"
|
||||
|
||||
#: ../includes/class-ure-lib.php:470
|
||||
msgid "User Roles are restored to WordPress default values. "
|
||||
msgstr ""
|
||||
"Les rôles utilisateurs ont été restaurées selon les valeurs par défauts de "
|
||||
"WordPress."
|
||||
|
||||
#: ../includes/class-ure-lib.php:1337
|
||||
msgid "Help"
|
||||
msgstr "Aide"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1695
|
||||
msgid "Error is occur. Please check the log file."
|
||||
msgstr "Une erreur s'est produite. Merci de vérifier les journaux."
|
||||
|
||||
#: ../includes/class-ure-lib.php:1738 ../includes/class-ure-lib.php:1805
|
||||
msgid ""
|
||||
"Error: Role ID must contain latin characters, digits, hyphens or underscore "
|
||||
"only!"
|
||||
msgstr ""
|
||||
"Erreur : L'ID du rôle doit contenir des caractères latins, des chiffres, des "
|
||||
"traits d'union ou des caractères de soulignement seulement !"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1742 ../includes/class-ure-lib.php:1809
|
||||
msgid ""
|
||||
"Error: WordPress does not support numeric Role name (ID). Add latin "
|
||||
"characters to it."
|
||||
msgstr ""
|
||||
"Erreur : WordPress ne supporte pas les noms de rôles (ID) numérique. Ajouter "
|
||||
"des caractères latins à celui-ci."
|
||||
|
||||
#: ../includes/class-ure-lib.php:1757
|
||||
#, php-format
|
||||
msgid "Role %s exists already"
|
||||
msgstr "Le rôle %s existe déjà"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1772
|
||||
msgid "Error is encountered during new role create operation"
|
||||
msgstr ""
|
||||
"Une erreur est survenue pendant l'opération de création du nouveau rôle"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1774
|
||||
#, php-format
|
||||
msgid "Role %s is created successfully"
|
||||
msgstr "Le rôle %s à bien été créé "
|
||||
|
||||
#: ../includes/class-ure-lib.php:1798
|
||||
msgid "Error: Role ID is empty!"
|
||||
msgstr "Erreur : L'ID du rôle est vide !"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1816
|
||||
msgid "Error: Empty role display name is not allowed."
|
||||
msgstr "Erreur : Un nom d'affichage de rôle vide n'est pas autorisé."
|
||||
|
||||
#: ../includes/class-ure-lib.php:1823
|
||||
#, php-format
|
||||
msgid "Role %s does not exists"
|
||||
msgstr "Le rôle %s n’existe pas."
|
||||
|
||||
#: ../includes/class-ure-lib.php:1831
|
||||
#, php-format
|
||||
msgid "Role %s is renamed to %s successfully"
|
||||
msgstr "Le rôle %s à bien été renommé en %s. "
|
||||
|
||||
#: ../includes/class-ure-lib.php:1898
|
||||
msgid "Error encountered during role delete operation"
|
||||
msgstr "Une erreur est survenue pendant l'opération de suppression du rôle"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1900
|
||||
msgid "Unused roles are deleted successfully"
|
||||
msgstr "Les rôles inutilisés ont bien été supprimés"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1902
|
||||
#, php-format
|
||||
msgid "Role %s is deleted successfully"
|
||||
msgstr "Le rôle %s à bien été supprimé"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1927
|
||||
msgid "Error encountered during default role change operation"
|
||||
msgstr ""
|
||||
"Une erreur est survenue pendant l'opération de changement du rôle par défaut"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1933
|
||||
#, php-format
|
||||
msgid "Default role for new users is set to %s successfully"
|
||||
msgstr "Le rôle par défaut pour les nouveaux utilisateur à bien été mis à %s"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1952
|
||||
msgid "Editor"
|
||||
msgstr "Éditeur"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1953
|
||||
msgid "Author"
|
||||
msgstr "Auteur"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1954
|
||||
msgid "Contributor"
|
||||
msgstr "Contributeur"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1955
|
||||
msgid "Subscriber"
|
||||
msgstr "Abonné"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1957
|
||||
msgid "Switch themes"
|
||||
msgstr "Changer de thèmes"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1958
|
||||
msgid "Edit themes"
|
||||
msgstr "Modifier les thèmes"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1959
|
||||
msgid "Activate plugins"
|
||||
msgstr "Activer les extensions"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1960
|
||||
msgid "Edit plugins"
|
||||
msgstr "Modifier les extensions"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1961
|
||||
msgid "Edit users"
|
||||
msgstr "Modifier les utilisateurs"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1962
|
||||
msgid "Edit files"
|
||||
msgstr "Modifier les fichiers"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1963
|
||||
msgid "Manage options"
|
||||
msgstr "Gérer les options"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1964
|
||||
msgid "Moderate comments"
|
||||
msgstr "Modérer les commentaires"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1965
|
||||
msgid "Manage categories"
|
||||
msgstr "Gérer les catégories"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1966
|
||||
msgid "Manage links"
|
||||
msgstr "Gérer les liens"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1967
|
||||
msgid "Upload files"
|
||||
msgstr "Mettre en ligne des fichiers"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1968
|
||||
msgid "Import"
|
||||
msgstr "Importer"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1969
|
||||
msgid "Unfiltered html"
|
||||
msgstr "HTML non filtré"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1970
|
||||
msgid "Edit posts"
|
||||
msgstr "Modifier les articles"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1971
|
||||
msgid "Edit others posts"
|
||||
msgstr "Modifier les autres billets"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1972
|
||||
msgid "Edit published posts"
|
||||
msgstr "Modifier les billets publiés "
|
||||
|
||||
#: ../includes/class-ure-lib.php:1973
|
||||
msgid "Publish posts"
|
||||
msgstr "Publier des articles"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1974
|
||||
msgid "Edit pages"
|
||||
msgstr "Modifier des pages"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1975
|
||||
msgid "Read"
|
||||
msgstr "Lire"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1976
|
||||
msgid "Level 10"
|
||||
msgstr "Niveau 10"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1977
|
||||
msgid "Level 9"
|
||||
msgstr "Niveau 9"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1978
|
||||
msgid "Level 8"
|
||||
msgstr "Niveau 8"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1979
|
||||
msgid "Level 7"
|
||||
msgstr "Niveau 7"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1980
|
||||
msgid "Level 6"
|
||||
msgstr "Niveau 6"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1981
|
||||
msgid "Level 5"
|
||||
msgstr "Niveau 5"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1982
|
||||
msgid "Level 4"
|
||||
msgstr "Niveau 4"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1983
|
||||
msgid "Level 3"
|
||||
msgstr "Niveau 3"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1984
|
||||
msgid "Level 2"
|
||||
msgstr "Niveau 2"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1985
|
||||
msgid "Level 1"
|
||||
msgstr "Niveau 1"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1986
|
||||
msgid "Level 0"
|
||||
msgstr "Niveau 0"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1987
|
||||
msgid "Edit others pages"
|
||||
msgstr "Modifier les autres pages"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1988
|
||||
msgid "Edit published pages"
|
||||
msgstr "Modifier les pages publiées "
|
||||
|
||||
#: ../includes/class-ure-lib.php:1989
|
||||
msgid "Publish pages"
|
||||
msgstr "Publier les pages"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1990
|
||||
msgid "Delete pages"
|
||||
msgstr "Supprimer les pages"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1991
|
||||
msgid "Delete others pages"
|
||||
msgstr "Supprimer les autres pages"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1992
|
||||
msgid "Delete published pages"
|
||||
msgstr "Supprimer les pages publiées"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1993
|
||||
msgid "Delete posts"
|
||||
msgstr "Supprimer les articles"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1994
|
||||
msgid "Delete others posts"
|
||||
msgstr "Supprimer les autres billets"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1995
|
||||
msgid "Delete published posts"
|
||||
msgstr "Supprimer les billets publiés"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1996
|
||||
msgid "Delete private posts"
|
||||
msgstr "Supprimer les billets privés"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1997
|
||||
msgid "Edit private posts"
|
||||
msgstr "Modifier les billets privés"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1998
|
||||
msgid "Read private posts"
|
||||
msgstr "Lire les billets privés"
|
||||
|
||||
#: ../includes/class-ure-lib.php:1999
|
||||
msgid "Delete private pages"
|
||||
msgstr "Supprimer les pages privées "
|
||||
|
||||
#: ../includes/class-ure-lib.php:2000
|
||||
msgid "Edit private pages"
|
||||
msgstr "Modifier les pages privées"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2001
|
||||
msgid "Read private pages"
|
||||
msgstr "Lire les pages privées"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2002
|
||||
msgid "Delete users"
|
||||
msgstr "Supprimer les utilisateurs"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2003
|
||||
msgid "Create users"
|
||||
msgstr "Créer des utilisateurs"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2004
|
||||
msgid "Unfiltered upload"
|
||||
msgstr "Téléchargement non filtré"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2005
|
||||
msgid "Edit dashboard"
|
||||
msgstr "Modifier le tableau de bord"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2006
|
||||
msgid "Update plugins"
|
||||
msgstr "Mettre à jour les extensions"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2007
|
||||
msgid "Delete plugins"
|
||||
msgstr "Supprimer les extensions"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2008
|
||||
msgid "Install plugins"
|
||||
msgstr "Installer les extensions"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2009
|
||||
msgid "Update themes"
|
||||
msgstr "Mettre à jour les thèmes"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2010
|
||||
msgid "Install themes"
|
||||
msgstr "Installer des thèmes"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2011
|
||||
msgid "Update core"
|
||||
msgstr "Mettre à jour le cœur"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2012
|
||||
msgid "List users"
|
||||
msgstr "Lister les utilisateurs"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2013
|
||||
msgid "Remove users"
|
||||
msgstr "Supprimer des utilisateurs"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2014
|
||||
msgid "Add users"
|
||||
msgstr "Ajouter les utilisateurs"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2015
|
||||
msgid "Promote users"
|
||||
msgstr "Promouvoir des utilisateurs"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2016
|
||||
msgid "Edit theme options"
|
||||
msgstr "Modifier les options du thème"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2017
|
||||
msgid "Delete themes"
|
||||
msgstr "Supprimer des thèmes"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2018
|
||||
msgid "Export"
|
||||
msgstr "Exporter"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2128
|
||||
msgid "Error: Capability name must contain latin characters and digits only!"
|
||||
msgstr ""
|
||||
"Erreur : Le nom de la capacité doit seulement contenir des caractères latins "
|
||||
"et des chiffres !"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2141
|
||||
#, php-format
|
||||
msgid "Capability %s is added successfully"
|
||||
msgstr "La capacité %s à bien été ajoutée "
|
||||
|
||||
#: ../includes/class-ure-lib.php:2143
|
||||
#, php-format
|
||||
msgid "Capability %s exists already"
|
||||
msgstr "La capacité %s existe déjà"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2168
|
||||
#, php-format
|
||||
msgid "Error! You do not have permission to delete this capability: %s!"
|
||||
msgstr ""
|
||||
"Erreur ! Vous n'avez pas la permission de supprimer cette capacité. %s !"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2187
|
||||
#, php-format
|
||||
msgid "Capability %s is removed successfully"
|
||||
msgstr "La capacité %s à bien été supprimée "
|
||||
|
||||
#: ../includes/class-ure-lib.php:2291
|
||||
msgid "Version:"
|
||||
msgstr "Version :"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2292
|
||||
msgid "Author's website"
|
||||
msgstr "Site internet de l'auteur"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2293
|
||||
msgid "Plugin webpage"
|
||||
msgstr "Page web de l'extension"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2294
|
||||
msgid "Plugin download"
|
||||
msgstr "Téléchargement de l'extension"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2296
|
||||
msgid "FAQ"
|
||||
msgstr "FAQ"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2344
|
||||
msgid "None"
|
||||
msgstr "Aucun"
|
||||
|
||||
#: ../includes/class-ure-lib.php:2371
|
||||
msgid "Delete All Unused Roles"
|
||||
msgstr "Supprimer tous les rôles inutilisés "
|
||||
|
||||
#: ../includes/class-ure-lib.php:2395
|
||||
msgid "— No role for this site —"
|
||||
msgstr "— Pas de rôle sur ce site —"
|
||||
|
||||
#: ../includes/ure-user-edit.php:31
|
||||
msgid "Network Super Admin"
|
||||
msgstr "Super Administrateur du réseau"
|
||||
|
||||
#: ../includes/ure-user-edit.php:34
|
||||
msgid "Change capabilities for user"
|
||||
msgstr "Changer les capacité pour l'utilisateur"
|
||||
|
||||
#: ../includes/ure-user-edit.php:71
|
||||
msgid "Primary Role:"
|
||||
msgstr "Rôle primaire : "
|
||||
|
||||
#: ../includes/ure-user-edit.php:81
|
||||
msgid "bbPress Role:"
|
||||
msgstr "Rôle bbPress : "
|
||||
|
||||
#: ../includes/ure-user-edit.php:91
|
||||
msgid "Other Roles:"
|
||||
msgstr "Autres rôles :"
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:16
|
||||
msgid ""
|
||||
"turn this option on in order to make the \"Administrator\" role available at "
|
||||
"the User Role Editor roles selection drop-down list. It is hidden by default "
|
||||
"for security reasons."
|
||||
msgstr ""
|
||||
"activer cette option pour rendre le rôle \"Administrateur\" disponible dans "
|
||||
"la liste de sélection de User Role Editor. Cela est caché par défaut pour "
|
||||
"des raisons de sécurité."
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:19
|
||||
msgid ""
|
||||
"automatically converts capability names from the technical form for internal "
|
||||
"use like \"edit_others_posts\" to more user friendly form, e.g. \"Edit "
|
||||
"others posts\"."
|
||||
msgstr ""
|
||||
"converti automatiquement les noms techniques des capacités comme "
|
||||
"\"modifier_autres_articles\" en une version plus lisible, p. ex. \"Modifier "
|
||||
"autres articles\"."
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:22
|
||||
msgid ""
|
||||
"Capabilities like \"level_0\", \"level_1\" are deprecated and are not used "
|
||||
"by WordPress. They are left at the user roles for the compatibility purpose "
|
||||
"with the old themes and plugins code. Turning on this option will show those "
|
||||
"deprecated capabilities."
|
||||
msgstr ""
|
||||
"Les capacités de \"level_0\", \"level_1\" sont dépréciées et ne sont plus "
|
||||
"utilisées par WordPress. Elles sont réglées au niveau utilisateur pour des "
|
||||
"raisons de compatibilité avec les anciens thèmes et extensions. Activer "
|
||||
"cette option affichera ces capacités dépréciées."
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:42
|
||||
msgid ""
|
||||
"Show at the \"Users\" page a quant of users without role. Module allows to "
|
||||
"assign all of them an empty role \"No rights\", in order to look on the "
|
||||
"users list with role \"No rights\" at the separate tab then."
|
||||
msgstr ""
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:59
|
||||
msgid "Other default roles for new registered user"
|
||||
msgstr "Autres rôles par défaut pour les nouveaux utilisateurs enregistrés"
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:60
|
||||
msgid ""
|
||||
"select roles below to assign them to the new user automatically as an "
|
||||
"addition to the primary role. Note for multisite environment: take into "
|
||||
"account that other default roles should exist at the site, in order to be "
|
||||
"assigned to the new registered users."
|
||||
msgstr ""
|
||||
"sélectionner les rôles ci-dessous a assigner automatiquement aux nouveaux "
|
||||
"utilisateurs en plus de leur rôle premier. Remarque pour les environnements "
|
||||
"multisite : Prenez en considération que d'autres rôles par défauts doivent "
|
||||
"exister sur le site, afin qu'ils soient assignés aux nouveaux utilisateurs "
|
||||
"enregistrés."
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:78
|
||||
msgid "Allow non super-admininstrators to create, edit and delete users"
|
||||
msgstr ""
|
||||
"Autoriser les utilisateurs qui ne sont pas super-administrateurs à créer, "
|
||||
"modifier ou supprimer des utilisateurs"
|
||||
|
||||
#: ../includes/class-ure-screen-help.php:79
|
||||
msgid ""
|
||||
"Super administrator only may create, edit and delete users under WordPress "
|
||||
"multi-site by default. Turn this option on in order to remove this "
|
||||
"limitation."
|
||||
msgstr ""
|
||||
"Seul le Super Administrateur peut créer, modifier ou supprimer des "
|
||||
"utilisateurs sur des installations WordPress multisite par défaut. Activer "
|
||||
"cette option pour supprimer cette limitation."
|
||||
|
||||
#~ msgid "select roles below"
|
||||
#~ msgstr "sélectionner le rôle ci-dessous"
|
||||
Binary file not shown.
File diff suppressed because it is too large.
Load diff
Loaded 100 of 146 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user