Wordpres++

This commit is contained in:
nikolark committed 2016-01-27 09:52:51 +01:00
1 parent 3e89c56288
commit b3863fc635
152 files changed
+4903 -3602

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
WordPress - Web publishing software
Copyright 2015 by the contributors
Copyright 2016 by the contributors
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
+1 -1
View File
@@ -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.4
<br /> Version 4.4.1
</h1>
<p style="text-align: center">Semantic Personal Publishing Platform</p>
+9 -1
View File
@@ -48,6 +48,14 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
<a href="freedoms.php" class="nav-tab"><?php _e( 'Freedoms' ); ?></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.', 52 ), '4.4.1', number_format_i18n( 52 ) ); ?>
<?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'https://codex.wordpress.org/Version_4.4.1' ); ?>
</p>
</div>
<div class="headline-feature feature-video">
<iframe width="1050" height="591" src="<?php echo esc_url( $video_url ); ?>" frameborder="0" allowfullscreen></iframe>
<script src="https://videopress.com/videopress-iframe.js"></script>
@@ -67,7 +75,7 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
<p><?php _e( 'Twenty Sixteen was built to look great on any device. A fluid grid design, flexible header, fun color schemes, and more, will make your content shine.' ); ?></p>
<div class="horizontal-image">
<div class="content">
<img class="feature-image horizontal-screen" src="https://s.w.org/images/core/4.4/twenty-sixteen-dark-fullsize-2x.png" alt="" srcset="https://s.w.org/images/core/4.4/twenty-sixteen-dark-smartphone-1x.png 268w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-smartphone-2x.png 535w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-desktop-1x.png 558w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-fullsize-1x.png 783w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-desktop-2x.png 1116w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-fullsize-2x.png 1566w" sizes="(max-width: 500px) calc((100vw - 40px) * .8), (max-width: 782px) calc((100vw - 70px) * .8), (max-width: 960px) calc((100vw - 116px) * .5216), (max-width: 1290px) calc((100vw - 240px) * .5216), 548px" />
<img class="feature-image horizontal-screen" src="https://s.w.org/images/core/4.4/twenty-sixteen-dark-fullsize-2x.png?2" alt="" srcset="https://s.w.org/images/core/4.4/twenty-sixteen-dark-smartphone-1x.png?2 268w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-smartphone-2x.png?2 535w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-desktop-1x.png?2 558w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-fullsize-1x.png?2 783w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-desktop-2x.png?2 1116w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-fullsize-2x.png?2 1566w" sizes="(max-width: 500px) calc((100vw - 40px) * .8), (max-width: 782px) calc((100vw - 70px) * .8), (max-width: 960px) calc((100vw - 116px) * .5216), (max-width: 1290px) calc((100vw - 240px) * .5216), 548px" />
</div>
</div>
</div>
@@ -326,16 +326,14 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
* @param string $file
* @return bool
*/
public function exists( $file ) {
$path = dirname( $file );
$filename = basename( $file );
public function exists($file) {
$list = @ftp_nlist($this->link, $file);
$file_list = @ftp_nlist( $this->link, '-a ' . $path );
if ( $file_list ) {
$file_list = array_map( 'basename', $file_list );
if ( empty( $list ) && $this->is_dir( $file ) ) {
return true; // File is an empty directory.
}
return $file_list && in_array( $filename, $file_list );
return !empty($list); //empty list = no file, so invert.
}
/**
@@ -342,7 +342,7 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
* @return bool
*/
public function exists( $file ) {
$list = $this->ftp->rawlist( $file, '-a' );
$list = $this->ftp->nlist( $file );
if ( empty( $list ) && $this->is_dir( $file ) ) {
return true; // File is an empty directory.
+3 -3
View File
@@ -530,7 +530,7 @@ final class WP_Screen {
}
}
sort( $priorities );
ksort( $priorities );
$sorted = array();
foreach ( $priorities as $list ) {
@@ -998,7 +998,7 @@ final class WP_Screen {
* Filter whether to show the Screen Options submit button.
*
* @since 4.4.0
*
*
* @param bool $show_button Whether to show Screen Options submit button.
* Default false.
* @param WP_Screen $this Current WP_Screen instance.
@@ -1087,7 +1087,7 @@ final class WP_Screen {
$id = "$column-hide";
echo '<label>';
echo '<input class="hide-column-tog" name="' . $id . '" type="checkbox" value="' . $column . '"' . checked( ! in_array( $column, $hidden ), true, false ) . ' />';
echo '<input class="hide-column-tog" name="' . $id . '" type="checkbox" id="' . $id . '" value="' . $column . '"' . checked( ! in_array( $column, $hidden ), true, false ) . ' />';
echo "$title</label>\n";
}
?>
+6 -2
View File
@@ -57,7 +57,9 @@ function get_hidden_columns( $screen ) {
$hidden = get_user_option( 'manage' . $screen->id . 'columnshidden' );
if ( ! $hidden ) {
$use_defaults = ! is_array( $hidden );
if ( $use_defaults ) {
$hidden = array();
/**
@@ -75,11 +77,13 @@ function get_hidden_columns( $screen ) {
* Filter the list of hidden columns.
*
* @since 4.4.0
* @since 4.4.1 Added the `use_defaults` parameter.
*
* @param array $hidden An array of hidden columns.
* @param WP_Screen $screen WP_Screen object of the current screen.
* @param bool $use_defaults Whether to show the default columns.
*/
return apply_filters( 'hidden_columns', $hidden, $screen );
return apply_filters( 'hidden_columns', $hidden, $screen, $use_defaults );
}
/**
+1 -1
View File
@@ -397,7 +397,7 @@ $document.ready( function() {
* The `.below-h2` class is here just for backwards compatibility with plugins
* that are (incorrectly) using it. Do not use. Use `.inline` instead. See #34570.
*/
$( 'div.updated, div.error, div.notice' ).not( '.inline, .below-h2' ).insertAfter( $( '.wrap' ).children( ':header' ).first() );
$( 'div.updated, div.error, div.notice' ).not( '.inline, .below-h2' ).insertAfter( $( '.wrap h1, .wrap h2' ).first() );
// Make notices dismissible
function makeNoticesDismissible() {
+1 -1
View File
@@ -1 +1 @@
var showNotice,adminMenu,columns,validateForm,screenMeta;!function(a,b,c){var d=a(document),e=a(b),f=a(document.body);adminMenu={init:function(){},fold:function(){},restoreMenuState:function(){},toggle:function(){},favorites:function(){}},columns={init:function(){var b=this;a(".hide-column-tog","#adv-settings").click(function(){var c=a(this),d=c.val();c.prop("checked")?b.checked(d):b.unchecked(d),columns.saveManageColumnsState()})},saveManageColumnsState:function(){var b=this.hidden();a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})},checked:function(b){a(".column-"+b).removeClass("hidden"),this.colSpanChange(1)},unchecked:function(b){a(".column-"+b).addClass("hidden"),this.colSpanChange(-1)},hidden:function(){return a(".manage-column[id]").filter(":hidden").map(function(){return this.id}).get().join(",")},useCheckboxesForHidden:function(){this.hidden=function(){return a(".hide-column-tog").not(":checked").map(function(){var a=this.id;return a.substring(a,a.length-5)}).get().join(",")}},colSpanChange:function(b){var c,d=a("table").find(".colspanchange");d.length&&(c=parseInt(d.attr("colspan"),10)+b,d.attr("colspan",c.toString()))}},d.ready(function(){columns.init()}),validateForm=function(b){return!a(b).find(".form-required").filter(function(){return""===a("input:visible",this).val()}).addClass("form-invalid").find("input:visible").change(function(){a(this).closest(".form-invalid").removeClass("form-invalid")}).size()},showNotice={warn:function(){var a=commonL10n.warnDelete||"";return confirm(a)?!0:!1},note:function(a){alert(a)}},screenMeta={element:null,toggles:null,page:null,init:function(){this.element=a("#screen-meta"),this.toggles=a("#screen-meta-links").find(".show-settings"),this.page=a("#wpcontent"),this.toggles.click(this.toggleEvent)},toggleEvent:function(){var b=a("#"+a(this).attr("aria-controls"));b.length&&(b.is(":visible")?screenMeta.close(b,a(this)):screenMeta.open(b,a(this)))},open:function(b,c){a("#screen-meta-links").find(".screen-meta-toggle").not(c.parent()).css("visibility","hidden"),b.parent().show(),b.slideDown("fast",function(){b.focus(),c.addClass("screen-meta-active").attr("aria-expanded",!0)}),d.trigger("screen:options:open")},close:function(b,c){b.slideUp("fast",function(){c.removeClass("screen-meta-active").attr("aria-expanded",!1),a(".screen-meta-toggle").css("visibility",""),b.parent().hide()}),d.trigger("screen:options:close")}},a(".contextual-help-tabs").delegate("a","click",function(b){var c,d=a(this);return b.preventDefault(),d.is(".active a")?!1:(a(".contextual-help-tabs .active").removeClass("active"),d.parent("li").addClass("active"),c=a(d.attr("href")),a(".help-tab-content").not(c).removeClass("active").hide(),void c.addClass("active").show())}),d.ready(function(){function c(){var c,d=a("a.wp-has-current-submenu");c=b.innerWidth?Math.max(b.innerWidth,document.documentElement.clientWidth):961,f.hasClass("folded")||f.hasClass("auto-fold")&&c&&960>=c&&c>782?d.attr("aria-haspopup","true"):d.attr("aria-haspopup","false")}function g(a){var b,c,d,f,g,h,i,j=a.find(".wp-submenu");g=a.offset().top,h=e.scrollTop(),i=g-h-30,b=g+j.height()+1,c=B.height(),d=60+b-c,f=e.height()+h-50,b-d>f&&(d=b-f),d>i&&(d=i),d>1?j.css("margin-top","-"+d+"px"):j.css("margin-top","")}function h(){a(".notice.is-dismissible").each(function(){var b=a(this),c=a('<button type="button" class="notice-dismiss"><span class="screen-reader-text"></span></button>'),d=commonL10n.dismiss||"";c.find(".screen-reader-text").text(d),c.on("click.wp-dismiss-notice",function(a){a.preventDefault(),b.fadeTo(100,0,function(){b.slideUp(100,function(){b.remove()})})}),b.append(c)})}function i(a){var b=e.scrollTop(),c=!a||"scroll"!==a.type;if(!(x||z||C.data("wp-responsive"))){if(O.menu+O.adminbar<O.window||O.menu+O.adminbar+20>O.wpwrap)return void k();if(N=!0,O.menu+O.adminbar>O.window){if(0>b)return void(K||(K=!0,L=!1,A.css({position:"fixed",top:"",bottom:""})));if(b+O.window>d.height()-1)return void(L||(L=!0,K=!1,A.css({position:"fixed",top:"",bottom:0})));b>J?K?(K=!1,M=A.offset().top-O.adminbar-(b-J),M+O.menu+O.adminbar<b+O.window&&(M=b+O.window-O.menu-O.adminbar),A.css({position:"absolute",top:M,bottom:""})):!L&&A.offset().top+O.menu<b+O.window&&(L=!0,A.css({position:"fixed",top:"",bottom:0})):J>b?L?(L=!1,M=A.offset().top-O.adminbar+(J-b),M+O.menu>b+O.window&&(M=b),A.css({position:"absolute",top:M,bottom:""})):!K&&A.offset().top>=b+O.adminbar&&(K=!0,A.css({position:"fixed",top:"",bottom:""})):c&&(K=L=!1,M=b+O.window-O.menu-O.adminbar-1,M>0?A.css({position:"absolute",top:M,bottom:""}):k())}J=b}}function j(){O={window:e.height(),wpwrap:B.height(),adminbar:I.height(),menu:A.height()}}function k(){!x&&N&&(K=L=N=!1,A.css({position:"",top:"",bottom:""}))}function l(){j(),C.data("wp-responsive")?(f.removeClass("sticky-menu"),k()):O.menu+O.adminbar>O.window?(i(),f.removeClass("sticky-menu")):(f.addClass("sticky-menu"),k())}var m,n,o,p,q,r,s,t,u=!1,v=a("input.current-pagLine truncated
var showNotice,adminMenu,columns,validateForm,screenMeta;!function(a,b,c){var d=a(document),e=a(b),f=a(document.body);adminMenu={init:function(){},fold:function(){},restoreMenuState:function(){},toggle:function(){},favorites:function(){}},columns={init:function(){var b=this;a(".hide-column-tog","#adv-settings").click(function(){var c=a(this),d=c.val();c.prop("checked")?b.checked(d):b.unchecked(d),columns.saveManageColumnsState()})},saveManageColumnsState:function(){var b=this.hidden();a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})},checked:function(b){a(".column-"+b).removeClass("hidden"),this.colSpanChange(1)},unchecked:function(b){a(".column-"+b).addClass("hidden"),this.colSpanChange(-1)},hidden:function(){return a(".manage-column[id]").filter(":hidden").map(function(){return this.id}).get().join(",")},useCheckboxesForHidden:function(){this.hidden=function(){return a(".hide-column-tog").not(":checked").map(function(){var a=this.id;return a.substring(a,a.length-5)}).get().join(",")}},colSpanChange:function(b){var c,d=a("table").find(".colspanchange");d.length&&(c=parseInt(d.attr("colspan"),10)+b,d.attr("colspan",c.toString()))}},d.ready(function(){columns.init()}),validateForm=function(b){return!a(b).find(".form-required").filter(function(){return""===a("input:visible",this).val()}).addClass("form-invalid").find("input:visible").change(function(){a(this).closest(".form-invalid").removeClass("form-invalid")}).size()},showNotice={warn:function(){var a=commonL10n.warnDelete||"";return confirm(a)?!0:!1},note:function(a){alert(a)}},screenMeta={element:null,toggles:null,page:null,init:function(){this.element=a("#screen-meta"),this.toggles=a("#screen-meta-links").find(".show-settings"),this.page=a("#wpcontent"),this.toggles.click(this.toggleEvent)},toggleEvent:function(){var b=a("#"+a(this).attr("aria-controls"));b.length&&(b.is(":visible")?screenMeta.close(b,a(this)):screenMeta.open(b,a(this)))},open:function(b,c){a("#screen-meta-links").find(".screen-meta-toggle").not(c.parent()).css("visibility","hidden"),b.parent().show(),b.slideDown("fast",function(){b.focus(),c.addClass("screen-meta-active").attr("aria-expanded",!0)}),d.trigger("screen:options:open")},close:function(b,c){b.slideUp("fast",function(){c.removeClass("screen-meta-active").attr("aria-expanded",!1),a(".screen-meta-toggle").css("visibility",""),b.parent().hide()}),d.trigger("screen:options:close")}},a(".contextual-help-tabs").delegate("a","click",function(b){var c,d=a(this);return b.preventDefault(),d.is(".active a")?!1:(a(".contextual-help-tabs .active").removeClass("active"),d.parent("li").addClass("active"),c=a(d.attr("href")),a(".help-tab-content").not(c).removeClass("active").hide(),void c.addClass("active").show())}),d.ready(function(){function c(){var c,d=a("a.wp-has-current-submenu");c=b.innerWidth?Math.max(b.innerWidth,document.documentElement.clientWidth):961,f.hasClass("folded")||f.hasClass("auto-fold")&&c&&960>=c&&c>782?d.attr("aria-haspopup","true"):d.attr("aria-haspopup","false")}function g(a){var b,c,d,f,g,h,i,j=a.find(".wp-submenu");g=a.offset().top,h=e.scrollTop(),i=g-h-30,b=g+j.height()+1,c=B.height(),d=60+b-c,f=e.height()+h-50,b-d>f&&(d=b-f),d>i&&(d=i),d>1?j.css("margin-top","-"+d+"px"):j.css("margin-top","")}function h(){a(".notice.is-dismissible").each(function(){var b=a(this),c=a('<button type="button" class="notice-dismiss"><span class="screen-reader-text"></span></button>'),d=commonL10n.dismiss||"";c.find(".screen-reader-text").text(d),c.on("click.wp-dismiss-notice",function(a){a.preventDefault(),b.fadeTo(100,0,function(){b.slideUp(100,function(){b.remove()})})}),b.append(c)})}function i(a){var b=e.scrollTop(),c=!a||"scroll"!==a.type;if(!(x||z||C.data("wp-responsive"))){if(O.menu+O.adminbar<O.window||O.menu+O.adminbar+20>O.wpwrap)return void k();if(N=!0,O.menu+O.adminbar>O.window){if(0>b)return void(K||(K=!0,L=!1,A.css({position:"fixed",top:"",bottom:""})));if(b+O.window>d.height()-1)return void(L||(L=!0,K=!1,A.css({position:"fixed",top:"",bottom:0})));b>J?K?(K=!1,M=A.offset().top-O.adminbar-(b-J),M+O.menu+O.adminbar<b+O.window&&(M=b+O.window-O.menu-O.adminbar),A.css({position:"absolute",top:M,bottom:""})):!L&&A.offset().top+O.menu<b+O.window&&(L=!0,A.css({position:"fixed",top:"",bottom:0})):J>b?L?(L=!1,M=A.offset().top-O.adminbar+(J-b),M+O.menu>b+O.window&&(M=b),A.css({position:"absolute",top:M,bottom:""})):!K&&A.offset().top>=b+O.adminbar&&(K=!0,A.css({position:"fixed",top:"",bottom:""})):c&&(K=L=!1,M=b+O.window-O.menu-O.adminbar-1,M>0?A.css({position:"absolute",top:M,bottom:""}):k())}J=b}}function j(){O={window:e.height(),wpwrap:B.height(),adminbar:I.height(),menu:A.height()}}function k(){!x&&N&&(K=L=N=!1,A.css({position:"",top:"",bottom:""}))}function l(){j(),C.data("wp-responsive")?(f.removeClass("sticky-menu"),k()):O.menu+O.adminbar>O.window?(i(),f.removeClass("sticky-menu")):(f.addClass("sticky-menu"),k())}var m,n,o,p,q,r,s,t,u=!1,v=a("input.current-pagLine truncated
+10 -3
View File
@@ -50,7 +50,7 @@ var postboxes;
this.page = page;
this.init( page, args );
$handles.on( 'click.postboxes', this.handle_click );
$handles.on( 'click.postboxes', this.handle_click );
$('.postbox .hndle a').click( function(e) {
e.stopPropagation();
@@ -144,8 +144,15 @@ var postboxes;
},
save_state : function(page) {
var closed = $('.postbox').filter('.closed').map(function() { return this.id; }).get().join(','),
hidden = $('.postbox').filter(':hidden').map(function() { return this.id; }).get().join(',');
var closed, hidden;
// Return on the nav-menus.php screen, see #35112.
if ( 'nav-menus' === page ) {
return;
}
closed = $( '.postbox' ).filter( '.closed' ).map( function() { return this.id; } ).get().join( ',' );
hidden = $( '.postbox' ).filter( ':hidden' ).map( function() { return this.id; } ).get().join( ',' );
$.post(ajaxurl, {
action: 'closed-postboxes',
+1 -1
View File
@@ -1 +1 @@
var postboxes;!function(a){var b=a(document);postboxes={handle_click:function(){var c,d=a(this),e=d.parent(".postbox"),f=e.attr("id");"dashboard_browser_nag"!==f&&(e.toggleClass("closed"),c=!e.hasClass("closed"),d.hasClass("handlediv")?d.attr("aria-expanded",c):d.closest(".postbox").find("button.handlediv").attr("aria-expanded",c),"press-this"!==postboxes.page&&postboxes.save_state(postboxes.page),f&&(!e.hasClass("closed")&&a.isFunction(postboxes.pbshow)?postboxes.pbshow(f):e.hasClass("closed")&&a.isFunction(postboxes.pbhide)&&postboxes.pbhide(f)),b.trigger("postbox-toggled",e))},add_postbox_toggles:function(c,d){var e=a(".postbox .hndle, .postbox .handlediv");this.page=c,this.init(c,d),e.on("click.postboxes",this.handle_click),a(".postbox .hndle a").click(function(a){a.stopPropagation()}),a(".postbox a.dismiss").on("click.postboxes",function(b){var c=a(this).parents(".postbox").attr("id")+"-hide";b.preventDefault(),a("#"+c).prop("checked",!1).triggerHandler("click")}),a(".hide-postbox-tog").bind("click.postboxes",function(){var d=a(this),e=d.val(),f=a("#"+e);d.prop("checked")?(f.show(),a.isFunction(postboxes.pbshow)&&postboxes.pbshow(e)):(f.hide(),a.isFunction(postboxes.pbhide)&&postboxes.pbhide(e)),postboxes.save_state(c),postboxes._mark_area(),b.trigger("postbox-toggled",f)}),a('.columns-prefs input[type="radio"]').bind("click.postboxes",function(){var b=parseInt(a(this).val(),10);b&&(postboxes._pb_edit(b),postboxes.save_order(c))})},init:function(b,c){var d=a(document.body).hasClass("mobile"),e=a(".postbox .handlediv");a.extend(this,c||{}),a("#wpbody-content").css("overflow","hidden"),a(".meta-box-sortables").sortable({placeholder:"sortable-placeholder",connectWith:".meta-box-sortables",items:".postbox",handle:".hndle",cursor:"move",delay:d?200:0,distance:2,tolerance:"pointer",forcePlaceholderSize:!0,helper:"clone",opacity:.65,stop:function(){var c=a(this);return c.find("#dashboard_browser_nag").is(":visible")&&"dashboard_browser_nag"!=this.firstChild.id?void c.sortable("cancel"):void postboxes.save_order(b)},receive:function(b,c){"dashboard_browser_nag"==c.item[0].id&&a(c.sender).sortable("cancel"),postboxes._mark_area()}}),d&&(a(document.body).bind("orientationchange.postboxes",function(){postboxes._pb_change()}),this._pb_change()),this._mark_area(),e.each(function(){var b=a(this);b.attr("aria-expanded",!b.parent(".postbox").hasClass("closed"))})},save_state:function(b){var c=a(".postbox").filter(".closed").map(function(){return this.id}).get().join(","),d=a(".postbox").filter(":hidden").map(function(){return this.id}).get().join(",");a.post(ajaxurl,{action:"closed-postboxes",closed:c,hidden:d,closedpostboxesnonce:jQuery("#closedpostboxesnonce").val(),page:b})},save_order:function(b){var c,d=a(".columns-prefs input:checked").val()||0;c={action:"meta-box-order",_ajax_nonce:a("#meta-box-order-nonce").val(),page_columns:d,page:b},a(".meta-box-sortables").each(function(){c["order["+this.id.split("-")[0]+"]"]=a(this).sortable("toArray").join(",")}),a.post(ajaxurl,c)},_mark_area:function(){var b=a("div.postbox:visible").length,c=a("#post-body #side-sortables");a("#dashboard-widgets .meta-box-sortables:visible").each(function(){var c=a(this);1==b||c.children(".postbox:visible").length?c.removeClass("empty-container"):c.addClass("empty-container")}),c.length&&(c.children(".postbox:visible").length?c.removeClass("empty-container"):"280px"==a("#postbox-container-1").css("width")&&c.addClass("empty-container"))},_pb_edit:function(b){var c=a(".metabox-holder").get(0);c&&(c.className=c.className.replace(/columns-\d+/,"columns-"+b)),a(document).trigger("postboxes-columnchange")},_pb_change:function(){var b=a('label.columns-prefs-1 input[type="radio"]');switch(window.orientation){case 90:case-90:b.length&&b.is(":checked")||this._pb_edit(2);break;case 0:case 180:a("#poststuff").length?this._pb_edit(1):b.length&&b.is(":checked")||this._pb_edit(2)}},pbshow:!1,pbhide:!1}}(jQuery);
var postboxes;!function(a){var b=a(document);postboxes={handle_click:function(){var c,d=a(this),e=d.parent(".postbox"),f=e.attr("id");"dashboard_browser_nag"!==f&&(e.toggleClass("closed"),c=!e.hasClass("closed"),d.hasClass("handlediv")?d.attr("aria-expanded",c):d.closest(".postbox").find("button.handlediv").attr("aria-expanded",c),"press-this"!==postboxes.page&&postboxes.save_state(postboxes.page),f&&(!e.hasClass("closed")&&a.isFunction(postboxes.pbshow)?postboxes.pbshow(f):e.hasClass("closed")&&a.isFunction(postboxes.pbhide)&&postboxes.pbhide(f)),b.trigger("postbox-toggled",e))},add_postbox_toggles:function(c,d){var e=a(".postbox .hndle, .postbox .handlediv");this.page=c,this.init(c,d),e.on("click.postboxes",this.handle_click),a(".postbox .hndle a").click(function(a){a.stopPropagation()}),a(".postbox a.dismiss").on("click.postboxes",function(b){var c=a(this).parents(".postbox").attr("id")+"-hide";b.preventDefault(),a("#"+c).prop("checked",!1).triggerHandler("click")}),a(".hide-postbox-tog").bind("click.postboxes",function(){var d=a(this),e=d.val(),f=a("#"+e);d.prop("checked")?(f.show(),a.isFunction(postboxes.pbshow)&&postboxes.pbshow(e)):(f.hide(),a.isFunction(postboxes.pbhide)&&postboxes.pbhide(e)),postboxes.save_state(c),postboxes._mark_area(),b.trigger("postbox-toggled",f)}),a('.columns-prefs input[type="radio"]').bind("click.postboxes",function(){var b=parseInt(a(this).val(),10);b&&(postboxes._pb_edit(b),postboxes.save_order(c))})},init:function(b,c){var d=a(document.body).hasClass("mobile"),e=a(".postbox .handlediv");a.extend(this,c||{}),a("#wpbody-content").css("overflow","hidden"),a(".meta-box-sortables").sortable({placeholder:"sortable-placeholder",connectWith:".meta-box-sortables",items:".postbox",handle:".hndle",cursor:"move",delay:d?200:0,distance:2,tolerance:"pointer",forcePlaceholderSize:!0,helper:"clone",opacity:.65,stop:function(){var c=a(this);return c.find("#dashboard_browser_nag").is(":visible")&&"dashboard_browser_nag"!=this.firstChild.id?void c.sortable("cancel"):void postboxes.save_order(b)},receive:function(b,c){"dashboard_browser_nag"==c.item[0].id&&a(c.sender).sortable("cancel"),postboxes._mark_area()}}),d&&(a(document.body).bind("orientationchange.postboxes",function(){postboxes._pb_change()}),this._pb_change()),this._mark_area(),e.each(function(){var b=a(this);b.attr("aria-expanded",!b.parent(".postbox").hasClass("closed"))})},save_state:function(b){var c,d;"nav-menus"!==b&&(c=a(".postbox").filter(".closed").map(function(){return this.id}).get().join(","),d=a(".postbox").filter(":hidden").map(function(){return this.id}).get().join(","),a.post(ajaxurl,{action:"closed-postboxes",closed:c,hidden:d,closedpostboxesnonce:jQuery("#closedpostboxesnonce").val(),page:b}))},save_order:function(b){var c,d=a(".columns-prefs input:checked").val()||0;c={action:"meta-box-order",_ajax_nonce:a("#meta-box-order-nonce").val(),page_columns:d,page:b},a(".meta-box-sortables").each(function(){c["order["+this.id.split("-")[0]+"]"]=a(this).sortable("toArray").join(",")}),a.post(ajaxurl,c)},_mark_area:function(){var b=a("div.postbox:visible").length,c=a("#post-body #side-sortables");a("#dashboard-widgets .meta-box-sortables:visible").each(function(){var c=a(this);1==b||c.children(".postbox:visible").length?c.removeClass("empty-container"):c.addClass("empty-container")}),c.length&&(c.children(".postbox:visible").length?c.removeClass("empty-container"):"280px"==a("#postbox-container-1").css("width")&&c.addClass("empty-container"))},_pb_edit:function(b){var c=a(".metabox-holder").get(0);c&&(c.className=c.className.replace(/columns-\d+/,"columns-"+b)),a(document).trigger("postboxes-columnchange")},_pb_change:function(){var b=a('label.columns-prefs-1 input[type="radio"]');switch(window.orientation){case 90:case-90:b.length&&b.is(":checked")||this._pb_edit(2);break;case 0:case 180:a("#poststuff").length?this._pb_edit(1):b.length&&b.is(":checked")||this._pb_edit(2)}},pbshow:!1,pbhide:!1}}(jQuery);
+8 -7
View File
@@ -211,13 +211,14 @@ case 'delete':
else
$userids = array_map( 'intval', (array) $_REQUEST['users'] );
$users_posts = new WP_Query( array(
'post_type' => 'any',
'author' => implode( ',', $userids ),
'posts_per_page' => 1
) );
$users_have_content = false;
if ( $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE post_author IN( " . implode( ',', $userids ) . " ) LIMIT 1" ) ) {
$users_have_content = true;
} elseif ( $wpdb->get_var( "SELECT link_id FROM {$wpdb->links} WHERE link_owner IN( " . implode( ',', $userids ) . " ) LIMIT 1" ) ) {
$users_have_content = true;
}
if ( $users_posts->have_posts() ) {
if ( $users_have_content ) {
add_action( 'admin_head', 'delete_users_add_js' );
}
@@ -257,7 +258,7 @@ case 'delete':
</ul>
<?php if ( $go_delete ) :
if ( ! $users_posts->have_posts() ) : ?>
if ( ! $users_have_content ) : ?>
<input type="hidden" name="delete_option" value="delete" />
<?php else: ?>
<?php if ( 1 == $go_delete ) : ?>
Binary file not shown.
+77 -75
View File
@@ -16,79 +16,79 @@ msgstr "Takk for at du oppdaterer! WordPress %s gjør ditt nettsted mer integrer
#. translators: 1: WP_Term class name, WP_Comment class name, WP_Network class
#. name
#: wp-admin/about.php:177
#: wp-admin/about.php:185
msgid "New %1$s, %2$s, and %3$s objects make interacting with terms, comments, and networks more predictable and intuitive in code."
msgstr "Nye %1$s-, %2$s- og %3$s-objekter gjør interaksjon med termer, kommentarer og nettverk mer forutsigbart og intuitivt i kode."
#. translators: WP_Comment_Query class name
#: wp-admin/about.php:170
#: wp-admin/about.php:178
msgid "Comment queries now have cache handling to improve performance. New arguments in %s make crafting robust comment queries simpler."
msgstr "Kommentar-spørringer har nå cache-håndtering for å øke ytelsen. Nye argumenter i %s gjør det enklere å lage robuste kommentar-spørringer."
#: wp-admin/about.php:174
#: wp-admin/about.php:182
msgid "Term, comment, and network objects"
msgstr "Term-, kommentar- og nettverk-objekter"
#: wp-admin/about.php:167
#: wp-admin/about.php:175
msgid "Comment query improvements"
msgstr "Forbedret kommentar-spørring"
#. translators: WordPress REST API plugin link
#: wp-admin/about.php:148
#: wp-admin/about.php:156
msgid "Infrastructure is the first part of a multi-stage rollout for the REST API. Inclusion of core endpoints is targeted for an upcoming release. To get a sneak peek of the core endpoints, and for more information on extending the REST API, check out the official %s plugin."
msgstr "Infrastrukturen er det første trinnet i utrullingen av REST API. Inkluderingen av endepunkter er bestemt implementert i en senere utgivelse. For å få et gløtt av kjerneendepunktene, og for mer informasjon om å utvide REST API, sjekk ut den offisielle utvidelsen %s."
#: wp-admin/about.php:156
#: wp-admin/about.php:164
msgid "Term meta"
msgstr "Term-meta"
#. translators: 1: add_term_meta() docs link, 2: get_term_meta() docs link, 3:
#. update_term_meta() docs link
#: wp-admin/about.php:159
#: wp-admin/about.php:167
msgid "Terms now support metadata, just like posts. See %1$s, %2$s, and %3$s for more information."
msgstr "Termer støtter nå metadata, akkurat som innlegg. Se %1$s, %2$s og %3$s for mer informasjon."
#: wp-admin/about.php:131
#: wp-admin/about.php:139
msgid "Infrastructure for the REST API has been integrated into core, marking a new era in developing with WordPress. The REST API serves to provide developers with a path forward for building and extending RESTful APIs on top of WordPress."
msgstr "Infrastruktur for REST API har blitt integrert i kjernen, noe som markerer en ny æra i utvikling med WordPress. REST API gir utviklere en vei fremover for å lage og utvide RESTfulle API-er over WordPress."
#: wp-admin/about.php:118
#: wp-admin/about.php:126
msgid "In addition to post embeds, WordPress 4.4 also adds support for five new oEmbed providers: Cloudup, Reddit&nbsp;Comments, ReverbNation, Speaker&nbsp;Deck, and VideoPress."
msgstr "I tillegg til innbygging av innlegg, gir WordPress 4.4 også støtte for fem nye oEmbed-tilbydere: Cloudup, Reddit&nbsp;Comments, ReverbNation, Speaker&nbsp;Deck og VideoPress."
#: wp-admin/about.php:129
#: wp-admin/about.php:137
msgid "REST API infrastructure"
msgstr "REST API-infrastruktur"
#: wp-admin/about.php:104
#: wp-admin/about.php:112
msgid "Now you can embed your posts on other sites, even other WordPress sites. Simply drop a post URL into the editor and see an instant embed preview, complete with the title, excerpt, and featured image if you&#8217;ve set one. We&#8217;ll even include your site icon and links for comments and sharing."
msgstr "Nå kan du bygge inn dine innlegg på andre nettsteder, selv andre WordPress-nettsteder. Bare lim inn URL-en til innlegget du vil bygge inn når du redigerer et innlegg, og du vil umiddelbart se en forhåndsvisning, komplett med tittel, utdrag og fremhevet bilde, hvis innlegget har dette. Vi vil til og med inkludere ditt nettstedsikon og lenker for kommentarer og deling."
#: wp-admin/about.php:117
#: wp-admin/about.php:125
msgid "Even more embed providers"
msgstr "Enda mer innbygging"
#: wp-admin/about.php:90
#: wp-admin/about.php:98
msgid "WordPress now takes a smarter approach to displaying appropriate image sizes on any device, ensuring a perfect fit every time. You don&#8217;t need to do anything to your theme, it just works."
msgstr "WordPress tar nå en smartere tilnærming til å vise riktige bildestørrelser på ulike skjermstørrelser, som gir det perfekte bildet hver gang. Du trenger ikke å gjøre noe i ditt tema. Det bare virker."
#: wp-admin/about.php:103
#: wp-admin/about.php:111
msgid "Embed your WordPress content"
msgstr "Bygg inn ditt WordPress-innhold"
#: wp-admin/about.php:89
#: wp-admin/about.php:97
msgid "Responsive images"
msgstr "Responsive bilder"
#: wp-admin/about.php:67
#: wp-admin/about.php:75
msgid "Twenty Sixteen was built to look great on any device. A fluid grid design, flexible header, fun color schemes, and more, will make your content shine."
msgstr "Twenty Sixteen er bygget for å se bra ut uansett skjermstørrelse. Et flytende grid-design, en fleksibel sidetopp, morsomme fargeskjemaer, og mer, vil gjøre at ditt innhold stråler."
#: wp-admin/about.php:66
#: wp-admin/about.php:74
msgid "Our newest default theme, Twenty Sixteen, is a modern take on a classic blog design."
msgstr "Vårt nyeste standardtema, Twenty Sixteen, er en moderne vri på et klassisk bloggdesign."
#: wp-admin/about.php:59
#: wp-admin/about.php:67
msgid "Twenty Sixteen"
msgstr "Twenty Sixteen"
@@ -107,7 +107,7 @@ msgid "(Currently set to: %s)"
msgstr "(Nå satt til: %s)"
#. translators: %s: WordPress version number
#: wp-admin/about.php:214
#: wp-admin/about.php:222
msgid "<strong>Version %s</strong> addressed one security issue."
msgstr "<strong>Version %s</strong> tettet et sikkerhetshull."
@@ -129,15 +129,15 @@ msgstr "Du kan endre profilbildet ditt på <a href=\"%s\">Gravatar</a>."
msgid "Profile Picture"
msgstr "Profilbilde"
#: wp-admin/about.php:205
#: wp-admin/about.php:213
msgid "Maintenance Releases"
msgstr "Vedlikeholdsutgivelser"
#: wp-admin/about.php:208
#: wp-admin/about.php:216
msgid "Security Releases"
msgstr "Sikkerhetsutgivelser"
#: wp-admin/about.php:211
#: wp-admin/about.php:219
msgid "Maintenance and Security Releases"
msgstr "Vedlikehold- og sikkerhetsutgivelser"
@@ -975,7 +975,7 @@ msgstr "Det aktive temaet støtter ikke opplasting av et eget sidetopp-bilde."
msgid "You&rsquo;re using the auto-generated password for your account. Would you like to change it?"
msgstr "Du bruker det autogenererte passordet for din konto. Ønsker du å endre det?"
#: wp-admin/users.php:360
#: wp-admin/users.php:361
msgid "You have specified this user for removal:"
msgstr "Du har merket denne brukeren for sletting:"
@@ -1559,13 +1559,13 @@ msgid_plural "%d media attachments moved to the trash."
msgstr[0] "%d medievedlegg flyttet til papirkurven."
msgstr[1] "%d medievedlegg flyttet til papirkurven."
#: wp-admin/users.php:419
#: wp-admin/users.php:420
msgid "%s user deleted."
msgid_plural "%s users deleted."
msgstr[0] "%s bruker slettet."
msgstr[1] "%s brukere slettet."
#: wp-admin/users.php:266
#: wp-admin/users.php:267
msgid "What should be done with content owned by these users?"
msgstr "Hva skal gjøres med innhold eid av disse brukerne?"
@@ -1575,7 +1575,7 @@ msgid_plural "%d media attachments restored from the trash."
msgstr[0] "%d medievedlegg gjenopprettet fra papirkurven."
msgstr[1] "%d medievedlegg gjenopprettet fra papirkurven."
#: wp-admin/users.php:241
#: wp-admin/users.php:242
msgid "You have specified these users for deletion:"
msgstr "Du har spesifisert disse brukerne for sletting:"
@@ -1970,7 +1970,7 @@ msgstr "Du kan aktivere distraksjonsfri skrivemodud med ikonet til høyre. Denne
msgid "Log Out Everywhere"
msgstr "Logg ut overalt"
#: wp-admin/about.php:65
#: wp-admin/about.php:73
msgid "Introducing Twenty Sixteen"
msgstr "Vi introduserer Twenty Sixteen"
@@ -2441,11 +2441,11 @@ msgctxt "theme"
msgid "Details &amp; Preview"
msgstr "Detaljer og forhåndsvisning"
#: wp-admin/includes/ms.php:1055 wp-admin/users.php:270
#: wp-admin/includes/ms.php:1055 wp-admin/users.php:271
msgid "Delete all content."
msgstr "Slett alt innhold."
#: wp-admin/includes/ms.php:1057 wp-admin/users.php:272
#: wp-admin/includes/ms.php:1057 wp-admin/users.php:273
msgid "Attribute all content to:"
msgstr "Overfør alt innhold til:"
@@ -2477,7 +2477,7 @@ msgstr "«Fjern» lar deg fjerne en bruker fra nettstedet. Det sletter ikke dere
msgid "You are not allowed to add this item."
msgstr "Du har ikke tillatelse til å legge til dette."
#: wp-admin/users.php:264
#: wp-admin/users.php:265
msgid "What should be done with content owned by this user?"
msgstr "Hva bør gjøres med innhold laget av denne brukeren?"
@@ -3783,23 +3783,23 @@ msgstr "I kolonnen <strong>Som svar til</strong> er det tre elementer. Teksten e
msgid "Used: %1$s%% of %2$s"
msgstr "Brukt: %1$s%% av %2$s"
#: wp-admin/users.php:250
#: wp-admin/users.php:251
msgid "ID #%1$s: %2$s <strong>The current user will not be deleted.</strong>"
msgstr "ID #%1$s: %2$s <strong>Den nåværende brukeren vil ikke bli slettet.</strong>"
#: wp-admin/users.php:252 wp-admin/users.php:376
#: wp-admin/users.php:253 wp-admin/users.php:377
msgid "ID #%1$s: %2$s"
msgstr "ID #%1$s: %2$s"
#: wp-admin/users.php:374
#: wp-admin/users.php:375
msgid "ID #%1$s: %2$s <strong>You don't have permission to remove this user.</strong>"
msgstr "ID #%1$s: %2$s <strong>Du har ikke tillatelse til å fjerne denne brukeren.</strong>"
#: wp-admin/users.php:372
#: wp-admin/users.php:373
msgid "ID #%1$s: %2$s <strong>The current user will not be removed.</strong>"
msgstr "ID #%1$s: %2$s <strong>Den nåværende brukeren vil ikke bli fjernet.</strong>"
#: wp-admin/users.php:234
#: wp-admin/users.php:235
msgid "Please select an option."
msgstr "Vennligst ta et valg."
@@ -4181,11 +4181,11 @@ msgstr "Din <code>wp-config.php</code>-fil har et tomt databasetabellprefiks. De
msgid "Revert to the <strong>Browser Uploader</strong> by clicking the link below the drag and drop box."
msgstr "Gå tilbake til <strong>Nettleseropplasting</strong> ved å klikke på lenken nedenfor dra-og-slipp-boksen."
#: wp-admin/users.php:425
#: wp-admin/users.php:426
msgid "New user created. <a href=\"%s\">Edit user</a>"
msgstr "Ny bruker opprettet. <a href=\"%s\">Rediger bruker</a>."
#: wp-admin/users.php:417
#: wp-admin/users.php:418
msgid "User deleted."
msgstr "Bruker slettet."
@@ -4947,12 +4947,12 @@ msgid "Contributing Developers"
msgstr "Medvirkende utviklere"
#. translators: %s: Codex URL
#: wp-admin/about.php:231
#: wp-admin/about.php:55 wp-admin/about.php:239
msgid "For more information, see <a href=\"%s\">the release notes</a>."
msgstr "For mer informasjon, se <a href=\"%s\">versjonsmerknadene</a>."
#. translators: 1: WordPress version number, 2: plural number of bugs.
#: wp-admin/about.php:219
#: wp-admin/about.php:227
msgid "<strong>Version %1$s</strong> addressed %2$s bug."
msgid_plural "<strong>Version %1$s</strong> addressed %2$s bugs."
msgstr[0] "<strong>Versjon %1$s</strong> rettet %2$s programfeil."
@@ -4960,7 +4960,7 @@ msgstr[1] "<strong>Versjon %1$s</strong> rettet %2$s programfeil."
#. translators: 1: WordPress version number, 2: plural number of bugs. Singular
#. security issue.
#: wp-admin/about.php:223
#: wp-admin/about.php:231
msgid "<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bug."
msgid_plural "<strong>Version %1$s</strong> addressed a security issue and fixed %2$s bugs."
msgstr[0] "<strong>Versjon %1$s</strong> tettet et sikkerhetshull og rettet %2$s programfeil."
@@ -4968,7 +4968,7 @@ msgstr[1] "<strong>Versjon %1$s</strong> tettet et sikkerhetshull og rettet %2$s
#. translators: 1: WordPress version number, 2: plural number of bugs. More
#. than one security issue.
#: wp-admin/about.php:227
#: wp-admin/about.php:53 wp-admin/about.php:235
msgid "<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug."
msgid_plural "<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs."
msgstr[0] "<strong>Versjon %1$s</strong> tettet noen sikkerhetshull og rettet %2$s programfeil."
@@ -4978,7 +4978,7 @@ msgstr[1] "<strong>Versjon %1$s</strong> tettet noen sikkerhetshull og rettet %2
msgid "Welcome to your WordPress Dashboard! This is the screen you will see when you log in to your site, and gives you access to all the site management features of WordPress. You can get help for any screen by clicking the Help tab in the upper corner."
msgstr "Velkommen til kontrollpanelet i WordPress. Dette er det skjermbildet vil du se hver gang du logger inn på nettstedet, og gir deg tilgang alle administrative funksjoner i WordPress. Du kan få mer informasjon om hvert enkelt skjermbilde om du klikker Hjelp-fanen i øvre høyre hjørne."
#: wp-admin/about.php:207
#: wp-admin/about.php:215
msgid "Security Release"
msgstr "Sikkerhetsoppdatering"
@@ -4986,16 +4986,18 @@ msgstr "Sikkerhetsoppdatering"
msgid "What&#8217;s New"
msgstr "Hva er nytt"
#: wp-admin/about.php:210
#: wp-admin/about.php:52 wp-admin/about.php:218
msgid "Maintenance and Security Release"
msgstr "Vedlikeholds- og sikkerhetsoppdatering"
msgid_plural "Maintenance and Security Releases"
msgstr[0] "Vedlikeholds- og sikkerhetsoppdatering"
msgstr[1] "Vedlikeholds- og sikkerhetsoppdateringer"
#: wp-admin/about.php:204
#: wp-admin/about.php:212
msgid "Maintenance Release"
msgstr "Vedlikeholdsoppdatering"
#. translators: %s: WordPress version number
#: wp-admin/about.php:216
#: wp-admin/about.php:224
msgid "<strong>Version %s</strong> addressed some security issues."
msgstr "<strong>Versjon %s</strong> tettet noen sikkerhetshull."
@@ -5003,7 +5005,7 @@ msgstr "<strong>Versjon %s</strong> tettet noen sikkerhetshull."
msgid "This screen allows you to choose your permalink structure. You can choose from common settings or create custom URL structures."
msgstr "Dette skjermbildet lar deg velge strukturen på permalenkene dine. Du kan velge blant de vanligste eller opprette din egen URL-struktur."
#: wp-admin/about.php:189
#: wp-admin/about.php:197
msgid "Return to Updates"
msgstr "Tilbake til oppdateringer"
@@ -5295,11 +5297,11 @@ msgstr "Sannsynligvis direkte inkludering av wp-admin/includes/template.php for
msgid "Welcome to WordPress %s"
msgstr "Velkommen til WordPress %s"
#: wp-admin/about.php:189
#: wp-admin/about.php:197
msgid "Return to Dashboard &rarr; Updates"
msgstr "Tilbake til Kontrollpanel &rarr; Oppdateringer"
#: wp-admin/about.php:192
#: wp-admin/about.php:200
msgid "Go to Dashboard &rarr; Home"
msgstr "Gå til Kontrollpanel &rarr; Hjem"
@@ -5311,7 +5313,7 @@ msgstr "WordPress er blitt til av et nettverk med ihuga entusiaster i hele verde
msgid "Core Developers"
msgstr "Kjerneutviklere"
#: wp-admin/about.php:125
#: wp-admin/about.php:133
msgid "Under the Hood"
msgstr "Under panseret"
@@ -5580,22 +5582,22 @@ msgstr "Attributter"
msgid "You can&#8217;t give users that role."
msgstr "Du kan ikke gi brukere den rollen."
#: wp-admin/includes/ms.php:1085 wp-admin/users.php:286
#: wp-admin/includes/ms.php:1085 wp-admin/users.php:287
msgid "Confirm Deletion"
msgstr "Bekreft slettingen"
#: wp-admin/users.php:433
#: wp-admin/users.php:434
msgid "Changed roles."
msgstr "Rollene er byttet."
#: wp-admin/menu.php:220 wp-admin/menu.php:222 wp-admin/user-edit.php:194
#: wp-admin/users.php:474
#: wp-admin/users.php:475
msgctxt "user"
msgid "Add New"
msgstr "Legg til ny"
#: wp-admin/includes/dashboard.php:406 wp-admin/includes/dashboard.php:408
#: wp-admin/users.php:487
#: wp-admin/users.php:488
msgid "Search Users"
msgstr "Søk i brukere"
@@ -5637,7 +5639,7 @@ msgstr "For mer informasjon:"
#. translators: %s: search keywords
#: wp-admin/edit-comments.php:197 wp-admin/edit-tags.php:311
#: wp-admin/edit.php:307 wp-admin/link-manager.php:78 wp-admin/plugins.php:515
#: wp-admin/upload.php:224 wp-admin/users.php:480
#: wp-admin/upload.php:224 wp-admin/users.php:481
msgid "Search results for &#8220;%s&#8221;"
msgstr "Søkeresultater for &laquo;%s&raquo;"
@@ -5674,12 +5676,12 @@ msgstr "Utvidelser %s"
msgid "Installed Plugins"
msgstr "Installerte utvidelser"
#: wp-admin/users.php:444
#: wp-admin/users.php:445
msgid "User removed from this site."
msgstr "Bruker fjernet fra dette nettstedet."
#: wp-admin/users.php:300 wp-admin/users.php:308 wp-admin/users.php:335
#: wp-admin/users.php:343
#: wp-admin/users.php:301 wp-admin/users.php:309 wp-admin/users.php:336
#: wp-admin/users.php:344
msgid "You can&#8217;t remove users."
msgstr "Du kan ikke fjerne brukere."
@@ -5986,7 +5988,7 @@ msgstr "Opplastede bilder"
msgid "Layout"
msgstr "Layout"
#: wp-admin/users.php:239
#: wp-admin/users.php:240
msgid "You have specified this user for deletion:"
msgstr "Du har angitt denne brukeren for sletting:"
@@ -6021,7 +6023,7 @@ msgstr "Standardformat for innlegg"
msgid "You do not have sufficient permissions to update this site."
msgstr "Du har ikke tilstrekkelige rettigheter til å oppdatere dette nettstedet."
#: wp-admin/user-edit.php:196 wp-admin/users.php:476
#: wp-admin/user-edit.php:196 wp-admin/users.php:477
msgctxt "user"
msgid "Add Existing"
msgstr "Legg til eksisterende"
@@ -6620,7 +6622,7 @@ msgid "Home: %s"
msgstr "Hjem: %s"
#: wp-admin/import.php:57 wp-admin/includes/network.php:105
#: wp-admin/includes/network.php:122 wp-admin/users.php:234
#: wp-admin/includes/network.php:122 wp-admin/users.php:235
msgid "ERROR:"
msgstr "FEIL:"
@@ -6993,7 +6995,7 @@ msgstr "WordPress blogg"
msgid "&mdash; No role for this site &mdash;"
msgstr "&mdash; Ingen rolle på dette nettstedet &mdash;"
#: wp-admin/users.php:357
#: wp-admin/users.php:358
msgid "Remove Users from Site"
msgstr "Fjern brukere fra nettstedet"
@@ -7133,23 +7135,23 @@ msgstr "Visningsinnstillinger"
msgid "User deletion is not allowed from this screen."
msgstr "Sletting av brukere er ikke tillatt fra denne siden."
#: wp-admin/users.php:362
#: wp-admin/users.php:363
msgid "You have specified these users for removal:"
msgstr "Du har angitt at du vil slette disse brukerne:"
#: wp-admin/users.php:384
#: wp-admin/users.php:385
msgid "Confirm Removal"
msgstr "Bekreft fjerning"
#: wp-admin/users.php:386
#: wp-admin/users.php:387
msgid "There are no valid users selected for removal."
msgstr "Ingen gyldige brukere er angitt for sletting."
#: wp-admin/users.php:447
#: wp-admin/users.php:448
msgid "You can't remove the current user."
msgstr "Du kan ikke slette gjeldende bruker."
#: wp-admin/users.php:448
#: wp-admin/users.php:449
msgid "Other users have been removed."
msgstr "Andre brukere har blitt slettet."
@@ -7474,7 +7476,7 @@ msgid_plural "Drop-ins <span class=\"count\">(%s)</span>"
msgstr[0] "Innslipp <span class=\"count\">(%s)</span>"
msgstr[1] "Innslipp <span class=\"count\">(%s)</span>"
#: wp-admin/about.php:192
#: wp-admin/about.php:200
msgid "Go to Dashboard"
msgstr "Gå til kontrollpanel"
@@ -8594,31 +8596,31 @@ msgstr "Du kan ikke redigere denne brukeren."
msgid "You can&#8217;t delete users."
msgstr "Du kan ikke slette brukere."
#: wp-admin/users.php:231
#: wp-admin/users.php:232
msgid "Delete Users"
msgstr "Slett brukere"
#: wp-admin/users.php:288
#: wp-admin/users.php:289
msgid "There are no valid users selected for deletion."
msgstr "Ingen gyldige brukere er angitt for sletting."
#: wp-admin/users.php:429
#: wp-admin/users.php:430
msgid "New user created."
msgstr "Ny bruker ble lagt til."
#: wp-admin/users.php:436
#: wp-admin/users.php:437
msgid "The current user&#8217;s role must have user editing capabilities."
msgstr "Gjeldende bruker må ha en rolle med mulighet for redigering av brukere."
#: wp-admin/users.php:437
#: wp-admin/users.php:438
msgid "Other user roles have been changed."
msgstr "Andre brukeres roller er byttet."
#: wp-admin/users.php:440
#: wp-admin/users.php:441
msgid "You can&#8217;t delete the current user."
msgstr "Du kan ikke slette gjeldende bruker."
#: wp-admin/users.php:441
#: wp-admin/users.php:442
msgid "Other users have been deleted."
msgstr "Andre brukere har blitt slettet."
Binary file not shown.
File diff suppressed because it is too large. Load diff
Binary file not shown.
+135 -264
View File
@@ -2,7 +2,7 @@
# This file is distributed under the same license as the Stable (latest release) package.
msgid ""
msgstr ""
"PO-Revision-Date: 2015-09-10 16:30:51+0000\n"
"PO-Revision-Date: 2015-12-12 01:12:47+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -10,245 +10,209 @@ msgstr ""
"X-Generator: GlotPress/1.0-alpha-1100\n"
"Project-Id-Version: Stable (latest release)\n"
#: views/notice.php:106
#: views/start.php:66
msgid "Already have your key? Enter it here."
msgstr "Har du allerede nøkkelen din? Skriv den inn her."
#: views/notice.php:110
msgid "Your Pro subscription allows the use of Akismet on only one site. Please <a href=\"%s\" target=\"_blank\">purchase additional Pro subscriptions</a> or upgrade to an Enterprise subscription that allows the use of Akismet on unlimited sites."
msgstr "Ditt Pro-abonnement lar deg kun bruke Akismet på ett nettsted. Vennligst <a href=\"%s\" target=\"_blank\">kjøp flere Pro-abonnementer</a> eller oppgrader til et Enterprise-abonnement som lar deg bruke Akismet på et ubegrenset antall nettsteder."
#: views/notice.php:113
#: views/notice.php:117
msgid "To continue your service, <a href=\"%s\" target=\"_blank\">upgrade to an Enterprise subscription</a>, which covers an unlimited number of sites."
msgstr "For å fortsette med tjenesten, <a href=\"%s\" target=\"_blank\">oppgrader til et enterprise-abonnement</a>, som er gyldig for et ubegrenset antall nettsteder."
#: views/notice.php:81 views/notice.php:108 views/notice.php:115
#: views/notice.php:85 views/notice.php:112 views/notice.php:119
msgid "Please <a href=\"%s\" target=\"_blank\">contact our support team</a> with any questions."
msgstr "Vennligst <a href=\"%s\" target=\"_blank\">kontakt vårt support-team</a> hvis du har noen spørsmål."
#: views/notice.php:79
msgid "Since 2012, Akismet began using subscriptions for all accounts (even free ones). It looks like a subscription has not been assigned to your account, and we’d appreciate it if you’d <a href=\"%s\" target=\"_blank\">sign into your account</a> and choose one."
msgstr "Siden 2012, har Akismet brukt abonnementer for alle kontoer (også gratis-kontoer). Det ser ut til at et abonnement ikke har blitt tildelt din konto, og vi setter pris på om du vil <a href=\"%s\" target=\"_blank\">logge inn i din konto</a> og velge et."
#: views/notice.php:98
msgid "The key you entered could not be verified."
msgstr "Nøkkelen du skrev inn kunne ikke verifiseres."
#: views/notice.php:99
msgid "The connection to akismet.com cannot be established. Please refer to <a href=\"%s\" target=\"_blank\">our guide about firewalls</a> and check your server configuration."
msgstr "Koblingen til akismet.com kunne ikke etableres. Vennligst se <a href=\"%s\" target=\"_blank\">vår guide til brannmurer</a> og sjekk din serverkonfigurasjon."
#: views/notice.php:94
msgid "Your API key is no longer valid. Please enter a new key or contact support@akismet.com."
msgstr "API-nøkkelen din er ikke lenger gyldig. Vennligst legg inn en ny nøkkel eller kontakt support@akismet.com."
#: class.akismet-admin.php:539
#: class.akismet-admin.php:559
msgid "This comment was reported as not spam."
msgstr "Denne kommentaren ble rapportert som seriøs."
#: views/config.php:95
#: views/config.php:91
msgid "All systems functional."
msgstr "Alle systemer fungerer."
#: views/config.php:95
#: views/config.php:91
msgid "Enabled."
msgstr "Aktivert."
#: views/config.php:92
#: views/config.php:88
msgid "Akismet encountered a problem with a previous SSL request and disabled it temporarily. It will begin using SSL for requests again shortly."
msgstr "Akismet støtte på et problem med en SSL-forespørsel og deaktiverte det midlertidig. Det vil begynne å bruke SSL for forespørsler igjen snart."
#: views/config.php:92
#: views/config.php:88
msgid "Temporarily disabled."
msgstr "Midlertidig deaktivert."
#: views/config.php:86
#: views/config.php:82
msgid "Your Web server cannot make SSL requests; contact your Web host and ask them to add support for SSL requests."
msgstr "Din webserver kan ikke foreta SSL-forespørsler. Kontakt din webadmin og be dem legge til støtte for «SSL requests»."
#: views/config.php:83 views/config.php:86
#: views/config.php:79 views/config.php:82
msgid "Disabled."
msgstr "Deaktivert."
#: views/config.php:76
#: views/config.php:72
msgid "SSL Status"
msgstr "SSL-status"
#: class.akismet-admin.php:531
#: class.akismet-admin.php:551
msgid "This comment was reported as spam."
msgstr "Denne kommentaren ble rappportert som useriøs"
#: views/notice.php:14
msgid "<strong>Almost done</strong> - activate your account and say goodbye to comment spam"
msgstr "<strong>Nesten ferdig</strong> – aktiver din konto og si farvel til useriøse kommentarer"
#: class.akismet-widget.php:69
msgid "Spam Blocked"
msgstr "Useriøse kommentarer blokkert"
#: class.akismet-admin.php:455
#: class.akismet-admin.php:475
msgid "Un-spammed by %s"
msgstr "Merket som ikke useriøs av %s"
#: class.akismet-admin.php:515
#: class.akismet-admin.php:535
msgid "Akismet caught this comment as spam."
msgstr "Akismet tror at denne kommentaren er useriøs."
#: class.akismet-admin.php:512
#: class.akismet-admin.php:532
msgid "Akismet re-checked and caught this comment as spam."
msgstr "Akismet testet denne kommentaren på nytt og mener at den er useriøs."
#: class.akismet-admin.php:521
#: class.akismet-admin.php:541
msgid "Akismet cleared this comment."
msgstr "Akismet godkjente denne kommentaren."
#: class.akismet-admin.php:536
#: class.akismet-admin.php:556
msgid "%s reported this comment as not spam."
msgstr "%s rapporterte at denne kommentaren er seriøs."
#: class.akismet-admin.php:550
#: class.akismet-admin.php:570
msgid "Akismet was unable to check this comment (response: %s) but will automatically retry later."
msgstr "Akismet kunne ikke sjekke denne kommentaren (respons: %s), men vil prøve igjen senere."
#: class.akismet-admin.php:518
#: class.akismet-admin.php:538
msgid "Akismet re-checked and cleared this comment."
msgstr "Akismet sjekket denne kommentaren på nytt og godkjente den."
#: class.akismet-admin.php:528
#: class.akismet-admin.php:548
msgid "%s reported this comment as spam."
msgstr "%s rapporterte denne kommentaren som useriøs."
#: class.akismet-admin.php:524
#: class.akismet-admin.php:544
msgid "Comment was caught by wp_blacklist_check."
msgstr "Kommentaren ble stoppet av wp_blacklist_check."
#: class.akismet-admin.php:569
#: class.akismet-admin.php:589
msgid "%1$s changed the comment status to %2$s."
msgstr "%1$s endret status på kommentaren til %2$s."
#: class.akismet-admin.php:555
#: class.akismet-admin.php:575
msgid "Akismet was unable to recheck this comment (response: %s)."
msgstr "Akismet kunne ikke sjekke denne kommentaren på nytt (respons: %s)."
#: views/config.php:127
#: views/config.php:123
msgid "Spam in the <a href=\"%1$s\">spam folder</a> older than 1 day is deleted automatically."
msgid_plural "Spam in the <a href=\"%1$s\">spam folder</a> older than %2$d days is deleted automatically."
msgstr[0] "Useriøse innlegg i <a href=\"%1$s\">Useriøs-mappen</a> som er eldre enn 1 dag, slettes automatisk."
msgstr[1] "Useriøse innlegg i <a href=\"%1$s\">Useriøs-mappen</a> som er eldre enn %2$d dager, slettes automatisk."
#. Description of the plugin/theme
msgid "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."
msgstr "Benyttet av millioner, er Akismet muligens den beste måten i verden å <strong>beskytte din blogg fra useriøse innlegg og tilbaketråkk</strong>. Den holder nettstedet ditt beskyttet, selv når du sover. For å komme i gang: 1) Klikk «Aktiver»-lenken til venstre for denne beskrivelsen. 2) <a href=\"http://akismet.com/get/\">Registrer deg, for å motta en Akismet API-nøkkel</a>. 3) Gå til din Akismet konfigurasjonsside og lagre API-nøkkelen."
#. Plugin URI of the plugin/theme
msgid "http://akismet.com/"
msgstr "http://akismet.com/"
#: class.akismet-admin.php:785
#: class.akismet-admin.php:793
msgid "Please check your <a href=\"%s\">Akismet configuration</a> and contact your web host if problems persist."
msgstr "Vennligst sjekk din <a href=\"%s\">Akismet-konfigurasjon</a> og kontakt din web-admin hvis problemet vedvarer."
#: views/notice.php:21
#: views/notice.php:18
msgid "Some comments have not yet been checked for spam by Akismet. They have been temporarily held for moderation and will automatically be rechecked later."
msgstr "Noen kommentarer har ikke blitt spam-sjekket av Akismet ennå. De har midlertidig blitt satt i køen for moderasjon og vil bli sjekket igjen senere automatisk."
#: views/notice.php:43
msgid "Your web host or server administrator has disabled PHP&#8217;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&#8217;s system requirements</a>."
msgstr "Din web-host eller server-administrator har deaktivert PHPs <code>gethostbynamel</code>-funksjoner. <strong>Akismet kan ikke fungere inntil dette er rettet opp.</strong> Vennligst kontakt din web-host eller brannmur-administrator og gi dem <a href=\"%s\" target=\"_blank\">denne informasjonen om Akismets systemkrav</a>."
#: views/start.php:77
#: views/start.php:79
msgid "Activate Akismet"
msgstr "Aktiver Akismet"
#: views/start.php:64 views/start.php:85
#: views/start.php:87
msgid "If you already know your API key."
msgstr "Hvis du allerede kjenner din API-nøkkel."
#: views/start.php:78
msgid "Log in or create an account to get your API key."
msgstr "Logg inn eller lag en konto for å få din API-nøkkel."
#: views/start.php:80
#: views/start.php:82
msgid "Get your API key"
msgstr "Få din API-nøkkel"
#: views/start.php:22
#: views/start.php:23
msgid "Your subscription for %s is cancelled"
msgstr "Ditt abonnement på %s er avbrutt"
#: views/start.php:28
#: views/start.php:30
msgid "Reactivate Akismet"
msgstr "Reaktiver Akismet"
#: views/config.php:182
#: views/config.php:178
msgid "Cancelled"
msgstr "Avbrutt"
#: views/config.php:184
#: views/config.php:180
msgid "Suspended"
msgstr "Suspendert"
#: views/config.php:186
#: views/config.php:182
msgid "Missing"
msgstr "Savnes"
#: views/config.php:188
#: views/config.php:184
msgid "No Subscription Found"
msgstr "Ikke noe abonnement funnet"
#: views/config.php:190
#: views/config.php:186
msgid "Active"
msgstr "Aktiv"
#: views/notice.php:72
msgid "There is a problem with your key."
msgstr "Det er et problem med din nøkkel."
#: class.akismet-admin.php:196 views/config.php:114
#: class.akismet-admin.php:214 views/config.php:110
msgid "Strictness"
msgstr "Strenghet"
#: class.akismet-admin.php:196
#: class.akismet-admin.php:214
msgid "Choose to either discard the worst spam automatically or to always put all spam in spam folder."
msgstr "Velg om du skal slette den verste spammen automatisk eller alltid putte all spam i spam-mappen."
#: views/config.php:118
#: views/config.php:114
msgid "Silently discard the worst and most pervasive spam so I never see it."
msgstr "Forkast de verste og mest utbredte useriøse innholdet i bakgrunnen slik at jeg aldri ser det."
#: views/config.php:119
#: views/config.php:115
msgid "Always put spam in the Spam folder for review."
msgstr "Legg alltid useriøst innhold for gjennomgang i mappen Useriøse."
#: class.akismet-admin.php:195 views/config.php:105
#: class.akismet-admin.php:213 views/config.php:101
msgid "Comments"
msgstr "Kommentarer"
#: views/notice.php:77
msgid "Your subscription is missing."
msgstr "Ditt abonnement mangler."
#: views/notice.php:111
#: views/notice.php:115
msgid "You&#8217;re using Akismet on far too many sites for your Pro subscription."
msgstr "Du bruker Akismet på altfor mange nettsteder for ditt Pro-abonnement."
#: views/notice.php:104
#: views/notice.php:108
msgid "You&#8217;re using your Akismet key on more sites than your Pro subscription allows."
msgstr "Du bruker din Akismet-nøkkel på flere nettsteder enn ditt Pro-abonnement tillater."
#: views/notice.php:86
msgid "Your Akismet account has been successfully set up and activated. Happy blogging!"
msgstr "Din Akismet-konto har blitt opprettet og aktivert. God blogging!"
#: views/notice.php:27
#: views/notice.php:24
msgid "Akismet %s requires WordPress 3.0 or higher."
msgstr "Akismet %s krever WordPress 3.0 eller nyere."
#: views/notice.php:90
#: views/notice.php:94
msgid "The key you entered is invalid. Please double-check it."
msgstr "Nøkkelen du skrev inn er ikke gyldig. Vennligst kontroller den."
#: views/notice.php:42
#: views/notice.php:46
msgid "Network functions are disabled."
msgstr "Nettverksfunksjoner er deaktivert."
#: views/notice.php:20
#: views/notice.php:17
msgid "Akismet has detected a problem."
msgstr "Akismet har oppdaget et problem."
@@ -260,133 +224,69 @@ msgstr "Automattic"
msgid "http://automattic.com/wordpress-plugins/"
msgstr "http://automattic.com/wordpress-plugins/"
#: views/notice.php:57
msgid "Your subscription is cancelled."
msgstr "Ditt abonnement er avsluttet."
#: views/start.php:50
msgid "Use this Akismet account"
msgstr "Bruk denne Akismet-kontoen"
#: views/start.php:63 views/start.php:84
#: views/start.php:86
msgid "Manually enter an API key"
msgstr "Sett inn en API-nøkkel manuelt"
#: views/start.php:70 views/start.php:91
#: views/start.php:72 views/start.php:93
msgid "Use this key"
msgstr "Bruk denne nøkkelen"
#: views/notice.php:63 views/notice.php:73
#: views/notice.php:67 views/notice.php:77
msgid "Please contact <a href=\"%s\" target=\"_blank\">Akismet support</a> for assistance."
msgstr "Vennligst kontakt <a href=\"%s\" target=\"_blank\">Akismet brukerstøtte</a> for assistanse."
#: views/start.php:37
#: views/start.php:39
msgid "Contact Akismet support"
msgstr "Kontakt Akismet brukerstøtte"
#: views/notice.php:62
msgid "Your subscription is suspended."
msgstr "Ditt abonnement er avsluttet."
#: views/strict.php:4
#: views/strict.php:8
msgid "Strict: silently discard the worst and most pervasive spam."
msgstr "Strengt: forkast det verste og mest utbredte useriøse innholdet."
#: views/config.php:117 views/strict.php:2 views/strict.php:3
#: views/config.php:113 views/strict.php:3
msgid "Akismet anti-spam strictness"
msgstr "Strenghet for filtrering i Akismet "
#: views/notice.php:30
#: views/notice.php:27
msgid "Akismet Error Code: %s"
msgstr "Akismet feilkode: %s"
#: views/notice.php:47
msgid "We can&#8217;t connect to your site."
msgstr "Vi klarer ikke koble til ditt nettsted,"
#: views/start.php:18 views/start.php:32
msgid "Akismet eliminates the comment and trackback spam you get on your site."
msgstr "Akismet hindrer useriøse kommentarer og tilbakesporinger fra å komme inn på ditt nettsted."
#: views/start.php:40 views/start.php:74
msgid "Akismet eliminates the comment and trackback spam you get on your site. To setup Akismet, select one of the options below."
msgstr "Akismet hindrer useriøse kommentarer og tilbakesporinger fra å komme inn på ditt nettsted. For å sette opp Akismet velger du en av alternativene nedenfor."
#: views/start.php:57
msgid "Use this option if you want to setup a new Akismet account."
msgstr "Bruk dette alternativet hvis du ønsker å opprette en ny Akismet-konto."
#. translators: the placeholder is a clickable URL that leads to more
#. information regarding an error code.
#: views/notice.php:35
#: views/notice.php:32
msgid "For more information: %s"
msgstr "For mer informasjon: %s"
#: views/start.php:14
msgid "Register Akismet"
msgstr "Registrer Akismet"
#: views/notice.php:68
#: views/notice.php:72
msgid "You can help us fight spam and upgrade your account by <a href=\"%s\" target=\"_blank\">contributing a token amount</a>."
msgstr "Du kan hjelpe oss bekjemte useriøst innhold og oppgradere din konto ved <a href=\"%s\" target=\"_blank\">å bidra med et selvvalgt beløp</a>."
#: views/start.php:59
msgid "Register a different email address"
msgstr "Registrer en annen epostadresse."
#: views/start.php:56
msgid "Create a new API key with a different email address"
msgstr "Opprett en ny API-nøkkel med en annen epostadresse"
#: views/start.php:36
msgid "No worries! Get in touch and we&#8217;ll help sort this out."
msgstr "Ingen bekymringer! Ta kontakt med oss og vi vil hjelpe med å finne ut av dette."
#: views/notice.php:48
msgid "Your firewall may be blocking us. Please contact your host and refer to <a href=\"%s\" target=\"_blank\">our guide about firewalls</a>."
msgstr "Din brannmur blokkerer oss kanskje ute. Vennligst ta kontakt med din web-vert og vis til<a href=\"%s\" target=\"_blank\">vår veiledning om brannmurer</a>."
#: views/strict.php:5
#: views/strict.php:14
msgid "Safe: always put spam in the Spam folder for review."
msgstr "Trygg: legg alltid useriøst innhold for gjennomgang i Useriøs-mappen."
#: views/start.php:4
msgid "Akismet eliminates the comment and trackback spam you get on your site. Register your email address below to get started."
msgstr "Akismet eliminerer de useriøse kommentarer og tilbakesporinger du mottar på ditt nettsted. Registrer din eposadresse nedenfor for å komme i gang."
#: views/notice.php:52
msgid "Please update your payment details."
msgstr "Vennlist oppdater dine betalingsdetaljer."
#: views/notice.php:53
msgid "We cannot process your transaction. Please contact your bank for assistance, and <a href=\"%s\" target=\"_blank\">update your payment details</a>."
msgstr "Vi kan ikke utføre din transaksjon. Vennligst kontakt din bank for assistanse og <a href=\"%s\" target=\"_blank\">oppdater dine betalingsdetaljer</a>."
#: views/notice.php:58
msgid "Please visit the <a href=\"%s\" target=\"_blank\">Akismet account page</a> to reactivate your subscription."
msgstr "Vennligst besøk <a href=\"%s\" target=\"_blank\">kontosiden i Akismet</a> for a reaktivere dit abonnement."
#: views/start.php:7 views/start.php:21 views/start.php:34 views/start.php:43
#: views/start.php:7 views/start.php:22 views/start.php:36 views/start.php:45
msgid "Connected via Jetpack"
msgstr "Koblet til gjennom Jetpack"
#: views/start.php:35
#: views/start.php:37
msgid "Your subscription for %s is suspended"
msgstr "Ditt abonnement på %s er suspendert"
#: views/notice.php:11
#: views/notice.php:8
msgid "Activate your Akismet account"
msgstr "Aktiver din Akismet-konto"
#: views/config.php:109
#: views/config.php:105
msgid "Show approved comments"
msgstr "Vis godkjente kommentarer"
#: views/config.php:152
#: views/config.php:148
msgid "Save Changes"
msgstr "Lagre endringer"
#: class.akismet-admin.php:443
#: class.akismet-admin.php:463
msgid "Awaiting spam check"
msgstr "Avventer spam-sjekk"
@@ -404,72 +304,72 @@ msgid_plural "<strong class=\"count\">%1$s spam</strong> blocked by <strong>Akis
msgstr[0] "<strong class=\"count\">%1$s useriøs kommentar</strong> stoppet av <strong>Akismet</strong>"
msgstr[1] "<strong class=\"count\">%1$s useriøse kommentarer</strong> stoppet av <strong>Akismet</strong>"
#: class.akismet-admin.php:69 class.akismet-admin.php:191
#: class.akismet-admin.php:589 views/config.php:60 views/stats.php:2
#: class.akismet-admin.php:86 class.akismet-admin.php:209
#: class.akismet-admin.php:609 views/config.php:56 views/stats.php:2
msgid "Settings"
msgstr "Innstillinger"
#: class.akismet-admin.php:223
#: class.akismet-admin.php:241
msgid "Cheatin&#8217; uh?"
msgstr "Jukser du?"
#: class.akismet-admin.php:294
#: class.akismet-admin.php:314
msgid "<a href=\"%1$s\">Akismet</a> has protected your site from %2$s spam comment already. "
msgid_plural "<a href=\"%1$s\">Akismet</a> has protected your site from %2$s spam comments already. "
msgstr[0] "<a href=\"%1$s\">Akismet</a> har beskyttet din side mot %2$s useriøs kommentar allerede."
msgstr[1] "<a href=\"%1$s\">Akismet</a> har beskyttet din side mot %2$s useriøse kommentarer allerede."
#: class.akismet-admin.php:447
#: class.akismet-admin.php:467
msgid "Flagged as spam by Akismet"
msgstr "Merket som useriøst av Akismet"
#: class.akismet-admin.php:467
#: class.akismet-admin.php:487
msgid "History"
msgstr "Historikk"
#: class.akismet-admin.php:282
#: class.akismet-admin.php:302
msgctxt "comments"
msgid "Spam"
msgstr "Useriøse"
#: class.akismet-admin.php:449
#: class.akismet-admin.php:469
msgid "Cleared by Akismet"
msgstr "Godkjent av Akismet"
#: class.akismet-admin.php:483
#: class.akismet-admin.php:503
msgid "%s approved"
msgid_plural "%s approved"
msgstr[0] "%s godkjent"
msgstr[1] "%s godkjente"
#: class.akismet-admin.php:543
#: class.akismet-admin.php:563
msgid "Akismet caught this comment as spam during an automatic retry."
msgstr "Akismet fanget denne kommentaren som useriøs i løpet av en automatisk re-sjekk."
#: class.akismet-admin.php:563
#: class.akismet-admin.php:583
msgid "Comment status was changed to %s"
msgstr "Status for kommentaren ble endret til %s"
#: class.akismet-admin.php:546
#: class.akismet-admin.php:566
msgid "Akismet cleared this comment during an automatic retry."
msgstr "Akismet godkjente denne kommentaren ved en ny automatisk kontroll."
#: class.akismet-admin.php:467 class.akismet-admin.php:475
#: class.akismet-admin.php:487 class.akismet-admin.php:495
msgid "View comment history"
msgstr "Se kommentarhistorikk"
#. #-#-#-#-# tmp-akismet.pot (Akismet 3.1.3) #-#-#-#-#
#. #-#-#-#-# tmp-akismet.pot (Akismet 3.1.7) #-#-#-#-#
#. Plugin Name of the plugin/theme
#: class.akismet-admin.php:76 class.akismet-admin.php:78
#: class.akismet-admin.php:842 views/config.php:3
#: class.akismet-admin.php:93 class.akismet-admin.php:95
#: class.akismet-admin.php:850 views/config.php:3
msgid "Akismet"
msgstr "Akismet"
#: class.akismet-admin.php:453
#: class.akismet-admin.php:473
msgid "Flagged as spam by %s"
msgstr "Merket som useriøs av %s"
#: class.akismet-admin.php:215
#: class.akismet-admin.php:233
msgid "For more information:"
msgstr "For mer informasjon:"
@@ -477,44 +377,44 @@ msgstr "For mer informasjon:"
msgid "Title:"
msgstr "Tittel:"
#: class.akismet-admin.php:182 class.akismet-admin.php:193
#: class.akismet-admin.php:205
#: class.akismet-admin.php:200 class.akismet-admin.php:211
#: class.akismet-admin.php:223
msgid "Akismet Configuration"
msgstr "Akismet innstillinger"
#: class.akismet-admin.php:169 views/stats.php:2
#: class.akismet-admin.php:187 views/stats.php:2
msgid "Akismet Stats"
msgstr "Akismet statistikk"
#: class.akismet-admin.php:332
#: class.akismet-admin.php:352
msgid "Check for Spam"
msgstr "Se etter useriøse"
#: class.akismet-admin.php:577
#: class.akismet-admin.php:597
msgid "%s ago"
msgstr "%s siden"
#: class.akismet-admin.php:104
#: class.akismet-admin.php:122
msgid "Remove this URL"
msgstr "Slett denne URL-en"
#: class.akismet-admin.php:105
#: class.akismet-admin.php:123
msgid "Removing..."
msgstr "Sletter..."
#: class.akismet-admin.php:106
#: class.akismet-admin.php:124
msgid "URL removed"
msgstr "URL slettet"
#: class.akismet-admin.php:107
#: class.akismet-admin.php:125
msgid "(undo)"
msgstr "(angre)"
#: class.akismet-admin.php:108
#: class.akismet-admin.php:126
msgid "Re-adding..."
msgstr "Legger til igjen..."
#: views/config.php:121
#: views/config.php:117
msgid "Note:"
msgstr "Merk:"
@@ -522,7 +422,7 @@ msgstr "Merk:"
msgid "Accuracy"
msgstr "Treffsikkerhet"
#: class.akismet-admin.php:206 views/config.php:170
#: class.akismet-admin.php:224 views/config.php:166
msgid "Subscription Type"
msgstr "Type abonnement"
@@ -534,14 +434,14 @@ msgstr "Sammendrag"
msgid "Past six months"
msgstr "Siste seks måneder"
#: class.akismet-admin.php:306
#: class.akismet-admin.php:326
msgid "There&#8217;s <a href=\"%2$s\">%1$s comment</a> in your spam queue right now."
msgid_plural "There are <a href=\"%2$s\">%1$s comments</a> in your spam queue right now."
msgstr[0] "Det er akkurat nå <a href=\"%2$s\">%1$s kommentar</a> din useriøs-kø."
msgstr[1] "Det er akkurat nå <a href=\"%2$s\">%1$s kommentarer</a> i din useriøs-kø."
#: class.akismet-admin.php:129 class.akismet-admin.php:167
#: class.akismet-admin.php:180
#: class.akismet-admin.php:147 class.akismet-admin.php:185
#: class.akismet-admin.php:198
msgid "Overview"
msgstr "Oversikt"
@@ -549,160 +449,131 @@ msgstr "Oversikt"
msgid "All time"
msgstr "Til alle tider"
#: class.akismet.php:1029
#: class.akismet.php:1037
msgid "Akismet %s requires WordPress %s or higher."
msgstr "Akismet %s krever WordPress %s eller nyere."
#: class.akismet-admin.php:887
msgid "Since you joined us, Akismet has saved you %d minutes!"
msgstr "Siden du ble med har Aksimet spart deg for %d minutter!"
#: class.akismet-admin.php:300
#: class.akismet-admin.php:320
msgid "<a href=\"%s\">Akismet</a> blocks spam from getting to your blog. "
msgstr "<a href=\"%s\">Akismet</a> hindrer useriøst innhold fra å komme inn i ditt nettsted. "
#: class.akismet-admin.php:194
#: class.akismet-admin.php:212
msgid "Enter/remove an API key."
msgstr "Legg til eller fjern en API-nøkkel."
#: views/config.php:146
#: views/config.php:142
msgid "Disconnect this account"
msgstr "Koble fra denne kontoen"
#: class.akismet-admin.php:217
#: class.akismet-admin.php:235
msgid "Akismet Support"
msgstr "Akismet brukerstøtte"
#: class.akismet-admin.php:184
#: class.akismet-admin.php:202
msgid "On this page, you are able to enter/remove an API key, view account information and view spam stats."
msgstr "På denne siden kan du legge inn eller fjerne en API-nøkkel, vise kontoinformasjon og vise statistikk over useriøst innhold."
#: class.akismet-admin.php:883
msgid "Since you joined us, Akismet has saved you %s days!"
msgstr "Siden du ble med har Akismet spart deg for %s dager!"
#: class.akismet-admin.php:151
#: class.akismet-admin.php:169
msgid "Enter an API Key"
msgstr "Skriv inn en API-nøkkel"
#: class.akismet-admin.php:154
#: class.akismet-admin.php:172
msgid "If you already have an API key"
msgstr "Du har allerede en API-nøkkel"
#: class.akismet-admin.php:203 views/config.php:165
#: class.akismet-admin.php:221 views/config.php:161
msgid "Account"
msgstr "Konto"
#: views/config.php:20 views/config.php:25
msgid "Spam blocked"
msgstr "Useriøst innhold blokkert"
msgid_plural "Spam blocked"
msgstr[0] "Useriøst innhold blokkert"
msgstr[1] ""
#: views/config.php:208
#: views/config.php:204
msgid "Upgrade"
msgstr "Oppgrader"
#: class.akismet-admin.php:157
#: class.akismet-admin.php:175
msgid "Click the Use this Key button."
msgstr "Trykk på knappen Bruk denne nøkkelen."
#: class.akismet-admin.php:140
#: class.akismet-admin.php:158
msgid "New to Akismet"
msgstr "Fersk med Akismet"
#: class.akismet-admin.php:133
msgid "On this page, you are able to setup the Akismet plugin."
msgstr "På denne siden kan du konfigurere Akismet-utvidelsen."
#: class.akismet-admin.php:171
#: class.akismet-admin.php:189
msgid "On this page, you are able to view stats on spam filtered on your site."
msgstr "På denne siden kan du se statistikk for useriøst innhold filtrert på ditt nettsted."
#: class.akismet-admin.php:131 class.akismet-admin.php:142
#: class.akismet-admin.php:153
#: class.akismet-admin.php:149 class.akismet-admin.php:160
#: class.akismet-admin.php:171
msgid "Akismet Setup"
msgstr "Konfigurering av Akismet"
#: class.akismet-admin.php:885
msgid "Since you joined us, Akismet has saved you %d hours!"
msgstr "Siden du ble med har Akismet spart deg for %d timer!"
#: class.akismet-admin.php:144
msgid "Signup for an account on %s to get an API Key."
msgstr "Registrer deg for en konto på %s og få en API-nøkkel."
#: views/config.php:208
#: views/config.php:204
msgid "Change"
msgstr "Endre"
#: class.akismet-admin.php:207
#: class.akismet-admin.php:225
msgid "The subscription status - active, cancelled or suspended"
msgstr "Abonnementets status - aktivt, avbrutt eller avsluttet."
#: class.akismet-admin.php:284
#: class.akismet-admin.php:304
msgid "<a href=\"%1$s\">Akismet</a> has protected your site from <a href=\"%2$s\">%3$s spam comment</a>."
msgid_plural "<a href=\"%1$s\">Akismet</a> has protected your site from <a href=\"%2$s\">%3$s spam comments</a>."
msgstr[0] "<a href=\"%1$s\">Akismet</a> har beskyttet ditt nettsted fra <a href=\"%2$s\">%3$s useriøs kommentar</a>."
msgstr[1] "<a href=\"%1$s\">Akismet</a> har beskyttet dit nettsted fra <a href=\"%2$s\">%3$s useriøse kommentarer</a>."
#: views/config.php:109
#: views/config.php:105
msgid "Show the number of approved comments beside each comment author"
msgstr "Vis antall godkjente kommentarer ved siden av hver kommentarforfatter"
#: class.akismet-admin.php:207 views/config.php:177
#: class.akismet-admin.php:225 views/config.php:173
msgid "Status"
msgstr "Status"
#: class.akismet-admin.php:156
#: class.akismet-admin.php:174
msgid "Copy and paste the API key into the text field."
msgstr "Kopier og lim inn API-nøkkelen i tekstfeltet."
#: views/config.php:32
msgid "%s missed spam, %s false positive"
msgid_plural "%s missed spam, %s false positives"
msgstr[0] "%s udetektert useriøs, %s falsk positiv"
msgstr[1] "%s udetekterte useriøse, %s falske positive"
#: class.akismet-admin.php:216
#: class.akismet-admin.php:234
msgid "Akismet FAQ"
msgstr "Akismet FAQ"
#: class.akismet-admin.php:880
#: class.akismet-admin.php:888
msgid "Cleaning up spam takes time."
msgstr "Opprenskning av useriøst innhold tar tid."
#: class.akismet-admin.php:143
#: class.akismet-admin.php:161
msgid "You need to enter an API key to activate the Akismet service on your site."
msgstr "Du trenger an API-nøkkel for å aktivere Akismet-tjenesten på ditt nettsted."
#: class.akismet-admin.php:132 class.akismet-admin.php:170
#: class.akismet-admin.php:183
msgid "Akismet filters out your comment and trackback spam for you, so you can focus on more important things."
msgstr "Akismet filtrerer dine kommentarer og tilbakesporinger for deg slik at du kan konsentrere deg om viktigere ting."
#: class.akismet-admin.php:312
#: class.akismet-admin.php:332
msgid "There&#8217;s nothing in your <a href='%s'>spam queue</a> at the moment."
msgstr "Akkurat nå er det er intet i din <a href='%s'>useriøs-kø</a>."
#: class.akismet-admin.php:195
#: class.akismet-admin.php:213
msgid "Show the number of approved comments beside each comment author in the comments list page."
msgstr "Vis antallet godkjente kommentarer ved siden av hver kommentarforfatter i på siden med kommentarlisten."
#: class.akismet-admin.php:194 views/config.php:67
#: class.akismet-admin.php:212 views/config.php:63
msgid "API Key"
msgstr "API-nøkkel"
#: class.akismet-admin.php:206
#: class.akismet-admin.php:224
msgid "The Akismet subscription plan"
msgstr "Akismet abonnementer"
#: class.akismet.php:1029 views/notice.php:27
#: class.akismet.php:1037 views/notice.php:24
msgid "Please <a href=\"%1$s\">upgrade WordPress</a> to a current version, or <a href=\"%2$s\">downgrade to version 2.4 of the Akismet plugin</a>."
msgstr "Vennligst <a href=\"%1$s\">oppgrader WordPress</a> til en nyere versjon eller <a href=\"%2$s\">nedgrader til versjon 2.4 av utvidelsen Akismet</a>.."
#: views/config.php:196
#: views/config.php:192
msgid "Next Billing Date"
msgstr "Neste fakturadato"
#: class.akismet-admin.php:53
#: class.akismet-admin.php:70
msgid "Comment History"
msgstr "Kommentarhistorikk"
Binary file not shown.
+182 -189
View File
@@ -2,7 +2,7 @@
# This file is distributed under the same license as the Twenty Fifteen package.
msgid ""
msgstr ""
"PO-Revision-Date: 2015-07-27 22:21:26+0000\n"
"PO-Revision-Date: 2015-07-07 10:34:42+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -10,58 +10,64 @@ msgstr ""
"X-Generator: GlotPress/1.0-alpha-1100\n"
"Project-Id-Version: Twenty Fifteen\n"
#. Author of the plugin/theme
msgid "the WordPress team"
msgstr "WordPress-gjengen"
#. translators: %s: post title
#: inc/template-tags.php:123
msgid "Leave a comment<span class=\"screen-reader-text\"> on %s</span>"
msgstr "Legg igjen en kommentar<span class=\"screen-reader-text\"> til %s</span>"
#. Theme URI of the plugin/theme
msgid "https://wordpress.org/themes/twentyfifteen/"
msgstr "https://wordpress.org/themes/twentyfifteen/"
#. Description of the plugin/theme
msgid "Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer."
msgstr "Vårt standardtema for 2015 er stilrent, bloggfokusert og designet for tydelighet. Twenty Fifteens enkle, ukompliserte typografi er lesbar på en lang rekke skjermstørrelser og tilpasset flere språk. Vi designet det med en mobil-først-tilnærming, som betyr at innholdet ditt får hovedfokus, uansett om dine besøkende kommer via smarttelefon, nettbrett, bærbar eller stasjonær datamaskin."
#. Theme Name of the plugin/theme
msgid "Twenty Fifteen"
msgstr "Twenty Fifteen"
#: single.php:37
msgid "Previous post:"
msgstr "Forrige innlegg:"
#: single.php:36
msgid "Previous"
msgstr "Forrige"
#: single.php:34
msgid "Next post:"
msgstr "Neste innlegg:"
#: inc/customizer.php:47 inc/customizer.php:63 inc/customizer.php:68
msgid "Applied to the header on small screens and the sidebar on wide screens."
msgstr "Benyttes i sidetoppen på små skjermer og i sidekolonnen på brede skjermer."
#: single.php:36
msgid "Previous"
msgstr "Forrige"
#: single.php:33
msgid "Next"
msgstr "Neste"
#: image.php:84
msgctxt "Parent post link"
msgid "<span class=\"meta-nav\">Published in</span><span class=\"post-title\">%title</span>"
msgstr "<span class=\"meta-nav\">Hører til</span><span class=\"post-title\">%title</span>"
#: inc/template-tags.php:91 inc/template-tags.php:99
msgctxt "Used between list items, there is a space after the comma."
msgid ", "
msgstr ", "
#: image.php:24
msgid "Previous Image"
msgstr "Forrige bilde"
#: image.php:24
msgid "Next Image"
msgstr "Neste bilde"
#: inc/template-tags.php:23
msgid "Comment navigation"
msgstr "Kommentarnavigasjon"
#: search.php:18
msgid "Search Results for: %s"
msgstr "Søkeresultater for: %s"
#: inc/template-tags.php:122
msgid "% Comments"
msgstr "% kommentarer"
#: inc/template-tags.php:122
msgid "1 Comment"
msgstr "1 kommentar"
#: inc/template-tags.php:122
msgid "Leave a comment"
msgstr "Legg igjen en kommentar"
#: inc/template-tags.php:113
msgctxt "Used before full size attachment link."
msgid "Full size"
msgstr "Full størrelse"
#. Author of the plugin/theme
msgid "the WordPress team"
msgstr "WordPress-gjengen"
#: inc/template-tags.php:102
msgctxt "Used before tag names."
@@ -73,115 +79,162 @@ msgctxt "Used before category names."
msgid "Categories"
msgstr "Kategorier"
#: inc/template-tags.php:91 inc/template-tags.php:99
msgctxt "Used between list items, there is a space after the comma."
msgid ", "
msgstr ", "
#. Theme Name of the plugin/theme
msgid "Twenty Fifteen"
msgstr "Twenty Fifteen"
#: inc/template-tags.php:85
msgctxt "Used before post author name."
msgid "Author"
msgstr "Forfatter"
#: inc/template-tags.php:26
msgid "Older Comments"
msgstr "Eldre kommentarer"
#: inc/template-tags.php:55
msgctxt "Used before post format."
msgid "Format"
msgstr "Format"
#: inc/template-tags.php:30
msgid "Newer Comments"
msgstr "Nyere kommentarer"
#: inc/template-tags.php:49
msgid "Featured"
msgstr "Fremhevet"
#: inc/customizer.php:168
msgid "Blue"
msgstr "Blå"
#: inc/customizer.php:157
msgid "Purple"
msgstr "Lilla"
#: inc/customizer.php:146
msgid "Pink"
msgstr "Rosa"
#: inc/back-compat.php:37 inc/back-compat.php:47 inc/back-compat.php:60
msgid "Twenty Fifteen requires at least WordPress version 4.1. You are running version %s. Please upgrade and try again."
msgstr "Twenty Fifteen krever minst WordPress versjon 4.1. Du kjører versjon %s. Vennligst oppgrader og forsøk igjen."
#: header.php:43
msgid "Menu and widgets"
msgstr "Meny og widgeter"
#: inc/template-tags.php:113
msgctxt "Used before full size attachment link."
msgid "Full size"
msgstr "Full størrelse"
#: inc/customizer.php:124
msgid "Dark"
msgstr "Mørk"
#: inc/customizer.php:135
msgid "Yellow"
msgstr "Gul"
#: inc/customizer.php:113
msgid "Default"
msgstr "Standard"
#: inc/template-tags.php:76
msgctxt "Used before publish date."
msgid "Posted on"
msgstr "Publisert"
#: inc/template-tags.php:49
msgid "Featured"
msgstr "Fremhevet"
#: inc/template-tags.php:30
msgid "Newer Comments"
msgstr "Nyere kommentarer"
#: inc/template-tags.php:26
msgid "Older Comments"
msgstr "Eldre kommentarer"
#: inc/template-tags.php:23
msgid "Comment navigation"
msgstr "Kommentarnavigasjon"
#: inc/customizer.php:147
msgid "Blue"
msgstr "Blå"
#: inc/customizer.php:136
msgid "Purple"
msgstr "Lilla"
#: inc/customizer.php:125
msgid "Pink"
msgstr "Rosa"
#: inc/customizer.php:114
msgid "Yellow"
msgstr "Gul"
#: inc/customizer.php:103
msgid "Dark"
msgstr "Mørk"
#: inc/customizer.php:92
msgid "Default"
msgstr "Standard"
#: inc/customizer.php:62
msgid "Header and Sidebar Background Color"
msgstr "Bakgrunnsfarge i sidetopp og sidekolonne"
#: inc/customizer.php:47 inc/customizer.php:63 inc/customizer.php:68
msgid "Applied to the header on small screens and the sidebar on wide screens."
msgstr "Benyttes i sidetoppen på små skjermer og i sidekolonnen på brede skjermer."
#: inc/customizer.php:31
msgid "Base Color Scheme"
msgstr "Grunnpalett"
#: inc/template-tags.php:55
msgctxt "Used before post format."
msgid "Format"
msgstr "Format"
#: inc/template-tags.php:85
msgctxt "Used before post author name."
msgid "Author"
msgstr "Forfatter"
#: inc/customizer.php:46
msgid "Header and Sidebar Text Color"
msgstr "Tekstfarge i sidetopp og sidekolonne"
#: inc/back-compat.php:37 inc/back-compat.php:47 inc/back-compat.php:60
msgid "Twenty Fifteen requires at least WordPress version 4.1. You are running version %s. Please upgrade and try again."
msgstr "Twenty Fifteen krever minst WordPress versjon 4.1. Du kjører versjon %s. Vennligst oppgrader og forsøk igjen."
#: inc/customizer.php:62
msgid "Header and Sidebar Background Color"
msgstr "Bakgrunnsfarge i sidetopp og sidekolonne"
#: image.php:84
msgctxt "Parent post link"
msgid "<span class=\"meta-nav\">Published in</span><span class=\"post-title\">%title</span>"
msgstr "<span class=\"meta-nav\">Hører til</span><span class=\"post-title\">%title</span>"
#. Description of the plugin/theme
msgid "Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer."
msgstr "Vårt standardtema for 2015 er stilrent, bloggfokusert og designet for tydelighet. Twenty Fifteens enkle, ukompliserte typografi er lesbar på en lang rekke skjermstørrelser og tilpasset flere språk. Vi designet det med en mobil-først-tilnærming, som betyr at innholdet ditt får hovedfokus, uansett om dine besøkende kommer via smarttelefon, nettbrett, bærbar eller stasjonær datamaskin."
#: image.php:24
msgid "Next Image"
msgstr "Neste bilde"
#: content-none.php:22
msgid "Ready to publish your first post? <a href=\"%1$s\">Get started here</a>."
msgstr "Klar for å skrive ditt første innlegg? <a href=\"%1$s\">Kom i gang her</a>."
#: header.php:43
msgid "Menu and widgets"
msgstr "Meny og widgeter"
#: comments.php:53
msgid "Comments are closed."
msgstr "Det er stengt for kommentarer."
#: image.php:24
msgid "Previous Image"
msgstr "Forrige bilde"
#: content-link.php:36 content-page.php:25 content.php:38 image.php:59
msgid "Pages:"
msgstr "Sider:"
#: content-link.php:56 content-page.php:35 content-search.php:28
#: content-search.php:33 content.php:57 image.php:71
msgid "Edit"
msgstr "Rediger"
#: footer.php:25
msgid "Proudly powered by %s"
msgstr "Stolt drevet av %s"
#: functions.php:85
msgid "Primary Menu"
msgstr "Primærmeny"
#: header.php:26
msgid "Skip to content"
msgstr "Gå til innhold"
#: functions.php:256
msgid "collapse child menu"
msgstr "Slå sammen undermeny"
#: content-none.php:15
msgid "Nothing Found"
msgstr "Ingenting funnet"
#: content-none.php:26
msgid "Sorry, but nothing matched your search terms. Please try again with some different keywords."
msgstr "Beklager, men det ble ikke funnet noe som passet det du søkte etter. Vennligst prøv med noen andre søkeord."
#: content-none.php:31
msgid "It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps searching can help."
msgstr "Vi klarer ikke å finne det du leter etter. Prøv å søke."
#: functions.php:133
msgid "Widget Area"
msgstr "Widgetområde"
#. #-#-#-#-# twentyfifteen.pot (Twenty Fifteen 1.4) #-#-#-#-#
#. Author URI of the plugin/theme
#: footer.php:25
msgid "https://wordpress.org/"
msgstr "https://wordpress.org/"
#. translators: %s: Name of current post
#: content-link.php:31 content.php:33 inc/template-tags.php:238
msgid "Continue reading %s"
msgstr "Fortsett å lese %s"
#: functions.php:255
msgid "expand child menu"
msgstr "Utvid undermeny"
#: functions.php:256
msgid "collapse child menu"
msgstr "Slå sammen undermeny"
#. Translators: If there are characters in your language that are not supported
#. by Inconsolata, translate this to 'off'. Do not translate into your own
#. language.
#: functions.php:177
msgctxt "Inconsolata font: on or off"
msgid "on"
msgstr "on"
#. Translators: To add an additional character subset specific to your
#. language, translate this to 'greek', 'cyrillic', 'devanagari' or
#. 'vietnamese'. Do not translate into your own language.
@@ -191,10 +244,10 @@ msgid "no-subset"
msgstr "no-subset"
#. Translators: If there are characters in your language that are not supported
#. by Inconsolata, translate this to 'off'. Do not translate into your own
#. by Noto Sans, translate this to 'off'. Do not translate into your own
#. language.
#: functions.php:177
msgctxt "Inconsolata font: on or off"
#: functions.php:161
msgctxt "Noto Sans font: on or off"
msgid "on"
msgstr "on"
@@ -206,74 +259,6 @@ msgctxt "Noto Serif font: on or off"
msgid "on"
msgstr "on"
#. Translators: If there are characters in your language that are not supported
#. by Noto Sans, translate this to 'off'. Do not translate into your own
#. language.
#: functions.php:161
msgctxt "Noto Sans font: on or off"
msgid "on"
msgstr "on"
#: functions.php:135
msgid "Add widgets here to appear in your sidebar."
msgstr "Widgeter som legges til her vises i din sidekolonne."
#: functions.php:133
msgid "Widget Area"
msgstr "Widgetområde"
#: functions.php:86
msgid "Social Links Menu"
msgstr "Sosiale medier-meny"
#: functions.php:85
msgid "Primary Menu"
msgstr "Primærmeny"
#: footer.php:25
msgid "Proudly powered by %s"
msgstr "Drevet av %s"
#. #-#-#-#-# twentyfifteen.pot (Twenty Fifteen 1.2) #-#-#-#-#
#. Author URI of the plugin/theme
#: footer.php:25
msgid "https://wordpress.org/"
msgstr "https://wordpress.org/"
#: content-none.php:31
msgid "It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps searching can help."
msgstr "Vi klarer ikke å finne det du leter etter. Prøv å søke."
#: content-none.php:26
msgid "Sorry, but nothing matched your search terms. Please try again with some different keywords."
msgstr "Beklager, men det ble ikke funnet noe som passet det du søkte etter. Vennligst prøv med noen andre søkeord."
#: content-none.php:22
msgid "Ready to publish your first post? <a href=\"%1$s\">Get started here</a>."
msgstr "Klar for å skrive ditt første innlegg? <a href=\"%1$s\">Kom i gang her</a>."
#: content-none.php:15
msgid "Nothing Found"
msgstr "Ingenting funnet"
#: content-link.php:56 content-page.php:35 content-search.php:28
#: content-search.php:33 content.php:57 image.php:71
msgid "Edit"
msgstr "Rediger"
#: content-link.php:36 content-page.php:25 content.php:38 image.php:59
msgid "Pages:"
msgstr "Sider:"
#. translators: %s: Name of current post
#: content-link.php:31 content.php:33 inc/template-tags.php:237
msgid "Continue reading %s"
msgstr "Fortsett å lese %s"
#: comments.php:53
msgid "Comments are closed."
msgstr "Det er stengt for kommentarer."
#: comments.php:28
msgctxt "comments title"
msgid "One thought on &ldquo;%2$s&rdquo;"
@@ -281,14 +266,26 @@ msgid_plural "%1$s thoughts on &ldquo;%2$s&rdquo;"
msgstr[0] "Én kommentar til &laquo;%2$s&raquo;"
msgstr[1] "%1$s kommentarer til &laquo;%2$s&raquo;"
#: author-bio.php:34
msgid "View all posts by %s"
msgstr "Vis alle innlegg av %s"
#: functions.php:86
msgid "Social Links Menu"
msgstr "Sosiale medier-meny"
#: functions.php:135
msgid "Add widgets here to appear in your sidebar."
msgstr "Widgeter som legges til her vises i din sidekolonne."
#: author-bio.php:12
msgid "Published by"
msgstr "Skrevet av"
#: 404.php:21
msgid "It looks like nothing was found at this location. Maybe try a search?"
msgstr "Det ser ikke ut til at noe ble funnet på denne adressen. Kanskje du kan prøve et søk?"
#: author-bio.php:34
msgid "View all posts by %s"
msgstr "Vis alle innlegg av %s"
#: archive.php:51 content-link.php:40 content-page.php:29 content.php:42
#: image.php:63 index.php:48 search.php:40
msgid "Page"
@@ -302,10 +299,6 @@ msgstr "Neste side"
msgid "Previous page"
msgstr "Forrige side"
#: 404.php:21
msgid "It looks like nothing was found at this location. Maybe try a search?"
msgstr "Det ser ikke ut til at noe ble funnet på denne adressen. Kanskje du kan prøve et søk?"
#: 404.php:17
msgid "Oops! That page can&rsquo;t be found."
msgstr "Oida! Den siden finnes ikke."
Binary file not shown.
@@ -2,7 +2,7 @@
# This file is distributed under the same license as the Twenty Fourteen package.
msgid ""
msgstr ""
"PO-Revision-Date: 2015-07-27 22:21:24+0000\n"
"PO-Revision-Date: 2015-03-27 07:43:50+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -10,199 +10,64 @@ msgstr ""
"X-Generator: GlotPress/1.0-alpha-1100\n"
"Project-Id-Version: Twenty Fourteen\n"
#. #-#-#-#-# twentyfourteen.pot (Twenty Fourteen 1.6) #-#-#-#-#
#. Author URI of the plugin/theme
#: footer.php:21
msgid "https://wordpress.org/"
msgstr "https://wordpress.org/"
#. Template Name of the plugin/theme
msgid "Full Width Page"
msgstr "Side i full bredde"
#. Template Name of the plugin/theme
msgid "Contributor Page"
msgstr "Bidragsyters side"
#. Author of the plugin/theme
msgid "the WordPress team"
msgstr "WordPress-gjengen"
#. Description of the plugin/theme
msgid "In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier."
msgstr "I 2014 gjør vårt standardtema deg i stand til å lage et responsivt magasinnettsted med et moderne design. Fremhev ditt favorittinnhold i et rutenett eller en slider. Bruk de tre widgetområdene for å tilpasse nettstedet og endre layouten med fullbreddeformat og bidragsytersider for å fremheve dine ulike forfattere. Å lage et magasinnettsted med WordPress har aldri vært enklere."
#. Theme URI of the plugin/theme
msgid "https://wordpress.org/themes/twentyfourteen/"
msgstr "https://wordpress.org/themes/twentyfourteen/"
#: tag.php:22
msgid "Tag Archives: %s"
msgstr "Stikkordarkiv: %s"
#. translators: %s: Name of current post
#: content-aside.php:48 content-audio.php:48 content-gallery.php:48
#: content-image.php:48 content-link.php:48 content-quote.php:48
#: content-video.php:48 content.php:56 inc/template-tags.php:222
msgid "Continue reading %s <span class=\"meta-nav\">&rarr;</span>"
msgstr "Fortsett å lese %s <span class=\"meta-nav\">&rarr;</span>"
#: search.php:18
msgid "Search Results for: %s"
msgstr "Søkeresultater for: %s"
#: inc/customizer.php:31 inc/customizer.php:32
msgid "May only be visible on wide screens."
msgstr "Er kanskje kun synlig på brede skjermer."
#: inc/widgets.php:261
msgid "Post format to show:"
msgstr "Innleggsformat som skal vises:"
#: inc/widgets.php:59
msgid "More videos"
msgstr "Flere videoer"
#: inc/widgets.php:258
msgid "Number of posts to show:"
msgstr "Antall innlegg som skal vises:"
#: inc/widgets.php:63
msgid "More audio"
msgstr "Mer lyd"
#: inc/widgets.php:255
msgid "Title:"
msgstr "Tittel:"
#: inc/widgets.php:67
msgid "More quotes"
msgstr "Flere sitater"
#: inc/widgets.php:71
msgid "More links"
msgstr "Flere lenker"
#: inc/widgets.php:75
msgid "More galleries"
msgstr "Flere gallerier"
#: inc/widgets.php:80
msgid "More asides"
msgstr "Flere notiser"
#: inc/customizer.php:108
msgid "The home page features your choice of up to 6 posts prominently displayed in a grid or slider, controlled by a <a href=\"%1$s\">tag</a>; you can change the tag and layout in <a href=\"%2$s\">Appearance &rarr; Customize</a>. If no posts match the tag, <a href=\"%3$s\">sticky posts</a> will be displayed instead."
msgstr "Forsiden viser fremhevet innhold – opp til seks innlegg som vises i et rutenett eller i en slider, kontrollert av et <a href=\"%1$s\">stikkord</a>. Du kan endre stikkordet og layouten i <a href=\"%2$s\">Utseende &rarr; Tilpass</a>. Hvis ingen innlegg har dette stikkordet, vises <a href=\"%3$s\">klebrige innlegg</a> isteden."
#. translators: used with More archives link
#: inc/widgets.php:206
msgid "%s <span class=\"meta-nav\">&rarr;</span>"
msgstr "%s <span class=\"meta-nav\">&rarr;</span>"
#: inc/widgets.php:162
msgid "This gallery contains <a href=\"%1$s\" rel=\"bookmark\">%2$s photo</a>."
msgid_plural "This gallery contains <a href=\"%1$s\" rel=\"bookmark\">%2$s photos</a>."
msgstr[0] "Dette galleriet inneholder <a href=\"%1$s\" rel=\"bookmark\">%2$s bilde</a>."
msgstr[1] "Dette galleriet inneholder <a href=\"%1$s\" rel=\"bookmark\">%2$s bilder</a>."
#: inc/widgets.php:127 inc/widgets.php:172
msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
msgstr "Les videre <span class=\"meta-nav\">&rarr;</span>"
#: inc/widgets.php:80
msgid "More asides"
msgstr "Flere notiser"
#: inc/widgets.php:79 taxonomy-post_format.php:30
msgid "Asides"
msgstr "Notiser"
#: inc/widgets.php:75
msgid "More galleries"
msgstr "Flere gallerier"
#: inc/widgets.php:74 taxonomy-post_format.php:48
msgid "Galleries"
msgstr "Gallerier"
#: inc/widgets.php:71
msgid "More links"
msgstr "Flere lenker"
#: inc/widgets.php:70 taxonomy-post_format.php:45
msgid "Links"
msgstr "Lenker"
#: inc/widgets.php:67
msgid "More quotes"
msgstr "Flere sitater"
#: inc/widgets.php:66 taxonomy-post_format.php:42
msgid "Quotes"
msgstr "Sitater"
#: inc/widgets.php:63
msgid "More audio"
msgstr "Mer lyd"
#: inc/widgets.php:62 taxonomy-post_format.php:39
msgid "Audio"
msgstr "Lyd"
#: inc/widgets.php:59
msgid "More videos"
msgstr "Flere videoer"
#: inc/widgets.php:58 taxonomy-post_format.php:36
msgid "Videos"
msgstr "Videoer"
#: inc/widgets.php:55
msgid "More images"
msgstr "Flere bilder"
#: inc/widgets.php:54 taxonomy-post_format.php:33
msgid "Images"
msgstr "Bilder"
#: inc/widgets.php:36
msgid "Use this widget to list your recent Aside, Quote, Video, Audio, Image, Gallery, and Link posts."
msgstr "Bruk denne widgeten for å vise dine siste notis-, sitat-, video-, lyd-, bilde-, galleri- og lenke-innlegg."
#: inc/widgets.php:34
msgid "Twenty Fourteen Ephemera"
msgstr "Twenty Fourteen Ephemera"
#: inc/template-tags.php:109
msgid "Sticky"
msgstr "Klebrig"
#: inc/template-tags.php:92
msgid "<span class=\"meta-nav\">Next Post</span>%title"
msgstr "<span class=\"meta-nav\">Neste innlegg</span>%title"
#: inc/template-tags.php:91
msgid "<span class=\"meta-nav\">Previous Post</span>%title"
msgstr "<span class=\"meta-nav\">Forrige innlegg</span>%title"
#: inc/template-tags.php:89
msgid "<span class=\"meta-nav\">Published In</span>%title"
msgstr "<span class=\"meta-nav\">Publisert i</span>%title"
#: inc/template-tags.php:85
msgid "Post navigation"
msgstr "Innleggsnavigasjon"
#: inc/template-tags.php:58
msgid "Posts navigation"
msgstr "Innleggsnavigasjon"
#: inc/template-tags.php:51
msgid "Next &rarr;"
msgstr "Neste &rarr;"
#: inc/template-tags.php:50
msgid "&larr; Previous"
msgstr "&larr; Forrige"
#: inc/featured-content.php:431
msgid "Don&rsquo;t display tag on front end."
msgstr "Ikke vis dette stikkordet på fremsidene."
#: inc/featured-content.php:426
msgid "Tag Name"
msgstr "Stikkord"
#: inc/customizer.php:110
msgid "For an in-depth tutorial, and more tips and tricks, visit the <a href=\"%s\">Twenty Fourteen documentation</a>."
msgstr "For en inngående starthjelp, tips og triks, besøk <a href=\"%s\">Dokumentasjon for Twenty Fourteen</a>."
#: inc/customizer.php:109
msgid "Enhance your site design by using <a href=\"%s\">Featured Images</a> for posts you&rsquo;d like to stand out (also known as post thumbnails). This allows you to associate an image with your post without inserting it. Twenty Fourteen uses featured images for posts and pages&mdash;above the title&mdash;and in the Featured Content area on the home page."
msgstr "Forbedre utseendet ved å bruke <a href=\"%s\">fremhevede bilder</a> for innlegg som du vil at man skal legge merke til. Dette lar deg knytte et bilde til et innlegg uten å sette det inn i teksten. Twenty Fourteen bruker fremhevede bilder for innlegg og sider – over tittelen – og i fremhevet innhold-delen av forsiden."
#: inc/customizer.php:108
msgid "The home page features your choice of up to 6 posts prominently displayed in a grid or slider, controlled by a <a href=\"%1$s\">tag</a>; you can change the tag and layout in <a href=\"%2$s\">Appearance &rarr; Customize</a>. If no posts match the tag, <a href=\"%3$s\">sticky posts</a> will be displayed instead."
msgstr "Forsiden viser fremhevet innhold – opp til seks innlegg som vises i et rutenett eller i en slider, kontrollert av et <a href=\"%1$s\">stikkord</a>. Du kan endre stikkordet og layouten i <a href=\"%2$s\">Utseende &rarr; Tilpass</a>. Hvis ingen innlegg har dette stikkordet, vises <a href=\"%3$s\">klebrige innlegg</a> isteden."
#. #-#-#-#-# twentyfourteen.pot (Twenty Fourteen 1.4) #-#-#-#-#
#. Theme Name of the plugin/theme
#: inc/customizer.php:105
msgid "Twenty Fourteen"
msgstr "Twenty Fourteen"
#: inc/customizer.php:61
msgid "Slider"
msgstr "Slider"
#: inc/customizer.php:60
msgid "Grid"
msgstr "Rutenett"
#: inc/customizer.php:56
msgid "Layout"
msgstr "Utseende"
#: inc/customizer.php:42 inc/customizer.php:108 inc/featured-content.php:405
#: inc/featured-content.php:414 inc/featured-content.php:474
msgctxt "featured content default tag slug"
@@ -213,53 +78,133 @@ msgstr "fremhevet"
msgid "Use a <a href=\"%1$s\">tag</a> to feature your posts. If no posts match the tag, <a href=\"%2$s\">sticky posts</a> will be displayed instead."
msgstr "Bruk et <a href=\"%1$s\">stikkord</a> for å fremheve dine innlegg. Hvis ingen innlegg har dette stikkordet, vil <a href=\"%2$s\">klebrige innlegg</a> vises isteden."
#: inc/customizer.php:40 inc/featured-content.php:403
msgid "Featured Content"
msgstr "Fremhevet innhold"
#: inc/customizer.php:34 inc/customizer.php:35
msgid "Background may only be visible on wide screens."
msgstr "Bakgrunnen er kanskje bare synlig på store skjermer."
#: inc/customizer.php:31 inc/customizer.php:32
msgid "May only be visible on wide screens."
msgstr "Er kanskje kun synlig på brede skjermer."
#: 404.php:17
msgid "Not Found"
msgstr "Ikke funnet"
#: inc/customizer.php:27
msgid "Display Site Title &amp; Tagline"
msgstr "Vis nettstedets tittel og slagord"
#: inc/customizer.php:110
msgid "For an in-depth tutorial, and more tips and tricks, visit the <a href=\"%s\">Twenty Fourteen documentation</a>."
msgstr "For en inngående starthjelp, tips og triks, besøk <a href=\"%s\">Dokumentasjon for Twenty Fourteen</a>."
#: archive.php:34
msgctxt "monthly archives date format"
msgid "F Y"
msgstr "F Y"
#: archive.php:37
msgctxt "yearly archives date format"
msgid "Y"
msgstr "Y"
#: inc/customizer.php:24
msgid "Site Title Color"
msgstr "Nettstedets farge"
#: inc/back-compat.php:37 inc/back-compat.php:47 inc/back-compat.php:60
msgid "Twenty Fourteen requires at least WordPress version 3.6. You are running version %s. Please upgrade and try again."
msgstr "Twenty Foruteen krever minimum WordPress versjon 3.6. Du bruker nå versjon %s. Vennligst oppgrader og prøv igjen."
#. Description of the plugin/theme
msgid "In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier."
msgstr "I 2014 gjør vårt standardtema deg i stand til å lage et responsivt magasinnettsted med et moderne design. Fremhev ditt favorittinnhold i et rutenett eller en slider. Bruk de tre widgetområdene for å tilpasse nettstedet og endre layouten med fullbreddeformat og bidragsytersider for å fremheve dine ulike forfattere. Å lage et magasinnettsted med WordPress har aldri vært enklere."
#: image.php:66
msgid "Next Image"
msgstr "Neste bilde"
#: inc/featured-content.php:426
msgid "Tag Name"
msgstr "Stikkord"
#: inc/featured-content.php:431
msgid "Don&rsquo;t display tag on front end."
msgstr "Ikke vis dette stikkordet på fremsidene."
#: functions.php:258
msgid "Previous"
msgstr "Forrige"
#: functions.php:259
msgid "Next"
msgstr "Neste"
#: functions.php:182
msgid "Additional sidebar that appears on the right."
msgstr "Ekstra sidekolonne som vises på høyre side."
#: functions.php:191
msgid "Appears in the footer section of the site."
msgstr "Vises i bunnen på nettstedet."
#: image.php:65
msgid "Previous Image"
msgstr "Forrige bilde"
#: header.php:53
msgid "Skip to content"
msgstr "Gå til innhold"
#: image.php:66
msgid "Next Image"
msgstr "Neste bilde"
#: header.php:52
msgid "Primary Menu"
msgstr "Primærmeny"
#: inc/back-compat.php:37 inc/back-compat.php:47 inc/back-compat.php:60
msgid "Twenty Fourteen requires at least WordPress version 3.6. You are running version %s. Please upgrade and try again."
msgstr "Twenty Foruteen krever minimum WordPress versjon 3.6. Du bruker nå versjon %s. Vennligst oppgrader og prøv igjen."
#: header.php:48
msgid "Search"
msgstr "Søk"
#: inc/customizer.php:34 inc/customizer.php:35
msgid "Background may only be visible on wide screens."
msgstr "Bakgrunnen er kanskje bare synlig på store skjermer."
#: functions.php:495
msgid "Page %s"
msgstr "Side %s"
#: inc/customizer.php:40 inc/featured-content.php:403
msgid "Featured Content"
msgstr "Fremhevet innhold"
#: inc/customizer.php:56
msgid "Layout"
msgstr "Utseende"
#: inc/customizer.php:60
msgid "Grid"
msgstr "Rutenett"
#: inc/template-tags.php:89
msgid "<span class=\"meta-nav\">Published In</span>%title"
msgstr "<span class=\"meta-nav\">Publisert i</span>%title"
#: inc/template-tags.php:91
msgid "<span class=\"meta-nav\">Previous Post</span>%title"
msgstr "<span class=\"meta-nav\">Forrige innlegg</span>%title"
#: inc/template-tags.php:92
msgid "<span class=\"meta-nav\">Next Post</span>%title"
msgstr "<span class=\"meta-nav\">Neste innlegg</span>%title"
#: inc/widgets.php:34
msgid "Twenty Fourteen Ephemera"
msgstr "Twenty Fourteen Ephemera"
#: inc/widgets.php:62 taxonomy-post_format.php:39
msgid "Audio"
msgstr "Lyd"
#: inc/widgets.php:162
msgid "This gallery contains <a href=\"%1$s\" rel=\"bookmark\">%2$s photo</a>."
msgid_plural "This gallery contains <a href=\"%1$s\" rel=\"bookmark\">%2$s photos</a>."
msgstr[0] "Dette galleriet inneholder <a href=\"%1$s\" rel=\"bookmark\">%2$s bilde</a>."
msgstr[1] "Dette galleriet inneholder <a href=\"%1$s\" rel=\"bookmark\">%2$s bilder</a>."
#: inc/widgets.php:255
msgid "Title:"
msgstr "Tittel:"
#. Template Name of the plugin/theme
msgid "Contributor Page"
msgstr "Bidragsyters side"
#: 404.php:21
msgid "It looks like nothing was found at this location. Maybe try a search?"
msgstr "Det ser ikke ut til at noe ble funnet på denne adressen. Kanskje du kan prøve et søk?"
#: author.php:31
msgid "All posts by %s"
msgstr "Alle innlegg av %s"
#: functions.php:189
msgid "Footer Widget Area"
msgstr "Widget-område i sidebunnen"
#: functions.php:376
msgid "%d Article"
@@ -267,114 +212,25 @@ msgid_plural "%d Articles"
msgstr[0] "%d artikkel"
msgstr[1] "%d artikler"
#: functions.php:259
msgid "Next"
msgstr "Neste"
#: inc/widgets.php:258
msgid "Number of posts to show:"
msgstr "Antall innlegg som skal vises:"
#: functions.php:258
msgid "Previous"
msgstr "Forrige"
#: inc/customizer.php:61
msgid "Slider"
msgstr "Slider"
#. Translators: If there are characters in your language that are not supported
#. by Lato, translate this to 'off'. Do not translate into your own language.
#: functions.php:213
msgctxt "Lato font: on or off"
msgid "on"
msgstr "on"
#: inc/customizer.php:109
msgid "Enhance your site design by using <a href=\"%s\">Featured Images</a> for posts you&rsquo;d like to stand out (also known as post thumbnails). This allows you to associate an image with your post without inserting it. Twenty Fourteen uses featured images for posts and pages&mdash;above the title&mdash;and in the Featured Content area on the home page."
msgstr "Forbedre utseendet ved å bruke <a href=\"%s\">fremhevede bilder</a> for innlegg som du vil at man skal legge merke til. Dette lar deg knytte et bilde til et innlegg uten å sette det inn i teksten. Twenty Fourteen bruker fremhevede bilder for innlegg og sider – over tittelen – og i fremhevet innhold-delen av forsiden."
#: functions.php:191
msgid "Appears in the footer section of the site."
msgstr "Vises i bunnen på nettstedet."
#: inc/template-tags.php:58
msgid "Posts navigation"
msgstr "Innleggsnavigasjon"
#: functions.php:189
msgid "Footer Widget Area"
msgstr "Widget-område i sidebunnen"
#: functions.php:182
msgid "Additional sidebar that appears on the right."
msgstr "Ekstra sidekolonne som vises på høyre side."
#: functions.php:180
msgid "Content Sidebar"
msgstr "Innhold sidekolonne"
#: functions.php:173
msgid "Main sidebar that appears on the left."
msgstr "Hovedsidekolonne til venstre."
#: functions.php:171
msgid "Primary Sidebar"
msgstr "Første sidekolonne"
#: functions.php:84
msgid "Secondary menu in left sidebar"
msgstr "Sekundærmeny i venstre sidekolonne"
#: functions.php:83
msgid "Top primary menu"
msgstr "Øverste primærmeny"
#: footer.php:21
msgid "Proudly powered by %s"
msgstr "Stolt drevet av %s"
#: footer.php:21
msgid "http://wordpress.org/"
msgstr "http://nb.wordpress.org/"
#: content-none.php:27
msgid "It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps searching can help."
msgstr "Vi klarer ikke å finne det du leter etter. Prøv å søke."
#: content-none.php:22
msgid "Sorry, but nothing matched your search terms. Please try again with some different keywords."
msgstr "Beklager, men det ble ikke funnet noe som passet det du søkte etter. Vennligst prøv med noen andre søkeord."
#: content-none.php:18
msgid "Ready to publish your first post? <a href=\"%1$s\">Get started here</a>."
msgstr "Klar for å publisere ditt første innlegg? <a href=\"%1$s\">Kom i gang her</a>."
#: content-none.php:12
msgid "Nothing Found"
msgstr "Ingenting funnet"
#: content-aside.php:53 content-audio.php:53 content-gallery.php:53
#: content-image.php:53 content-link.php:53 content-page.php:22
#: content-quote.php:53 content-video.php:53 content.php:61 image.php:54
msgid "Pages:"
msgstr "Sider:"
#. translators: %s: Name of current post
#: content-aside.php:48 content-audio.php:48 content-gallery.php:48
#: content-image.php:48 content-link.php:48 content-quote.php:48
#: content-video.php:48 content.php:56 inc/template-tags.php:222
msgid "Continue reading %s <span class=\"meta-nav\">&rarr;</span>"
msgstr "Fortsett å lese %s <span class=\"meta-nav\">&rarr;</span>"
#: content-aside.php:40 content-audio.php:40 content-gallery.php:40
#: content-image.php:40 content-link.php:40 content-page.php:28
#: content-quote.php:40 content-video.php:40 content.php:42 image.php:34
#: page-templates/contributors.php:35
msgid "Edit"
msgstr "Rediger"
#: content-aside.php:37 content-audio.php:37 content-gallery.php:37
#: content-image.php:37 content-link.php:37 content-quote.php:37
#: content-video.php:37 content.php:38 inc/widgets.php:194
msgid "% Comments"
msgstr "% kommentarer"
#: content-aside.php:37 content-audio.php:37 content-gallery.php:37
#: content-image.php:37 content-link.php:37 content-quote.php:37
#: content-video.php:37 content.php:38 inc/widgets.php:194
msgid "1 Comment"
msgstr "1 kommentar"
#: content-aside.php:37 content-audio.php:37 content-gallery.php:37
#: content-image.php:37 content-link.php:37 content-quote.php:37
#: content-video.php:37 content.php:38 inc/widgets.php:194
msgid "Leave a comment"
msgstr "Legg igjen en kommentar"
#: inc/widgets.php:261
msgid "Post format to show:"
msgstr "Innleggsformat som skal vises:"
#: content-aside.php:17 content-audio.php:17 content-featured-post.php:28
#: content-gallery.php:17 content-image.php:17 content-link.php:17
@@ -383,9 +239,25 @@ msgctxt "Used between list items, there is a space after the comma."
msgid ", "
msgstr ", "
#: comments.php:59
msgid "Comments are closed."
msgstr "Det er stengt for kommentarer."
#: footer.php:21
msgid "Proudly powered by %s"
msgstr "Stolt drevet av %s"
#: archive.php:31
msgid "Daily Archives: %s"
msgstr "Daglige arkiver: %s"
#: archive.php:34
msgid "Monthly Archives: %s"
msgstr "Månedlige arkiver: %s"
#: archive.php:37
msgid "Yearly Archives: %s"
msgstr "Årlige arkiver: %s"
#. Author of the plugin/theme
msgid "the WordPress team"
msgstr "WordPress-gjengen"
#: comments.php:36 comments.php:54
msgid "Newer Comments &rarr;"
@@ -395,6 +267,14 @@ msgstr "Nyere kommentarer &rarr;"
msgid "&larr; Older Comments"
msgstr "&larr; Eldre kommentarer"
#: comments.php:59
msgid "Comments are closed."
msgstr "Det er stengt for kommentarer."
#: category.php:20
msgid "Category Archives: %s"
msgstr "Kategoriarkiv: %s"
#: comments.php:34 comments.php:52
msgid "Comment navigation"
msgstr "Kommentarnavigasjon"
@@ -405,44 +285,162 @@ msgid_plural "%1$s thoughts on &ldquo;%2$s&rdquo;"
msgstr[0] "En tanke om &ldquo;%2$s&rdquo;"
msgstr[1] "%1$s tanker om &ldquo;%2$s&rdquo;"
#: category.php:20
msgid "Category Archives: %s"
msgstr "Kategoriarkiv: %s"
#: tag.php:22
msgid "Tag Archives: %s"
msgstr "Stikkordarkiv: %s"
#: author.php:31
msgid "All posts by %s"
msgstr "Alle innlegg av %s"
#: search.php:18
msgid "Search Results for: %s"
msgstr "Søkeresultater for: %s"
#: content-none.php:12
msgid "Nothing Found"
msgstr "Ingenting funnet"
#: header.php:48
msgid "Search"
msgstr "Søk"
#: archive.php:40 taxonomy-post_format.php:51
msgid "Archives"
msgstr "Arkiv"
#: archive.php:37
msgctxt "yearly archives date format"
msgid "Y"
msgstr "Y"
#: inc/widgets.php:127 inc/widgets.php:172
msgid "Continue reading <span class=\"meta-nav\">&rarr;</span>"
msgstr "Les videre <span class=\"meta-nav\">&rarr;</span>"
#: archive.php:37
msgid "Yearly Archives: %s"
msgstr "Årlige arkiver: %s"
#: content-aside.php:53 content-audio.php:53 content-gallery.php:53
#: content-image.php:53 content-link.php:53 content-page.php:22
#: content-quote.php:53 content-video.php:53 content.php:61 image.php:54
msgid "Pages:"
msgstr "Sider:"
#: archive.php:34
msgctxt "monthly archives date format"
msgid "F Y"
msgstr "F Y"
#: content-aside.php:40 content-audio.php:40 content-gallery.php:40
#: content-image.php:40 content-link.php:40 content-page.php:28
#: content-quote.php:40 content-video.php:40 content.php:42 image.php:34
#: page-templates/contributors.php:35
msgid "Edit"
msgstr "Rediger"
#: archive.php:34
msgid "Monthly Archives: %s"
msgstr "Månedlige arkiver: %s"
#: inc/template-tags.php:51
msgid "Next &rarr;"
msgstr "Neste &rarr;"
#: archive.php:31
msgid "Daily Archives: %s"
msgstr "Daglige arkiver: %s"
#: inc/template-tags.php:50
msgid "&larr; Previous"
msgstr "&larr; Forrige"
#: 404.php:21
msgid "It looks like nothing was found at this location. Maybe try a search?"
msgstr "Det ser ikke ut til at noe ble funnet på denne adressen. Kanskje du kan prøve et søk?"
#: functions.php:495
msgid "Page %s"
msgstr "Side %s"
#: 404.php:17
msgid "Not Found"
msgstr "Ikke funnet"
#: inc/template-tags.php:85
msgid "Post navigation"
msgstr "Innleggsnavigasjon"
#: header.php:52
msgid "Primary Menu"
msgstr "Primærmeny"
#: content-none.php:27
msgid "It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps searching can help."
msgstr "Vi klarer ikke å finne det du leter etter. Prøv å søke."
#: header.php:53
msgid "Skip to content"
msgstr "Gå til innhold"
#: content-aside.php:37 content-audio.php:37 content-gallery.php:37
#: content-image.php:37 content-link.php:37 content-quote.php:37
#: content-video.php:37 content.php:38 inc/widgets.php:194
msgid "Leave a comment"
msgstr "Legg igjen en kommentar"
#: content-none.php:18
msgid "Ready to publish your first post? <a href=\"%1$s\">Get started here</a>."
msgstr "Klar for å publisere ditt første innlegg? <a href=\"%1$s\">Kom i gang her</a>."
#: functions.php:171
msgid "Primary Sidebar"
msgstr "Første sidekolonne"
#: functions.php:173
msgid "Main sidebar that appears on the left."
msgstr "Hovedsidekolonne til venstre."
#: functions.php:180
msgid "Content Sidebar"
msgstr "Innhold sidekolonne"
#: inc/widgets.php:58 taxonomy-post_format.php:36
msgid "Videos"
msgstr "Videoer"
#: inc/widgets.php:54 taxonomy-post_format.php:33
msgid "Images"
msgstr "Bilder"
#: inc/widgets.php:74 taxonomy-post_format.php:48
msgid "Galleries"
msgstr "Gallerier"
#: inc/widgets.php:70 taxonomy-post_format.php:45
msgid "Links"
msgstr "Lenker"
#: inc/widgets.php:66 taxonomy-post_format.php:42
msgid "Quotes"
msgstr "Sitater"
#. #-#-#-#-# twentyfourteen.pot (Twenty Fourteen 1.6) #-#-#-#-#
#. Theme Name of the plugin/theme
#: inc/customizer.php:105
msgid "Twenty Fourteen"
msgstr "Twenty Fourteen"
#. Template Name of the plugin/theme
msgid "Full Width Page"
msgstr "Side i full bredde"
#: content-aside.php:37 content-audio.php:37 content-gallery.php:37
#: content-image.php:37 content-link.php:37 content-quote.php:37
#: content-video.php:37 content.php:38 inc/widgets.php:194
msgid "1 Comment"
msgstr "1 kommentar"
#: content-aside.php:37 content-audio.php:37 content-gallery.php:37
#: content-image.php:37 content-link.php:37 content-quote.php:37
#: content-video.php:37 content.php:38 inc/widgets.php:194
msgid "% Comments"
msgstr "% kommentarer"
#: functions.php:83
msgid "Top primary menu"
msgstr "Øverste primærmeny"
#: inc/widgets.php:79 taxonomy-post_format.php:30
msgid "Asides"
msgstr "Notiser"
#. Translators: If there are characters in your language that are not supported
#. by Lato, translate this to 'off'. Do not translate into your own language.
#: functions.php:213
msgctxt "Lato font: on or off"
msgid "on"
msgstr "on"
#: content-none.php:22
msgid "Sorry, but nothing matched your search terms. Please try again with some different keywords."
msgstr "Beklager, men det ble ikke funnet noe som passet det du søkte etter. Vennligst prøv med noen andre søkeord."
#: functions.php:84
msgid "Secondary menu in left sidebar"
msgstr "Sekundærmeny i venstre sidekolonne"
#: inc/template-tags.php:109
msgid "Sticky"
msgstr "Klebrig"
#: inc/widgets.php:55
msgid "More images"
msgstr "Flere bilder"
@@ -322,7 +322,7 @@ msgstr "WordPress-gjengen"
msgid "https://wordpress.org/themes/twentysixteen/"
msgstr "https://wordpress.org/themes/twentysixteen/"
#. #-#-#-#-# twentysixteen.pot (Twenty Sixteen 1.0) #-#-#-#-#
#. #-#-#-#-# twentysixteen.pot (Twenty Sixteen 1.1) #-#-#-#-#
#. Author URI of the plugin/theme
#: footer.php:51
msgid "https://wordpress.org/"
+34
View File
@@ -0,0 +1,34 @@
# Only allow direct access to specific Web-available files.
# Apache 2.2
<IfModule !mod_authz_core.c>
Order Deny,Allow
Deny from all
</IfModule>
# Apache 2.4
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
# Akismet CSS and JS
<FilesMatch "^(form|akismet)\.(css|js)$">
<IfModule !mod_authz_core.c>
Allow from all
</IfModule>
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</FilesMatch>
# Akismet images
<FilesMatch "^(.+)\.(png|gif)$">
<IfModule !mod_authz_core.c>
Allow from all
</IfModule>
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
</FilesMatch>
@@ -373,4 +373,102 @@ h2.ak-header {
.clearfix {
clear:both;
}
/**
* For the activation notice on the plugins page.
*/
.akismet_activate {
min-width: 825px;
border: 1px solid #4F800D;
padding: 5px;
margin: 15px 0;
background: #83AF24;
background-image: -webkit-gradient(linear, 0% 0, 80% 100%, from(#83AF24), to(#4F800D));
background-image: -moz-linear-gradient(80% 100% 120deg, #4F800D, #83AF24);
-moz-border-radius: 3px;
border-radius: 3px;
-webkit-border-radius: 3px;
position: relative;
overflow: hidden;
}
.akismet_activate .aa_a {
position: absolute;
top: -5px;
right: 10px;
font-size: 140px;
color: #769F33;
font-family: Georgia, "Times New Roman", Times, serif;
z-index: 1;
}
.akismet_activate .aa_button {
font-weight: bold;
border: 1px solid #029DD6;
border-top: 1px solid #06B9FD;
font-size: 15px;
text-align: center;
padding: 9px 0 8px 0;
color: #FFF;
background: #029DD6;
background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(#029DD6), to(#0079B1));
background-image: -moz-linear-gradient(0% 100% 90deg, #0079B1, #029DD6);
-moz-border-radius: 2px;
border-radius: 2px;
-webkit-border-radius: 2px;
width: 100%;
cursor: pointer;
margin: 0;
}
.akismet_activate .aa_button:hover {
text-decoration: none !important;
border: 1px solid #029DD6;
border-bottom: 1px solid #00A8EF;
font-size: 15px;
text-align: center;
padding: 9px 0 8px 0;
color: #F0F8FB;
background: #0079B1;
background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(#0079B1), to(#0092BF));
background-image: -moz-linear-gradient(0% 100% 90deg, #0092BF, #0079B1);
-moz-border-radius: 2px;
border-radius: 2px;
-webkit-border-radius: 2px;
}
.akismet_activate .aa_button_border {
border: 1px solid #006699;
-moz-border-radius: 2px;
border-radius: 2px;
-webkit-border-radius: 2px;
background: #029DD6;
background-image: -webkit-gradient(linear, 0% 0, 0% 100%, from(#029DD6), to(#0079B1));
background-image: -moz-linear-gradient(0% 100% 90deg, #0079B1, #029DD6);
}
.akismet_activate .aa_button_container {
display: inline-block;
background: #DEF1B8;
padding: 5px;
-moz-border-radius: 2px;
border-radius: 2px;
-webkit-border-radius: 2px;
width: 266px;
}
.akismet_activate .aa_description {
position: absolute;
top: 22px;
left: 285px;
margin-left: 25px;
color: #E5F2B1;
font-size: 15px;
z-index: 1000;
}
.akismet_activate .aa_description strong {
color: #FFF;
font-weight: normal;
}
+20 -13
View File
@@ -22,20 +22,27 @@ jQuery( function ( $ ) {
var thisId = $(this).attr('commentid');
$(this).insertAfter('#comment-' + thisId + ' .author strong:first').show();
});
$('#the-comment-list').find('tr.comment, tr[id ^= "comment-"]').find('.column-author a[title]').each(function () {
// Comment author URLs are the only URL with a title attribute in the author column.
var thisTitle = $(this).attr('title');
$('#the-comment-list')
.find('tr.comment, tr[id ^= "comment-"]')
.find('.column-author a[href^="http"]:first') // Ignore mailto: links, which would be the comment author's email.
.each(function () {
var linkHref = $(this).attr( 'href' );
// Ignore any links to the current domain, which are diagnostic tools, like the IP address link
// or any other links another plugin might add.
var currentHostParts = document.location.href.split( '/' );
var currentHost = currentHostParts[0] + '//' + currentHostParts[2] + '/';
if ( linkHref.indexOf( currentHost ) != 0 ) {
var thisCommentId = $(this).parents('tr:first').attr('id').split("-");
var thisCommentId = $(this).parents('tr:first').attr('id').split("-");
$(this).attr("id", "author_comment_url_"+ thisCommentId[1]);
if (thisTitle) {
$(this).after(
$( '<a href="#" class="remove_url">x</a>' )
.attr( 'commentid', thisCommentId[1] )
.attr( 'title', WPAkismet.strings['Remove this URL'] )
);
$(this)
.attr("id", "author_comment_url_"+ thisCommentId[1])
.after(
$( '<a href="#" class="remove_url">x</a>' )
.attr( 'commentid', thisCommentId[1] )
.attr( 'title', WPAkismet.strings['Remove this URL'] )
);
}
});
$('.remove_url').live('click', function () {
+2 -2
View File
@@ -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 spam</strong>. It keeps your site protected 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 plan</a> to get an API key, and 3) Go to your Akismet configuration page, and save your API key.
Version: 3.1.6
Version: 3.1.7
Author: Automattic
Author URI: http://automattic.com/wordpress-plugins/
License: GPLv2 or later
@@ -37,7 +37,7 @@ if ( !function_exists( 'add_action' ) ) {
exit;
}
define( 'AKISMET_VERSION', '3.1.6' );
define( 'AKISMET_VERSION', '3.1.7' );
define( 'AKISMET__MINIMUM_WP_VERSION', '3.2' );
define( 'AKISMET__PLUGIN_URL', plugin_dir_url( __FILE__ ) );
define( 'AKISMET__PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
@@ -109,6 +109,7 @@ class Akismet_Admin {
'post.php',
'settings_page_akismet-key-config',
'jetpack_page_akismet-key-config',
'plugins.php',
) ) ) {
wp_register_style( 'akismet.css', AKISMET__PLUGIN_URL . '_inc/akismet.css', array(), AKISMET_VERSION );
wp_enqueue_style( 'akismet.css');
@@ -29,6 +29,14 @@ class Akismet {
add_action( 'akismet_scheduled_delete', array( 'Akismet', 'delete_old_comments_meta' ) );
add_action( 'akismet_schedule_cron_recheck', array( 'Akismet', 'cron_recheck' ) );
/**
* To disable the Akismet comment nonce, add a filter for the 'akismet_comment_nonce' tag
* and return any string value that is not 'true' or '' (empty string).
*
* Don't return boolean false, because that implies that the 'akismet_comment_nonce' option
* has not been set and that Akismet should just choose the default behavior for that
* situation.
*/
$akismet_comment_nonce_option = apply_filters( 'akismet_comment_nonce', get_option( 'akismet_comment_nonce' ) );
if ( $akismet_comment_nonce_option == 'true' || $akismet_comment_nonce_option == '' )
@@ -89,6 +97,7 @@ class Akismet {
if ( !empty( $comment['user_ID'] ) )
$comment['user_role'] = Akismet::get_user_roles( $comment['user_ID'] );
/** See filter documentation in init_hooks(). */
$akismet_nonce_option = apply_filters( 'akismet_comment_nonce', get_option( 'akismet_comment_nonce' ) );
$comment['akismet_comment_nonce'] = 'inactive';
if ( $akismet_nonce_option == 'true' || $akismet_nonce_option == '' ) {
+9 -2
View File
@@ -2,8 +2,8 @@
Contributors: matt, ryan, andy, mdawaffe, tellyworth, josephscott, lessbloat, eoigal, cfinke, automattic, jgs
Tags: akismet, comments, spam, antispam, anti-spam, anti spam, comment moderation, comment spam, contact form spam, spam comments
Requires at least: 3.2
Tested up to: 4.4
Stable tag: 3.1.6
Tested up to: 4.4.1
Stable tag: 3.1.7
License: GPLv2 or later
Akismet checks your comments against the Akismet Web service to see if they look like spam or not.
@@ -30,6 +30,13 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
== Changelog ==
= 3.1.7 =
*Release Date - 4 January 2016*
* Added documentation for the 'akismet_comment_nonce' filter.
* The post-install activation button is now accessible to screen readers and keyboard-only users.
* Fixed a bug that was preventing the "Remove author URL" feature from working in WordPress 4.4
= 3.1.6 =
*Release Date - 14 December 2015*
+2 -5
View File
@@ -1,14 +1,11 @@
<?php if ( $type == 'plugin' ) :?>
<div class="updated" style="padding: 0; margin: 0; border: none; background: none;">
<style type="text/css">
.akismet_activate{min-width:825px;border:1px solid #4F800D;padding:5px;margin:15px 0;background:#83AF24;background-image:-webkit-gradient(linear,0% 0,80% 100%,from(#83AF24),to(#4F800D));background-image:-moz-linear-gradient(80% 100% 120deg,#4F800D,#83AF24);-moz-border-radius:3px;border-radius:3px;-webkit-border-radius:3px;position:relative;overflow:hidden}.akismet_activate .aa_a{position:absolute;top:-5px;right:10px;font-size:140px;color:#769F33;font-family:Georgia, "Times New Roman", Times, serif;z-index:1}.akismet_activate .aa_button{font-weight:bold;border:1px solid #029DD6;border-top:1px solid #06B9FD;font-size:15px;text-align:center;padding:9px 0 8px 0;color:#FFF;background:#029DD6;background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#029DD6),to(#0079B1));background-image:-moz-linear-gradient(0% 100% 90deg,#0079B1,#029DD6);-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px}.akismet_activate .aa_button:hover{text-decoration:none !important;border:1px solid #029DD6;border-bottom:1px solid #00A8EF;font-size:15px;text-align:center;padding:9px 0 8px 0;color:#F0F8FB;background:#0079B1;background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#0079B1),to(#0092BF));background-image:-moz-linear-gradient(0% 100% 90deg,#0092BF,#0079B1);-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px}.akismet_activate .aa_button_border{border:1px solid #006699;-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px;background:#029DD6;background-image:-webkit-gradient(linear,0% 0,0% 100%,from(#029DD6),to(#0079B1));background-image:-moz-linear-gradient(0% 100% 90deg,#0079B1,#029DD6)}.akismet_activate .aa_button_container{cursor:pointer;display:inline-block;background:#DEF1B8;padding:5px;-moz-border-radius:2px;border-radius:2px;-webkit-border-radius:2px;width:266px}.akismet_activate .aa_description{position:absolute;top:22px;left:285px;margin-left:25px;color:#E5F2B1;font-size:15px;z-index:1000}.akismet_activate .aa_description strong{color:#FFF;font-weight:normal}
</style>
<form name="akismet_activate" action="<?php echo esc_url( Akismet_Admin::get_page_url() ); ?>" method="POST">
<div class="akismet_activate">
<div class="aa_a">A</div>
<div class="aa_button_container" onclick="document.akismet_activate.submit();">
<div class="aa_button_container">
<div class="aa_button_border">
<div class="aa_button"><?php esc_html_e('Activate your Akismet account', 'akismet');?></div>
<input type="submit" class="aa_button" value="<?php esc_attr_e( 'Activate your Akismet account', 'akismet' ); ?>" />
</div>
</div>
<div class="aa_description"><?php _e('<strong>Almost done</strong> - activate Akismet and say goodbye to spam', 'akismet');?></div>
@@ -1,5 +1,5 @@
/*! Simple Calendar - 3.0.10
/*! Simple Calendar - 3.0.13
* https://simplecalendar.io
* Copyright (c) Moonstone Media 2015
* Copyright (c) Moonstone Media 2016
* Licensed GPLv2+ */
@@ -1,6 +1,6 @@
/*! Simple Calendar - 3.0.10
/*! Simple Calendar - 3.0.13
* https://simplecalendar.io
* Copyright (c) Moonstone Media 2015
* Copyright (c) Moonstone Media 2016
* Licensed GPLv2+ */
body #_simcal_attach_calendar_id,body .simcal-calendar-widget-settings select{width:100%}body .select2-container--default .select2-selection--single{border-color:#ccc;border-radius:0}body .select2-container{z-index:1000000}body.post-type-gce_feed #gce-insert-shortcode-button{display:none}.wp-media-buttons a.add_calendar span.wp-media-buttons-icon{background:0 0}.gce-insert-shortcode-panel{max-width:90%;position:relative}.gce-insert-shortcode-panel select{display:block;max-width:470px;width:100%}body .gce-insert-shortcode-modal{height:220px!important;margin-left:-250px!important;width:500px!important}body .gce-insert-shortcode-modal-title{background:#fff!important;border-bottom:none!important;height:0!important}
@@ -1,6 +1,6 @@
/*! Simple Calendar - 3.0.10
/*! Simple Calendar - 3.0.13
* https://simplecalendar.io
* Copyright (c) Moonstone Media 2015
* Copyright (c) Moonstone Media 2016
* Licensed GPLv2+ */
@font-face{font-family:simple-calendar;src:url(../fonts/simple-calendar.eot?43976014);src:url(../fonts/simple-calendar.eot?43976014#iefix) format("embedded-opentype"),url(../fonts/simple-calendar.woff?43976014) format("woff"),url(../fonts/simple-calendar.ttf?43976014) format("truetype"),url(../fonts/simple-calendar.svg?43976014#simple-calendar) format("svg");font-weight:400;font-style:normal}[class*=" simcal-icon-"]:before,[class^=simcal-icon-]:before{display:inline-block;font-family:simple-calendar;font-style:normal;font-weight:400;margin-right:.2em;speak:none;text-decoration:inherit;text-align:center;width:1em;font-variant:normal;text-transform:none;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#ui-datepicker-div.simcal-date-picker>table tr td a,#ui-datepicker-div.simcal-date-picker>table tr th a,.simcal-tabs a{text-decoration:none}.simcal-icon-spin{-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.simcal-icon-animate:before{transition:all .2s ease-in-out}.simcal-icon-rotate-180:before{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.simcal-icon-calendar-empty:before{content:'\e800'}.simcal-icon-calendar:before{content:'\e801'}.simcal-icon-calendar-logo:before{content:'\e802'}.simcal-icon-settings:before{content:'\e804'}.simcal-icon-toggles:before{content:'\e805'}.simcal-icon-list:before{content:'\e806'}.simcal-icon-event:before{content:'\e807'}.simcal-icon-help:before{content:'\e808'}.simcal-icon-panel:before{content:'\e80a'}.simcal-icon-grid:before{content:'\e80b'}.simcal-icon-google:before{content:'\e80c'}.simcal-icon-docs:before{content:'\e80f'}.simcal-icon-hourglass:before{content:'\e811'}.simcal-icon-globe:before{content:'\e812'}.simcal-icon-timezones:before{content:'\e813'}.simcal-icon-warning:before{content:'\e815'}.simcal-icon-wordpress:before{content:'\e814'}.simcal-icon-up:before{content:'\e80e'}.simcal-icon-right:before{content:'\e809'}.simcal-icon-down:before{content:'\e80d'}.simcal-icon-left:before{content:'\e803'}.simcal-icon-spinner:before{content:'\e810'}.simcal-help-tip{color:rgba(0,0,0,.46);cursor:help}#tiptip_holder{display:none;left:0;position:absolute;top:0;z-index:9999999}#tiptip_holder.tip_top{padding-bottom:5px}#tiptip_holder.tip_bottom{padding-top:5px}#tiptip_holder.tip_right{padding-left:5px}#tiptip_holder.tip_left{padding-right:5px}#tiptip_content{background-color:rgba(25,25,25,.92);border:1px solid rgba(255,255,255,.25);border-radius:3px;color:#fff;font-size:11px;padding:4px 8px}#tiptip_arrow,#tiptip_arrow_inner{border-color:transparent;border-style:solid;border-width:6px;height:0;position:absolute;width:0}#tiptip_holder.tip_top #tiptip_arrow_inner{border-top-color:rgba(25,25,25,.92);margin-left:-6px;margin-top:-7px}#tiptip_holder.tip_bottom #tiptip_arrow_inner{border-bottom-color:rgba(25,25,25,.92);margin-left:-6px;margin-top:-5px}#tiptip_holder.tip_right #tiptip_arrow_inner{border-right-color:rgba(25,25,25,.92);margin-left:-5px;margin-top:-6px}#tiptip_holder.tip_left #tiptip_arrow_inner{border-left-color:rgba(25,25,25,.92);margin-left:-7px;margin-top:-6px}@media screen and (-webkit-min-device-pixel-ratio:0){#tiptip_content{background-color:rgba(45,45,45,.88);padding:4px 8px 5px}#tiptip_holder.tip_bottom #tiptip_arrow_inner{border-bottom-color:rgba(45,45,45,.88)}#tiptip_holder.tip_top #tiptip_arrow_inner{border-top-color:rgba(20,20,20,.92)}}.simcal-dismiss-notice{color:#ccc;float:right;margin-top:9px;text-decoration:none}.simcal-dismiss-notice:hover{color:#aaa}.simcal-dismiss-notice:active,.simcal-dismiss-notice:focus{outline:0}.wp-admin .simcal-field-inline,.wp-admin .simcal-field-inline>input,.wp-admin .simcal-field-inline>select{display:inline-block;vertical-align:baseline}body .simcal-field-tiny,body .simcal-panel-field .simcal-field-tiny{max-width:60px}body .simcal-field-small,body .simcal-panel-field .simcal-field-small{max-width:100px}body .simcal-field-select-enhanced,body .simcal-field-textarea{max-width:500px;width:100%}.select2-container{z-index:999999}body .simcal-field-textarea{min-height:64px;vertical-align:top}.simcal-field-radios>i{margin-left:5px;vertical-align:middle}.simcal-field-radios-inline{display:inline-block;margin:0}.simcal-field-radios-inline>li{display:inline-block;margin-right:10px}.simcal-field-radios-inline>li:last-child{margin-right:0}.simcal-field-bool>input{line-height:2.4}.simcal-field-date-picker>input[type=text]{max-width:120px}#ui-datepicker-div.simcal-date-picker{background-color:#fff;box-shadow:0 2px 10px rgba(0,0,0,.1);padding:8px 10px}#ui-datepicker-div.simcal-date-picker .ui-datepicker-header>a{display:inline-block;cursor:pointer;margin-top:7px}#ui-datepicker-div.simcal-dLine truncated
@@ -1,6 +1,6 @@
/*! Simple Calendar - 3.0.10
/*! Simple Calendar - 3.0.13
* https://simplecalendar.io
* Copyright (c) Moonstone Media 2015
* Copyright (c) Moonstone Media 2016
* Licensed GPLv2+ */
.simcal-default-calendar .simcal-nav-button,.simcal-default-calendar .simcal-nav-button:focus,.simcal-default-calendar .simcal-nav-button:hover{background:0 0;border:0;box-shadow:none;outline:0}@font-face{font-family:simple-calendar;src:url(../fonts/simple-calendar.eot?43976014);src:url(../fonts/simple-calendar.eot?43976014#iefix) format("embedded-opentype"),url(../fonts/simple-calendar.woff?43976014) format("woff"),url(../fonts/simple-calendar.ttf?43976014) format("truetype"),url(../fonts/simple-calendar.svg?43976014#simple-calendar) format("svg");font-weight:400;font-style:normal}[class*=" simcal-icon-"]:before,[class^=simcal-icon-]:before{display:inline-block;font-family:simple-calendar;font-style:normal;font-weight:400;margin-right:.2em;speak:none;text-decoration:inherit;text-align:center;width:1em;font-variant:normal;text-transform:none;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.simcal-icon-spin{-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.simcal-icon-animate:before{transition:all .2s ease-in-out}.simcal-icon-rotate-180:before{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.simcal-icon-calendar-empty:before{content:'\e800'}.simcal-icon-calendar:before{content:'\e801'}.simcal-icon-calendar-logo:before{content:'\e802'}.simcal-icon-settings:before{content:'\e804'}.simcal-icon-toggles:before{content:'\e805'}.simcal-icon-list:before{content:'\e806'}.simcal-icon-event:before{content:'\e807'}.simcal-icon-help:before{content:'\e808'}.simcal-icon-panel:before{content:'\e80a'}.simcal-icon-grid:before{content:'\e80b'}.simcal-icon-google:before{content:'\e80c'}.simcal-icon-docs:before{content:'\e80f'}.simcal-icon-hourglass:before{content:'\e811'}.simcal-icon-globe:before{content:'\e812'}.simcal-icon-timezones:before{content:'\e813'}.simcal-icon-warning:before{content:'\e815'}.simcal-icon-wordpress:before{content:'\e814'}.simcal-icon-up:before{content:'\e80e'}.simcal-icon-right:before{content:'\e809'}.simcal-icon-down:before{content:'\e80d'}.simcal-icon-left:before{content:'\e803'}.simcal-icon-spinner:before{content:'\e810'}.simcal-calendar{position:relative}.simcal-powered{display:block;margin:-10px 0 20px}.simcal-align-left{text-align:left}.simcal-align-right{text-align:right}.simcal-default-calendar .simcal-current h3{margin:0;padding:0}.simcal-default-calendar .simcal-nav{vertical-align:middle}.simcal-default-calendar .simcal-nav-button{cursor:pointer;margin:0;padding:0;transition:margin .2s ease-out;width:100%}.simcal-default-calendar .simcal-nav-button.simcal-prev:hover{margin-left:-10px}.simcal-default-calendar .simcal-nav-button.simcal-next:hover{margin-right:-10px}.simcal-default-calendar .simcal-nav-button:disabled:hover,.simcal-default-calendar ul.simcal-attachments,.simcal-default-calendar ul.simcal-attendees{margin:0;padding:0}.simcal-default-calendar .simcal-nav-button:disabled{cursor:default}.simcal-default-calendar .simcal-events{list-style:none;margin-left:0}.simcal-default-calendar .simcal-events-toggle{border:0;box-shadow:none;text-align:center;width:100%}.simcal-default-calendar .simcal-events-toggle:active,.simcal-default-calendar .simcal-events-toggle:focus,.simcal-default-calendar .simcal-events-toggle:hover{border:0;box-shadow:none;outline:0}.simcal-default-calendar li.simcal-attachment,.simcal-default-calendar li.simcal-attendee{list-style:none;margin-bottom:4px}.simcal-default-calendar li.simcal-attachment:last-child,.simcal-default-calendar li.simcal-attendee:last-child{margin-bottom:0}.simcal-default-calendar li.simcal-attachment small,.simcal-default-calendar li.simcal-attendee small{opacity:.9;text-transform:lowercase}.simcal-default-calendar .simcal-organizer a,.simcal-default-calendar li.simcal-attachment a,.simcal-default-calendar li.simcal-attendee a{border-bottom:0;text-decoration:none}.simcal-default-calendar .simcal-organizer img,.simcal-default-calendar li.simcal-attachment img,.simcal-default-calendar li.simcal-attendee img{display:inline-block;margin:0 4px;max-height:24px;max-width:24px}.simcal-default-calendar .simcal-tooltip-content{font-size:1.2em;line-height:1.4;padding:5px}.simcal-default-calendar .simcal-ajax-loader{height:100%;left:0;position:absolute;top:0;width:100%}.simcal-default-calendar .simcal-ajax-loader>i{font-size:48px;left:50%;line-height:1;margin:-36px 0 0 -36px;position:absolute;top:50%}.simcal-default-calendar .simcal-ajax-loader.simcal-spinner-top>i{top:20%}.simcal-default-calendar .simcal-ajax-loader.simcal-spinner-bottom>i{bottom:20%;top:auto}.simcal-default-calendar-light .simcal-nav-button{color:rgba(0,0,0,.6)}.simcal-default-calendar-light .simcal-nav-button:disabled,.simcal-deLine truncated
@@ -1,6 +1,6 @@
/*! Simple Calendar - 3.0.10
/*! Simple Calendar - 3.0.13
* https://simplecalendar.io
* Copyright (c) Moonstone Media 2015
* Copyright (c) Moonstone Media 2016
* Licensed GPLv2+ */
.simcal-default-calendar .simcal-nav-button,.simcal-default-calendar .simcal-nav-button:focus,.simcal-default-calendar .simcal-nav-button:hover{background:0 0;border:0;box-shadow:none;outline:0}@font-face{font-family:simple-calendar;src:url(../fonts/simple-calendar.eot?43976014);src:url(../fonts/simple-calendar.eot?43976014#iefix) format("embedded-opentype"),url(../fonts/simple-calendar.woff?43976014) format("woff"),url(../fonts/simple-calendar.ttf?43976014) format("truetype"),url(../fonts/simple-calendar.svg?43976014#simple-calendar) format("svg");font-weight:400;font-style:normal}[class*=" simcal-icon-"]:before,[class^=simcal-icon-]:before{display:inline-block;font-family:simple-calendar;font-style:normal;font-weight:400;margin-right:.2em;speak:none;text-decoration:inherit;text-align:center;width:1em;font-variant:normal;text-transform:none;margin-left:.2em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.simcal-icon-spin{-webkit-animation:spin 2s infinite linear;animation:spin 2s infinite linear;display:inline-block}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.simcal-icon-animate:before{transition:all .2s ease-in-out}.simcal-icon-rotate-180:before{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.simcal-icon-calendar-empty:before{content:'\e800'}.simcal-icon-calendar:before{content:'\e801'}.simcal-icon-calendar-logo:before{content:'\e802'}.simcal-icon-settings:before{content:'\e804'}.simcal-icon-toggles:before{content:'\e805'}.simcal-icon-list:before{content:'\e806'}.simcal-icon-event:before{content:'\e807'}.simcal-icon-help:before{content:'\e808'}.simcal-icon-panel:before{content:'\e80a'}.simcal-icon-grid:before{content:'\e80b'}.simcal-icon-google:before{content:'\e80c'}.simcal-icon-docs:before{content:'\e80f'}.simcal-icon-hourglass:before{content:'\e811'}.simcal-icon-globe:before{content:'\e812'}.simcal-icon-timezones:before{content:'\e813'}.simcal-icon-warning:before{content:'\e815'}.simcal-icon-wordpress:before{content:'\e814'}.simcal-icon-up:before{content:'\e80e'}.simcal-icon-right:before{content:'\e809'}.simcal-icon-down:before{content:'\e80d'}.simcal-icon-left:before{content:'\e803'}.simcal-icon-spinner:before{content:'\e810'}.simcal-calendar{position:relative}.simcal-powered{display:block;margin:-10px 0 20px}.simcal-align-left{text-align:left}.simcal-align-right{text-align:right}.simcal-default-calendar .simcal-current h3{margin:0;padding:0}.simcal-default-calendar .simcal-nav{vertical-align:middle}.simcal-default-calendar .simcal-nav-button{cursor:pointer;margin:0;padding:0;transition:margin .2s ease-out;width:100%}.simcal-default-calendar .simcal-nav-button.simcal-prev:hover{margin-left:-10px}.simcal-default-calendar .simcal-nav-button.simcal-next:hover{margin-right:-10px}.simcal-default-calendar .simcal-nav-button:disabled:hover,.simcal-default-calendar ul.simcal-attachments,.simcal-default-calendar ul.simcal-attendees{margin:0;padding:0}.simcal-default-calendar .simcal-nav-button:disabled{cursor:default}.simcal-default-calendar .simcal-events{list-style:none;margin-left:0}.simcal-default-calendar .simcal-events-toggle{border:0;box-shadow:none;text-align:center;width:100%}.simcal-default-calendar .simcal-events-toggle:active,.simcal-default-calendar .simcal-events-toggle:focus,.simcal-default-calendar .simcal-events-toggle:hover{border:0;box-shadow:none;outline:0}.simcal-default-calendar li.simcal-attachment,.simcal-default-calendar li.simcal-attendee{list-style:none;margin-bottom:4px}.simcal-default-calendar li.simcal-attachment:last-child,.simcal-default-calendar li.simcal-attendee:last-child{margin-bottom:0}.simcal-default-calendar li.simcal-attachment small,.simcal-default-calendar li.simcal-attendee small{opacity:.9;text-transform:lowercase}.simcal-default-calendar .simcal-organizer a,.simcal-default-calendar li.simcal-attachment a,.simcal-default-calendar li.simcal-attendee a{border-bottom:0;text-decoration:none}.simcal-default-calendar .simcal-organizer img,.simcal-default-calendar li.simcal-attachment img,.simcal-default-calendar li.simcal-attendee img{display:inline-block;margin:0 4px;max-height:24px;max-width:24px}.simcal-default-calendar .simcal-tooltip-content{font-size:1.2em;line-height:1.4;padding:5px}.simcal-default-calendar .simcal-ajax-loader{height:100%;left:0;position:absolute;top:0;width:100%}.simcal-default-calendar .simcal-ajax-loader>i{font-size:48px;left:50%;line-height:1;margin:-36px 0 0 -36px;position:absolute;top:50%}.simcal-default-calendar .simcal-ajax-loader.simcal-spinner-top>i{top:20%}.simcal-default-calendar .simcal-ajax-loader.simcal-spinner-bottom>i{bottom:20%;top:auto}.simcal-default-calendar-light .simcal-nav-button{color:rgba(0,0,0,.6)}.simcal-default-calendar-light .simcal-nav-button:disabled,.simcal-deLine truncated
@@ -0,0 +1,617 @@
/*
* qTip2 - Pretty powerful tooltips - v2.2.1
* http://qtip2.com
*
* Copyright (c) 2014
* Released under the MIT licenses
* http://jquery.org/license
*
* Date: Sun Sep 7 2014 12:09 GMT+0100+0100
* Plugins: tips modal viewport svg imagemap ie6
* Styles: core basic css3
*/
.qtip{
position: absolute;
left: -28000px;
top: -28000px;
display: none;
max-width: 280px;
min-width: 50px;
font-size: 10.5px;
line-height: 12px;
direction: ltr;
box-shadow: none;
padding: 0;
}
.qtip-content{
position: relative;
padding: 5px 9px;
overflow: hidden;
text-align: left;
word-wrap: break-word;
}
.qtip-titlebar{
position: relative;
padding: 5px 35px 5px 10px;
overflow: hidden;
border-width: 0 0 1px;
font-weight: bold;
}
.qtip-titlebar + .qtip-content{ border-top-width: 0 !important; }
/* Default close button class */
.qtip-close{
position: absolute;
right: -9px; top: -9px;
z-index: 11; /* Overlap .qtip-tip */
cursor: pointer;
outline: medium none;
border: 1px solid transparent;
}
.qtip-titlebar .qtip-close{
right: 4px; top: 50%;
margin-top: -9px;
}
* html .qtip-titlebar .qtip-close{ top: 16px; } /* IE fix */
.qtip-titlebar .ui-icon,
.qtip-icon .ui-icon{
display: block;
text-indent: -1000em;
direction: ltr;
}
.qtip-icon, .qtip-icon .ui-icon{
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
text-decoration: none;
}
.qtip-icon .ui-icon{
width: 18px;
height: 14px;
line-height: 14px;
text-align: center;
text-indent: 0;
font: normal bold 10px/13px Tahoma,sans-serif;
color: inherit;
background: transparent none no-repeat -100em -100em;
}
/* Applied to 'focused' tooltips e.g. most recently displayed/interacted with */
.qtip-focus{}
/* Applied on hover of tooltips i.e. added/removed on mouseenter/mouseleave respectively */
.qtip-hover{}
/* Default tooltip style */
.qtip-default{
border: 1px solid #F1D031;
background-color: #FFFFA3;
color: #555;
}
.qtip-default .qtip-titlebar{
background-color: #FFEF93;
}
.qtip-default .qtip-icon{
border-color: #CCC;
background: #F1F1F1;
color: #777;
}
.qtip-default .qtip-titlebar .qtip-close{
border-color: #AAA;
color: #111;
}
/*! Light tooltip style */
.qtip-light{
background-color: white;
border-color: #E2E2E2;
color: #454545;
}
.qtip-light .qtip-titlebar{
background-color: #f1f1f1;
}
/*! Dark tooltip style */
.qtip-dark{
background-color: #505050;
border-color: #303030;
color: #f3f3f3;
}
.qtip-dark .qtip-titlebar{
background-color: #404040;
}
.qtip-dark .qtip-icon{
border-color: #444;
}
.qtip-dark .qtip-titlebar .ui-state-hover{
border-color: #303030;
}
/*! Cream tooltip style */
.qtip-cream{
background-color: #FBF7AA;
border-color: #F9E98E;
color: #A27D35;
}
.qtip-cream .qtip-titlebar{
background-color: #F0DE7D;
}
.qtip-cream .qtip-close .qtip-icon{
background-position: -82px 0;
}
/*! Red tooltip style */
.qtip-red{
background-color: #F78B83;
border-color: #D95252;
color: #912323;
}
.qtip-red .qtip-titlebar{
background-color: #F06D65;
}
.qtip-red .qtip-close .qtip-icon{
background-position: -102px 0;
}
.qtip-red .qtip-icon{
border-color: #D95252;
}
.qtip-red .qtip-titlebar .ui-state-hover{
border-color: #D95252;
}
/*! Green tooltip style */
.qtip-green{
background-color: #CAED9E;
border-color: #90D93F;
color: #3F6219;
}
.qtip-green .qtip-titlebar{
background-color: #B0DE78;
}
.qtip-green .qtip-close .qtip-icon{
background-position: -42px 0;
}
/*! Blue tooltip style */
.qtip-blue{
background-color: #E5F6FE;
border-color: #ADD9ED;
color: #5E99BD;
}
.qtip-blue .qtip-titlebar{
background-color: #D0E9F5;
}
.qtip-blue .qtip-close .qtip-icon{
background-position: -2px 0;
}
.qtip-shadow{
-webkit-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
-moz-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15);
}
/* Add rounded corners to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */
.qtip-rounded,
.qtip-tipsy,
.qtip-bootstrap{
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
}
.qtip-rounded .qtip-titlebar{
-moz-border-radius: 4px 4px 0 0;
-webkit-border-radius: 4px 4px 0 0;
border-radius: 4px 4px 0 0;
}
/* Youtube tooltip style */
.qtip-youtube{
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border-radius: 2px;
-webkit-box-shadow: 0 0 3px #333;
-moz-box-shadow: 0 0 3px #333;
box-shadow: 0 0 3px #333;
color: white;
border: 0 solid transparent;
background: #4A4A4A;
background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,black));
background-image: -webkit-linear-gradient(top,#4A4A4A 0,black 100%);
background-image: -moz-linear-gradient(top,#4A4A4A 0,black 100%);
background-image: -ms-linear-gradient(top,#4A4A4A 0,black 100%);
background-image: -o-linear-gradient(top,#4A4A4A 0,black 100%);
}
.qtip-youtube .qtip-titlebar{
background-color: #4A4A4A;
background-color: rgba(0,0,0,0);
}
.qtip-youtube .qtip-content{
padding: .75em;
font: 12px arial,sans-serif;
filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);
-ms-filter: "progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);";
}
.qtip-youtube .qtip-icon{
border-color: #222;
}
.qtip-youtube .qtip-titlebar .ui-state-hover{
border-color: #303030;
}
/* jQuery TOOLS Tooltip style */
.qtip-jtools{
background: #232323;
background: rgba(0, 0, 0, 0.7);
background-image: -webkit-gradient(linear, left top, left bottom, from(#717171), to(#232323));
background-image: -moz-linear-gradient(top, #717171, #232323);
background-image: -webkit-linear-gradient(top, #717171, #232323);
background-image: -ms-linear-gradient(top, #717171, #232323);
background-image: -o-linear-gradient(top, #717171, #232323);
border: 2px solid #ddd;
border: 2px solid rgba(241,241,241,1);
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
border-radius: 2px;
-webkit-box-shadow: 0 0 12px #333;
-moz-box-shadow: 0 0 12px #333;
box-shadow: 0 0 12px #333;
}
/* IE Specific */
.qtip-jtools .qtip-titlebar{
background-color: transparent;
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A);
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)";
}
.qtip-jtools .qtip-content{
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323);
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)";
}
.qtip-jtools .qtip-titlebar,
.qtip-jtools .qtip-content{
background: transparent;
color: white;
border: 0 dashed transparent;
}
.qtip-jtools .qtip-icon{
border-color: #555;
}
.qtip-jtools .qtip-titlebar .ui-state-hover{
border-color: #333;
}
/* Cluetip style */
.qtip-cluetip{
-webkit-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
-moz-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4);
background-color: #D9D9C2;
color: #111;
border: 0 dashed transparent;
}
.qtip-cluetip .qtip-titlebar{
background-color: #87876A;
color: white;
border: 0 dashed transparent;
}
.qtip-cluetip .qtip-icon{
border-color: #808064;
}
.qtip-cluetip .qtip-titlebar .ui-state-hover{
border-color: #696952;
color: #696952;
}
/* Tipsy style */
.qtip-tipsy{
background: black;
background: rgba(0, 0, 0, .87);
color: white;
border: 0 solid transparent;
font-size: 11px;
font-family: 'Lucida Grande', sans-serif;
font-weight: bold;
line-height: 16px;
text-shadow: 0 1px black;
}
.qtip-tipsy .qtip-titlebar{
padding: 6px 35px 0 10px;
background-color: transparent;
}
.qtip-tipsy .qtip-content{
padding: 6px 10px;
}
.qtip-tipsy .qtip-icon{
border-color: #222;
text-shadow: none;
}
.qtip-tipsy .qtip-titlebar .ui-state-hover{
border-color: #303030;
}
/* Tipped style */
.qtip-tipped{
border: 3px solid #959FA9;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
background-color: #F9F9F9;
color: #454545;
font-weight: normal;
font-family: serif;
}
.qtip-tipped .qtip-titlebar{
border-bottom-width: 0;
color: white;
background: #3A79B8;
background-image: -webkit-gradient(linear, left top, left bottom, from(#3A79B8), to(#2E629D));
background-image: -webkit-linear-gradient(top, #3A79B8, #2E629D);
background-image: -moz-linear-gradient(top, #3A79B8, #2E629D);
background-image: -ms-linear-gradient(top, #3A79B8, #2E629D);
background-image: -o-linear-gradient(top, #3A79B8, #2E629D);
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D);
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)";
}
.qtip-tipped .qtip-icon{
border: 2px solid #285589;
background: #285589;
}
.qtip-tipped .qtip-icon .ui-icon{
background-color: #FBFBFB;
color: #555;
}
/**
* Twitter Bootstrap style.
*
* Tested with IE 8, IE 9, Chrome 18, Firefox 9, Opera 11.
* Does not work with IE 7.
*/
.qtip-bootstrap{
/** Taken from Bootstrap body */
font-size: 14px;
line-height: 20px;
color: #333333;
/** Taken from Bootstrap .popover */
padding: 1px;
background-color: #ffffff;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, 0.2);
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
border-radius: 6px;
-webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
-webkit-background-clip: padding-box;
-moz-background-clip: padding;
background-clip: padding-box;
}
.qtip-bootstrap .qtip-titlebar{
/** Taken from Bootstrap .popover-title */
padding: 8px 14px;
margin: 0;
font-size: 14px;
font-weight: normal;
line-height: 18px;
background-color: #f7f7f7;
border-bottom: 1px solid #ebebeb;
-webkit-border-radius: 5px 5px 0 0;
-moz-border-radius: 5px 5px 0 0;
border-radius: 5px 5px 0 0;
}
.qtip-bootstrap .qtip-titlebar .qtip-close{
/**
* Overrides qTip2:
* .qtip-titlebar .qtip-close{
* [...]
* right: 4px;
* top: 50%;
* [...]
* border-style: solid;
* }
*/
right: 11px;
top: 45%;
border-style: none;
}
.qtip-bootstrap .qtip-content{
/** Taken from Bootstrap .popover-content */
padding: 9px 14px;
}
.qtip-bootstrap .qtip-icon{
/**
* Overrides qTip2:
* .qtip-default .qtip-icon {
* border-color: #CCC;
* background: #F1F1F1;
* color: #777;
* }
*/
background: transparent;
}
.qtip-bootstrap .qtip-icon .ui-icon{
/**
* Overrides qTip2:
* .qtip-icon .ui-icon{
* width: 18px;
* height: 14px;
* }
*/
width: auto;
height: auto;
/* Taken from Bootstrap .close */
float: right;
font-size: 20px;
font-weight: bold;
line-height: 18px;
color: #000000;
text-shadow: 0 1px 0 #ffffff;
opacity: 0.2;
filter: alpha(opacity=20);
}
.qtip-bootstrap .qtip-icon .ui-icon:hover{
/* Taken from Bootstrap .close:hover */
color: #000000;
text-decoration: none;
cursor: pointer;
opacity: 0.4;
filter: alpha(opacity=40);
}
/* IE9 fix - removes all filters */
.qtip:not(.ie9haxors) div.qtip-content,
.qtip:not(.ie9haxors) div.qtip-titlebar{
filter: none;
-ms-filter: none;
}
.qtip .qtip-tip{
margin: 0 auto;
overflow: hidden;
z-index: 10;
}
/* Opera bug #357 - Incorrect tip position
https://github.com/Craga89/qTip2/issues/367 */
x:-o-prefocus, .qtip .qtip-tip{
visibility: hidden;
}
.qtip .qtip-tip,
.qtip .qtip-tip .qtip-vml,
.qtip .qtip-tip canvas{
position: absolute;
color: #123456;
background: transparent;
border: 0 dashed transparent;
}
.qtip .qtip-tip canvas{ top: 0; left: 0; }
.qtip .qtip-tip .qtip-vml{
behavior: url(#default#VML);
display: inline-block;
visibility: visible;
}
#qtip-overlay{
position: fixed;
left: 0; top: 0;
width: 100%; height: 100%;
}
/* Applied to modals with show.modal.blur set to true */
#qtip-overlay.blurs{ cursor: pointer; }
/* Change opacity of overlay here */
#qtip-overlay div{
position: absolute;
left: 0; top: 0;
width: 100%; height: 100%;
background-color: black;
opacity: 0.7;
filter:alpha(opacity=70);
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
}
.qtipmodal-ie6fix{
position: absolute !important;
}
@@ -0,0 +1,3 @@
/* qTip2 v2.2.1 | Plugins: tips modal viewport svg imagemap ie6 | Styles: core basic css3 | qtip2.com | Licensed MIT | Sun Sep 07 2014 00:09:28 */
.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.qtip-titlebar{position:relative;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;z-index:11;cursor:pointer;outline:0;border:1px solid transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-icon .ui-icon,.qtip-titlebar .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:400 bold 10px/13px Tahoma,sans-serif;color:inherit;background:-100em -100em no-repeat}.qtip-default{border:1px solid #F1D031;background-color:#FFFFA3;color:#555}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111}.qtip-light{background-color:#fff;border-color:#E2E2E2;color:#454545}.qtip-light .qtip-titlebar{background-color:#f1f1f1}.qtip-dark{background-color:#505050;border-color:#303030;color:#f3f3f3}.qtip-dark .qtip-titlebar{background-color:#404040}.qtip-dark .qtip-icon{border-color:#444}.qtip-dark .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-cream{background-color:#FBF7AA;border-color:#F9E98E;color:#A27D35}.qtip-cream .qtip-titlebar{background-color:#F0DE7D}.qtip-cream .qtip-close .qtip-icon{background-position:-82px 0}.qtip-red{background-color:#F78B83;border-color:#D95252;color:#912323}.qtip-red .qtip-titlebar{background-color:#F06D65}.qtip-red .qtip-close .qtip-icon{background-position:-102px 0}.qtip-red .qtip-icon,.qtip-red .qtip-titlebar .ui-state-hover{border-color:#D95252}.qtip-green{background-color:#CAED9E;border-color:#90D93F;color:#3F6219}.qtip-green .qtip-titlebar{background-color:#B0DE78}.qtip-green .qtip-close .qtip-icon{background-position:-42px 0}.qtip-blue{background-color:#E5F6FE;border-color:#ADD9ED;color:#5E99BD}.qtip-blue .qtip-titlebar{background-color:#D0E9F5}.qtip-blue .qtip-close .qtip-icon{background-position:-2px 0}.qtip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,.15)}.qtip-bootstrap,.qtip-rounded,.qtip-tipsy{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.qtip-rounded .qtip-titlebar{-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.qtip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:#fff;border:0 solid transparent;background:#4A4A4A;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,#000));background-image:-webkit-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-moz-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-ms-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-o-linear-gradient(top,#4A4A4A 0,#000 100%)}.qtip-youtube .qtip-titlebar{background-color:transparent}.qtip-youtube .qtip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);"}.qtip-youtube .qtip-icon{border-color:#222}.qtip-youtube .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-jtools{background:#232323;background:rgba(0,0,0,.7);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-linear-gradient(top,#717171,#232323);background-image:-ms-linear-gradient(top,#717171,#232323);background-image:-o-linear-gradient(top,#717171,#232323);border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.qtip-jtools .qtip-titlebar{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)"}.qtip-jtools .qtip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)"}.qtip-jtools .qtip-content,.qtip-jtools .Line truncated
@@ -1,124 +0,0 @@
/*
* qTip2 - Pretty powerful tooltips - v2.2.1
* http://qtip2.com
*
* Copyright (c) 2014
* Released under the MIT licenses
* http://jquery.org/license
*
* Date: Sun Sep 7 2014 12:09 GMT+0100+0100
* Plugins: None
* Styles: core
*/
.qtip{
position: absolute;
left: -28000px;
top: -28000px;
display: none;
max-width: 280px;
min-width: 50px;
font-size: 10.5px;
line-height: 12px;
direction: ltr;
box-shadow: none;
padding: 0;
}
.qtip-content{
position: relative;
padding: 5px 9px;
overflow: hidden;
text-align: left;
word-wrap: break-word;
}
.qtip-titlebar{
position: relative;
padding: 5px 35px 5px 10px;
overflow: hidden;
border-width: 0 0 1px;
font-weight: bold;
}
.qtip-titlebar + .qtip-content{ border-top-width: 0 !important; }
/* Default close button class */
.qtip-close{
position: absolute;
right: -9px; top: -9px;
z-index: 11; /* Overlap .qtip-tip */
cursor: pointer;
outline: medium none;
border: 1px solid transparent;
}
.qtip-titlebar .qtip-close{
right: 4px; top: 50%;
margin-top: -9px;
}
* html .qtip-titlebar .qtip-close{ top: 16px; } /* IE fix */
.qtip-titlebar .ui-icon,
.qtip-icon .ui-icon{
display: block;
text-indent: -1000em;
direction: ltr;
}
.qtip-icon, .qtip-icon .ui-icon{
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
text-decoration: none;
}
.qtip-icon .ui-icon{
width: 18px;
height: 14px;
line-height: 14px;
text-align: center;
text-indent: 0;
font: normal bold 10px/13px Tahoma,sans-serif;
color: inherit;
background: transparent none no-repeat -100em -100em;
}
/* Applied to 'focused' tooltips e.g. most recently displayed/interacted with */
.qtip-focus{}
/* Applied on hover of tooltips i.e. added/removed on mouseenter/mouseleave respectively */
.qtip-hover{}
/* Default tooltip style */
.qtip-default{
border: 1px solid #F1D031;
background-color: #FFFFA3;
color: #555;
}
.qtip-default .qtip-titlebar{
background-color: #FFEF93;
}
.qtip-default .qtip-icon{
border-color: #CCC;
background: #F1F1F1;
color: #777;
}
.qtip-default .qtip-titlebar .qtip-close{
border-color: #AAA;
color: #111;
}
@@ -1,3 +0,0 @@
/* qTip2 v2.2.1 | Plugins: None | Styles: core | qtip2.com | Licensed MIT | Sun Sep 07 2014 00:09:32 */
.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.qtip-titlebar{position:relative;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;z-index:11;cursor:pointer;outline:0;border:1px solid transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-icon .ui-icon,.qtip-titlebar .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:400 bold 10px/13px Tahoma,sans-serif;color:inherit;background:-100em -100em no-repeat}.qtip-default{border:1px solid #F1D031;background-color:#FFFFA3;color:#555}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111}
@@ -18,6 +18,8 @@
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap; }
.select2-container .select2-selection--single .select2-selection__clear {
position: relative; }
.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered {
padding-right: 8px;
padding-left: 20px; }
@@ -40,7 +42,8 @@
box-sizing: border-box;
border: none;
font-size: 100%;
margin-top: 5px; }
margin-top: 5px;
padding: 0; }
.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button {
-webkit-appearance: none; }
@@ -113,14 +116,14 @@
filter: alpha(opacity=0); }
.select2-hidden-accessible {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px; }
border: 0 !important;
clip: rect(0 0 0 0) !important;
height: 1px !important;
margin: -1px !important;
overflow: hidden !important;
padding: 0 !important;
position: absolute !important;
width: 1px !important; }
.select2-container--default .select2-selection--single {
background-color: #fff;
@@ -152,19 +155,24 @@
position: absolute;
top: 50%;
width: 0; }
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear {
float: left; }
.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow {
left: 1px;
right: auto; }
.select2-container--default.select2-container--disabled .select2-selection--single {
background-color: #eee;
cursor: default; }
.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear {
display: none; }
.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b {
border-color: transparent transparent #888 transparent;
border-width: 0 4px 5px 4px; }
.select2-container--default .select2-selection--multiple {
background-color: white;
border: 1px solid #aaa;
@@ -203,43 +211,60 @@
margin-right: 2px; }
.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover {
color: #333; }
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder {
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder, .select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline {
float: right; }
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
margin-left: 5px;
margin-right: auto; }
.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
margin-left: 2px;
margin-right: auto; }
.select2-container--default.select2-container--focus .select2-selection--multiple {
border: solid black 1px;
outline: 0; }
.select2-container--default.select2-container--disabled .select2-selection--multiple {
background-color: #eee;
cursor: default; }
.select2-container--default.select2-container--disabled .select2-selection__choice__remove {
display: none; }
.select2-container--default.select2-container--open.select2-container--above .select2-selection--single, .select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple {
border-top-left-radius: 0;
border-top-right-radius: 0; }
.select2-container--default.select2-container--open.select2-container--below .select2-selection--single, .select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0; }
.select2-container--default .select2-search--dropdown .select2-search__field {
border: 1px solid #aaa; }
.select2-container--default .select2-search--inline .select2-search__field {
background: transparent;
border: none;
outline: 0; }
outline: 0;
box-shadow: none;
-webkit-appearance: textfield; }
.select2-container--default .select2-results > .select2-results__options {
max-height: 200px;
overflow-y: auto; }
.select2-container--default .select2-results__option[role=group] {
padding: 0; }
.select2-container--default .select2-results__option[aria-disabled=true] {
color: #999; }
.select2-container--default .select2-results__option[aria-selected=true] {
background-color: #ddd; }
.select2-container--default .select2-results__option .select2-results__option {
padding-left: 1em; }
.select2-container--default .select2-results__option .select2-results__option .select2-results__group {
@@ -259,24 +284,26 @@
.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option {
margin-left: -5em;
padding-left: 6em; }
.select2-container--default .select2-results__option--highlighted[aria-selected] {
background-color: #5897fb;
color: white; }
.select2-container--default .select2-results__group {
cursor: default;
display: block;
padding: 6px; }
.select2-container--classic .select2-selection--single {
background-color: #f6f6f6;
background-color: #f7f7f7;
border: 1px solid #aaa;
border-radius: 4px;
outline: 0;
background-image: -webkit-linear-gradient(top, #ffffff 50%, #eeeeee 100%);
background-image: -o-linear-gradient(top, #ffffff 50%, #eeeeee 100%);
background-image: linear-gradient(to bottom, #ffffff 50%, #eeeeee 100%);
background-image: -webkit-linear-gradient(top, white 50%, #eeeeee 100%);
background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
background-image: linear-gradient(to bottom, white 50%, #eeeeee 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0); }
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
.select2-container--classic .select2-selection--single:focus {
border: 1px solid #5897fb; }
.select2-container--classic .select2-selection--single .select2-selection__rendered {
@@ -304,7 +331,7 @@
background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#cccccc', GradientType=0); }
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0); }
.select2-container--classic .select2-selection--single .select2-selection__arrow b {
border-color: #888 transparent transparent transparent;
border-style: solid;
@@ -316,8 +343,10 @@
position: absolute;
top: 50%;
width: 0; }
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear {
float: left; }
.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow {
border: none;
border-right: 1px solid #aaa;
@@ -326,6 +355,7 @@
border-bottom-left-radius: 4px;
left: 1px;
right: auto; }
.select2-container--classic.select2-container--open .select2-selection--single {
border: 1px solid #5897fb; }
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow {
@@ -334,24 +364,27 @@
.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b {
border-color: transparent transparent #888 transparent;
border-width: 0 4px 5px 4px; }
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single {
border-top: none;
border-top-left-radius: 0;
border-top-right-radius: 0;
background-image: -webkit-linear-gradient(top, #ffffff 0%, #eeeeee 50%);
background-image: -o-linear-gradient(top, #ffffff 0%, #eeeeee 50%);
background-image: linear-gradient(to bottom, #ffffff 0%, #eeeeee 50%);
background-image: -webkit-linear-gradient(top, white 0%, #eeeeee 50%);
background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
background-image: linear-gradient(to bottom, white 0%, #eeeeee 50%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0); }
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0); }
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single {
border-bottom: none;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
background-image: -webkit-linear-gradient(top, #eeeeee 50%, #ffffff 100%);
background-image: -o-linear-gradient(top, #eeeeee 50%, #ffffff 100%);
background-image: linear-gradient(to bottom, #eeeeee 50%, #ffffff 100%);
background-image: -webkit-linear-gradient(top, #eeeeee 50%, white 100%);
background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
background-image: linear-gradient(to bottom, #eeeeee 50%, white 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); }
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0); }
.select2-container--classic .select2-selection--multiple {
background-color: white;
border: 1px solid #aaa;
@@ -383,49 +416,67 @@
margin-right: 2px; }
.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover {
color: #555; }
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
float: right; }
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice {
margin-left: 5px;
margin-right: auto; }
.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove {
margin-left: 2px;
margin-right: auto; }
.select2-container--classic.select2-container--open .select2-selection--multiple {
border: 1px solid #5897fb; }
.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple {
border-top: none;
border-top-left-radius: 0;
border-top-right-radius: 0; }
.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple {
border-bottom: none;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0; }
.select2-container--classic .select2-search--dropdown .select2-search__field {
border: 1px solid #aaa;
outline: 0; }
.select2-container--classic .select2-search--inline .select2-search__field {
outline: 0; }
outline: 0;
box-shadow: none; }
.select2-container--classic .select2-dropdown {
background-color: white;
border: 1px solid transparent; }
.select2-container--classic .select2-dropdown--above {
border-bottom: none; }
.select2-container--classic .select2-dropdown--below {
border-top: none; }
.select2-container--classic .select2-results > .select2-results__options {
max-height: 200px;
overflow-y: auto; }
.select2-container--classic .select2-results__option[role=group] {
padding: 0; }
.select2-container--classic .select2-results__option[aria-disabled=true] {
color: grey; }
.select2-container--classic .select2-results__option--highlighted[aria-selected] {
background-color: #3875d7;
color: white; }
.select2-container--classic .select2-results__group {
cursor: default;
display: block;
padding: 6px; }
.select2-container--classic.select2-container--open .select2-dropdown {
border-color: #5897fb; }
@@ -1 +1 @@
.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle;}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none;}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px;}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none;}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap;}.select2-container .select2-search--inline{float:left;}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none;}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051;}.select2-results{display:block;}.select2-results__options{list-style:none;margin:0;padding:0;}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none;}.select2-results__option[aria-selected]{cursor:pointer;}.select2-container--open .select2-dropdown{left:0;}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0;}.select2-search--dropdown{display:block;padding:4px;}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box;}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none;}.select2-search--dropdown.select2-search--hide{display:none;}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0);}.select2-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px;}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px;}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999;}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px;}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0;}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left;}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto;}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default;}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none;}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px;}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%;}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left;}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px;}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px;}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:poLine truncated
.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-riLine truncated
@@ -1,6 +1,6 @@
/*! Simple Calendar - 3.0.10
/*! Simple Calendar - 3.0.13
* https://simplecalendar.io
* Copyright (c) Moonstone Media 2015
* Copyright (c) Moonstone Media 2016
* Licensed GPLv2+ */
!function(a,b){"use strict";jQuery(function(a){function b(){a(".simcal-field-select-enhanced").each(function(b,c){var d=a(c),e=d.data("noresults"),f=d.data("allowclear");d.select2({allowClear:"undefined"!=f?f:!1,placeholder:{id:"",placeholder:""},dir:"undefined"!=simcal_admin.text_dir?simcal_admin.text_dir:"ltr",tokenSeparators:[","],width:"100%",language:{noResults:function(){return"undefined"!=e?e:""}}})})}var c=!1,d=a("#widgets-left");d.length&&(a(document).ajaxComplete(function(b,c,d){var e,f,g,h={},i=d.data.split("&");for(e in i)f=i[e].split("="),h[decodeURIComponent(f[0])]=decodeURIComponent(f[1]);h.action&&"save-widget"===h.action&&(g=a('input.widget-id[value="'+h["widget-id"]+'"]').parents(".widget"),c.responseText?a(document).trigger("saved_widget",g):wpWidgets.save(g,0,1,0))}),a(document).bind("saved_widget",function(a,d){c=!0,b()})),c||b(),a("#simcal-insert-shortcode-button").on("click",function(){setTimeout(function(){var a=document.getElementById("TB_window");"undefined"!=a&&a.classList.add("simcal-insert-shortcode-modal");var b=document.getElementById("TB_title");"undefined"!=b&&b.classList.add("simcal-insert-shortcode-modal-title")},120)}),a("#simcal-insert-shortcode").on("click",function(b){b.preventDefault();var c=a("#simcal-choose-calendar").val();wp.media.editor.insert('[calendar id="'+c+'"] '),tb_remove()})})}(this);
@@ -1,6 +1,6 @@
/*! Simple Calendar - 3.0.10
/*! Simple Calendar - 3.0.13
* https://simplecalendar.io
* Copyright (c) Moonstone Media 2015
* Copyright (c) Moonstone Media 2016
* Licensed GPLv2+ */
!function(a,b){"use strict";jQuery(function(a){function b(b){var c=a(b).find("input"),d=a(b).find("> div select"),e=a(b).find("code"),f="",g="";d.each(function(b,c){var d=a(c).val(),e=a(c).find("> option:selected");d.length&&(e.data("trim")?(f=f.trim()+a(c).val(),g=g.trim()+e.data("preview")):(f+=a(c).val()+" ",g+=e.data("preview")+" "))}),c.val(f),e.text(g)}a(".simcal-help-tip").tipTip({attribute:"data-tip",delay:200,fadeIn:50,fadeOut:50}),a(".simcal-shortcode-tip").tipTip({activation:"click",defaultPosition:"top",delay:200,fadeIn:50,fadeOut:50});var c=a("#simcal-calendar-settings"),d=c.find(".simcal-box-handle"),e=c.find(".hndle");a(d).appendTo(e),a(function(){a(e).unbind("click.postboxes"),c.on("click","h3.hndle",function(b){a(b.target).filter("input, option, label, select").length||c.toggleClass("closed")})}),a(document.body).on("simcal-init-tabbed-panels",function(){a(".simcal-tabs").show(),a(".simcal-tabs a").click(function(){var b=a(this).closest("div.simcal-panels-wrap");return a("ul.simcal-tabs li",b).removeClass("active"),a(this).parent().addClass("active"),a("div.simcal-panel",b).hide(),a(a(this).attr("href")).show(),!1}),a("div.simcal-panels-wrap").each(function(){a(this).find("ul.simcal-tabs > li").eq(0).find("a").click()})}).trigger("simcal-init-tabbed-panels"),a("#_feed_type").on("change",function(){var b=a(this).find("option:selected"),c=b.val(),d=a(".simcal-tabs"),e=d.find("> .simcal-feed-type"),f=d.find("> .simcal-feed-type-"+c),g=d.find("> li:first-child > a");e.each(function(){a(this).hide()}),f.show(),g.trigger("click")}).trigger("change"),c.show();var f=a("#_calendar_view_default-calendar"),g=a("#default-calendar-settings"),h=g.find(".simcal-default-calendar-grid"),i=g.find(".simcal-default-calendar-list"),j=g.find(".simcal-default-calendar-list-grouped");f.on("change",function(){var b=a(this).val();"grid"==b?(i.hide(),j.hide(),h.show()):"list"==b?(h.hide(),j.hide(),i.show()):"list-grouped"==b&&(h.hide(),i.hide(),j.show())}).trigger("change"),a(".simcal-field-color-picker").wpColorPicker(),a(".simcal-field-select-enhanced").each(function(b,c){var d=a(c),e=d.data("noresults"),f=d.data("allowclear");d.select2({allowClear:"undefined"!=f?f:!1,placeholder:{id:"",placeholder:""},dir:"undefined"!=simcal_admin.text_dir?simcal_admin.text_dir:"ltr",tokenSeparators:[","],width:"100%",language:{noResults:function(){return"undefined"!=e?e:""}}})});var k=a(".simcal-field-date-picker");k.each(function(b,c){var d=a(c).find("input"),e={autoSize:!0,changeMonth:!0,changeYear:!0,dateFormat:"yy-mm-dd",firstDay:1,prevText:'<i class="simcal-icon-left"></i>',nextText:'<i class="simcal-icon-right"></i>',yearRange:"1900:2050",beforeShow:function(b,c){a("#ui-datepicker-div").addClass("simcal-date-picker")}};a(d).datepicker(e),a(d).datepicker("option",a.datepicker.regional[simcal_admin.locale])});var l=a(".simcal-field-datetime-format");l.sortable({items:"> div",stop:function(){b(a(this))}}),l.each(function(c,d){var e=a(d).find("> div select");e.each(function(c,d){a(d).on("change",function(){b(a(this).closest("div.simcal-field-datetime-format"))})}),b(d)}),a(".simcal-field-datetime-format-php").each(function(b,c){var d=a(c).find("input"),e=a(c).find("code");a(d).on("keyup",function(){var b={action:"simcal_date_i18n_input_preview",value:d.val()};a.post(simcal_admin.ajax_url,b,function(b){a(e).text(b.data)})})}),a('input[type="number"].simcal-field').each(function(b,c){var d=a(c),e=d.attr("min"),f=d.attr("max");d.on("change",function(){var b=a(this).val();e&&e>b&&a(this).val(e),f&&b>f&&a(this).val(f)})}),a(".simcal-field-switch-other").on("change",function(){var b=a(this).find("option");b.each(function(b,c){var d=a(c).data("show-field"),e=a(c).data("show-fields"),f=a(c).data("hide-field"),g=a(c).data("hide-fields"),h=d?a("#"+d):"",i=f?a("#"+f):"";if(a(c).is(":selected")){if(h&&h.show(),i&&i.hide(),e){var j=g.split(",");a(j).each(function(b,c){a("#"+c).hide()})}if(g){var k=g.split(",");a(k).each(function(b,c){a("#"+c).hide()})}}})}).trigger("change"),a(".simcal-field-show-other").on("change",function(){var b=a(this).find("option");b.each(function(b,c){var d=a(c).data("show-field"),e=d.length?a("#"+d):"",f=d.length?e.next():"";e.length&&(a(c).is(":selected")?(e.show(),f.hasClass("select2")&&f.show()):(e.hide(),f.hasClass("select2")&&f.hide()))})}).trigger("change"),a(".simcal-field-show-next").on("change",function(){var b,c,d,e;a(this).is(":checkbox")?(d=a(this).parent().next(),a(this).is(":checked")?d.show():d.hide()):(b=a(this).val(),c=a(this).data("show-next-if-value"),d=a(this).nextUntil().not("i"),e=d.length?d.next():"",b==c?(d.show(),e.hasClass("select2")&&e.show()):(d.hide(),e.hasClass("select2")&&e.hide()))}).trigger("change"),a("#simcal-clear-cache").on("click",function(b){b.preventDefault();var c=a(this).find("i");a.ajax({url:simcal_admin.ajax_url,method:"POST",data:{action:"simcal_clear_cache",id:a(this).data("id")},beforeSend:function(){c.fadeToggle()},success:function(){c.fadeToggle()},error:function(a)Line truncated
@@ -1,6 +1,6 @@
/*! Simple Calendar - 3.0.10
/*! Simple Calendar - 3.0.13
* https://simplecalendar.io
* Copyright (c) Moonstone Media 2015
* Copyright (c) Moonstone Media 2016
* Licensed GPLv2+ */
!function(a,b){"use strict";jQuery(function(b){function c(a){var c=b(a).find(".simcal-current"),d=b(a).find(".simcal-events-list-container"),e=d.data("heading-small"),f=d.data("heading-large");a.width()<400?c.html("<h3>"+e+"</h3>"):c.html("<h3>"+f+"</h3>")}function d(c){var d=b(c).find("> table"),e=d.find("thead"),f=e.find("th.simcal-week-day"),g=d.find("td.simcal-day > div"),h=d.find("ul.simcal-events"),i=h.find("> li > .simcal-event-title"),j=d.find(".simcal-events-toggle"),k=d.find("span.simcal-events-dots"),l=d.find(".simcal-tooltip-content"),m=d.find(".simcal-event-toggled"),n=d.data("event-bubble-trigger"),o=g.first().width();if(60>o){f.each(function(a,c){b(c).text(b(c).data("screen-small"))}),h.hide(),i.hide(),"undefined"!=j&&(j.hide(),"undefined"!=m&&m.show()),k.show();var p=o-10+"px";g.css("min-height",p),d.find("span.simcal-events-dots:not(:empty)").css("min-height",p)}else 240>=o?f.each(function(a,c){b(c).text(b(c).data("screen-medium"))}):f.each(function(a,c){b(c).text(b(c).data("screen-large"))}),h.show(),i.show(),"undefined"!=j&&(j.show(),"undefined"!=m&&m.hide()),k.hide(),g.css("min-height",o+"px");g.each(function(c,d){var e,f,g=b(d).find("span.simcal-events-dots"),h=b(d).find(".simcal-tooltip");60>o?(l.show(),e=g):(l.hide(),e=h),e.each(function(c,e){b(e).qtip({content:60>o?b(d).find("ul.simcal-events"):b(e).find("> .simcal-tooltip-content"),position:{my:"top center",at:"bottom center",target:b(e),viewport:60>o?b(a):!0,adjust:{method:"shift",scroll:!1}},style:{def:!1,classes:"simcal-default-calendar simcal-event-bubble"},show:{solo:!0,effect:!1,event:"hover"==n?"mouseenter":"click"},hide:{fixed:!0,effect:!1,event:"click"==n?"unfocus":"mouseleave",delay:100},events:{show:function(a,b){f&&f.id&&f.id!=b.id&&f.hide(),f=b}}})})})}function e(){b(".simcal-events-toggle").each(function(a,c){var d=b(c).prev(".simcal-events"),e=d.find(".simcal-event-toggled"),f=b(c).find("i");b(c).on("click",function(){f.toggleClass("simcal-icon-rotate-180"),e.slideToggle()})})}b(".simcal-default-calendar").each(function(a,f){var g,h,i=b(f),j=i.data("calendar-id"),k=i.data("offset"),l=(i.data("events-first"),i.data("calendar-end"),i.find(".simcal-calendar-head")),m=l.find(".simcal-nav-button"),n=i.find(".simcal-ajax-loader"),o=l.find(".simcal-current"),p=o.data("calendar-current"),q=o.find("span.simcal-current-month"),r=o.find("span.simcal-current-year"),s=new Date(1e3*p);i.hasClass("simcal-default-calendar-grid")?(h="simcal_default_calendar_draw_grid",g=new Date(s.getFullYear(),s.getMonth(),1)):(h="simcal_default_calendar_draw_list",c(i)),m.on("click",function(){var a=b(this).hasClass("simcal-next")?"next":"prev";if("simcal_default_calendar_draw_grid"==h){var f,l,m,p=i.find(".simcal-month");"prev"==a?f=new Date(g.setMonth(g.getMonth()-1,1)):(f=new Date(g.setMonth(g.getMonth()+2,1)),f.setDate(0),f.setHours(23),f.setMinutes(59),f.setSeconds(59)),l=f.getMonth(),m=f.getFullYear(),b.ajax({url:simcal_default_calendar.ajax_url,method:"POST",dataType:"json",cache:!1,data:{action:h,month:l+1,year:m,id:j},beforeSend:function(){n.fadeToggle()},success:function(a){q.text(simcal_default_calendar.months.full[l]),r.text(m),o.attr("data-calendar-current",f.getTime()/1e3+k+1),n.fadeToggle(),g=f,p.replaceWith(a.data),d(i,s),e()},error:function(a){console.log(a)}})}else{var s=i.find(".simcal-events-list-container"),t=s.data("prev"),u=s.data("next"),v="prev"==a?t:u;b.ajax({url:simcal_default_calendar.ajax_url,method:"POST",dataType:"json",cache:!1,data:{action:h,ts:v,id:j},beforeSend:function(){n.fadeToggle()},success:function(a){s.replaceWith(a.data),o.attr("data-calendar-current",v),c(i),n.fadeToggle(),e()},error:function(a){console.log(a)}})}})});var f=b(".simcal-default-calendar-grid");f.each(function(a,c){d(c),b(c).on("change",function(){d(this)})}),a.onresize=function(){f.each(function(a,b){d(b)})},e()})}(this);
@@ -1,7 +0,0 @@
/*!
* imagesLoaded PACKAGED v3.1.8
* JavaScript is all like "You images are done yet or what?"
* MIT License
*/
(function(){function e(){}function t(e,t){for(var n=e.length;n--;)if(e[n].listener===t)return n;return-1}function n(e){return function(){return this[e].apply(this,arguments)}}var i=e.prototype,r=this,o=r.EventEmitter;i.getListeners=function(e){var t,n,i=this._getEvents();if("object"==typeof e){t={};for(n in i)i.hasOwnProperty(n)&&e.test(n)&&(t[n]=i[n])}else t=i[e]||(i[e]=[]);return t},i.flattenListeners=function(e){var t,n=[];for(t=0;e.length>t;t+=1)n.push(e[t].listener);return n},i.getListenersAsObject=function(e){var t,n=this.getListeners(e);return n instanceof Array&&(t={},t[e]=n),t||n},i.addListener=function(e,n){var i,r=this.getListenersAsObject(e),o="object"==typeof n;for(i in r)r.hasOwnProperty(i)&&-1===t(r[i],n)&&r[i].push(o?n:{listener:n,once:!1});return this},i.on=n("addListener"),i.addOnceListener=function(e,t){return this.addListener(e,{listener:t,once:!0})},i.once=n("addOnceListener"),i.defineEvent=function(e){return this.getListeners(e),this},i.defineEvents=function(e){for(var t=0;e.length>t;t+=1)this.defineEvent(e[t]);return this},i.removeListener=function(e,n){var i,r,o=this.getListenersAsObject(e);for(r in o)o.hasOwnProperty(r)&&(i=t(o[r],n),-1!==i&&o[r].splice(i,1));return this},i.off=n("removeListener"),i.addListeners=function(e,t){return this.manipulateListeners(!1,e,t)},i.removeListeners=function(e,t){return this.manipulateListeners(!0,e,t)},i.manipulateListeners=function(e,t,n){var i,r,o=e?this.removeListener:this.addListener,s=e?this.removeListeners:this.addListeners;if("object"!=typeof t||t instanceof RegExp)for(i=n.length;i--;)o.call(this,t,n[i]);else for(i in t)t.hasOwnProperty(i)&&(r=t[i])&&("function"==typeof r?o.call(this,i,r):s.call(this,i,r));return this},i.removeEvent=function(e){var t,n=typeof e,i=this._getEvents();if("string"===n)delete i[e];else if("object"===n)for(t in i)i.hasOwnProperty(t)&&e.test(t)&&delete i[t];else delete this._events;return this},i.removeAllListeners=n("removeEvent"),i.emitEvent=function(e,t){var n,i,r,o,s=this.getListenersAsObject(e);for(r in s)if(s.hasOwnProperty(r))for(i=s[r].length;i--;)n=s[r][i],n.once===!0&&this.removeListener(e,n.listener),o=n.listener.apply(this,t||[]),o===this._getOnceReturnValue()&&this.removeListener(e,n.listener);return this},i.trigger=n("emitEvent"),i.emit=function(e){var t=Array.prototype.slice.call(arguments,1);return this.emitEvent(e,t)},i.setOnceReturnValue=function(e){return this._onceReturnValue=e,this},i._getOnceReturnValue=function(){return this.hasOwnProperty("_onceReturnValue")?this._onceReturnValue:!0},i._getEvents=function(){return this._events||(this._events={})},e.noConflict=function(){return r.EventEmitter=o,e},"function"==typeof define&&define.amd?define("eventEmitter/EventEmitter",[],function(){return e}):"object"==typeof module&&module.exports?module.exports=e:this.EventEmitter=e}).call(this),function(e){function t(t){var n=e.event;return n.target=n.target||n.srcElement||t,n}var n=document.documentElement,i=function(){};n.addEventListener?i=function(e,t,n){e.addEventListener(t,n,!1)}:n.attachEvent&&(i=function(e,n,i){e[n+i]=i.handleEvent?function(){var n=t(e);i.handleEvent.call(i,n)}:function(){var n=t(e);i.call(e,n)},e.attachEvent("on"+n,e[n+i])});var r=function(){};n.removeEventListener?r=function(e,t,n){e.removeEventListener(t,n,!1)}:n.detachEvent&&(r=function(e,t,n){e.detachEvent("on"+t,e[t+n]);try{delete e[t+n]}catch(i){e[t+n]=void 0}});var o={bind:i,unbind:r};"function"==typeof define&&define.amd?define("eventie/eventie",o):e.eventie=o}(this),function(e,t){"function"==typeof define&&define.amd?define(["eventEmitter/EventEmitter","eventie/eventie"],function(n,i){return t(e,n,i)}):"object"==typeof exports?module.exports=t(e,require("wolfy87-eventemitter"),require("eventie")):e.imagesLoaded=t(e,e.EventEmitter,e.eventie)}(window,function(e,t,n){function i(e,t){for(var n in t)e[n]=t[n];return e}function r(e){return"[object Array]"===d.call(e)}function o(e){var t=[];if(r(e))t=e;else if("number"==typeof e.length)for(var n=0,i=e.length;i>n;n++)t.push(e[n]);else t.push(e);return t}function s(e,t,n){if(!(this instanceof s))return new s(e,t);"string"==typeof e&&(e=document.querySelectorAll(e)),this.elements=o(e),this.options=i({},this.options),"function"==typeof t?n=t:i(this.options,t),n&&this.on("always",n),this.getImages(),a&&(this.jqDeferred=new a.Deferred);var r=this;setTimeout(function(){r.check()})}function f(e){this.img=e}function c(e){this.src=e,v[e]=this}var a=e.jQuery,u=e.console,h=u!==void 0,d=Object.prototype.toString;s.prototype=new t,s.prototype.options={},s.prototype.getImages=function(){this.images=[];for(var e=0,t=this.elements.length;t>e;e++){var n=this.elements[e];"IMG"===n.nodeName&&this.addImage(n);var i=n.nodeType;if(i&&(1===i||9===i||11===i))for(var r=n.querySelectorAll("img"),o=0,s=r.length;s>o;o++){var f=r[o];this.addImage(f)}}},s.prototype.addImage=function(e){var t=new f(e);this.images.push(t)},s.prototype.check=function(){function e(e,r){return t.options.debug&&h&&u.log("confirm"Line truncated
@@ -1,10 +1,9 @@
/*!
* imagesLoaded PACKAGED v3.1.8
* imagesLoaded PACKAGED v3.2.0
* JavaScript is all like "You images are done yet or what?"
* MIT License
*/
/*!
* EventEmitter v4.2.6 - git.io/ee
* Oliver Caldwell
@@ -13,7 +12,7 @@
*/
(function () {
'use strict';
/**
* Class for managing events.
@@ -557,17 +556,17 @@ if ( typeof define === 'function' && define.amd ) {
})( this );
/*!
* imagesLoaded v3.1.8
* imagesLoaded v3.2.0
* JavaScript is all like "You images are done yet or what?"
* MIT License
*/
( function( window, factory ) {
( function( window, factory ) { 'use strict';
// universal module definition
/*global define: false, module: false, require: false */
if ( typeof define === 'function' && define.amd ) {
if ( typeof define == 'function' && define.amd ) {
// AMD
define( [
'eventEmitter/EventEmitter',
@@ -575,7 +574,7 @@ if ( typeof define === 'function' && define.amd ) {
], function( EventEmitter, eventie ) {
return factory( window, EventEmitter, eventie );
});
} else if ( typeof exports === 'object' ) {
} else if ( typeof module == 'object' && module.exports ) {
// CommonJS
module.exports = factory(
window,
@@ -601,7 +600,6 @@ function factory( window, EventEmitter, eventie ) {
var $ = window.jQuery;
var console = window.console;
var hasConsole = typeof console !== 'undefined';
// -------------------------- helpers -------------------------- //
@@ -615,7 +613,7 @@ function extend( a, b ) {
var objToString = Object.prototype.toString;
function isArray( obj ) {
return objToString.call( obj ) === '[object Array]';
return objToString.call( obj ) == '[object Array]';
}
// turn element or nodeList into an array
@@ -624,9 +622,9 @@ function makeArray( obj ) {
if ( isArray( obj ) ) {
// use object if already an array
ary = obj;
} else if ( typeof obj.length === 'number' ) {
} else if ( typeof obj.length == 'number' ) {
// convert nodeList to array
for ( var i=0, len = obj.length; i < len; i++ ) {
for ( var i=0; i < obj.length; i++ ) {
ary.push( obj[i] );
}
} else {
@@ -646,17 +644,17 @@ function makeArray( obj ) {
function ImagesLoaded( elem, options, onAlways ) {
// coerce ImagesLoaded() without new, to be new ImagesLoaded()
if ( !( this instanceof ImagesLoaded ) ) {
return new ImagesLoaded( elem, options );
return new ImagesLoaded( elem, options, onAlways );
}
// use elem as selector string
if ( typeof elem === 'string' ) {
if ( typeof elem == 'string' ) {
elem = document.querySelectorAll( elem );
}
this.elements = makeArray( elem );
this.options = extend( {}, this.options );
if ( typeof options === 'function' ) {
if ( typeof options == 'function' ) {
onAlways = options;
} else {
extend( this.options, options );
@@ -688,27 +686,73 @@ function makeArray( obj ) {
this.images = [];
// filter & find items if we have an item selector
for ( var i=0, len = this.elements.length; i < len; i++ ) {
for ( var i=0; i < this.elements.length; i++ ) {
var elem = this.elements[i];
// filter siblings
if ( elem.nodeName === 'IMG' ) {
this.addImage( elem );
}
// find children
// no non-element nodes, #143
var nodeType = elem.nodeType;
if ( !nodeType || !( nodeType === 1 || nodeType === 9 || nodeType === 11 ) ) {
continue;
}
var childElems = elem.querySelectorAll('img');
// concat childElems to filterFound array
for ( var j=0, jLen = childElems.length; j < jLen; j++ ) {
var img = childElems[j];
this.addImage( img );
this.addElementImages( elem );
}
};
/**
* @param {Node} element
*/
ImagesLoaded.prototype.addElementImages = function( elem ) {
// filter siblings
if ( elem.nodeName == 'IMG' ) {
this.addImage( elem );
}
// get background image on element
if ( this.options.background === true ) {
this.addElementBackgroundImages( elem );
}
// find children
// no non-element nodes, #143
var nodeType = elem.nodeType;
if ( !nodeType || !elementNodeTypes[ nodeType ] ) {
return;
}
var childImgs = elem.querySelectorAll('img');
// concat childElems to filterFound array
for ( var i=0; i < childImgs.length; i++ ) {
var img = childImgs[i];
this.addImage( img );
}
// get child background images
if ( typeof this.options.background == 'string' ) {
var children = elem.querySelectorAll( this.options.background );
for ( i=0; i < children.length; i++ ) {
var child = children[i];
this.addElementBackgroundImages( child );
}
}
};
var elementNodeTypes = {
1: true,
9: true,
11: true
};
ImagesLoaded.prototype.addElementBackgroundImages = function( elem ) {
var style = getStyle( elem );
// get url inside url("...")
var reURL = /url\(['"]*([^'"\)]+)['"]*\)/gi;
var matches = reURL.exec( style.backgroundImage );
while ( matches !== null ) {
var url = matches && matches[1];
if ( url ) {
this.addBackground( url, elem );
}
matches = reURL.exec( style.backgroundImage );
}
};
// IE8
var getStyle = window.getComputedStyle || function( elem ) {
return elem.currentStyle;
};
/**
* @param {Image} img
*/
@@ -717,74 +761,64 @@ function makeArray( obj ) {
this.images.push( loadingImage );
};
ImagesLoaded.prototype.addBackground = function( url, elem ) {
var background = new Background( url, elem );
this.images.push( background );
};
ImagesLoaded.prototype.check = function() {
var _this = this;
var checkedCount = 0;
var length = this.images.length;
this.progressedCount = 0;
this.hasAnyBroken = false;
// complete if no images
if ( !length ) {
if ( !this.images.length ) {
this.complete();
return;
}
function onConfirm( image, message ) {
if ( _this.options.debug && hasConsole ) {
console.log( 'confirm', image, message );
}
_this.progress( image );
checkedCount++;
if ( checkedCount === length ) {
_this.complete();
}
return true; // bind once
function onProgress( image, elem, message ) {
// HACK - Chrome triggers event before object properties have changed. #83
setTimeout( function() {
_this.progress( image, elem, message );
});
}
for ( var i=0; i < length; i++ ) {
for ( var i=0; i < this.images.length; i++ ) {
var loadingImage = this.images[i];
loadingImage.on( 'confirm', onConfirm );
loadingImage.once( 'progress', onProgress );
loadingImage.check();
}
};
ImagesLoaded.prototype.progress = function( image ) {
ImagesLoaded.prototype.progress = function( image, elem, message ) {
this.progressedCount++;
this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded;
// HACK - Chrome triggers event before object properties have changed. #83
var _this = this;
setTimeout( function() {
_this.emit( 'progress', _this, image );
if ( _this.jqDeferred && _this.jqDeferred.notify ) {
_this.jqDeferred.notify( _this, image );
}
});
// progress event
this.emit( 'progress', this, image, elem );
if ( this.jqDeferred && this.jqDeferred.notify ) {
this.jqDeferred.notify( this, image );
}
// check if completed
if ( this.progressedCount == this.images.length ) {
this.complete();
}
if ( this.options.debug && console ) {
console.log( 'progress: ' + message, image, elem );
}
};
ImagesLoaded.prototype.complete = function() {
var eventName = this.hasAnyBroken ? 'fail' : 'done';
this.isComplete = true;
var _this = this;
// HACK - another setTimeout so that confirm happens after progress
setTimeout( function() {
_this.emit( eventName, _this );
_this.emit( 'always', _this );
if ( _this.jqDeferred ) {
var jqMethod = _this.hasAnyBroken ? 'reject' : 'resolve';
_this.jqDeferred[ jqMethod ]( _this );
}
});
this.emit( eventName, this );
this.emit( 'always', this );
if ( this.jqDeferred ) {
var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';
this.jqDeferred[ jqMethod ]( this );
}
};
// -------------------------- jquery -------------------------- //
if ( $ ) {
$.fn.imagesLoaded = function( options, callback ) {
var instance = new ImagesLoaded( this, options, callback );
return instance.jqDeferred.promise( $(this) );
};
}
// -------------------------- -------------------------- //
function LoadingImage( img ) {
@@ -794,100 +828,115 @@ function makeArray( obj ) {
LoadingImage.prototype = new EventEmitter();
LoadingImage.prototype.check = function() {
// first check cached any previous images that have same src
var resource = cache[ this.img.src ] || new Resource( this.img.src );
if ( resource.isConfirmed ) {
this.confirm( resource.isLoaded, 'cached was confirmed' );
return;
}
// If complete is true and browser supports natural sizes,
// try to check for image status manually.
if ( this.img.complete && this.img.naturalWidth !== undefined ) {
var isComplete = this.getIsImageComplete();
if ( isComplete ) {
// report based on naturalWidth
this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
return;
}
// If none of the checks above matched, simulate loading on detached element.
var _this = this;
resource.on( 'confirm', function( resrc, message ) {
_this.confirm( resrc.isLoaded, message );
return true;
});
this.proxyImage = new Image();
eventie.bind( this.proxyImage, 'load', this );
eventie.bind( this.proxyImage, 'error', this );
// bind to image as well for Firefox. #191
eventie.bind( this.img, 'load', this );
eventie.bind( this.img, 'error', this );
this.proxyImage.src = this.img.src;
};
resource.check();
LoadingImage.prototype.getIsImageComplete = function() {
return this.img.complete && this.img.naturalWidth !== undefined;
};
LoadingImage.prototype.confirm = function( isLoaded, message ) {
this.isLoaded = isLoaded;
this.emit( 'confirm', this, message );
};
// -------------------------- Resource -------------------------- //
// Resource checks each src, only once
// separate class from LoadingImage to prevent memory leaks. See #115
var cache = {};
function Resource( src ) {
this.src = src;
// add to cache
cache[ src ] = this;
}
Resource.prototype = new EventEmitter();
Resource.prototype.check = function() {
// only trigger checking once
if ( this.isChecked ) {
return;
}
// simulate loading on detached element
var proxyImage = new Image();
eventie.bind( proxyImage, 'load', this );
eventie.bind( proxyImage, 'error', this );
proxyImage.src = this.src;
// set flag
this.isChecked = true;
this.emit( 'progress', this, this.img, message );
};
// ----- events ----- //
// trigger specified handler for event type
Resource.prototype.handleEvent = function( event ) {
LoadingImage.prototype.handleEvent = function( event ) {
var method = 'on' + event.type;
if ( this[ method ] ) {
this[ method ]( event );
}
};
Resource.prototype.onload = function( event ) {
LoadingImage.prototype.onload = function() {
this.confirm( true, 'onload' );
this.unbindProxyEvents( event );
this.unbindEvents();
};
Resource.prototype.onerror = function( event ) {
LoadingImage.prototype.onerror = function() {
this.confirm( false, 'onerror' );
this.unbindProxyEvents( event );
this.unbindEvents();
};
// ----- confirm ----- //
LoadingImage.prototype.unbindEvents = function() {
eventie.unbind( this.proxyImage, 'load', this );
eventie.unbind( this.proxyImage, 'error', this );
eventie.unbind( this.img, 'load', this );
eventie.unbind( this.img, 'error', this );
};
Resource.prototype.confirm = function( isLoaded, message ) {
this.isConfirmed = true;
// -------------------------- Background -------------------------- //
function Background( url, element ) {
this.url = url;
this.element = element;
this.img = new Image();
}
// inherit LoadingImage prototype
Background.prototype = new LoadingImage();
Background.prototype.check = function() {
eventie.bind( this.img, 'load', this );
eventie.bind( this.img, 'error', this );
this.img.src = this.url;
// check if image is already complete
var isComplete = this.getIsImageComplete();
if ( isComplete ) {
this.confirm( this.img.naturalWidth !== 0, 'naturalWidth' );
this.unbindEvents();
}
};
Background.prototype.unbindEvents = function() {
eventie.unbind( this.img, 'load', this );
eventie.unbind( this.img, 'error', this );
};
Background.prototype.confirm = function( isLoaded, message ) {
this.isLoaded = isLoaded;
this.emit( 'confirm', this, message );
this.emit( 'progress', this, this.element, message );
};
Resource.prototype.unbindProxyEvents = function( event ) {
eventie.unbind( event.target, 'load', this );
eventie.unbind( event.target, 'error', this );
};
// -------------------------- jQuery -------------------------- //
// ----- ----- //
ImagesLoaded.makeJQueryPlugin = function( jQuery ) {
jQuery = jQuery || window.jQuery;
if ( !jQuery ) {
return;
}
// set local variable
$ = jQuery;
// $().imagesLoaded()
$.fn.imagesLoaded = function( options, callback ) {
var instance = new ImagesLoaded( this, options, callback );
return instance.jqDeferred.promise( $(this) );
};
};
// try making plugin
ImagesLoaded.makeJQueryPlugin();
// -------------------------- -------------------------- //
return ImagesLoaded;
});
@@ -0,0 +1,7 @@
/*!
* imagesLoaded PACKAGED v3.2.0
* JavaScript is all like "You images are done yet or what?"
* MIT License
*/
(function(){"use strict";function e(){}function t(e,t){for(var n=e.length;n--;)if(e[n].listener===t)return n;return-1}function n(e){return function(){return this[e].apply(this,arguments)}}var i=e.prototype,r=this,s=r.EventEmitter;i.getListeners=function(e){var t,n,i=this._getEvents();if("object"==typeof e){t={};for(n in i)i.hasOwnProperty(n)&&e.test(n)&&(t[n]=i[n])}else t=i[e]||(i[e]=[]);return t},i.flattenListeners=function(e){var t,n=[];for(t=0;t<e.length;t+=1)n.push(e[t].listener);return n},i.getListenersAsObject=function(e){var t,n=this.getListeners(e);return n instanceof Array&&(t={},t[e]=n),t||n},i.addListener=function(e,n){var i,r=this.getListenersAsObject(e),s="object"==typeof n;for(i in r)r.hasOwnProperty(i)&&-1===t(r[i],n)&&r[i].push(s?n:{listener:n,once:!1});return this},i.on=n("addListener"),i.addOnceListener=function(e,t){return this.addListener(e,{listener:t,once:!0})},i.once=n("addOnceListener"),i.defineEvent=function(e){return this.getListeners(e),this},i.defineEvents=function(e){for(var t=0;t<e.length;t+=1)this.defineEvent(e[t]);return this},i.removeListener=function(e,n){var i,r,s=this.getListenersAsObject(e);for(r in s)s.hasOwnProperty(r)&&(i=t(s[r],n),-1!==i&&s[r].splice(i,1));return this},i.off=n("removeListener"),i.addListeners=function(e,t){return this.manipulateListeners(!1,e,t)},i.removeListeners=function(e,t){return this.manipulateListeners(!0,e,t)},i.manipulateListeners=function(e,t,n){var i,r,s=e?this.removeListener:this.addListener,o=e?this.removeListeners:this.addListeners;if("object"!=typeof t||t instanceof RegExp)for(i=n.length;i--;)s.call(this,t,n[i]);else for(i in t)t.hasOwnProperty(i)&&(r=t[i])&&("function"==typeof r?s.call(this,i,r):o.call(this,i,r));return this},i.removeEvent=function(e){var t,n=typeof e,i=this._getEvents();if("string"===n)delete i[e];else if("object"===n)for(t in i)i.hasOwnProperty(t)&&e.test(t)&&delete i[t];else delete this._events;return this},i.removeAllListeners=n("removeEvent"),i.emitEvent=function(e,t){var n,i,r,s,o=this.getListenersAsObject(e);for(r in o)if(o.hasOwnProperty(r))for(i=o[r].length;i--;)n=o[r][i],n.once===!0&&this.removeListener(e,n.listener),s=n.listener.apply(this,t||[]),s===this._getOnceReturnValue()&&this.removeListener(e,n.listener);return this},i.trigger=n("emitEvent"),i.emit=function(e){var t=Array.prototype.slice.call(arguments,1);return this.emitEvent(e,t)},i.setOnceReturnValue=function(e){return this._onceReturnValue=e,this},i._getOnceReturnValue=function(){return this.hasOwnProperty("_onceReturnValue")?this._onceReturnValue:!0},i._getEvents=function(){return this._events||(this._events={})},e.noConflict=function(){return r.EventEmitter=s,e},"function"==typeof define&&define.amd?define("eventEmitter/EventEmitter",[],function(){return e}):"object"==typeof module&&module.exports?module.exports=e:this.EventEmitter=e}).call(this),function(e){function t(t){var n=e.event;return n.target=n.target||n.srcElement||t,n}var n=document.documentElement,i=function(){};n.addEventListener?i=function(e,t,n){e.addEventListener(t,n,!1)}:n.attachEvent&&(i=function(e,n,i){e[n+i]=i.handleEvent?function(){var n=t(e);i.handleEvent.call(i,n)}:function(){var n=t(e);i.call(e,n)},e.attachEvent("on"+n,e[n+i])});var r=function(){};n.removeEventListener?r=function(e,t,n){e.removeEventListener(t,n,!1)}:n.detachEvent&&(r=function(e,t,n){e.detachEvent("on"+t,e[t+n]);try{delete e[t+n]}catch(i){e[t+n]=void 0}});var s={bind:i,unbind:r};"function"==typeof define&&define.amd?define("eventie/eventie",s):e.eventie=s}(this),function(e,t){"use strict";"function"==typeof define&&define.amd?define(["eventEmitter/EventEmitter","eventie/eventie"],function(n,i){return t(e,n,i)}):"object"==typeof module&&module.exports?module.exports=t(e,require("wolfy87-eventemitter"),require("eventie")):e.imagesLoaded=t(e,e.EventEmitter,e.eventie)}(window,function(e,t,n){function i(e,t){for(var n in t)e[n]=t[n];return e}function r(e){return"[object Array]"==f.call(e)}function s(e){var t=[];if(r(e))t=e;else if("number"==typeof e.length)for(var n=0;n<e.length;n++)t.push(e[n]);else t.push(e);return t}function o(e,t,n){if(!(this instanceof o))return new o(e,t,n);"string"==typeof e&&(e=document.querySelectorAll(e)),this.elements=s(e),this.options=i({},this.options),"function"==typeof t?n=t:i(this.options,t),n&&this.on("always",n),this.getImages(),u&&(this.jqDeferred=new u.Deferred);var r=this;setTimeout(function(){r.check()})}function h(e){this.img=e}function a(e,t){this.url=e,this.element=t,this.img=new Image}var u=e.jQuery,c=e.console,f=Object.prototype.toString;o.prototype=new t,o.prototype.options={},o.prototype.getImages=function(){this.images=[];for(var e=0;e<this.elements.length;e++){var t=this.elements[e];this.addElementImages(t)}},o.prototype.addElementImages=function(e){"IMG"==e.nodeName&&this.addImage(e),this.options.background===!0&&this.addElementBackgroundImages(e);var t=e.nodeType;if(t&&d[t]){for(var n=e.querySelectorAll("img"),i=0;i<n.length;i++){var r=n[i];this.addImage(r)}iLine truncated
@@ -94,211 +94,211 @@ BROWSER = {
.replace('undefined', '3_2').replace('_', '.').replace('_', '')
) || FALSE
};
;function QTip(target, options, id, attr) {
// Elements and ID
this.id = id;
this.target = target;
this.tooltip = NULL;
this.elements = { target: target };
// Internal constructs
this._id = NAMESPACE + '-' + id;
this.timers = { img: {} };
this.options = options;
this.plugins = {};
// Cache object
this.cache = {
event: {},
target: $(),
disabled: FALSE,
attr: attr,
onTooltip: FALSE,
lastClass: ''
};
// Set the initial flags
this.rendered = this.destroyed = this.disabled = this.waiting =
this.hiddenDuringWait = this.positioning = this.triggering = FALSE;
}
PROTOTYPE = QTip.prototype;
PROTOTYPE._when = function(deferreds) {
return $.when.apply($, deferreds);
};
PROTOTYPE.render = function(show) {
if(this.rendered || this.destroyed) { return this; } // If tooltip has already been rendered, exit
var self = this,
options = this.options,
cache = this.cache,
elements = this.elements,
text = options.content.text,
title = options.content.title,
button = options.content.button,
posOptions = options.position,
namespace = '.'+this._id+' ',
deferreds = [],
tooltip;
// Add ARIA attributes to target
$.attr(this.target[0], 'aria-describedby', this._id);
// Create public position object that tracks current position corners
cache.posClass = this._createPosClass(
(this.position = { my: posOptions.my, at: posOptions.at }).my
);
// Create tooltip element
this.tooltip = elements.tooltip = tooltip = $('<div/>', {
'id': this._id,
'class': [ NAMESPACE, CLASS_DEFAULT, options.style.classes, cache.posClass ].join(' '),
'width': options.style.width || '',
'height': options.style.height || '',
'tracking': posOptions.target === 'mouse' && posOptions.adjust.mouse,
/* ARIA specific attributes */
'role': 'alert',
'aria-live': 'polite',
'aria-atomic': FALSE,
'aria-describedby': this._id + '-content',
'aria-hidden': TRUE
})
.toggleClass(CLASS_DISABLED, this.disabled)
.attr(ATTR_ID, this.id)
.data(NAMESPACE, this)
.appendTo(posOptions.container)
.append(
// Create content element
elements.content = $('<div />', {
'class': NAMESPACE + '-content',
'id': this._id + '-content',
'aria-atomic': TRUE
})
);
// Set rendered flag and prevent redundant reposition calls for now
this.rendered = -1;
this.positioning = TRUE;
// Create title...
if(title) {
this._createTitle();
// Update title only if its not a callback (called in toggle if so)
if(!$.isFunction(title)) {
deferreds.push( this._updateTitle(title, FALSE) );
}
}
// Create button
if(button) { this._createButton(); }
// Set proper rendered flag and update content if not a callback function (called in toggle)
if(!$.isFunction(text)) {
deferreds.push( this._updateContent(text, FALSE) );
}
this.rendered = TRUE;
// Setup widget classes
this._setWidget();
// Initialize 'render' plugins
$.each(PLUGINS, function(name) {
var instance;
if(this.initialize === 'render' && (instance = this(self))) {
self.plugins[name] = instance;
}
});
// Unassign initial events and assign proper events
this._unassignEvents();
this._assignEvents();
// When deferreds have completed
this._when(deferreds).then(function() {
// tooltiprender event
self._trigger('render');
// Reset flags
self.positioning = FALSE;
// Show tooltip if not hidden during wait period
if(!self.hiddenDuringWait && (options.show.ready || show)) {
self.toggle(TRUE, cache.event, FALSE);
}
self.hiddenDuringWait = FALSE;
});
// Expose API
QTIP.api[this.id] = this;
return this;
};
PROTOTYPE.destroy = function(immediate) {
// Set flag the signify destroy is taking place to plugins
// and ensure it only gets destroyed once!
if(this.destroyed) { return this.target; }
function process() {
if(this.destroyed) { return; }
this.destroyed = TRUE;
var target = this.target,
title = target.attr(oldtitle),
timer;
// Destroy tooltip if rendered
if(this.rendered) {
this.tooltip.stop(1,0).find('*').remove().end().remove();
}
// Destroy all plugins
$.each(this.plugins, function(name) {
this.destroy && this.destroy();
});
// Clear timers
for(timer in this.timers) {
clearTimeout(this.timers[timer]);
}
// Remove api object and ARIA attributes
target.removeData(NAMESPACE)
.removeAttr(ATTR_ID)
.removeAttr(ATTR_HAS)
.removeAttr('aria-describedby');
// Reset old title attribute if removed
if(this.options.suppress && title) {
target.attr('title', title).removeAttr(oldtitle);
}
// Remove qTip events associated with this API
this._unassignEvents();
// Remove ID from used id objects, and delete object references
// for better garbage collection and leak protection
this.options = this.elements = this.cache = this.timers =
this.plugins = this.mouse = NULL;
// Delete epoxsed API object
delete QTIP.api[this.id];
}
// If an immediate destory is needed
if((immediate !== TRUE || this.triggering === 'hide') && this.rendered) {
this.tooltip.one('tooltiphidden', $.proxy(process, this));
!this.triggering && this.hide();
}
// If we're not in the process of hiding... process
else { process.call(this); }
return this.target;
};
;function QTip(target, options, id, attr) {
// Elements and ID
this.id = id;
this.target = target;
this.tooltip = NULL;
this.elements = { target: target };
// Internal constructs
this._id = NAMESPACE + '-' + id;
this.timers = { img: {} };
this.options = options;
this.plugins = {};
// Cache object
this.cache = {
event: {},
target: $(),
disabled: FALSE,
attr: attr,
onTooltip: FALSE,
lastClass: ''
};
// Set the initial flags
this.rendered = this.destroyed = this.disabled = this.waiting =
this.hiddenDuringWait = this.positioning = this.triggering = FALSE;
}
PROTOTYPE = QTip.prototype;
PROTOTYPE._when = function(deferreds) {
return $.when.apply($, deferreds);
};
PROTOTYPE.render = function(show) {
if(this.rendered || this.destroyed) { return this; } // If tooltip has already been rendered, exit
var self = this,
options = this.options,
cache = this.cache,
elements = this.elements,
text = options.content.text,
title = options.content.title,
button = options.content.button,
posOptions = options.position,
namespace = '.'+this._id+' ',
deferreds = [],
tooltip;
// Add ARIA attributes to target
$.attr(this.target[0], 'aria-describedby', this._id);
// Create public position object that tracks current position corners
cache.posClass = this._createPosClass(
(this.position = { my: posOptions.my, at: posOptions.at }).my
);
// Create tooltip element
this.tooltip = elements.tooltip = tooltip = $('<div/>', {
'id': this._id,
'class': [ NAMESPACE, CLASS_DEFAULT, options.style.classes, cache.posClass ].join(' '),
'width': options.style.width || '',
'height': options.style.height || '',
'tracking': posOptions.target === 'mouse' && posOptions.adjust.mouse,
/* ARIA specific attributes */
'role': 'alert',
'aria-live': 'polite',
'aria-atomic': FALSE,
'aria-describedby': this._id + '-content',
'aria-hidden': TRUE
})
.toggleClass(CLASS_DISABLED, this.disabled)
.attr(ATTR_ID, this.id)
.data(NAMESPACE, this)
.appendTo(posOptions.container)
.append(
// Create content element
elements.content = $('<div />', {
'class': NAMESPACE + '-content',
'id': this._id + '-content',
'aria-atomic': TRUE
})
);
// Set rendered flag and prevent redundant reposition calls for now
this.rendered = -1;
this.positioning = TRUE;
// Create title...
if(title) {
this._createTitle();
// Update title only if its not a callback (called in toggle if so)
if(!$.isFunction(title)) {
deferreds.push( this._updateTitle(title, FALSE) );
}
}
// Create button
if(button) { this._createButton(); }
// Set proper rendered flag and update content if not a callback function (called in toggle)
if(!$.isFunction(text)) {
deferreds.push( this._updateContent(text, FALSE) );
}
this.rendered = TRUE;
// Setup widget classes
this._setWidget();
// Initialize 'render' plugins
$.each(PLUGINS, function(name) {
var instance;
if(this.initialize === 'render' && (instance = this(self))) {
self.plugins[name] = instance;
}
});
// Unassign initial events and assign proper events
this._unassignEvents();
this._assignEvents();
// When deferreds have completed
this._when(deferreds).then(function() {
// tooltiprender event
self._trigger('render');
// Reset flags
self.positioning = FALSE;
// Show tooltip if not hidden during wait period
if(!self.hiddenDuringWait && (options.show.ready || show)) {
self.toggle(TRUE, cache.event, FALSE);
}
self.hiddenDuringWait = FALSE;
});
// Expose API
QTIP.api[this.id] = this;
return this;
};
PROTOTYPE.destroy = function(immediate) {
// Set flag the signify destroy is taking place to plugins
// and ensure it only gets destroyed once!
if(this.destroyed) { return this.target; }
function process() {
if(this.destroyed) { return; }
this.destroyed = TRUE;
var target = this.target,
title = target.attr(oldtitle),
timer;
// Destroy tooltip if rendered
if(this.rendered) {
this.tooltip.stop(1,0).find('*').remove().end().remove();
}
// Destroy all plugins
$.each(this.plugins, function(name) {
this.destroy && this.destroy();
});
// Clear timers
for(timer in this.timers) {
clearTimeout(this.timers[timer]);
}
// Remove api object and ARIA attributes
target.removeData(NAMESPACE)
.removeAttr(ATTR_ID)
.removeAttr(ATTR_HAS)
.removeAttr('aria-describedby');
// Reset old title attribute if removed
if(this.options.suppress && title) {
target.attr('title', title).removeAttr(oldtitle);
}
// Remove qTip events associated with this API
this._unassignEvents();
// Remove ID from used id objects, and delete object references
// for better garbage collection and leak protection
this.options = this.elements = this.cache = this.timers =
this.plugins = this.mouse = NULL;
// Delete epoxsed API object
delete QTIP.api[this.id];
}
// If an immediate destory is needed
if((immediate !== TRUE || this.triggering === 'hide') && this.rendered) {
this.tooltip.one('tooltiphidden', $.proxy(process, this));
!this.triggering && this.hide();
}
// If we're not in the process of hiding... process
else { process.call(this); }
return this.target;
};
;function invalidOpt(a) {
return a === NULL || $.type(a) !== 'object';
}
@@ -0,0 +1 @@
{"version":3,"file":"jquery.qtip.min.js","sources":["jquery.qtip.js"],"names":["window","document","undefined","factory","define","amd","jQuery","fn","qtip","$","QTip","target","options","id","attr","this","tooltip","NULL","elements","_id","NAMESPACE","timers","img","plugins","cache","event","disabled","FALSE","onTooltip","lastClass","rendered","destroyed","waiting","hiddenDuringWait","positioning","triggering","invalidOpt","a","type","invalidContent","c","isFunction","length","jquery","then","sanitizeOptions","opts","content","text","ajax","once","metadata","done","api","loading","deferred","extend","context","success","error","set","xhr","status","isPlainObject","title","button","position","my","at","show","TRUE","ready","hide","style","classes","each","PLUGINS","sanitize","convertNotation","notation","obj","i","option","levels","split","pop","setCallback","args","category","rule","match","checks","RegExp","exec","push","apply","createWidgetClass","cls","WIDGET","concat","join","delay","callback","duration","setTimeout","proxy","call","showMethod","hasClass","CLASS_DISABLED","clearTimeout","toggle","hideMethod","relatedTarget","ontoTooltip","closest","SELECTOR","ontoTarget","fixed","test","preventDefault","stopImmediatePropagation","e","inactiveMethod","inactive","repositionMethod","offsetWidth","reposition","delegate","selector","events","method","body","QTIP","ATTR_ID","arguments","init","elem","posOptions","config","docBody","newTarget","metadata5","name","html5","data","parseJSON","defaults","container","solo","viewport","eq","CORNER","overwrite","ATTR_HAS","suppress","removeAttr","oldtitle","camel","s","charAt","toUpperCase","slice","vendorCss","prop","cur","val","ucProp","props","cssPrefixes","cssProps","css","intCss","Math","ceil","parseFloat","Tip","_ns","offset","size","width","height","Modal","Ie6","PROTOTYPE","CHECKS","trackingBound","X","Y","WIDTH","HEIGHT","TOP","LEFT","BOTTOM","RIGHT","CENTER","FLIPINVERT","SHIFT","INACTIVE_EVENTS","CLASS_FIXED","CLASS_DEFAULT","CLASS_FOCUS","CLASS_HOVER","replaceSuffix","BROWSER","ie","v","createElement","innerHTML","getElementsByTagName","NaN","iOS","navigator","userAgent","replace","prototype","_when","deferreds","when","render","self","posClass","_createPosClass","class","tracking","adjust","mouse","role","aria-live","aria-atomic","aria-describedby","aria-hidden","toggleClass","appendTo","append","_createTitle","_updateTitle","_createButton","_updateContent","_setWidget","instance","initialize","_unassignEvents","_assignEvents","_trigger","destroy","immediate","process","timer","stop","find","remove","end","removeData","one","builtin","^id$","o","prev","nextid","new_id","^prerender","^content.text$","^content.attr$","^content.title$","_removeTitle","^content.button$","_updateButton","^content.title.(text|button)$","^position.(my|at)$","^position.container$","^show.ready$","^style.classes$","p","removeClass","addClass","^style.(width|height)","^style.widget|content.title","^style.def","^events.(render|show|move|hide|focus|blur)$","^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)","get","toLowerCase","result","precedance","string","rmove","rrender","value","previous","nodeType","_update","element","empty","display","visibility","html","_waitForContent","images","imagesLoaded","Deferred","resolve","promise","titlebar","widget","insertBefore","substr","abbrev","effect","pluginCalculations","adjusted","newClass","tooltipWidth","outerWidth","tooltipHeight","outerHeight","targetWidth","targetHeight","left","top","visible","isScroll","win","doc","ownerDocument","isArray","x","y","distance","origin","pageX","innerWidth","documentElement","clientWidth","pageY","scrollX","scrollLeft","scrollY","scrollTop","innerHeight","imagemap","is","svg","ownerSVGElement","adjustable","isNaN","queue","next","opacity","removeAttribute","pos","scroll","scrolled","parentOffset","overflow","quirks","compatMode","parent","getBoundingClientRect","offsetParent","C","Corner","corner","forceY","f","invert","z","center","clone","state","add","has","fix","identicalState","allow","after","contentOptions","animate","sameTarget","search","focus","bind","_storeMouse","not","Event","unbind","blur","autofocus","trigger","n","fadeTo","qtips","curIndex","parseInt","zIndex","newIndex","zindex","filter","disable","enable","isString","close","aria-label","prepend","click","on","def","_bind","targets","suffix","ns","_unbind","originalEvent","isDefaultPrevented","_bindEvents","showEvents","hideEvents","showTargets","hideTargets","similarTargets","toggleEvents","showIndex","inArray","splice","_assignInitialEvents","hoverIntent","prerender","showTarget","hideTarget","trim","onTarget","containerTarget","viewportTarget","documentTarget","windowTarget","leave","nodeName","indexOf","enabled","isAncestor","parents","inactiveEvents","limit","abs","resize","special","grep","toArray","currentTarget","newValue","command","returned","makeArray","timeStamp","keepData","elems","funLine truncated
@@ -1,5 +1,5 @@
/*!
* Select2 4.0.0
* Select2 4.0.1
* https://select2.github.io
*
* Released under the MIT license
@@ -30,7 +30,7 @@
var S2;(function () { if (!S2 || !S2.requirejs) {
if (!S2) { S2 = {}; } else { require = S2; }
/**
* @license almond 0.2.9 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.
* @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.
* Available via the MIT or new BSD license.
* see: http://github.com/jrburke/almond for details
*/
@@ -75,12 +75,6 @@ var requirejs, require, define;
//otherwise, assume it is a top-level require that will
//be relative to baseUrl in the end.
if (baseName) {
//Convert baseName to array, and lop off the last part,
//so that . matches that "directory" and not name of the baseName's
//module. For instance, baseName of "one/two/three", maps to
//"one/two/three.js", but we want the directory, "one/two" for
//this normalization.
baseParts = baseParts.slice(0, baseParts.length - 1);
name = name.split('/');
lastIndex = name.length - 1;
@@ -89,7 +83,11 @@ var requirejs, require, define;
name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');
}
name = baseParts.concat(name);
//Lop off the last part of baseParts, so that . matches the
//"directory" and not name of the baseName's module. For instance,
//baseName of "one/two/three", maps to "one/two/three.js", but we
//want the directory, "one/two" for this normalization.
name = baseParts.slice(0, baseParts.length - 1).concat(name);
//start trimDots
for (i = 0; i < name.length; i += 1) {
@@ -181,7 +179,15 @@ var requirejs, require, define;
//A version of a require function that passes a moduleName
//value for items that may need to
//look up paths relative to the moduleName
return req.apply(undef, aps.call(arguments, 0).concat([relName, forceSync]));
var args = aps.call(arguments, 0);
//If first arg is not require('string'), and there is only
//one arg, it is the array form without a callback. Insert
//a null so that the following concat is correct.
if (typeof args[0] !== 'string' && args.length === 1) {
args.push(null);
}
return req.apply(undef, args.concat([relName, forceSync]));
};
}
@@ -431,6 +437,9 @@ var requirejs, require, define;
requirejs._defined = defined;
define = function (name, deps, callback) {
if (typeof name !== 'string') {
throw new Error('See almond README: incorrect module build, no module name');
}
//This module may not have dependencies
if (!deps.splice) {
@@ -773,7 +782,8 @@ S2.define('select2/results',[
this.hideLoading();
var $message = $(
'<li role="treeitem" class="select2-results__option"></li>'
'<li role="treeitem" aria-live="assertive"' +
' class="select2-results__option"></li>'
);
var message = this.options.get('translations').get(params.message);
@@ -784,9 +794,15 @@ S2.define('select2/results',[
)
);
$message[0].className += ' select2-results__message';
this.$results.append($message);
};
Results.prototype.hideMessages = function () {
this.$results.find('.select2-results__message').remove();
};
Results.prototype.append = function (data) {
this.hideLoading();
@@ -986,6 +1002,7 @@ S2.define('select2/results',[
});
container.on('query', function (params) {
self.hideMessages();
self.showLoading(params);
});
@@ -1041,7 +1058,7 @@ S2.define('select2/results',[
var data = $highlighted.data('data');
if ($highlighted.attr('aria-selected') == 'true') {
self.trigger('close');
self.trigger('close', {});
} else {
self.trigger('select', {
data: data
@@ -1163,7 +1180,7 @@ S2.define('select2/results',[
data: data
});
} else {
self.trigger('close');
self.trigger('close', {});
}
return;
@@ -1229,7 +1246,7 @@ S2.define('select2/results',[
var template = this.options.get('templateResult');
var escapeMarkup = this.options.get('escapeMarkup');
var content = template(result);
var content = template(result, container);
if (content == null) {
container.style.display = 'none';
@@ -1286,7 +1303,7 @@ S2.define('select2/selection/base',[
BaseSelection.prototype.render = function () {
var $selection = $(
'<span class="select2-selection" role="combobox" ' +
'aria-autocomplete="list" aria-haspopup="true" aria-expanded="false">' +
' aria-haspopup="true" aria-expanded="false">' +
'</span>'
);
@@ -1319,7 +1336,7 @@ S2.define('select2/selection/base',[
});
this.$selection.on('blur', function (evt) {
self.trigger('blur', evt);
self._handleBlur(evt);
});
this.$selection.on('keydown', function (evt) {
@@ -1366,6 +1383,24 @@ S2.define('select2/selection/base',[
});
};
BaseSelection.prototype._handleBlur = function (evt) {
var self = this;
// This needs to be delayed as the active element is the body when the tab
// key is pressed, possibly along with others.
window.setTimeout(function () {
// Don't trigger `blur` if the focus is still in the selection
if (
(document.activeElement == self.$selection[0]) ||
($.contains(self.$selection[0], document.activeElement))
) {
return;
}
self.trigger('blur', evt);
}, 1);
};
BaseSelection.prototype._attachCloseHandler = function (container) {
var self = this;
@@ -1475,11 +1510,11 @@ S2.define('select2/selection/single',[
this.$selection.find('.select2-selection__rendered').empty();
};
SingleSelection.prototype.display = function (data) {
SingleSelection.prototype.display = function (data, container) {
var template = this.options.get('templateSelection');
var escapeMarkup = this.options.get('escapeMarkup');
return escapeMarkup(template(data));
return escapeMarkup(template(data, container));
};
SingleSelection.prototype.selectionContainer = function () {
@@ -1494,9 +1529,9 @@ S2.define('select2/selection/single',[
var selection = data[0];
var formatted = this.display(selection);
var $rendered = this.$selection.find('.select2-selection__rendered');
var formatted = this.display(selection, $rendered);
$rendered.empty().append(formatted);
$rendered.prop('title', selection.title || selection.text);
};
@@ -1538,29 +1573,37 @@ S2.define('select2/selection/multiple',[
});
});
this.$selection.on('click', '.select2-selection__choice__remove',
this.$selection.on(
'click',
'.select2-selection__choice__remove',
function (evt) {
var $remove = $(this);
var $selection = $remove.parent();
// Ignore the event if it is disabled
if (self.options.get('disabled')) {
return;
}
var data = $selection.data('data');
var $remove = $(this);
var $selection = $remove.parent();
self.trigger('unselect', {
originalEvent: evt,
data: data
});
});
var data = $selection.data('data');
self.trigger('unselect', {
originalEvent: evt,
data: data
});
}
);
};
MultipleSelection.prototype.clear = function () {
this.$selection.find('.select2-selection__rendered').empty();
};
MultipleSelection.prototype.display = function (data) {
MultipleSelection.prototype.display = function (data, container) {
var template = this.options.get('templateSelection');
var escapeMarkup = this.options.get('escapeMarkup');
return escapeMarkup(template(data));
return escapeMarkup(template(data, container));
};
MultipleSelection.prototype.selectionContainer = function () {
@@ -1587,8 +1630,8 @@ S2.define('select2/selection/multiple',[
for (var d = 0; d < data.length; d++) {
var selection = data[d];
var formatted = this.display(selection);
var $selection = this.selectionContainer();
var formatted = this.display(selection, $selection);
$selection.append(formatted);
$selection.prop('title', selection.title || selection.text);
@@ -1720,7 +1763,7 @@ S2.define('select2/selection/allowClear',[
this.$element.val(this.placeholder.id).trigger('change');
this.trigger('toggle');
this.trigger('toggle', {});
};
AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {
@@ -1768,7 +1811,7 @@ S2.define('select2/selection/search',[
'<li class="select2-search select2-search--inline">' +
'<input class="select2-search__field" type="search" tabindex="-1"' +
' autocomplete="off" autocorrect="off" autocapitalize="off"' +
' spellcheck="false" role="textbox" />' +
' spellcheck="false" role="textbox" aria-autocomplete="list" />' +
'</li>'
);
@@ -1777,6 +1820,8 @@ S2.define('select2/selection/search',[
var $rendered = decorated.call(this);
this._transferTabIndex();
return $rendered;
};
@@ -1786,32 +1831,39 @@ S2.define('select2/selection/search',[
decorated.call(this, container, $container);
container.on('open', function () {
self.$search.attr('tabindex', 0);
self.$search.focus();
self.$search.trigger('focus');
});
container.on('close', function () {
self.$search.attr('tabindex', -1);
self.$search.val('');
self.$search.focus();
self.$search.removeAttr('aria-activedescendant');
self.$search.trigger('focus');
});
container.on('enable', function () {
self.$search.prop('disabled', false);
self._transferTabIndex();
});
container.on('disable', function () {
self.$search.prop('disabled', true);
});
container.on('focus', function (evt) {
self.$search.trigger('focus');
});
container.on('results:focus', function (params) {
self.$search.attr('aria-activedescendant', params.id);
});
this.$selection.on('focusin', '.select2-search--inline', function (evt) {
self.trigger('focus', evt);
});
this.$selection.on('focusout', '.select2-search--inline', function (evt) {
self.trigger('blur', evt);
self._handleBlur(evt);
});
this.$selection.on('keydown', '.select2-search--inline', function (evt) {
@@ -1837,18 +1889,73 @@ S2.define('select2/selection/search',[
}
});
// Try to detect the IE version should the `documentMode` property that
// is stored on the document. This is only implemented in IE and is
// slightly cleaner than doing a user agent check.
// This property is not available in Edge, but Edge also doesn't have
// this bug.
var msie = document.documentMode;
var disableInputEvents = msie && msie <= 11;
// Workaround for browsers which do not support the `input` event
// This will prevent double-triggering of events for browsers which support
// both the `keyup` and `input` events.
this.$selection.on('input', '.select2-search--inline', function (evt) {
// Unbind the duplicated `keyup` event
self.$selection.off('keyup.search');
});
this.$selection.on(
'input.searchcheck',
'.select2-search--inline',
function (evt) {
// IE will trigger the `input` event when a placeholder is used on a
// search box. To get around this issue, we are forced to ignore all
// `input` events in IE and keep using `keyup`.
if (disableInputEvents) {
self.$selection.off('input.search input.searchcheck');
return;
}
this.$selection.on('keyup.search input', '.select2-search--inline',
function (evt) {
self.handleSearch(evt);
});
// Unbind the duplicated `keyup` event
self.$selection.off('keyup.search');
}
);
this.$selection.on(
'keyup.search input.search',
'.select2-search--inline',
function (evt) {
// IE will trigger the `input` event when a placeholder is used on a
// search box. To get around this issue, we are forced to ignore all
// `input` events in IE and keep using `keyup`.
if (disableInputEvents && evt.type === 'input') {
self.$selection.off('input.search input.searchcheck');
return;
}
var key = evt.which;
// We can freely ignore events from modifier keys
if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {
return;
}
// Tabbing will be handled during the `keydown` phase
if (key == KEYS.TAB) {
return;
}
self.handleSearch(evt);
}
);
};
/**
* This method will transfer the tabindex attribute from the rendered
* selection to the search box. This allows for the search box to be used as
* the primary focus instead of the selection container.
*
* @private
*/
Search.prototype._transferTabIndex = function (decorated) {
this.$search.attr('tabindex', this.$selection.attr('tabindex'));
this.$selection.attr('tabindex', '-1');
};
Search.prototype.createPlaceholder = function (decorated, placeholder) {
@@ -1856,6 +1963,8 @@ S2.define('select2/selection/search',[
};
Search.prototype.update = function (decorated, data) {
var searchHadFocus = this.$search[0] == document.activeElement;
this.$search.attr('placeholder', '');
decorated.call(this, data);
@@ -1864,6 +1973,9 @@ S2.define('select2/selection/search',[
.append(this.$searchContainer);
this.resizeSearch();
if (searchHadFocus) {
this.$search.focus();
}
};
Search.prototype.handleSearch = function () {
@@ -1885,9 +1997,8 @@ S2.define('select2/selection/search',[
data: item
});
this.trigger('open');
this.$search.val(item.text + ' ');
this.$search.val(item.text);
this.handleSearch();
};
Search.prototype.resizeSearch = function () {
@@ -3223,7 +3334,7 @@ S2.define('select2/data/array',[
var existingData = this.item($existingOption);
var newData = $.extend(true, {}, existingData, item);
var $newOption = this.option(existingData);
var $newOption = this.option(newData);
$existingOption.replaceWith($newOption);
@@ -3259,7 +3370,7 @@ S2.define('select2/data/ajax',[
this.processResults = this.ajaxOptions.processResults;
}
ArrayAdapter.__super__.constructor.call(this, $element, options);
AjaxAdapter.__super__.constructor.call(this, $element, options);
}
Utils.Extend(AjaxAdapter, ArrayAdapter);
@@ -3267,9 +3378,9 @@ S2.define('select2/data/ajax',[
AjaxAdapter.prototype._applyDefaults = function (options) {
var defaults = {
data: function (params) {
return {
return $.extend({}, params, {
q: params.term
};
});
},
transport: function (params, success, failure) {
var $request = $.ajax(params);
@@ -3306,11 +3417,11 @@ S2.define('select2/data/ajax',[
}, this.ajaxOptions);
if (typeof options.url === 'function') {
options.url = options.url(params);
options.url = options.url.call(this.$element, params);
}
if (typeof options.data === 'function') {
options.data = options.data(params);
options.data = options.data.call(this.$element, params);
}
function request () {
@@ -3493,7 +3604,9 @@ S2.define('select2/data/tokenizer',[
var self = this;
function select (data) {
self.select(data);
self.trigger('select', {
data: data
});
}
params.term = params.term || '';
@@ -3541,6 +3654,11 @@ S2.define('select2/data/tokenizer',[
var data = createTag(partParams);
if (data == null) {
i++;
continue;
}
callback(data);
// Reset the term to not include the tokenized portion
@@ -3678,6 +3796,10 @@ S2.define('select2/dropdown',[
return $dropdown;
};
Dropdown.prototype.bind = function () {
// Should be implemented in subclasses
};
Dropdown.prototype.position = function ($dropdown, $container) {
// Should be implmented in subclasses
};
@@ -3904,7 +4026,9 @@ S2.define('select2/dropdown/infiniteScroll',[
InfiniteScroll.prototype.createLoadingMore = function () {
var $option = $(
'<li class="option load-more" role="treeitem"></li>'
'<li ' +
'class="select2-results__option select2-results__option--load-more"' +
'role="treeitem" aria-disabled="true"></li>'
);
var message = this.options.get('translations').get('loadingMore');
@@ -3922,7 +4046,7 @@ S2.define('select2/dropdown/attachBody',[
'../utils'
], function ($, Utils) {
function AttachBody (decorated, $element, options) {
this.$dropdownParent = options.get('dropdownParent') || document.body;
this.$dropdownParent = options.get('dropdownParent') || $(document.body);
decorated.call(this, $element, options);
}
@@ -3963,6 +4087,12 @@ S2.define('select2/dropdown/attachBody',[
});
};
AttachBody.prototype.destroy = function (decorated) {
decorated.call(this);
this.$dropdownContainer.remove();
};
AttachBody.prototype.position = function (decorated, $dropdown, $container) {
// Clone all of the container classes
$dropdown.attr('class', $container.attr('class'));
@@ -3993,7 +4123,8 @@ S2.define('select2/dropdown/attachBody',[
this.$dropdownContainer.detach();
};
AttachBody.prototype._attachPositioningHandler = function (container) {
AttachBody.prototype._attachPositioningHandler =
function (decorated, container) {
var self = this;
var scrollEvent = 'scroll.select2.' + container.id;
@@ -4020,7 +4151,8 @@ S2.define('select2/dropdown/attachBody',[
});
};
AttachBody.prototype._detachPositioningHandler = function (container) {
AttachBody.prototype._detachPositioningHandler =
function (decorated, container) {
var scrollEvent = 'scroll.select2.' + container.id;
var resizeEvent = 'resize.select2.' + container.id;
var orientationEvent = 'orientationchange.select2.' + container.id;
@@ -4068,6 +4200,14 @@ S2.define('select2/dropdown/attachBody',[
top: container.bottom
};
// Fix positioning with static parents
if (this.$dropdownParent[0].style.position !== 'static') {
var parentOffset = this.$dropdownParent.offset();
css.top -= parentOffset.top;
css.left -= parentOffset.left;
}
if (!isCurrentlyAbove && !isCurrentlyBelow) {
newDirection = 'below';
}
@@ -4096,8 +4236,6 @@ S2.define('select2/dropdown/attachBody',[
};
AttachBody.prototype._resizeDropdown = function () {
this.$dropdownContainer.width();
var css = {
width: this.$container.outerWidth(false) + 'px'
};
@@ -4178,12 +4316,23 @@ S2.define('select2/dropdown/selectOnClose',[
SelectOnClose.prototype._handleSelectOnClose = function () {
var $highlightedResults = this.getHighlightedResults();
// Only select highlighted results
if ($highlightedResults.length < 1) {
return;
}
var data = $highlightedResults.data('data');
// Don't re-select already selected resulte
if (
(data.element != null && data.element.selected) ||
(data.element == null && data.selected)
) {
return;
}
this.trigger('select', {
data: $highlightedResults.data('data')
data: data
});
};
@@ -4217,7 +4366,7 @@ S2.define('select2/dropdown/closeOnSelect',[
return;
}
this.trigger('close');
this.trigger('close', {});
};
return CloseOnSelect;
@@ -4868,8 +5017,8 @@ S2.define('select2/core',[
// Hide the original select
$element.addClass('select2-hidden-accessible');
$element.attr('aria-hidden', 'true');
$element.attr('aria-hidden', 'true');
// Synchronize any monitored attributes
this._syncAttributes();
@@ -5004,12 +5153,16 @@ S2.define('select2/core',[
Select2.prototype._registerSelectionEvents = function () {
var self = this;
var nonRelayEvents = ['toggle'];
var nonRelayEvents = ['toggle', 'focus'];
this.selection.on('toggle', function () {
self.toggleDropdown();
});
this.selection.on('focus', function (params) {
self.focus(params);
});
this.selection.on('*', function (name, params) {
if ($.inArray(name, nonRelayEvents) !== -1) {
return;
@@ -5054,17 +5207,13 @@ S2.define('select2/core',[
self.$container.addClass('select2-container--disabled');
});
this.on('focus', function () {
self.$container.addClass('select2-container--focus');
});
this.on('blur', function () {
self.$container.removeClass('select2-container--focus');
});
this.on('query', function (params) {
if (!self.isOpen()) {
self.trigger('open');
self.trigger('open', {});
}
this.dataAdapter.query(params, function (data) {
@@ -5088,30 +5237,31 @@ S2.define('select2/core',[
var key = evt.which;
if (self.isOpen()) {
if (key === KEYS.ENTER) {
self.trigger('results:select');
if (key === KEYS.ESC || key === KEYS.TAB ||
(key === KEYS.UP && evt.altKey)) {
self.close();
evt.preventDefault();
} else if (key === KEYS.ENTER) {
self.trigger('results:select', {});
evt.preventDefault();
} else if ((key === KEYS.SPACE && evt.ctrlKey)) {
self.trigger('results:toggle');
self.trigger('results:toggle', {});
evt.preventDefault();
} else if (key === KEYS.UP) {
self.trigger('results:previous');
self.trigger('results:previous', {});
evt.preventDefault();
} else if (key === KEYS.DOWN) {
self.trigger('results:next');
evt.preventDefault();
} else if (key === KEYS.ESC || key === KEYS.TAB) {
self.close();
self.trigger('results:next', {});
evt.preventDefault();
}
} else {
if (key === KEYS.ENTER || key === KEYS.SPACE ||
((key === KEYS.DOWN || key === KEYS.UP) && evt.altKey)) {
(key === KEYS.DOWN && evt.altKey)) {
self.open();
evt.preventDefault();
@@ -5128,9 +5278,9 @@ S2.define('select2/core',[
this.close();
}
this.trigger('disable');
this.trigger('disable', {});
} else {
this.trigger('enable');
this.trigger('enable', {});
}
};
@@ -5147,6 +5297,10 @@ S2.define('select2/core',[
'unselect': 'unselecting'
};
if (args === undefined) {
args = {};
}
if (name in preTriggerMap) {
var preTriggerName = preTriggerMap[name];
var preTriggerArgs = {
@@ -5185,8 +5339,6 @@ S2.define('select2/core',[
}
this.trigger('query', {});
this.trigger('open');
};
Select2.prototype.close = function () {
@@ -5194,13 +5346,27 @@ S2.define('select2/core',[
return;
}
this.trigger('close');
this.trigger('close', {});
};
Select2.prototype.isOpen = function () {
return this.$container.hasClass('select2-container--open');
};
Select2.prototype.hasFocus = function () {
return this.$container.hasClass('select2-container--focus');
};
Select2.prototype.focus = function (data) {
// No need to re-trigger focus events if we are already focused
if (this.hasFocus()) {
return;
}
this.$container.addClass('select2-container--focus');
this.trigger('focus', {});
};
Select2.prototype.enable = function (args) {
if (this.options.get('debug') && window.console && console.warn) {
console.warn(
@@ -5281,7 +5447,7 @@ S2.define('select2/core',[
this.$element.attr('tabindex', this.$element.data('old-tabindex'));
this.$element.removeClass('select2-hidden-accessible');
this.$element.attr('aria-hidden', 'false');
this.$element.attr('aria-hidden', 'false');
this.$element.removeData('select2');
this.dataAdapter.destroy();
@@ -5317,16 +5483,20 @@ S2.define('select2/core',[
return Select2;
});
S2.define('jquery-mousewheel',[
'jquery'
], function ($) {
// Used to shim jQuery.mousewheel for non-full builds.
return $;
});
S2.define('jquery.select2',[
'jquery',
'require',
'jquery-mousewheel',
'./select2/core',
'./select2/defaults'
], function ($, require, Select2, Defaults) {
// Force jQuery.mousewheel to be loaded if it hasn't already
require('jquery.mousewheel');
], function ($, _, Select2, Defaults) {
if ($.fn.select2 == null) {
// All methods that should return the element
var thisMethods = ['open', 'close', 'destroy'];
@@ -5336,25 +5506,29 @@ S2.define('jquery.select2',[
if (typeof options === 'object') {
this.each(function () {
var instanceOptions = $.extend({}, options, true);
var instanceOptions = $.extend(true, {}, options);
var instance = new Select2($(this), instanceOptions);
});
return this;
} else if (typeof options === 'string') {
var instance = this.data('select2');
var ret;
if (instance == null && window.console && console.error) {
console.error(
'The select2(\'' + options + '\') method was called on an ' +
'element that is not using Select2.'
);
}
this.each(function () {
var instance = $(this).data('select2');
var args = Array.prototype.slice.call(arguments, 1);
if (instance == null && window.console && console.error) {
console.error(
'The select2(\'' + options + '\') method was called on an ' +
'element that is not using Select2.'
);
}
var ret = instance[options](args);
var args = Array.prototype.slice.call(arguments, 1);
ret = instance[options].apply(instance, args);
});
// Check if we should be returning `this`
if ($.inArray(options, thisMethods) > -1) {
@@ -5375,13 +5549,6 @@ S2.define('jquery.select2',[
return Select2;
});
S2.define('jquery.mousewheel',[
'jquery'
], function ($) {
// Used to shim jQuery.mousewheel for non-full builds.
return $;
});
// Return the AMD loader configuration so it can be used outside of this file
return {
define: S2.define,
@@ -1,2 +1,2 @@
/*! Select2 4.0.0 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(n=n.slice(0,n.length-1),a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.concat(a),k=0;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){return n.apply(b,v.call(arguments,0).concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice;this.listeners=this.listeners||{},a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;d>c;c++)a[c].apply(this,b)},c.Observable=d,c.generateChars=function(a){for(var b="",c=0;a>c;c++){var d=Math.floor(36*Math.random());b+=d.toString(3Line truncated
if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=(c.extend(!0,{},l,j),this.option(l));k.replaceWith(m)}else{var n=this.option(j);if(j.children){var o=this.convertToOptions(j.children);b.appendMany(n,o)}h.push(n)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(b,c){this.ajaxOptions=this._applyDefaults(c.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),a.__super__.constructor.call(this,b,c)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return{q:a.term}},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url(a)),"function"==typeof f.data&&(f.data=f.data(a)),this.ajaxOptions.delay&&""!==a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");if(void 0!==f&&(this.createTag=f),b.call(this,c,d),a.isArray(e))for(var g=0;g<e.length;g++){var h=e[g],i=this._normalizeItem(h),j=this.option(i);this.$element.append(j)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(){var b=(this._lastTag,this.$element.find("option[data-select2-tag]"));b.each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(a,b,c){function d(a){e.select(a)}var e=this;b.term=b.term||"";var f=this.tokenizer(b,this.options,d);f.term!==b.term&&(this.$search.length&&(this.$search.val(f.term),this.$search.focus()),b.term=f.term),a.call(this,b,c)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);e(m),g=g.substr(h+1)||"",h=0}else h++}return{term:g}},b}),b.define("select2/data/Line truncated
/*! Select2 4.0.1 | https://github.com/select2/select2/blob/master/LICENSE.md */!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){var b=function(){if(a&&a.fn&&a.fn.select2&&a.fn.select2.amd)var b=a.fn.select2.amd;var b;return function(){if(!b||!b.requirejs){b?c=b:b={};var a,c,d;!function(b){function e(a,b){return u.call(a,b)}function f(a,b){var c,d,e,f,g,h,i,j,k,l,m,n=b&&b.split("/"),o=s.map,p=o&&o["*"]||{};if(a&&"."===a.charAt(0))if(b){for(a=a.split("/"),g=a.length-1,s.nodeIdCompat&&w.test(a[g])&&(a[g]=a[g].replace(w,"")),a=n.slice(0,n.length-1).concat(a),k=0;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(a.splice(k-1,2),k-=2)}a=a.join("/")}else 0===a.indexOf("./")&&(a=a.substring(2));if((n||p)&&o){for(c=a.split("/"),k=c.length;k>0;k-=1){if(d=c.slice(0,k).join("/"),n)for(l=n.length;l>0;l-=1)if(e=o[n.slice(0,l).join("/")],e&&(e=e[d])){f=e,h=k;break}if(f)break;!i&&p&&p[d]&&(i=p[d],j=k)}!f&&i&&(f=i,h=j),f&&(c.splice(0,h,f),a=c.join("/"))}return a}function g(a,c){return function(){var d=v.call(arguments,0);return"string"!=typeof d[0]&&1===d.length&&d.push(null),n.apply(b,d.concat([a,c]))}}function h(a){return function(b){return f(b,a)}}function i(a){return function(b){q[a]=b}}function j(a){if(e(r,a)){var c=r[a];delete r[a],t[a]=!0,m.apply(b,c)}if(!e(q,a)&&!e(t,a))throw new Error("No "+a);return q[a]}function k(a){var b,c=a?a.indexOf("!"):-1;return c>-1&&(b=a.substring(0,c),a=a.substring(c+1,a.length)),[b,a]}function l(a){return function(){return s&&s.config&&s.config[a]||{}}}var m,n,o,p,q={},r={},s={},t={},u=Object.prototype.hasOwnProperty,v=[].slice,w=/\.js$/;o=function(a,b){var c,d=k(a),e=d[0];return a=d[1],e&&(e=f(e,b),c=j(e)),e?a=c&&c.normalize?c.normalize(a,h(b)):f(a,b):(a=f(a,b),d=k(a),e=d[0],a=d[1],e&&(c=j(e))),{f:e?e+"!"+a:a,n:a,pr:e,p:c}},p={require:function(a){return g(a)},exports:function(a){var b=q[a];return"undefined"!=typeof b?b:q[a]={}},module:function(a){return{id:a,uri:"",exports:q[a],config:l(a)}}},m=function(a,c,d,f){var h,k,l,m,n,s,u=[],v=typeof d;if(f=f||a,"undefined"===v||"function"===v){for(c=!c.length&&d.length?["require","exports","module"]:c,n=0;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(b.call(arguments,a.prototype.constructor),e=c.prototype.constructor),e.apply(this,arguments)}function e(){this.constructor=d}var f=b(c),g=b(a);c.displayName=a.displayName,d.prototype=new e;for(var h=0;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice;this.listeners=this.listeners||{},a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.leLine truncated
var b=this;if(this.$element.prop("multiple"))return a.selected=!1,c(a.element).is("option")?(a.element.selected=!1,void this.$element.trigger("change")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=0){var k=f.filter(d(j)),l=this.item(k),m=c.extend(!0,{},l,j),n=this.option(m);k.replaceWith(n)}else{var o=this.option(j);if(j.children){var p=this.convertToOptions(j.children);b.appendMany(o,p)}h.push(o)}}return h},d}),b.define("select2/data/ajax",["./array","../utils","jquery"],function(a,b,c){function d(a,b){this.ajaxOptions=this._applyDefaults(b.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),d.__super__.constructor.call(this,a,b)}return b.Extend(d,a),d.prototype._applyDefaults=function(a){var b={data:function(a){return c.extend({},a,{q:a.term})},transport:function(a,b,d){var e=c.ajax(a);return e.then(b),e.fail(d),e}};return c.extend({},b,a,!0)},d.prototype.processResults=function(a){return a},d.prototype.query=function(a,b){function d(){var d=f.transport(f,function(d){var f=e.processResults(d,a);e.options.get("debug")&&window.console&&console.error&&(f&&f.results&&c.isArray(f.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),b(f)},function(){});e._request=d}var e=this;null!=this._request&&(c.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var f=c.extend({type:"GET"},this.ajaxOptions);"function"==typeof f.url&&(f.url=f.url.call(this.$element,a)),"function"==typeof f.data&&(f.data=f.data.call(this.$element,a)),this.ajaxOptions.delay&&""!==a.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(d,this.ajaxOptions.delay)):d()},d}),b.define("select2/data/tags",["jquery"],function(a){function b(b,c,d){var e=d.get("tags"),f=d.get("createTag");if(void 0!==f&&(this.createTag=f),b.call(this,c,d),a.isArray(e))for(var g=0;g<e.length;g++){var h=e[g],i=this._normalizeItem(h),j=this.option(i);this.$element.append(j)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([Line truncated
@@ -3,7 +3,7 @@
* Plugin Name: Simple Calendar
* Plugin URI: https://simplecalendar.io
* Description: Add Google Calendar events to your WordPress site in minutes. Beautiful calendar displays. Fully responsive.
* Version: 3.0.10
* Version: 3.0.13
* Author: Moonstone Media
* Author URI: https://simplecalendar.io
* Text Domain: google-calendar-events
@@ -26,13 +26,13 @@ if ( version_compare( PHP_VERSION, '5.3.0' ) === -1 ) {
}
// Plugin constants.
$this_plugin_path = trailingslashit( dirname( __FILE__ ) );
$this_plugin_dir = plugin_dir_url( __FILE__ );
$this_plugin_path = trailingslashit( dirname( __FILE__ ) );
$this_plugin_dir = plugin_dir_url( __FILE__ );
$this_plugin_constants = array(
'SIMPLE_CALENDAR_VERSION' => '3.0.10',
'SIMPLE_CALENDAR_VERSION' => '3.0.13',
'SIMPLE_CALENDAR_MAIN_FILE' => __FILE__,
'SIMPLE_CALENDAR_URL' => $this_plugin_dir,
'SIMPLE_CALENDAR_ASSETS' => $this_plugin_dir . 'assets/',
'SIMPLE_CALENDAR_ASSETS' => $this_plugin_dir . 'assets/',
'SIMPLE_CALENDAR_PATH' => $this_plugin_path,
'SIMPLE_CALENDAR_INC' => $this_plugin_path . 'includes/',
);
@@ -42,21 +42,24 @@ foreach ( $this_plugin_constants as $constant => $value ) {
}
}
// Plugin requirements
include_once 'includes/wp-requirements.php';
// Check plugin requirements before loading plugin.
$this_plugin_checks = new WP_Requirements(
'Simple Calendar',
plugin_basename( __FILE__ ),
array(
'PHP' => '5.3.3',
'WordPress' => '4.0.0',
$this_plugin_checks = new SimCal_WP_Requirements( 'Simple Calendar', plugin_basename( __FILE__ ), array(
'PHP' => '5.3.3',
'WordPress' => '4.0.0',
'Extensions' => array(
'curl',
'iconv',
'json',
'mbstring',
)
)
);
),
) );
if ( $this_plugin_checks->pass() === false ) {
$this_plugin_checks->halt();
return;
}
@@ -448,7 +448,23 @@ abstract class Calendar {
if ( empty( $template ) ) {
$template = isset( $this->post->post_content ) ? $this->post->post_content : '';
}
$this->events_template = wpautop( wp_kses_post( trim( $template ) ) );
// TODO: Removed wpautop() call.
$event_formatting = get_post_meta( $this->id, '_event_formatting', true );
switch( $event_formatting ) {
case 'none':
$this->events_template = wp_kses_post( trim( $template ) );
break;
case 'no_linebreaks':
$this->events_template = wpautop( wp_kses_post( trim( $template ) ), false );
break;
default:
$this->events_template = wpautop( wp_kses_post( trim( $template ) ), true );
}
//$this->events_template = wpautop( wp_kses_post( trim( $template ) ), true );
}
/**
@@ -505,7 +521,7 @@ abstract class Calendar {
if ( 'use_custom' == $date_format_option ) {
$date_format_custom = esc_attr( get_post_meta( $this->id, '_calendar_date_format', true ) );
} elseif ( 'use_custom_php' ) {
} elseif ( 'use_custom_php' == $date_format_option ) {
$date_format_custom = esc_attr( get_post_meta( $this->id, '_calendar_date_format_php', true ) );
}
}
@@ -532,7 +548,7 @@ abstract class Calendar {
if ( 'use_custom' == $time_format_option ) {
$time_format_custom = esc_attr( get_post_meta( $this->id, '_calendar_time_format', true ) );
} elseif ( 'use_custom_php' ) {
} elseif ( 'use_custom_php' == $time_format_option ) {
$time_format_custom = esc_attr( get_post_meta( $this->id, '_calendar_time_format_php', true ) );
}
}
@@ -598,7 +614,7 @@ abstract class Calendar {
$this->start = Carbon::now( $this->timezone )->getTimestamp();
$calendar_begins = esc_attr( get_post_meta( $this->id, '_calendar_begins', true ) );
$nth = max( absint( get_post_meta( $this->id, '_calendar_begins_nth' ) ), 1 );
$nth = max( absint( get_post_meta( $this->id, '_calendar_begins_nth', true ) ), 1 );
if ( 'today' == $calendar_begins ) {
$this->start = Carbon::today( $this->timezone )->getTimestamp();
@@ -632,7 +648,7 @@ abstract class Calendar {
$this->start = Carbon::today( $this->timezone )->addYears( $nth )->startOfYear()->getTimeStamp();
} elseif ( 'custom_date' == $calendar_begins ) {
if ( $date = get_post_meta( $this->id, '_calendar_begins_custom_date', true ) ) {
$this->start = Carbon::createFromFormat( 'Y-m-d', esc_attr( $date ) )->setTimezone( $this->timezone )->getTimestamp();
$this->start = Carbon::createFromFormat( 'Y-m-d', esc_attr( $date ) )->setTimezone( $this->timezone )->startOfDay()->getTimestamp();
}
}
}
@@ -767,7 +783,9 @@ abstract class Calendar {
if ( 'yes' == $poweredby ) {
$align = is_rtl() ? 'left' : 'right';
echo '<small class="simcal-powered simcal-align-' . $align .'">Powered by <a href="https://simplecalendar.io" target="_blank">Simple Calendar</a></small>';
echo '<small class="simcal-powered simcal-align-' . $align .'">' .
sprintf( __( 'Powered by <a href="%s" target="_blank">Simple Calendar</a>', 'google-calendar-events' ), simcal_get_url( 'home' ) ) .
'</small>';
}
echo '</div>';
@@ -71,7 +71,7 @@ class Ajax {
*/
public function date_i18n() {
$value = isset( $_POST['value'] ) ? sanitize_text_field( $_POST['value'] ) : ' ';
$value = isset( $_POST['value'] ) ? esc_attr( $_POST['value'] ) : ' ';
$timestamp = isset( $_POST['timestamp'] ) ? absint( $_POST['timestamp'] ) : time();
wp_send_json_success( date_i18n( $value, $timestamp ) );
@@ -55,9 +55,10 @@ class Assets {
* Register Admin Scripts *
* ====================== */
// TipTip uses ".minified.js" filename ending.
wp_register_script(
'simcal-tiptip',
$js_path_vendor . 'tiptip' . $this->min . '.js',
$js_path_vendor . 'jquery.tipTip' . ( ( $this->min !== '' ) ? '.minified' : '' ) . '.js',
array( 'jquery' ),
'1.3',
true
@@ -67,6 +67,10 @@ class Select extends Field {
$class .= ' simcal-field-multiselect';
}
if ( isset( $field['default'] ) ) {
$this->default = $field['default'];
}
$this->type_class = $class;
$allow_void = isset( $field['allow_void'] ) ? $field['allow_void'] : '';
@@ -86,6 +90,12 @@ class Select extends Field {
$this->value = explode( ',', $this->value );
}
if ( $this->default ) {
if ( empty( $this->value ) || $this->value == '' ) {
$this->value = $this->default;
}
}
?>
<select name="<?php echo $this->name; ?><?php if ( $this->multiselect === true ) { echo '[]'; } ?>"
id="<?php echo $this->id; ?>"
@@ -478,6 +478,30 @@ class Settings implements Meta_Box {
'value' => get_post_meta( $post->ID, '_no_events_message', true ),
) );
?>
</td>
</tr>
<tr class="simcal-panel-field">
<th><label for="_event_formatting"><?php _e( 'Event Formatting', 'google-calendar-events' ); ?></label></th>
<td>
<?php
$event_formatting = get_post_meta( $post->ID, '_event_formatting', true );
simcal_print_field( array(
'type' => 'select',
'name' => '_event_formatting',
'id' => '_event_formatting',
'tooltip' => __( 'How to preserve line breaks and paragraphs in the event template builder.', 'google-calendar-events' ),
'value' => $event_formatting,
'default' => 'preserve_linebreaks',
'options' => array(
'preserve_linebreaks' => __( 'Preserve line breaks, auto paragraphs (default)', 'google-calendar-events' ),
'no_linebreaks' => __( 'No line breaks, auto paragraphs', 'google-calendar-events' ),
'none' => __( 'No line breaks, no auto paragraphs', 'google-calendar-events' ),
),
) );
?>
</td>
</tr>
@@ -839,6 +863,10 @@ class Settings implements Meta_Box {
$message = isset( $_POST['_no_events_message'] ) ? wp_kses_post( $_POST['_no_events_message'] ) : '';
update_post_meta( $post_id, '_no_events_message', $message );
// _event_formatting
$event_formatting = isset( $_POST['_event_formatting'] ) ? sanitize_key( $_POST['_event_formatting'] ) : 'preserve_linebreaks';
update_post_meta( $post_id, '_event_formatting', $event_formatting );
/* ======================= *
* Advanced settings panel *
* ======================= */
@@ -884,7 +912,7 @@ class Settings implements Meta_Box {
$unit = is_numeric( $_POST['_feed_cache_user_unit'] ) ? absint( $_POST['_feed_cache_user_unit'] ) : 3600;
update_post_meta( $post_id, '_feed_cache_user_amount', $amount );
update_post_meta( $post_id, '_feed_cache_user_unit', $unit );
$cache = $amount * $unit;
$cache = ( ( $amount * $unit ) > 0 ) ? $amount * $unit : 1;
}
update_post_meta( $post_id, '_feed_cache', $cache );
@@ -259,24 +259,7 @@ class Pages {
}
}
}
// Add option to show we ran through default settings
// We also run a check here for the main settings page option. This is to determine if this is a fresh install or if they already had
// the plugin installed. The main feed settings page would give the best idea of that since user's have to enter an API key on this page to get it working.
if ( false === get_option( 'simple-calendar_defaults' ) && false === get_option( 'simple-calendar_settings_feeds' ) ) {
$default_advanced = array (
'assets' => array (
'always_enqueue' => 'yes',
),
);
update_option( 'simple-calendar_settings_advanced', $default_advanced );
add_option( 'simple-calendar_defaults', 1 );
}
?>
</form>
</div>
@@ -45,8 +45,8 @@ class Advanced extends Admin_Page {
public function add_sections() {
return apply_filters( 'simcal_add_' . $this->option_group . '_' . $this->id .'_sections', array(
'assets' => array(
'title' => __( 'Scripts and Styles', 'google-calendar-events' ),
'description' => __( 'Manage front end assets that handle the calendars appearance and user interface.', 'google-calendar-events' )
'title' => __( 'Styles', 'google-calendar-events' ),
'description' => __( 'Manage front end assets that handle the calendars appearance.', 'google-calendar-events' )
),
'installation' => array(
'title' => __( 'Installation', 'google-calendar-events' ),
@@ -72,30 +72,14 @@ class Advanced extends Admin_Page {
if ( 'assets' == $section ) {
$fields[ $section ] = array(
'always_enqueue' => array(
'title' => __( 'Always Enqueue', 'google-calendar-events' ),
'tooltip' => __( 'If ticked, this option will load all scripts on every page load.', 'google-calendar-events' ),
'type' => 'checkbox',
'name' => 'simple-calendar_' . $this->option_group . '_' . $this->id . '[' . $section . '][always_enqueue]',
'id' => 'simple-calendar-' . $this->option_group . '-' . $this->id . '-' . $section . '-always-enqueue',
'value' => $this->get_option_value( $section, 'always_enqueue' ),
),
'disable_css' => array(
'title' => __( 'Disable Styles', 'google-calendar-events' ),
'title' => __( 'Disable CSS', 'google-calendar-events' ),
'tooltip' => __( 'If ticked, this option will prevent front end stylesheet to load.', 'google-calendar-events' ),
'type' => 'checkbox',
'name' => 'simple-calendar_' . $this->option_group . '_' . $this->id . '[' . $section . '][disable_css]',
'id' => 'simple-calendar-' . $this->option_group . '-' . $this->id . '-' . $section . '-disable-css',
'value' => $this->get_option_value( $section, 'disable_css' )
),
'disable_js' => array(
'title' => __( 'Disable Scripts', 'google-calendar-events' ),
'tooltip' => __( 'If ticked, this option will prevent front end JavaScript to load.', 'google-calendar-events' ),
'type' => 'checkbox',
'name' => 'simple-calendar_' . $this->option_group . '_' . $this->id . '[' . $section . '][disable_js]',
'id' => 'simple-calendar-' . $this->option_group . '-' . $this->id . '-' . $section . '-disable-js',
'value' => $this->get_option_value( $section, 'disable_js' )
)
);
} elseif ( 'installation' == $section ) {
@@ -45,14 +45,6 @@ class Assets {
*/
private $styles = array();
/**
* Disable scripts.
*
* @access public
* @var bool
*/
public $disable_scripts = false;
/**
* Disable styles.
*
@@ -61,14 +53,6 @@ class Assets {
*/
public $disable_styles = false;
/**
* Disable styles.
*
* @access public
* @var bool
*/
public $always_enqueue = false;
/**
* Hook in tabs.
*
@@ -79,21 +63,13 @@ class Assets {
$this->min = ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG == true ) ? '' : '.min';
$settings = get_option( 'simple-calendar_settings_advanced' );
if ( isset( $settings['assets']['disable_js'] ) ) {
$this->disable_scripts = 'yes' == $settings['assets']['disable_js'] ? true : false;
}
if ( isset( $settings['assets']['disable_css'] ) ) {
$this->disable_styles = 'yes' == $settings['assets']['disable_css'] ? true : false;
}
if ( isset( $settings['assets']['always_enqueue'] ) ) {
$this->always_enqueue = 'yes' == $settings['assets']['always_enqueue'] ? true : false;
}
add_action( 'init', array( $this, 'register' ), 20 );
add_action( 'init', array( $this, 'enqueue' ), 40 );
add_action( 'wp_print_styles', array( $this, 'disable' ), 100 );
}
/**
@@ -116,22 +92,21 @@ class Assets {
do_action( 'simcal_enqueue_assets', $this->min );
if ( false === $this->disable_scripts ) {
$min = $this->min;
// Improves compatibility with themes and plugins using Isotope and Masonry.
add_action( 'wp_enqueue_scripts',
function () use ( $min ) {
if ( wp_script_is( 'simcal-qtip', 'enqueued' ) ) {
wp_enqueue_script(
'simplecalendar-imagesloaded',
SIMPLE_CALENDAR_ASSETS . 'js/vendor/imagesloaded' . $min . '.js',
array( 'simcal-qtip' ),
'3.1.8',
true
);
}
}, 1000 );
}
$min = $this->min;
// Improves compatibility with themes and plugins using Isotope and Masonry.
add_action( 'wp_enqueue_scripts',
function () use ( $min ) {
if ( wp_script_is( 'simcal-qtip', 'enqueued' ) ) {
wp_enqueue_script(
'simplecalendar-imagesloaded',
SIMPLE_CALENDAR_ASSETS . 'js/vendor/imagesloaded.pkgd' . $min . '.js',
array( 'simcal-qtip' ),
'3.1.8',
true
);
}
}, 1000 );
}
/**
@@ -141,93 +116,14 @@ class Assets {
*/
public function load() {
if ( $this->always_enqueue ) {
$scripts = $this->get_default_scripts();
$styles = $this->get_default_styles();
$this->scripts = apply_filters( 'simcal_front_end_scripts', $scripts, $this->min );
$this->styles = apply_filters( 'simcal_front_end_styles', $styles, $this->min );
$this->load_scripts( $this->scripts );
$this->load_styles( $this->styles );
return;
}
$id = 0;
$cal_id = array();
$scripts = $styles = array();
if ( is_singular() ) {
global $post, $post_type;
if ( 'calendar' == $post_type ) {
$id = get_queried_object_id();
$view = simcal_get_calendar_view( $id );
if ( $view instanceof Calendar_View ) {
$scripts[] = $view->scripts( $this->min );
$styles[] = $view->styles( $this->min );
}
} else {
$id = absint( get_post_meta( $post->ID, '_simcal_attach_calendar_id', true ) );
if ( $id === 0 ) {
preg_match_all( '/' . get_shortcode_regex() . '/s', $post->post_content, $matches, PREG_SET_ORDER );
if ( ! empty( $matches ) && is_array( $matches ) ) {
foreach ( $matches as $shortcode ) {
if ( 'calendar' === $shortcode[2] || 'gcal' === $shortcode[2] ) {
$atts = shortcode_parse_atts( $shortcode[3] );
$cal_id[] = isset( $atts['id'] ) ? intval( $atts['id'] ) : 0;
}
}
}
}
}
}
foreach( $cal_id as $i ) {
if ( $i > 0 ) {
$view = simcal_get_calendar_view( $i );
if ( $view instanceof Calendar_View ) {
$scripts[] = $view->scripts( $this->min );
$styles[] = $view->styles( $this->min );
}
}
}
$this->get_widgets_assets();
$scripts = $this->get_default_scripts();
$styles = $this->get_default_styles();
$this->scripts = apply_filters( 'simcal_front_end_scripts', $scripts, $this->min );
$this->styles = apply_filters( 'simcal_front_end_styles', $styles, $this->min );
// First check if there is a multi-dimensional array of scripts
if ( isset( $this->scripts[0] ) ) {
foreach ( $this->scripts as $script ) {
$this->load_scripts ( $script );
}
} else {
$this->load_scripts( $this->scripts );
}
$this->styles = apply_filters( 'simcal_front_end_styles', $styles, $this->min );
// First check if there is a multi-dimensional array of styles
if ( isset( $this->styles[0] ) ) {
foreach( $this->styles as $style ) {
$this->load_styles( $style );
}
} else {
$this->load_styles( $this->styles );
}
$this->load_scripts( $this->scripts );
$this->load_styles( $this->styles );
}
/**
@@ -266,26 +162,6 @@ class Assets {
}
}
/**
* Disable scripts and styles.
*
* @since 3.0.0
*/
public function disable() {
if ( true === $this->disable_scripts ) {
$scripts = apply_filters( 'simcal_front_end_scripts', $this->scripts, $this->min );
foreach ( $scripts as $script => $v ) {
wp_dequeue_script( $script );
}
}
if ( true === $this->disable_styles ) {
$styles = apply_filters( 'simcal_front_end_styles', $this->styles, $this->min );
foreach ( $styles as $style => $v ) {
wp_dequeue_style( $style );
}
}
}
/**
* Scripts.
*
@@ -295,6 +171,7 @@ class Assets {
*/
public function load_scripts( $scripts ) {
// Only load if not disabled in the settings
if ( ! empty( $scripts ) && is_array( $scripts ) ) {
foreach ( $scripts as $script => $v ) {
@@ -332,7 +209,8 @@ class Assets {
*/
public function load_styles( $styles ) {
if ( ! empty( $styles ) && is_array( $styles ) ) {
// Only load if not disabled in the settings
if ( ! empty( $styles ) && is_array( $styles ) && false === $this->disable_styles ) {
foreach ( $styles as $style => $v ) {
@@ -363,7 +241,7 @@ class Assets {
public function get_default_scripts() {
return array(
'simcal-qtip' => array(
'src' => SIMPLE_CALENDAR_ASSETS . 'js/vendor/qtip' . $this->min . '.js',
'src' => SIMPLE_CALENDAR_ASSETS . 'js/vendor/jquery.qtip' . $this->min . '.js',
'deps' => array( 'jquery' ),
'ver' => '2.2.1',
'in_footer' => true,
@@ -391,7 +269,7 @@ class Assets {
public function get_default_styles() {
return array(
'simcal-qtip' => array(
'src' => SIMPLE_CALENDAR_ASSETS . 'css/vendor/qtip' . $this->min . '.css',
'src' => SIMPLE_CALENDAR_ASSETS . 'css/vendor/jquery.qtip' . $this->min . '.css',
'ver' => '2.2.1',
'media' => 'all',
),
@@ -281,16 +281,32 @@ class Default_Calendar_Admin {
</td>
</tr>
<tr class="simcal-panel-field simcal-default-calendar-grid simcal-default-calendar-list" style="display: none;">
<th><label for="_default_calendar_event_bubbles_action"><?php _e( 'Expand multi day events', 'google-calendar-events' ); ?></label></th>
<th><label for="_default_calendar_event_bubbles_action"><?php _e( 'Expand multi-day events', 'google-calendar-events' ); ?></label></th>
<td>
<?php
$post_meta = get_post_meta( $post_id );
if ( ! is_array( $post_meta ) && ! empty( $post_meta ) ) {
$multi_day_value = 'current_day_only';
} else {
$multi_day_value = get_post_meta( $post_id, '_default_calendar_expand_multi_day_events', true );
}
simcal_print_field( array(
'type' => 'checkbox',
'type' => 'select',
'name' => '_default_calendar_expand_multi_day_events',
'id' => '_default_calendar_expand_multi_day_events',
'tooltip' => __( 'Show events spanning multiple days on each day.', 'google-calendar-events' ),
'value' => get_post_meta( $post_id, '_default_calendar_expand_multi_day_events', true ),
'tooltip' => __( 'For events spanning multiple days, you can display them on each day of the event, ' .
'only on the first day of the event, or on all days of the event, but only up to the current day. ' .
'Third option applies to list views only.', 'google-calendar-events' ),
'value' => $multi_day_value,
'options' => array(
'yes' => __( 'Yes, display on all days of event', 'google-calendar-events' ),
'no' => __( 'No, display only on first day of event', 'google-calendar-events' ),
'current_day_only' => __( 'No, display on all days of event up to current day (list view only)', 'google-calendar-events' ),
),
'default' => 'current_day_only',
) );
?>
@@ -431,7 +447,7 @@ class Default_Calendar_Admin {
update_post_meta( $post_id, '_default_calendar_trim_titles_chars', $chars );
// Expand multiple day events on each day.
$multi_day = isset( $_POST['_default_calendar_expand_multi_day_events'] ) ? 'yes' : 'no';
$multi_day = isset( $_POST['_default_calendar_expand_multi_day_events'] ) && ! empty( $_POST['_default_calendar_expand_multi_day_events'] ) ? sanitize_key( $_POST['_default_calendar_expand_multi_day_events'] ) : 'current_day_only';
update_post_meta( $post_id, '_default_calendar_expand_multi_day_events', $multi_day );
}
@@ -166,7 +166,7 @@ class Default_Calendar extends Calendar {
}
// Expand multiple day events.
if ( 'yes' == get_post_meta( $this->id, '_default_calendar_expand_multi_day_events', true ) ) {
if ( 'yes' == get_post_meta( $this->id, '_default_calendar_expand_multi_day_events', true ) || ( 'list' == $view && 'current_day_only' == get_post_meta( $this->id, '_default_calendar_expand_multi_day_events', true ) ) ) {
$this->events = $this->expand_multiple_days_events();
}
@@ -294,7 +294,7 @@ class Default_Calendar_Grid implements Calendar_View {
// Variables to cycle days in current month and find today in calendar.
$now = $calendar->now;
$current = Carbon::create( $year, $month, 1, 0, 0, 59, $calendar->timezone );
$current = Carbon::create( $year, $month, 1, 0, 0, 0, $calendar->timezone );
$current_min = $current->getTimestamp();
$current_max = $current->endOfDay()->getTimestamp();
@@ -571,7 +571,7 @@ class Default_Calendar_Grid implements Calendar_View {
* @return bool
*/
private function filter_events_before( $event ) {
return intval( $event ) > intval( $this->start );
return intval( $event ) >= intval( $this->start );
}
/**
@@ -468,6 +468,24 @@ class Default_Calendar_List implements Calendar_View {
foreach ( $current_events as $ymd => $events ) :
// This is where we can find out if an event is a multi-day event and if it needs to be shown.
// Since this is for list view we are showing the event on the day viewed if it is part of that day even when
// expand multi-day events are turned off.
if ( isset( $events[0][0]->multiple_days ) && $events[0][0]->multiple_days > 0 ) {
if ( 'current_day_only' == get_post_meta($calendar->id, '_default_calendar_expand_multi_day_events', true ) ) {
$year = substr( $ymd, 0, 4 );
$month = substr( $ymd, 4, 2 );
$day = substr( $ymd, 6, 2 );
$temp_date = Carbon::createFromDate( $year, $month, $day );
if( ! ( $temp_date < Carbon::now()->endOfDay() ) ) {
continue;
}
}
}
$day_ts = Carbon::createFromFormat( 'Ymd', $ymd, $calendar->timezone )->getTimestamp();
if ( ! $calendar->compact_list ) :
@@ -175,7 +175,9 @@ class Event_Builder {
);
// Removes extra consecutive <br> tags.
return preg_replace( '#(<br */?>\s*)+#i', '<br />', trim( $result ) );
// TODO: Doesn't seem to work but going to remove it to allow multiple <br> tags in the editor
/*return preg_replace( '#(<br *//*?>\s*)+#i', '<br />', trim( $result ) );*/
return trim( $result );
}
/**
@@ -245,7 +247,8 @@ class Event_Builder {
case 'start-location' :
case 'end-location' :
$location = $tag == 'end-location' ? $event->end_location['address'] : $event->start_location['address'];
return ' <span class="simcal-event-address simcal-event-start-location" itemprop="location" itemscope itemtype="http://schema.org/Place">' . wp_strip_all_tags( $location ) . '</span>';
$location_class = $tag == 'end-location' ? 'end' : 'start';
return ' <span class="simcal-event-address simcal-event-' . $location_class . '-location" itemprop="location" itemscope itemtype="http://schema.org/Place">' . wp_strip_all_tags( $location ) . '</span>';
case 'start-location-link':
case 'end-location-link' :
@@ -474,7 +477,6 @@ class Event_Builder {
*/
private function limit_words( $text, $limit ) {
$text = wp_strip_all_tags( $text );
$limit = max( absint( $limit ), 0 );
if ( $limit > 0 && ( str_word_count( $text, 0 ) > $limit ) ) {
@@ -551,16 +553,18 @@ class Event_Builder {
// Markdown and HTML don't play well together, use one or the other in the same tag.
if ( $allow_html || $allow_md ) {
if ( $allow_html ) {
$html .= wp_kses_post( $description );
$description = wp_kses_post( $description );
} elseif ( $allow_md ) {
$markdown = new \Parsedown();
$html .= $markdown->text( wp_strip_all_tags( $description ) );
$description = $markdown->text( wp_strip_all_tags( $description ) );
}
} else {
$html .= $this->limit_words( $description, $attr['limit'] );
$description = wpautop( $description );
}
$html .= '</div>';
$description = $this->limit_words( $description, $attr['limit'] );
$html .= $description . '</div>';
if ( 'no' != $attr['autolink'] ) {
$html = ' ' . make_clickable( $html );
@@ -690,13 +694,19 @@ class Event_Builder {
if ( 'human' == $format ) {
$value = human_time_diff( $event_dt->getTimestamp(), Carbon::now( $event->timezone )->getTimestamp() );
if ( $event_dt->getTimestamp() < Carbon::now( $event->timezone )->getTimestamp() ) {
$value .= ' ' . _x( 'ago', 'human date event builder code modifier', 'google-calendar-events' );
} else {
$value .= ' ' . _x( 'from now', 'human date event builder code modifier', 'google-calendar-events' );
}
} else {
$value = date_i18n( $dt_format, $event_dt->getTimestamp() );
}
return '<span class="simcal-event-' . $bound . ' ' . 'simcal-event-' . $bound . '-' . $format . '"' .
'data-event-' . $bound . '="' . $event_dt->getTimestamp() . '"' .
'data-event-format="' . $dt_format . '"' .
return '<span class="simcal-event-' . $bound . ' ' . 'simcal-event-' . $bound . '-' . $format . '" ' .
'data-event-' . $bound . '="' . $event_dt->getTimestamp() . '" ' .
'data-event-format="' . $dt_format . '" ' .
'itemprop="' . $bound . 'Date" content="' . $event_dt->toIso8601String() . '">' .
$value .
'</span>';
@@ -121,7 +121,20 @@ class Grouped_Calendars extends Feed {
$calendar = simcal_get_calendar( intval( $cal_id ) );
simcal_delete_feed_transients( $cal_id );
if ( $calendar instanceof Calendar ) {
// Sometimes the calendars might have events at the same time from different calendars
// When merging the arrays together some of the events will be lost because the keys are the same and one will overwrite the other
// This snippet checks if the key already exists in the master events array and if it does it subtracts 1 from it to make the key unique and then unsets the original key.
foreach( $calendar->events as $k => $v ) {
if ( array_key_exists( $k, $events ) ) {
$calendar->events[ $k - 1 ] = $v;
unset( $k );
}
}
$events = is_array( $calendar->events ) ? $events + $calendar->events : $events;
}
@@ -149,10 +162,29 @@ class Grouped_Calendars extends Feed {
}
}
// Sort events by start time before returning
uasort( $events, array( $this, 'sort_by_start_time' ) );
return $events;
}
/**
* uasort helper to sort events by start time.
*
* @since 3.0.13
* @access private
*/
private function sort_by_start_time( $a, $b ) {
if ( $a == $b ) {
return 0;
}
return ( $a[0]->start < $b[0]->start ) ? -1 : 1;
}
/**
* Array filter key.
*
@@ -71,61 +71,6 @@ function simcal_print_field( $args, $name = '' ) {
}
}
/**
* Clear feed transients cache.
*
* @since 3.0.0
*
* @param string|int|array|\WP_Post $id
*
* @return bool
*/
function simcal_delete_feed_transients( $id = '' ) {
if ( is_numeric( $id ) ) {
$id = intval( $id ) > 0 ? absint( $id ) : simcal_get_calendars();
} elseif ( $id instanceof WP_Post ) {
$id = $id->ID;
} elseif ( is_array( $id ) ) {
$id = array_map( 'absint', $id );
} else {
$id = simcal_get_calendars( '', true );
}
$feed_types = simcal_get_feed_types();
if ( is_array( $id ) ) {
$posts = get_posts( array(
'post_type' => 'calendar',
'fields' => 'ids',
'post__in' => $id,
'nopaging' => true,
) );
foreach ( $posts as $post ) {
$calendar = simcal_get_calendar( $post );
if ( $calendar instanceof \SimpleCalendar\Abstracts\Calendar ) {
foreach ( $feed_types as $feed_type ) {
delete_transient( '_simple-calendar_feed_id_' . strval( $calendar->id ) . '_' . $feed_type );
}
}
}
} else {
$post = get_post( $id );
$calendar = simcal_get_calendar( $post );
if ( $calendar instanceof \SimpleCalendar\Abstracts\Calendar ) {
foreach ( $feed_types as $feed_type ) {
delete_transient( '_simple-calendar_feed_id_' . strval( $calendar->id ) . '_' . $feed_type );
}
}
}
return delete_transient( '_simple-calendar_feed_ids' );
}
/**
* Sanitize a variable of unknown type.
*
@@ -407,3 +407,67 @@ function simcal_get_timezone_offset( $timezone ) {
function simcal_esc_timezone( $tz, $default = 'UTC' ) {
return in_array( $tz, timezone_identifiers_list() ) ? $tz : $default;
}
/**
* Clear feed transients cache.
*
* @since 3.0.0
*
* @param string|int|array|\WP_Post $id
*
* @return bool
*/
function simcal_delete_feed_transients( $id = '' ) {
$grouped_ids = get_post_meta( $id, '_grouped_calendars_ids', true );
// If there are group IDs we need to construct an array to pass along with the grouped IDs + the original $post_id
if ( is_array( $grouped_ids ) ) {
$temp_id = $id;
$id = $grouped_ids;
$id[] = $temp_id;
}
if ( is_numeric( $id ) ) {
$id = intval( $id ) > 0 ? absint( $id ) : simcal_get_calendars();
} elseif ( $id instanceof WP_Post ) {
$id = $id->ID;
} elseif ( is_array( $id ) ) {
$id = array_map( 'absint', $id );
} else {
$id = simcal_get_calendars( '', true );
}
$feed_types = simcal_get_feed_types();
if ( is_array( $id ) ) {
$posts = get_posts( array(
'post_type' => 'calendar',
'fields' => 'ids',
'post__in' => $id,
'nopaging' => true,
) );
foreach ( $posts as $post ) {
$calendar = simcal_get_calendar( $post );
if ( $calendar instanceof \SimpleCalendar\Abstracts\Calendar ) {
foreach ( $feed_types as $feed_type ) {
delete_transient( '_simple-calendar_feed_id_' . strval( $calendar->id ) . '_' . $feed_type );
}
}
}
} else {
$post = get_post( $id );
$calendar = simcal_get_calendar( $post );
if ( $calendar instanceof \SimpleCalendar\Abstracts\Calendar ) {
foreach ( $feed_types as $feed_type ) {
delete_transient( '_simple-calendar_feed_id_' . strval( $calendar->id ) . '_' . $feed_type );
}
}
}
return delete_transient( '_simple-calendar_feed_ids' );
}
@@ -191,7 +191,7 @@ final class Plugin {
do_action( 'before_simcal_init' );
// Set up localization.
load_plugin_textdomain( 'google-calendar-events', false, dirname( plugin_basename( SIMPLE_CALENDAR_MAIN_FILE ) ) . '/languages/' );
load_plugin_textdomain( 'google-calendar-events', false, dirname( plugin_basename( SIMPLE_CALENDAR_MAIN_FILE ) ) . '/i18n/' );
// Init objects factory.
$this->objects = new Objects();
@@ -249,6 +249,7 @@ final class Plugin {
return 'https://wordpress.org/support/plugin/google-calendar-events';
case 'gdev-console':
return 'https://console.developers.google.com';
case 'home' :
default :
return self::$homepage;
}
@@ -33,6 +33,25 @@ class Post_Types {
add_filter( 'the_content', array( $this, 'filter_post_content' ), 100 );
// Delete calendar transients and notices upon post deletion.
add_action( 'before_delete_post', array( $this, 'upon_deletion' ), 10, 1 );
// Remove the rich editor so users are forced to use the HTML editor for our CPT
// TODO: Added
add_filter( 'user_can_richedit', array( $this, 'disable_wysiwyg' ) );
}
/**
* Disable riche editor for our CPT.
*
* @since 3.0.13
*/
// TODO: Added
function disable_wysiwyg( $default ) {
global $post;
if ( $post->post_type === 'calendar' ) {
return false;
}
return $default;
}
/**
@@ -54,6 +54,7 @@ class Update {
'2.1.0',
'2.2.0',
'3.0.0',
'3.0.13',
);
/**
@@ -0,0 +1,55 @@
<?php
/**
* Update to 3.0.13
*
* @package SimpleCalendar/Updates
*/
namespace SimpleCalendar\Updates;
use Carbon\Carbon;
use SimpleCalendar\Post_Types;
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* Update to 3.0.13
*/
class Update_V3013 {
/**
* Update posts and options.
*
* @param array $posts
*/
public function __construct( $posts ) {
$this->update_options();
}
/**
* Update options.
*/
public function update_options() {
$settings_advanced = get_option( 'simple-calendar_settings_advanced' );
// Remove stored always_enqueue value
if ( isset( $settings_advanced['assets']['always_enqueue'] ) ) {
unset( $settings_advanced['assets']['always_enqueue'] );
}
// Remove stored disable_js value
if ( isset( $settings_advanced['assets']['disable_js'] ) ) {
unset( $settings_advanced['assets']['disable_js'] );
}
update_option( 'simple-calendar_settings_advanced', $settings_advanced );
// Delete legacy options.
delete_option( 'simple-calendar_defaults' );
}
}
@@ -11,9 +11,9 @@
* @license GPL2+
*/
if ( ! class_exists( 'WP_Requirements' ) ) {
if ( ! class_exists( 'SimCal_WP_Requirements' ) ) {
class WP_Requirements {
class SimCal_WP_Requirements {
/**
* Plugin name.
@@ -3,7 +3,7 @@ Contributors: moonstonemedia, pderksen, nickyoung87, nekojira, rosshanney
Tags: calendar, calendars, calendar manager, custom calendar, custom calendars, event, events, events feed, google calendar, google
Requires at least: 4.0
Tested up to: 4.4
Stable tag: 3.0.10
Stable tag: 3.0.13
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
@@ -80,6 +80,36 @@ We'd love your help! Here's a few things you can do:
== Changelog ==
= 3.0.13 - January 25, 2016 =
* Tweak: Lists that start on a custom date will start at the beginning of the day now.
* Tweak: Make it so grouped calendars are properly sorted by event time.
* Tweak: Updated option for controlling multi-day events.
* Tweak: Allow line breaks from Google calendar description to persist if not using the html attribute.
* Tweak: Updated text output for human date times.
* Fix: Multi-day events that span over to the first day of the month should now show correctly.
* Feature: Added dropdown option on how to handle line breaks and paragraphs for the event template tags.
* Dev: Removed WP Requirements from Composer.
* Dev: Removed always enqueue and disable scripts options so scripts will load automatically on every page.
= 3.0.12 - January 5, 2016 =
* Fix: All-day events on the first day of the month will now show up correctly.
* Fix: Calendar start dates using a variable number will now start on the correct date.
* Fix: Disable scripts and disable styles advanced options should now work as intended.
* Tweak: Added "before" and "after" text for human date event builder codes.
* Dev: Added jquery.qtip.min.map file to vendor assets.
= 3.0.11 - December 31, 2015 =
* Fix: Custom date and time format settings should no longer override everything else when not selected.
* Fix: Limiting description with HTML tags should now work better.
* Fix: Events from different calendars not showing on a grouped calendar should display properly now.
* Fix: Grouped calendars will now clear the cache of all attached calendars.
* Fix: Cache was requiring a manual clear sometimes and should now work automatically.
* Dev: Updated CSS class for [start-location] and [end-location] tags.
* Tweak: Updated date and time preview to show properly escaped values.
= 3.0.10 - December 21, 2015 =
* Fix: Pagination tweak to prevent grouped calendars from getting cut off by last calendar in list.
@@ -4,4 +4,4 @@
require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
return ComposerAutoloaderInitd39cd43c80530601ef558a168772cae5::getLoader();
return ComposerAutoloaderInitf50f71b9e5ccf3b414fb1e6d3dd4abf9::getLoader();
@@ -13,9 +13,7 @@
namespace Composer\Autoload;
/**
* ClassLoader implements a PSR-0 class loader
*
* See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
*
* $loader = new \Composer\Autoload\ClassLoader();
*
@@ -39,6 +37,8 @@ namespace Composer\Autoload;
*
* @author Fabien Potencier <fabien@symfony.com>
* @author Jordi Boggiano <j.boggiano@seld.be>
* @see http://www.php-fig.org/psr/psr-0/
* @see http://www.php-fig.org/psr/psr-4/
*/
class ClassLoader
{
@@ -147,7 +147,7 @@ class ClassLoader
* appending or prepending to the ones previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param array|string $paths The PSR-0 base directories
* @param array|string $paths The PSR-4 base directories
* @param bool $prepend Whether to prepend the directories
*
* @throws \InvalidArgumentException
@@ -3612,6 +3612,7 @@ return array(
'Google_Verifier_Pem' => $vendorDir . '/google/apiclient/src/Google/Verifier/Pem.php',
'Mexitek\\PHPColors\\Color' => $vendorDir . '/mexitek/phpcolors/src/Mexitek/PHPColors/Color.php',
'Parsedown' => $vendorDir . '/erusev/parsedown/Parsedown.php',
'ParsedownTest' => $vendorDir . '/erusev/parsedown/test/ParsedownTest.php',
'Symfony\\Component\\Translation\\Catalogue\\AbstractOperation' => $vendorDir . '/symfony/translation/Catalogue/AbstractOperation.php',
'Symfony\\Component\\Translation\\Catalogue\\MergeOperation' => $vendorDir . '/symfony/translation/Catalogue/MergeOperation.php',
'Symfony\\Component\\Translation\\Catalogue\\OperationInterface' => $vendorDir . '/symfony/translation/Catalogue/OperationInterface.php',
@@ -3658,53 +3659,12 @@ return array(
'Symfony\\Component\\Translation\\MessageSelector' => $vendorDir . '/symfony/translation/MessageSelector.php',
'Symfony\\Component\\Translation\\MetadataAwareInterface' => $vendorDir . '/symfony/translation/MetadataAwareInterface.php',
'Symfony\\Component\\Translation\\PluralizationRules' => $vendorDir . '/symfony/translation/PluralizationRules.php',
'Symfony\\Component\\Translation\\Tests\\Catalogue\\AbstractOperationTest' => $vendorDir . '/symfony/translation/Tests/Catalogue/AbstractOperationTest.php',
'Symfony\\Component\\Translation\\Tests\\Catalogue\\MergeOperationTest' => $vendorDir . '/symfony/translation/Tests/Catalogue/MergeOperationTest.php',
'Symfony\\Component\\Translation\\Tests\\Catalogue\\TargetOperationTest' => $vendorDir . '/symfony/translation/Tests/Catalogue/TargetOperationTest.php',
'Symfony\\Component\\Translation\\Tests\\DataCollectorTranslatorTest' => $vendorDir . '/symfony/translation/Tests/DataCollectorTranslatorTest.php',
'Symfony\\Component\\Translation\\Tests\\DataCollector\\TranslationDataCollectorTest' => $vendorDir . '/symfony/translation/Tests/DataCollector/TranslationDataCollectorTest.php',
'Symfony\\Component\\Translation\\Tests\\Dumper\\ConcreteFileDumper' => $vendorDir . '/symfony/translation/Tests/Dumper/FileDumperTest.php',
'Symfony\\Component\\Translation\\Tests\\Dumper\\CsvFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/CsvFileDumperTest.php',
'Symfony\\Component\\Translation\\Tests\\Dumper\\FileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/FileDumperTest.php',
'Symfony\\Component\\Translation\\Tests\\Dumper\\IcuResFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/IcuResFileDumperTest.php',
'Symfony\\Component\\Translation\\Tests\\Dumper\\IniFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/IniFileDumperTest.php',
'Symfony\\Component\\Translation\\Tests\\Dumper\\JsonFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/JsonFileDumperTest.php',
'Symfony\\Component\\Translation\\Tests\\Dumper\\MoFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/MoFileDumperTest.php',
'Symfony\\Component\\Translation\\Tests\\Dumper\\PhpFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/PhpFileDumperTest.php',
'Symfony\\Component\\Translation\\Tests\\Dumper\\PoFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/PoFileDumperTest.php',
'Symfony\\Component\\Translation\\Tests\\Dumper\\QtFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/QtFileDumperTest.php',
'Symfony\\Component\\Translation\\Tests\\Dumper\\XliffFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/XliffFileDumperTest.php',
'Symfony\\Component\\Translation\\Tests\\Dumper\\YamlFileDumperTest' => $vendorDir . '/symfony/translation/Tests/Dumper/YamlFileDumperTest.php',
'Symfony\\Component\\Translation\\Tests\\IdentityTranslatorTest' => $vendorDir . '/symfony/translation/Tests/IdentityTranslatorTest.php',
'Symfony\\Component\\Translation\\Tests\\IntervalTest' => $vendorDir . '/symfony/translation/Tests/IntervalTest.php',
'Symfony\\Component\\Translation\\Tests\\Loader\\CsvFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/CsvFileLoaderTest.php',
'Symfony\\Component\\Translation\\Tests\\Loader\\IcuDatFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/IcuDatFileLoaderTest.php',
'Symfony\\Component\\Translation\\Tests\\Loader\\IcuResFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/IcuResFileLoaderTest.php',
'Symfony\\Component\\Translation\\Tests\\Loader\\IniFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/IniFileLoaderTest.php',
'Symfony\\Component\\Translation\\Tests\\Loader\\JsonFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/JsonFileLoaderTest.php',
'Symfony\\Component\\Translation\\Tests\\Loader\\LocalizedTestCase' => $vendorDir . '/symfony/translation/Tests/Loader/LocalizedTestCase.php',
'Symfony\\Component\\Translation\\Tests\\Loader\\MoFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/MoFileLoaderTest.php',
'Symfony\\Component\\Translation\\Tests\\Loader\\PhpFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/PhpFileLoaderTest.php',
'Symfony\\Component\\Translation\\Tests\\Loader\\PoFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/PoFileLoaderTest.php',
'Symfony\\Component\\Translation\\Tests\\Loader\\QtFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/QtFileLoaderTest.php',
'Symfony\\Component\\Translation\\Tests\\Loader\\XliffFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/XliffFileLoaderTest.php',
'Symfony\\Component\\Translation\\Tests\\Loader\\YamlFileLoaderTest' => $vendorDir . '/symfony/translation/Tests/Loader/YamlFileLoaderTest.php',
'Symfony\\Component\\Translation\\Tests\\LoggingTranslatorTest' => $vendorDir . '/symfony/translation/Tests/LoggingTranslatorTest.php',
'Symfony\\Component\\Translation\\Tests\\MessageCatalogueTest' => $vendorDir . '/symfony/translation/Tests/MessageCatalogueTest.php',
'Symfony\\Component\\Translation\\Tests\\MessageSelectorTest' => $vendorDir . '/symfony/translation/Tests/MessageSelectorTest.php',
'Symfony\\Component\\Translation\\Tests\\PluralizationRulesTest' => $vendorDir . '/symfony/translation/Tests/PluralizationRulesTest.php',
'Symfony\\Component\\Translation\\Tests\\StaleResource' => $vendorDir . '/symfony/translation/Tests/TranslatorCacheTest.php',
'Symfony\\Component\\Translation\\Tests\\StringClass' => $vendorDir . '/symfony/translation/Tests/TranslatorTest.php',
'Symfony\\Component\\Translation\\Tests\\TranslatorCacheTest' => $vendorDir . '/symfony/translation/Tests/TranslatorCacheTest.php',
'Symfony\\Component\\Translation\\Tests\\TranslatorTest' => $vendorDir . '/symfony/translation/Tests/TranslatorTest.php',
'Symfony\\Component\\Translation\\Tests\\Util\\ArrayConverterTest' => $vendorDir . '/symfony/translation/Tests/Util/ArrayConverterTest.php',
'Symfony\\Component\\Translation\\Translator' => $vendorDir . '/symfony/translation/Translator.php',
'Symfony\\Component\\Translation\\TranslatorBagInterface' => $vendorDir . '/symfony/translation/TranslatorBagInterface.php',
'Symfony\\Component\\Translation\\TranslatorInterface' => $vendorDir . '/symfony/translation/TranslatorInterface.php',
'Symfony\\Component\\Translation\\Util\\ArrayConverter' => $vendorDir . '/symfony/translation/Util/ArrayConverter.php',
'Symfony\\Component\\Translation\\Writer\\TranslationWriter' => $vendorDir . '/symfony/translation/Writer/TranslationWriter.php',
'Symfony\\Polyfill\\Mbstring\\Mbstring' => $vendorDir . '/symfony/polyfill-mbstring/Mbstring.php',
'WP_Requirements' => $vendorDir . '/nekojira/wp-requirements/src/wp-requirements.php',
'xrstf\\Composer52\\AutoloadGenerator' => $vendorDir . '/xrstf/composer-php52/lib/xrstf/Composer52/AutoloadGenerator.php',
'xrstf\\Composer52\\Generator' => $vendorDir . '/xrstf/composer-php52/lib/xrstf/Composer52/Generator.php',
);
@@ -6,6 +6,6 @@ $vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
$vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
$vendorDir . '/cbschuld/browser.php/lib/Browser.php',
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
'f15d016d70663d5e96ccd2b863511eb8' => $vendorDir . '/cbschuld/browser.php/lib/Browser.php',
);
@@ -9,5 +9,4 @@ return array(
'xrstf\\Composer52' => array($vendorDir . '/xrstf/composer-php52/lib'),
'Parsedown' => array($vendorDir . '/erusev/parsedown'),
'Composer\\Installers\\' => array($vendorDir . '/composer/installers/src'),
'' => array($vendorDir . '/nekojira/wp-requirements/src'),
);
@@ -41,15 +41,19 @@ class ComposerAutoloaderInitf26f36ad9bd5c1fa2fd296c51b641376
$loader->register(true);
$includeFiles = require __DIR__ . '/autoload_files.php';
foreach ($includeFiles as $file) {
composerRequiref26f36ad9bd5c1fa2fd296c51b641376($file);
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequiref26f36ad9bd5c1fa2fd296c51b641376($fileIdentifier, $file);
}
return $loader;
}
}
function composerRequiref26f36ad9bd5c1fa2fd296c51b641376($file)
function composerRequiref26f36ad9bd5c1fa2fd296c51b641376($fileIdentifier, $file)
{
require $file;
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file;
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
}
}
@@ -2,7 +2,7 @@
// autoload_real_52.php generated by xrstf/composer-php52
class ComposerAutoloaderInitd39cd43c80530601ef558a168772cae5 {
class ComposerAutoloaderInitf50f71b9e5ccf3b414fb1e6d3dd4abf9 {
private static $loader;
public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInitd39cd43c80530601ef558a168772cae5 {
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInitd39cd43c80530601ef558a168772cae5', 'loadClassLoader'), true /*, true */);
spl_autoload_register(array('ComposerAutoloaderInitf50f71b9e5ccf3b414fb1e6d3dd4abf9', 'loadClassLoader'), true /*, true */);
self::$loader = $loader = new xrstf_Composer52_ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInitd39cd43c80530601ef558a168772cae5', 'loadClassLoader'));
spl_autoload_unregister(array('ComposerAutoloaderInitf50f71b9e5ccf3b414fb1e6d3dd4abf9', 'loadClassLoader'));
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
@@ -115,97 +115,6 @@
],
"homepage": "http://www.xrstf.de/"
},
{
"name": "nekojira/wp-requirements",
"version": "1.4.1",
"version_normalized": "1.4.1.0",
"source": {
"type": "git",
"url": "https://github.com/unfulvio/wp-requirements.git",
"reference": "c12147245286b5b9053d1745995677e6df36e96d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/unfulvio/wp-requirements/zipball/c12147245286b5b9053d1745995677e6df36e96d",
"reference": "c12147245286b5b9053d1745995677e6df36e96d",
"shasum": ""
},
"time": "2015-10-05 09:08:37",
"type": "library",
"installation-source": "dist",
"autoload": {
"psr-0": {
"": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-2.0+"
],
"authors": [
{
"name": "Fulvio Notarstefano",
"email": "fulvio.notarstefano@gmail.com",
"homepage": "https://github.com/nekojira",
"role": "Developer"
}
],
"description": "Utility for WordPress plugin developers to check PHP version, WordPress version and presence of PHP extensions in current installation.",
"homepage": "https://github.com/nekojira/wp-requirements/",
"keywords": [
"php",
"requirements",
"version",
"wordpress"
]
},
{
"name": "mexitek/phpcolors",
"version": "dev-master",
"version_normalized": "9999999-dev",
"source": {
"type": "git",
"url": "https://github.com/mexitek/phpColors.git",
"reference": "89bf30473a68dc8845e46e9db3e536b969e18c11"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mexitek/phpColors/zipball/89bf30473a68dc8845e46e9db3e536b969e18c11",
"reference": "89bf30473a68dc8845e46e9db3e536b969e18c11",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"time": "2015-09-09 15:43:06",
"type": "library",
"installation-source": "source",
"autoload": {
"classmap": [
"src"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Arlo Carreon",
"homepage": "http://arlocarreon.com",
"role": "creator"
}
],
"description": "A series of methods that let you manipulate colors. Just incase you ever need different shades of one color on the fly.",
"homepage": "http://mexitek.github.com/phpColors/",
"keywords": [
"color",
"css",
"design",
"frontend",
"ui"
]
},
{
"name": "nesbot/carbon",
"version": "1.21.0",
@@ -300,130 +209,6 @@
"google"
]
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.0.0",
"version_normalized": "1.0.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "0b6a8940385311a24e060ec1fe35680e17c74497"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0b6a8940385311a24e060ec1fe35680e17c74497",
"reference": "0b6a8940385311a24e060ec1fe35680e17c74497",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"time": "2015-11-04 20:28:58",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
]
},
{
"name": "symfony/translation",
"version": "v3.0.0",
"version_normalized": "3.0.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
"reference": "7f14717150a7445f8475864d1235875dd04061fb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/7f14717150a7445f8475864d1235875dd04061fb",
"reference": "7f14717150a7445f8475864d1235875dd04061fb",
"shasum": ""
},
"require": {
"php": ">=5.5.9",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
"symfony/config": "<2.8"
},
"require-dev": {
"psr/log": "~1.0",
"symfony/config": "~2.8|~3.0",
"symfony/intl": "~2.8|~3.0",
"symfony/yaml": "~2.8|~3.0"
},
"suggest": {
"psr/log": "To use logging capability in translator",
"symfony/config": "",
"symfony/yaml": ""
},
"time": "2015-11-18 13:48:51",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"Symfony\\Component\\Translation\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com"
},
{
"name": "composer/installers",
"version": "v1.0.22",
@@ -523,5 +308,182 @@
"zend",
"zikula"
]
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.0.1",
"version_normalized": "1.0.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
"reference": "49ff736bd5d41f45240cec77b44967d76e0c3d25"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/49ff736bd5d41f45240cec77b44967d76e0c3d25",
"reference": "49ff736bd5d41f45240cec77b44967d76e0c3d25",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"suggest": {
"ext-mbstring": "For best performance"
},
"time": "2015-11-20 09:19:13",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Mbstring\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Mbstring extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"mbstring",
"polyfill",
"portable",
"shim"
]
},
{
"name": "symfony/translation",
"version": "v3.0.1",
"version_normalized": "3.0.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
"reference": "dff0867826a7068d673801b7522f8e2634016ef9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/translation/zipball/dff0867826a7068d673801b7522f8e2634016ef9",
"reference": "dff0867826a7068d673801b7522f8e2634016ef9",
"shasum": ""
},
"require": {
"php": ">=5.5.9",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
"symfony/config": "<2.8"
},
"require-dev": {
"psr/log": "~1.0",
"symfony/config": "~2.8|~3.0",
"symfony/intl": "~2.8|~3.0",
"symfony/yaml": "~2.8|~3.0"
},
"suggest": {
"psr/log": "To use logging capability in translator",
"symfony/config": "",
"symfony/yaml": ""
},
"time": "2015-12-05 17:45:07",
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.0-dev"
}
},
"installation-source": "dist",
"autoload": {
"psr-4": {
"Symfony\\Component\\Translation\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Translation Component",
"homepage": "https://symfony.com"
},
{
"name": "mexitek/phpcolors",
"version": "dev-master",
"version_normalized": "9999999-dev",
"source": {
"type": "git",
"url": "https://github.com/mexitek/phpColors.git",
"reference": "629eb54bf7f920529c815fd5f85b5af9651ae9f0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mexitek/phpColors/zipball/629eb54bf7f920529c815fd5f85b5af9651ae9f0",
"reference": "629eb54bf7f920529c815fd5f85b5af9651ae9f0",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"nette/tester": "~1.6"
},
"time": "2016-01-12 23:45:10",
"type": "library",
"installation-source": "source",
"autoload": {
"classmap": [
"src"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Arlo Carreon",
"homepage": "http://arlocarreon.com",
"role": "creator"
}
],
"description": "A series of methods that let you manipulate colors. Just incase you ever need different shades of one color on the fly.",
"homepage": "http://mexitek.github.com/phpColors/",
"keywords": [
"color",
"css",
"design",
"frontend",
"ui"
]
}
]
@@ -109,6 +109,7 @@ class Google_IO_Curl extends Google_IO_Abstract
);
$response = curl_exec($curl);
if ($response === false) {
$error = curl_error($curl);
$code = curl_errno($curl);
@@ -7,6 +7,9 @@
"require": {
"php": ">=5.3.0"
},
"require-dev": {
"nette/tester": "~1.6"
},
"authors" : [
{ "name": "Arlo Carreon", "homepage":"http://arlocarreon.com", "role" : "creator" }
],
@@ -190,10 +190,11 @@ class Color {
throw new Exception("Param was not an RGB array");
}
// https://github.com/mexitek/phpColors/issues/25#issuecomment-88354815
// Convert RGB to HEX
$hex[0] = dechex( $rgb['R'] );
$hex[1] = dechex( $rgb['G'] );
$hex[2] = dechex( $rgb['B'] );
$hex[0] = str_pad(dechex($rgb['R']), 2, '0', STR_PAD_LEFT);
$hex[1] = str_pad(dechex($rgb['G']), 2, '0', STR_PAD_LEFT);
$hex[2] = str_pad(dechex($rgb['B']), 2, '0', STR_PAD_LEFT);
return implode( '', $hex );
@@ -262,9 +263,10 @@ class Color {
/**
* Returns whether or not given color is considered "light"
* @param string|Boolean $color
* @param int $lighterThan
* @return boolean
*/
public function isLight( $color = FALSE ){
public function isLight( $color = FALSE, $lighterThan = 130 ){
// Get our color
$color = ($color) ? $color : $this->_hex;
@@ -273,15 +275,16 @@ class Color {
$g = hexdec($color[2].$color[3]);
$b = hexdec($color[4].$color[5]);
return (( $r*299 + $g*587 + $b*114 )/1000 > 130);
return (( $r*299 + $g*587 + $b*114 )/1000 > $lighterThan);
}
/**
* Returns whether or not a given color is considered "dark"
* @param string|Boolean $color
* @param int $darkerThan
* @return boolean
*/
public function isDark( $color = FALSE ){
public function isDark( $color = FALSE, $darkerThan = 130 ){
// Get our color
$color = ($color) ? $color:$this->_hex;
@@ -290,7 +293,7 @@ class Color {
$g = hexdec($color[2].$color[3]);
$b = hexdec($color[4].$color[5]);
return (( $r*299 + $g*587 + $b*114 )/1000 <= 130);
return (( $r*299 + $g*587 + $b*114 )/1000 <= $darkerThan);
}
/**
@@ -1,50 +0,0 @@
<?php
require_once __DIR__ . "/../src/Mexitek/PHPColors/Color.php";
use Mexitek\PHPColors\Color;
class ColorTest extends PHPUnit_Framework_TestCase {
protected function setUp() {}
public function testDarkenWithDefaultAdjustment() {
$expected = array(
"336699" => "264d73",
"913399" => "6d2673"
);
foreach ($expected as $original => $darker) {
$color = new Color($original);
$this->assertEquals(
$darker,
$color->darken(),
"Incorrect darker color returned."
);
}
}
public function testLightenWithDefaultAdjustment() {
$expected = array(
"336699" => "4080bf",
"913399" => "b540bf"
);
foreach ($expected as $original => $darker) {
$color = new Color($original);
$this->assertEquals(
$darker,
$color->lighten(),
"Incorrect lighter color returned."
);
}
}
}
/* End of file Color.php */
@@ -0,0 +1,11 @@
<?php
require __DIR__ . '/../vendor/autoload.php';
require __DIR__ . '/../src/Mexitek/PHPColors/Color.php';
if (!class_exists('Tester\Assert')) {
echo "Install Nette Tester using `composer update --dev`\n";
exit(1);
}
Tester\Environment::setup();
@@ -0,0 +1,35 @@
<?php
require __DIR__ . '/bootstrap.php';
use Mexitek\PHPColors\Color;
use Tester\Assert;
$isDark = array(
"000000" => TRUE,
"336699" => TRUE,
"913399" => TRUE,
"E5C3E8" => FALSE,
"D7E8DD" => FALSE,
"218A47" => TRUE,
"3D41CA" => TRUE,
"E5CCDD" => FALSE,
"FFFFFF" => FALSE,
);
foreach ($isDark as $colorHex => $state) {
$color = new Color($colorHex);
Assert::same($state, $color->isDark(), 'Incorrect dark color analyzed (#'. $colorHex .').');
}
$isLight = array(
"FFFFFF" => TRUE,
"A3FFE5" => TRUE,
"000000" => FALSE,
);
foreach ($isLight as $colorHex => $state) {
$color = new Color($colorHex);
Assert::same($state, $color->isLight(), 'Incorrect light color analyzed (#'. $colorHex .').');
}
@@ -0,0 +1,28 @@
<?php
require __DIR__ . '/bootstrap.php';
use Mexitek\PHPColors\Color;
use Tester\Assert;
$expected = array(
"336699" => "264d73",
"913399" => "6d2673"
);
foreach ($expected as $original => $darker) {
$color = new Color($original);
Assert::same($darker, $color->darken(), 'Incorrect darker color returned.');
}
$expected = array(
"336699" => "4080bf",
"913399" => "b540bf"
);
foreach ($expected as $original => $lighter) {
$color = new Color($original);
Assert::same($lighter, $color->lighten(), "Incorrect lighter color returned.");
}
@@ -1,339 +0,0 @@
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.
@@ -1,100 +0,0 @@
#WP Requirements
[![GitHub version](https://badge.fury.io/gh/nekojira%2Fwp-requirements.svg)](http://badge.fury.io/gh/nekojira%2Fwp-requirements)
[![Build Status](https://scrutinizer-ci.com/g/nekojira/wp-requirements/badges/build.png?b=master)](https://scrutinizer-ci.com/g/nekojira/wp-requirements/build-status/master)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nekojira/wp-requirements/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/nekojira/wp-requirements/)
Hi! I'm a little utility that you can use in your WordPress plugin development.
Include me in your plugin and I will check if the PHP version or the installed WordPress version is the right one. If not, I will let you know and you can halt your script and display a message in WordPress dashboard so the admin will know why your plugin can't be activated.
### Usage
Pass the requirements to a new instance of this class like so:
$my_plugin_requirements = new WP_Requirements(
'My Plugin Name',
plugin_basename( __FILE__ ),
array(
'PHP' => 'x.y.z',
'WordPress => 'x.y.z.',
'Extensions' => array(
'extension_name',
'another_extension',
)
)
);
Replace 'x.y.z' with the semantic version number you want to require. For PHP extension, just pass the extension name as array string values.
You need to specify at least one value in the arguments array. **Mind the casing in the array keys**.
Then, you can use the following method to know if it passed (will return *bool*):
$my_requirements_check->pass();
### Implementation
There are two ways you can include WP Requirements in your project.
##### Copy this class
You can copy the class found in `/src/wp-requirements.php` in this project.
> **Important!** If you choose to do so, please rename this class with the prefix used by your project (for example: from `WP_Requirements` to `My_Plugin_Requirements` ). In this way there is less risk of a naming collision between projects.
##### Use Composer
Include this library with:
$ composer require nekojira/wp-requirements
However, if you choose to do so, remind that Composer can only work with PHP 5.3.0 onwards. If your goal is to require a PHP version check against older versions of PHP, but want to use Composer, you need a workaround.
You could specify an additional autoloader compatible with PHP 5.2, for example using the [PHP 5.2 Autoloading for Composer](https://bitbucket.org/xrstf/composer-php52), by including in your `package.json` file the following:
"require": {
"xrstf/composer-php52": "1.*"
},
"scripts": {
"post-install-cmd": [
"xrstf\\Composer52\\Generator::onPostInstallCmd"
],
"post-update-cmd": [
"xrstf\\Composer52\\Generator::onPostInstallCmd"
],
"post-autoload-dump": [
"xrstf\\Composer52\\Generator::onPostInstallCmd"
]
}
### Usage example
Either require with `include_once` or with Composer first, then at the beginning of your plugin, after the plugin headers, place some code like this:
$my_plugin_requirements = new WP_Requirements(
'My Plugin Name',
plugin_basename( __FILE__ ),
array(
'PHP' => '5.3.2',
'WordPress' => '3.9.0',
)
);
if ( $my_plugin_requirements->pass() === false ) {
// Deactivate the plugin and print an admin notice.
$my_plugin_requirements->halt();
// Halt the execution of the rest of the plugin.
return;
}
// Then from here on, continue with your code.
// Perhaps with `include_once 'includes/main_class.php'`
// which may contain potentially incompatible PHP code.
### Resources
WP Requirements was inspired by a post appeared on [wordpress.org](https://wordpress.org) at
[https://make.wordpress.org/plugins/2015/06/05/policy-on-php-versions/](https://make.wordpress.org/plugins/2015/06/05/policy-on-php-versions/)
You can also try [WP Update PHP](https://github.com/WPupdatePHP/wp-update-php) which however only checks for PHP but provides insightful explanations for the users on why they should keep their PHP version up to date.
@@ -1,31 +0,0 @@
{
"name": "nekojira/wp-requirements",
"description": "Utility for WordPress plugin developers to check PHP version, WordPress version and presence of PHP extensions in current installation.",
"version": "1.4.1",
"license": "GPL-2.0+",
"type": "library",
"homepage": "https://github.com/nekojira/wp-requirements/",
"support": {
"issues": "https://github.com/nekojira/wp-requirements/issues",
"source": "https://github.com/nekojira/wp-requirements"
},
"authors": [
{
"name": "Fulvio Notarstefano",
"email": "fulvio.notarstefano@gmail.com",
"homepage": "https://github.com/nekojira",
"role": "Developer"
}
],
"keywords" : [
"php",
"requirements",
"wordpress",
"version"
],
"autoload": {
"psr-0": {
"": "src"
}
}
}
@@ -22,7 +22,7 @@
"psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" },
"files": [ "bootstrap.php" ]
},
"suggests": {
"suggest": {
"ext-mbstring": "For best performance"
},
"minimum-stability": "dev",
@@ -60,10 +60,10 @@ class PluralizationRulesTest extends \PHPUnit_Framework_TestCase
public function successLangcodes()
{
return array(
array('1', array('ay','bo', 'cgg','dz','id', 'ja', 'jbo', 'ka','kk','km','ko','ky')),
array('1', array('ay', 'bo', 'cgg', 'dz', 'id', 'ja', 'jbo', 'ka', 'kk', 'km', 'ko', 'ky')),
array('2', array('nl', 'fr', 'en', 'de', 'de_GE', 'hy', 'hy_AM')),
array('3', array('be','bs','cs','hr')),
array('4', array('cy','mt', 'sl')),
array('3', array('be', 'bs', 'cs', 'hr')),
array('4', array('cy', 'mt', 'sl')),
array('5', array()),
array('6', array('ar')),
);
@@ -83,7 +83,7 @@ class PluralizationRulesTest extends \PHPUnit_Framework_TestCase
array('1', array('fa')),
array('2', array('jbo')),
array('3', array('cbs')),
array('4', array('gd','kw')),
array('4', array('gd', 'kw')),
array('5', array('ga')),
array('6', array()),
);
+19
View File
@@ -0,0 +1,19 @@
Copyright (c) 2011 Google and contributors
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 OR COPYRIGHT HOLDERS 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.
+342 -218
View File
@@ -1,20 +1,27 @@
<?php
/*
Plugin Name: Open Graph
Plugin URI: http://wordpress.org/plugins/opengraph
Description: Adds Open Graph metadata to your pages
Author: Will Norris
Author URI: http://willnorris.com/
Version: 1.6
License: Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html)
Text Domain: opengraph
/**
* Plugin Name: Open Graph
* Plugin URI: http://wordpress.org/plugins/opengraph
* Description: Adds Open Graph metadata to your pages
* Author: Will Norris
* Author URI: http://willnorris.com/
* Version: 1.7.0
* License: Apache License, Version 2.0
* License URI: http://www.apache.org/licenses/LICENSE-2.0.html
* Text Domain: opengraph
*/
// If you have the opengraph plugin running alongside jetpack, we assume you'd
// rather use our opengraph support, so disable jetpack's opengraph functionality.
add_filter('jetpack_enable_opengraph', '__return_false');
add_filter('jetpack_enable_open_graph', '__return_false');
add_filter( 'jetpack_enable_opengraph', '__return_false' );
add_filter( 'jetpack_enable_open_graph', '__return_false' );
// Disable strict mode by default.
if ( ! defined( 'OPENGRAPH_STRICT_MODE' ) ) {
define( 'OPENGRAPH_STRICT_MODE', false );
}
/**
@@ -23,38 +30,38 @@ add_filter('jetpack_enable_open_graph', '__return_false');
* @uses apply_filters calls 'opengraph_prefixes' filter on RDFa prefix array
*/
function opengraph_add_prefix( $output ) {
$prefixes = array(
'og' => 'http://ogp.me/ns#'
);
$prefixes = apply_filters('opengraph_prefixes', $prefixes);
$prefixes = array(
'og' => 'http://ogp.me/ns#',
);
$prefixes = apply_filters( 'opengraph_prefixes', $prefixes );
$prefix_str = '';
foreach ( $prefixes as $k => $v ) {
$prefix_str .= $k . ': ' . $v . ' ';
}
$prefix_str = trim($prefix_str);
$prefix_str = '';
foreach ( $prefixes as $k => $v ) {
$prefix_str .= $k . ': ' . $v . ' ';
}
$prefix_str = trim( $prefix_str );
if (preg_match('/(prefix\s*=\s*[\"|\'])/i', $output)) {
$output = preg_replace('/(prefix\s*=\s*[\"|\'])/i', '${1}' . $prefix_str, $output);
} else {
$output .= ' prefix="' . $prefix_str . '"';
}
return $output;
if ( preg_match( '/(prefix\s*=\s*[\"|\'])/i', $output ) ) {
$output = preg_replace( '/(prefix\s*=\s*[\"|\'])/i', '${1}' . $prefix_str, $output );
} else {
$output .= ' prefix="' . $prefix_str . '"';
}
return $output;
}
add_filter('language_attributes', 'opengraph_add_prefix');
add_filter( 'language_attributes', 'opengraph_add_prefix' );
/**
* Add additional prefix namespaces that are supported by the opengraph plugin.
*/
function opengraph_additional_prefixes( $prefixes ) {
if ( is_author() ) {
$prefixes['profile'] = 'http://ogp.me/ns/profile#';
}
if ( is_singular() ) {
$prefixes['article'] = 'http://ogp.me/ns/article#';
}
return $prefixes;
if ( is_author() ) {
$prefixes['profile'] = 'http://ogp.me/ns/profile#';
}
if ( is_singular() ) {
$prefixes['article'] = 'http://ogp.me/ns/article#';
}
return $prefixes;
}
@@ -66,30 +73,38 @@ function opengraph_additional_prefixes( $prefixes ) {
* @uses apply_filters() Calls 'opengraph_metadata' before returning metadata array
*/
function opengraph_metadata() {
$metadata = array();
$metadata = array();
// defualt properties defined at http://ogp.me/
$properties = array(
// required
'title', 'type', 'image', 'url',
// defualt properties defined at http://ogp.me/
$properties = array(
// required
'title',
'type',
'image',
'url',
// optional
'audio', 'description', 'determiner', 'locale', 'site_name', 'video',
);
// optional
'audio',
'description',
'determiner',
'locale',
'site_name',
'video',
);
foreach ( $properties as $property ) {
$filter = 'opengraph_' . $property;
$metadata["og:$property"] = apply_filters($filter, '');
}
foreach ( $properties as $property ) {
$filter = 'opengraph_' . $property;
$metadata[ "og:$property" ] = apply_filters( $filter, '' );
}
$twitter_properties = array('card');
$twitter_properties = array( 'card', 'creator' );
foreach ( $twitter_properties as $property ) {
$filter = 'twitter_' . $property;
$metadata["twitter:$property"] = apply_filters($filter, '');
}
foreach ( $twitter_properties as $property ) {
$filter = 'twitter_' . $property;
$metadata[ "twitter:$property" ] = apply_filters( $filter, '' );
}
return apply_filters('opengraph_metadata', $metadata);
return apply_filters( 'opengraph_metadata', $metadata );
}
@@ -97,52 +112,53 @@ function opengraph_metadata() {
* Register filters for default Open Graph metadata.
*/
function opengraph_default_metadata() {
// core metadata attributes
add_filter('opengraph_title', 'opengraph_default_title', 5);
add_filter('opengraph_type', 'opengraph_default_type', 5);
add_filter('opengraph_image', 'opengraph_default_image', 5);
add_filter('opengraph_url', 'opengraph_default_url', 5);
// core metadata attributes
add_filter( 'opengraph_title', 'opengraph_default_title', 5 );
add_filter( 'opengraph_type', 'opengraph_default_type', 5 );
add_filter( 'opengraph_image', 'opengraph_default_image', 5 );
add_filter( 'opengraph_url', 'opengraph_default_url', 5 );
add_filter('opengraph_description', 'opengraph_default_description', 5);
add_filter('opengraph_locale', 'opengraph_default_locale', 5);
add_filter('opengraph_site_name', 'opengraph_default_sitename', 5);
add_filter( 'opengraph_description', 'opengraph_default_description', 5 );
add_filter( 'opengraph_locale', 'opengraph_default_locale', 5 );
add_filter( 'opengraph_site_name', 'opengraph_default_sitename', 5 );
// additional prefixes
add_filter('opengraph_prefixes', 'opengraph_additional_prefixes');
// additional prefixes
add_filter( 'opengraph_prefixes', 'opengraph_additional_prefixes' );
// additional profile metadata
add_filter('opengraph_metadata', 'opengraph_profile_metadata');
// additional profile metadata
add_filter( 'opengraph_metadata', 'opengraph_profile_metadata' );
// additional article metadata
add_filter('opengraph_metadata', 'opengraph_article_metadata');
// additional article metadata
add_filter( 'opengraph_metadata', 'opengraph_article_metadata' );
// twitter card metadata
add_filter('twitter_card', 'twitter_default_card', 5);
// twitter card metadata
add_filter( 'twitter_card', 'twitter_default_card', 5 );
add_filter( 'twitter_creator', 'twitter_default_creator', 5 );
}
add_filter('wp', 'opengraph_default_metadata');
add_action( 'wp', 'opengraph_default_metadata' );
/**
* Default title property, using the page title.
*/
function opengraph_default_title( $title ) {
if ( empty($title) ) {
if ( is_singular() ) {
$title = get_the_title( get_queried_object_id() );
} else if ( is_author() ) {
$author = get_queried_object();
$title = $author->display_name;
} else if ( is_category() && single_cat_title( '', false ) ) {
$title = single_cat_title( '', false );
} else if ( is_tag() && single_tag_title( '', false ) ) {
$title = single_tag_title( '', false );
} else if ( is_archive() && get_post_format()) {
$title = get_post_format_string( get_post_format() );
} else if ( is_archive() && function_exists ("get_the_archive_title") && get_the_archive_title() ) { // new in version 4.1 to get all other archive titles
$title = get_the_archive_title();
}
}
return $title;
if ( empty( $title ) ) {
if ( is_singular() ) {
$title = get_the_title( get_queried_object_id() );
} else if ( is_author() ) {
$author = get_queried_object();
$title = $author->display_name;
} else if ( is_category() && single_cat_title( '', false ) ) {
$title = single_cat_title( '', false );
} else if ( is_tag() && single_tag_title( '', false ) ) {
$title = single_tag_title( '', false );
} else if ( is_archive() && get_post_format() ) {
$title = get_post_format_string( get_post_format() );
} else if ( is_archive() && function_exists( 'get_the_archive_title' ) && get_the_archive_title() ) { // new in version 4.1 to get all other archive titles
$title = get_the_archive_title();
}
}
return $title;
}
@@ -150,16 +166,16 @@ function opengraph_default_title( $title ) {
* Default type property.
*/
function opengraph_default_type( $type ) {
if ( empty($type) ) {
if ( is_singular( array('post', 'page') ) ) {
$type = 'article';
} else if ( is_author() ) {
$type = 'profile';
} else {
$type = 'website';
}
}
return $type;
if ( empty( $type ) ) {
if ( is_singular( array( 'post', 'page' ) ) ) {
$type = 'article';
} else if ( is_author() ) {
$type = 'profile';
} else {
$type = 'website';
}
}
return $type;
}
@@ -167,43 +183,77 @@ function opengraph_default_type( $type ) {
* Default image property, using the post-thumbnail and any attached images.
*/
function opengraph_default_image( $image ) {
if ( empty($image) && is_singular() ) {
$id = get_queried_object_id();
$image_ids = array();
if ( empty( $image ) ) {
// As of July 2014, Facebook seems to only let you select from the first 3 images
$max_images = apply_filters( 'opengraph_max_images', 3 );
// As of July 2014, Facebook seems to only let you select from the first 3 images
$max_images = apply_filters('opengraph_max_images', 3);
if ( is_singular( array( 'post', 'page' ) ) ) {
$id = get_queried_object_id();
$image_ids = array();
// list post thumbnail first if this post has one
if ( function_exists('has_post_thumbnail') ) {
if ( is_singular() && has_post_thumbnail($id) ) {
$image_ids[] = get_post_thumbnail_id($id);
}
}
// list post thumbnail first if this post has one
if ( function_exists( 'has_post_thumbnail' ) && has_post_thumbnail( $id ) ) {
$image_ids[] = get_post_thumbnail_id( $id );
}
// then list any image attachments
$attachments = get_children( array('post_parent' => $id, 'post_status' => 'inherit',
'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC',
'orderby' => 'menu_order ID') );
foreach ( $attachments as $attachment ) {
if ( !in_array($attachment->ID, $image_ids) ) {
$image_ids[] = $attachment->ID;
if (sizeof($image_ids) >= $max_images) {
break;
}
}
}
// then list any image attachments
$attachments = get_children(
array(
'post_parent' => $id,
'post_status' => 'inherit',
'post_type' => 'attachment',
'post_mime_type' => 'image',
'order' => 'ASC',
'orderby' => 'menu_order ID',
)
);
// get URLs for each image
$image = array();
foreach ( $image_ids as $id ) {
$thumbnail = wp_get_attachment_image_src( $id, 'medium');
if ($thumbnail) {
$image[] = $thumbnail[0];
}
}
}
return $image;
foreach ( $attachments as $attachment ) {
if ( ! in_array( $attachment->ID, $image_ids ) ) {
$image_ids[] = $attachment->ID;
if ( sizeof( $image_ids ) >= $max_images ) {
break;
}
}
}
// get URLs for each image
$image = array();
foreach ( $image_ids as $id ) {
$thumbnail = wp_get_attachment_image_src( $id, 'medium' );
if ( $thumbnail ) {
$image[] = $thumbnail[0];
}
}
} elseif ( is_attachment() && wp_attachment_is_image() ) {
$id = get_queried_object_id();
$image = array( wp_get_attachment_url( $id ) );
} else {
$image = array();
// add site icon
if ( function_exists( 'get_site_icon_url' ) && has_site_icon() ) {
$image[] = get_site_icon_url( 512 );
}
// add header images
if ( function_exists( 'get_uploaded_header_images' ) ) {
if ( is_random_header_image() ) {
foreach ( get_uploaded_header_images() as $header_image ) {
$image[] = $header_image['url'];
if ( sizeof( $image ) >= $max_images ) {
break;
}
}
} else {
$image[] = get_header_image();
}
}
}
}
return $image;
}
@@ -211,14 +261,14 @@ function opengraph_default_image( $image ) {
* Default url property, using the permalink for the page.
*/
function opengraph_default_url( $url ) {
if ( empty($url) ) {
if ( is_singular() ) {
$url = get_permalink();
} else if ( is_author() ) {
$url = get_author_posts_url( get_queried_object_id() );
}
}
return $url;
if ( empty( $url ) ) {
if ( is_singular() ) {
$url = get_permalink();
} else if ( is_author() ) {
$url = get_author_posts_url( get_queried_object_id() );
}
}
return $url;
}
@@ -226,10 +276,10 @@ function opengraph_default_url( $url ) {
* Default site_name property, using the bloginfo name.
*/
function opengraph_default_sitename( $name ) {
if ( empty($name) ) {
$name = get_bloginfo('name');
}
return $name;
if ( empty( $name ) ) {
$name = get_bloginfo( 'name' );
}
return $name;
}
@@ -238,33 +288,33 @@ function opengraph_default_sitename( $name ) {
* bloginfo description.
*/
function opengraph_default_description( $description ) {
if ( empty($description) ) {
if ( is_singular() ) {
$post = get_queried_object();
if ( !empty($post->post_excerpt) ) {
$description = $post->post_excerpt;
} else {
$description = $post->post_content;
}
} else if ( is_author() ) {
$id = get_queried_object_id();
$description = get_user_meta($id, 'description', true);
} else if ( is_category() && category_description() ) {
$description = category_description();
} else if ( is_tag() && tag_description() ) {
$description = tag_description();
} else if ( is_archive() && function_exists("get_the_archive_description") && get_the_archive_description() ) { // new in version 4.1 to get all other archive descriptions
$description = get_the_archive_description();
} else {
$description = get_bloginfo('description');
}
}
if ( empty( $description ) ) {
if ( is_singular() ) {
$post = get_queried_object();
if ( ! empty( $post->post_excerpt ) ) {
$description = $post->post_excerpt;
} else {
$description = $post->post_content;
}
} else if ( is_author() ) {
$id = get_queried_object_id();
$description = get_user_meta( $id, 'description', true );
} else if ( is_category() && category_description() ) {
$description = category_description();
} else if ( is_tag() && tag_description() ) {
$description = tag_description();
} else if ( is_archive() && function_exists( 'get_the_archive_description' ) && get_the_archive_description() ) { // new in version 4.1 to get all other archive descriptions
$description = get_the_archive_description();
} else {
$description = get_bloginfo( 'description' );
}
}
// strip description to first 55 words.
$description = strip_tags(strip_shortcodes($description));
$description = __opengraph_trim_text($description);
// strip description to first 55 words.
$description = strip_tags( strip_shortcodes( $description ) );
$description = __opengraph_trim_text( $description );
return $description;
return $description;
}
@@ -272,10 +322,11 @@ function opengraph_default_description( $description ) {
* Default locale property, using the WordPress locale.
*/
function opengraph_default_locale( $locale ) {
if ( empty($locale) ) {
$locale = get_locale();
}
return $locale;
if ( empty( $locale ) ) {
$locale = get_locale();
}
return $locale;
}
@@ -283,12 +334,45 @@ function opengraph_default_locale( $locale ) {
* Default twitter-card type.
*/
function twitter_default_card( $card ) {
$post_type = apply_filters('opengraph_type', null);
if ( $post_type == 'article' ) {
return "summary";
}
if ( $card ) {
return $card;
}
return '';
$card = 'summary';
$images = apply_filters( 'opengraph_image', null );
if ( is_singular() && count( $images ) >= 1 ) {
$card = 'summary_large_image';
}
return $card;
}
/**
* Default twitter-card creator.
*/
function twitter_default_creator( $creator ) {
if ( $creator || ! is_singular() ) {
return $creator;
}
$post = get_queried_object();
$author = $post->post_author;
$twitter = get_the_author_meta( 'twitter', $author );
if ( ! $twitter ) {
return $creator;
}
// check if twitter-account matches "http://twitter.com/username"
if ( preg_match( '/^http:\/\/twitter\.com\/(#!\/)?(\w+)/i', $twitter, $matches ) ) {
$creator = '@' . $matches[2];
} elseif ( preg_match( '/^@?(\w+)$/i', $twitter, $matches ) ) { // check if twitter-account matches "(@)username"
$creator = '@' . $matches[1];
}
return $creator;
}
@@ -296,69 +380,109 @@ function twitter_default_card( $card ) {
* Output Open Graph <meta> tags in the page header.
*/
function opengraph_meta_tags() {
$metadata = opengraph_metadata();
foreach ( $metadata as $key => $value ) {
if ( empty($key) || empty($value) ) {
continue;
}
$value = (array) $value;
foreach ( $value as $v ) {
printf('<meta property="%1$s" name="%1$s" content="%2$s" />' . "\n",
esc_attr($key), esc_attr($v));
}
}
}
add_action('wp_head', 'opengraph_meta_tags');
$metadata = opengraph_metadata();
foreach ( $metadata as $key => $value ) {
if ( empty( $key ) || empty( $value ) ) {
continue;
}
$value = (array) $value;
/**
* Include profile metadata for author pages.
*/
function opengraph_profile_metadata( $metadata ) {
if ( is_author() ) {
$id = get_queried_object_id();
$metadata['profile:first_name'] = get_the_author_meta('first_name', $id);
$metadata['profile:last_name'] = get_the_author_meta('last_name', $id);
$metadata['profile:username'] = get_the_author_meta('nicename', $id);
}
return $metadata;
foreach ( $value as $v ) {
// check if "strict mode" is enabled
if ( OPENGRAPH_STRICT_MODE === false ) {
// use "property" and "name"
printf('<meta property="%1$s" name="%1$s" content="%2$s" />' . PHP_EOL,
esc_attr( $key ), esc_attr( $v ) );
} else {
// use "name" attribute for Twitter Cards
if ( stripos( $key, 'twitter:' ) === 0 ) {
printf( '<meta name="%1$s" content="%2$s" />' . PHP_EOL,
esc_attr( $key ), esc_attr( $v ) );
} else { // use "property" attribute for Open Graph
printf( '<meta property="%1$s" content="%2$s" />' . PHP_EOL,
esc_attr( $key ), esc_attr( $v ) );
}
}
}
}
}
add_action( 'wp_head', 'opengraph_meta_tags' );
/**
* Include profile metadata for author pages.
*
* @link http://ogp.me/#type_profile
*/
function opengraph_profile_metadata( $metadata ) {
if ( is_author() ) {
$id = get_queried_object_id();
$metadata['profile:first_name'] = get_the_author_meta( 'first_name', $id );
$metadata['profile:last_name'] = get_the_author_meta( 'last_name', $id );
$metadata['profile:username'] = get_the_author_meta( 'nicename', $id );
}
return $metadata;
}
/**
* Include article metadata for posts and pages.
*
* @link http://ogp.me/#type_article
*/
function opengraph_article_metadata( $metadata ) {
if ( is_singular() ) {
$post = get_queried_object();
if ( is_singular() ) {
$post = get_queried_object();
$tags = wp_get_post_tags($post->ID);
$tags = wp_get_post_tags( $post->ID );
// check if page/post has tags
if ( $tags ) {
foreach ( $tags as $tag ) {
$metadata['article:tag'][] = $tag->name;
}
}
// check if page/post has tags
if ( $tags ) {
foreach ( $tags as $tag ) {
$metadata['article:tag'][] = $tag->name;
}
}
$metadata['article:published_time'] = get_the_time( 'c', $post->ID );
$metadata['article:author:first_name'] = get_the_author_meta('first_name', $post->post_author);
$metadata['article:author:last_name'] = get_the_author_meta('last_name', $post->post_author);
$metadata['article:author:username'] = get_the_author_meta('nicename', $post->post_author);
}
$metadata['article:published_time'] = get_the_time( 'c', $post->ID );
$metadata['article:author:first_name'] = get_the_author_meta( 'first_name', $post->post_author );
$metadata['article:author:last_name'] = get_the_author_meta( 'last_name', $post->post_author );
$metadata['article:author:username'] = get_the_author_meta( 'nicename', $post->post_author );
}
return $metadata;
return $metadata;
}
/**
* Add "twitter" as a contact method
*/
function opengraph_user_contactmethods( $user_contactmethods ) {
$user_contactmethods['twitter'] = __( 'Twitter', 'opengraph' );
return $user_contactmethods;
}
add_filter( 'user_contactmethods', 'opengraph_user_contactmethods', 1 );
/**
* Add 512x512 icon size
*
* @param array $sizes sizes available for the site icon
* @return array updated list of icons
*/
function opengraph_site_icon_image_sizes( $sizes ) {
$sizes[] = 512;
return array_unique( $sizes );
}
add_filter( 'site_icon_image_sizes', 'opengraph_site_icon_image_sizes' );
/**
* Helper function to trim text using the same default values for length and
* 'more' text as wp_trim_excerpt.
*/
function __opengraph_trim_text( $text ) {
$excerpt_length = apply_filters('excerpt_length', 55);
$excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
return wp_trim_words($text, $excerpt_length, $excerpt_more);
$excerpt_length = apply_filters( 'excerpt_length', 55 );
$excerpt_more = apply_filters( 'excerpt_more', ' [...]' );
return wp_trim_words( $text, $excerpt_length, $excerpt_more );
}
Loaded 100 of 152 files, more files were not shown because too many files have changed in this diff. Show more