mirror of
https://github.com/janunger/rheinwerk-video-training.git
synced 2026-02-06 15:15:15 +01:00
Initiale Version
This commit is contained in:
93
Kapitel_7/Lektion_4/wordpress/wp-admin/js/accordion.js
Executable file
93
Kapitel_7/Lektion_4/wordpress/wp-admin/js/accordion.js
Executable file
@@ -0,0 +1,93 @@
|
||||
/**
|
||||
* Accordion-folding functionality.
|
||||
*
|
||||
* Markup with the appropriate classes will be automatically hidden,
|
||||
* with one section opening at a time when its title is clicked.
|
||||
* Use the following markup structure for accordion behavior:
|
||||
*
|
||||
* <div class="accordion-container">
|
||||
* <div class="accordion-section open">
|
||||
* <h3 class="accordion-section-title"></h3>
|
||||
* <div class="accordion-section-content">
|
||||
* </div>
|
||||
* </div>
|
||||
* <div class="accordion-section">
|
||||
* <h3 class="accordion-section-title"></h3>
|
||||
* <div class="accordion-section-content">
|
||||
* </div>
|
||||
* </div>
|
||||
* <div class="accordion-section">
|
||||
* <h3 class="accordion-section-title"></h3>
|
||||
* <div class="accordion-section-content">
|
||||
* </div>
|
||||
* </div>
|
||||
* </div>
|
||||
*
|
||||
* Note that any appropriate tags may be used, as long as the above classes are present.
|
||||
*
|
||||
* @since 3.6.0.
|
||||
*/
|
||||
|
||||
( function( $ ){
|
||||
|
||||
$( document ).ready( function () {
|
||||
|
||||
// Expand/Collapse accordion sections on click.
|
||||
$( '.accordion-container' ).on( 'click keydown', '.accordion-section-title', function( e ) {
|
||||
if ( e.type === 'keydown' && 13 !== e.which ) { // "return" key
|
||||
return;
|
||||
}
|
||||
|
||||
e.preventDefault(); // Keep this AFTER the key filter above
|
||||
|
||||
accordionSwitch( $( this ) );
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
* Close the current accordion section and open a new one.
|
||||
*
|
||||
* @param {Object} el Title element of the accordion section to toggle.
|
||||
* @since 3.6.0
|
||||
*/
|
||||
function accordionSwitch ( el ) {
|
||||
var section = el.closest( '.accordion-section' ),
|
||||
sectionToggleControl = section.find( '[aria-expanded]' ).first(),
|
||||
container = section.closest( '.accordion-container' ),
|
||||
siblings = container.find( '.open' ),
|
||||
siblingsToggleControl = siblings.find( '[aria-expanded]' ).first(),
|
||||
content = section.find( '.accordion-section-content' );
|
||||
|
||||
// This section has no content and cannot be expanded.
|
||||
if ( section.hasClass( 'cannot-expand' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Add a class to the container to let us know something is happening inside.
|
||||
// This helps in cases such as hiding a scrollbar while animations are executing.
|
||||
container.addClass( 'opening' );
|
||||
|
||||
if ( section.hasClass( 'open' ) ) {
|
||||
section.toggleClass( 'open' );
|
||||
content.toggle( true ).slideToggle( 150 );
|
||||
} else {
|
||||
siblingsToggleControl.attr( 'aria-expanded', 'false' );
|
||||
siblings.removeClass( 'open' );
|
||||
siblings.find( '.accordion-section-content' ).show().slideUp( 150 );
|
||||
content.toggle( false ).slideToggle( 150 );
|
||||
section.toggleClass( 'open' );
|
||||
}
|
||||
|
||||
// We have to wait for the animations to finish
|
||||
setTimeout(function(){
|
||||
container.removeClass( 'opening' );
|
||||
}, 150);
|
||||
|
||||
// If there's an element with an aria-expanded attribute, assume it's a toggle control and toggle the aria-expanded value.
|
||||
if ( sectionToggleControl ) {
|
||||
sectionToggleControl.attr( 'aria-expanded', String( sectionToggleControl.attr( 'aria-expanded' ) === 'false' ) );
|
||||
}
|
||||
}
|
||||
|
||||
})(jQuery);
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/accordion.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/accordion.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
!function(a){function b(a){var b=a.closest(".accordion-section"),c=b.find("[aria-expanded]").first(),d=b.closest(".accordion-container"),e=d.find(".open"),f=e.find("[aria-expanded]").first(),g=b.find(".accordion-section-content");b.hasClass("cannot-expand")||(d.addClass("opening"),b.hasClass("open")?(b.toggleClass("open"),g.toggle(!0).slideToggle(150)):(f.attr("aria-expanded","false"),e.removeClass("open"),e.find(".accordion-section-content").show().slideUp(150),g.toggle(!1).slideToggle(150),b.toggleClass("open")),setTimeout(function(){d.removeClass("opening")},150),c&&c.attr("aria-expanded",String("false"===c.attr("aria-expanded"))))}a(document).ready(function(){a(".accordion-container").on("click keydown",".accordion-section-title",function(c){("keydown"!==c.type||13===c.which)&&(c.preventDefault(),b(a(this)))})})}(jQuery);
|
||||
156
Kapitel_7/Lektion_4/wordpress/wp-admin/js/bookmarklet.js
Executable file
156
Kapitel_7/Lektion_4/wordpress/wp-admin/js/bookmarklet.js
Executable file
@@ -0,0 +1,156 @@
|
||||
( function( window, document, href, pt_url ) {
|
||||
var encURI = window.encodeURIComponent,
|
||||
form = document.createElement( 'form' ),
|
||||
head = document.getElementsByTagName( 'head' )[0],
|
||||
target = '_press_this_app',
|
||||
canPost = true,
|
||||
windowWidth, windowHeight, selection,
|
||||
metas, links, content, images, iframes, img;
|
||||
|
||||
if ( ! pt_url ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( href.match( /^https?:/ ) ) {
|
||||
pt_url += '&u=' + encURI( href );
|
||||
if ( href.match( /^https:/ ) && pt_url.match( /^http:/ ) ) {
|
||||
canPost = false;
|
||||
}
|
||||
} else {
|
||||
top.location.href = pt_url;
|
||||
return;
|
||||
}
|
||||
|
||||
if ( window.getSelection ) {
|
||||
selection = window.getSelection() + '';
|
||||
} else if ( document.getSelection ) {
|
||||
selection = document.getSelection() + '';
|
||||
} else if ( document.selection ) {
|
||||
selection = document.selection.createRange().text || '';
|
||||
}
|
||||
|
||||
pt_url += '&buster=' + ( new Date().getTime() );
|
||||
|
||||
if ( ! canPost ) {
|
||||
if ( document.title ) {
|
||||
pt_url += '&t=' + encURI( document.title.substr( 0, 256 ) );
|
||||
}
|
||||
|
||||
if ( selection ) {
|
||||
pt_url += '&s=' + encURI( selection.substr( 0, 512 ) );
|
||||
}
|
||||
}
|
||||
|
||||
windowWidth = window.outerWidth || document.documentElement.clientWidth || 600;
|
||||
windowHeight = window.outerHeight || document.documentElement.clientHeight || 700;
|
||||
|
||||
windowWidth = ( windowWidth < 800 || windowWidth > 5000 ) ? 600 : ( windowWidth * 0.7 );
|
||||
windowHeight = ( windowHeight < 800 || windowHeight > 3000 ) ? 700 : ( windowHeight * 0.9 );
|
||||
|
||||
if ( ! canPost ) {
|
||||
window.open( pt_url, target, 'location,resizable,scrollbars,width=' + windowWidth + ',height=' + windowHeight );
|
||||
return;
|
||||
}
|
||||
|
||||
function add( name, value ) {
|
||||
if ( typeof value === 'undefined' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var input = document.createElement( 'input' );
|
||||
|
||||
input.name = name;
|
||||
input.value = value;
|
||||
input.type = 'hidden';
|
||||
|
||||
form.appendChild( input );
|
||||
}
|
||||
|
||||
metas = head.getElementsByTagName( 'meta' ) || [];
|
||||
|
||||
for ( var m = 0; m < metas.length; m++ ) {
|
||||
if ( m > 200 ) {
|
||||
break;
|
||||
}
|
||||
|
||||
var q = metas[ m ],
|
||||
q_name = q.getAttribute( 'name' ),
|
||||
q_prop = q.getAttribute( 'property' ),
|
||||
q_cont = q.getAttribute( 'content' );
|
||||
|
||||
if ( q_cont ) {
|
||||
if ( q_name ) {
|
||||
add( '_meta[' + q_name + ']', q_cont );
|
||||
} else if ( q_prop ) {
|
||||
add( '_meta[' + q_prop + ']', q_cont );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
links = head.getElementsByTagName( 'link' ) || [];
|
||||
|
||||
for ( var y = 0; y < links.length; y++ ) {
|
||||
if ( y >= 50 ) {
|
||||
break;
|
||||
}
|
||||
|
||||
var g = links[ y ],
|
||||
g_rel = g.getAttribute( 'rel' );
|
||||
|
||||
if ( g_rel === 'canonical' || g_rel === 'icon' || g_rel === 'shortlink' ) {
|
||||
add( '_links[' + g_rel + ']', g.getAttribute( 'href' ) );
|
||||
}
|
||||
}
|
||||
|
||||
if ( document.body.getElementsByClassName ) {
|
||||
content = document.body.getElementsByClassName( 'hfeed' )[0];
|
||||
}
|
||||
|
||||
content = document.getElementById( 'content' ) || content || document.body;
|
||||
images = content.getElementsByTagName( 'img' ) || [];
|
||||
|
||||
for ( var n = 0; n < images.length; n++ ) {
|
||||
if ( n >= 100 ) {
|
||||
break;
|
||||
}
|
||||
|
||||
img = images[ n ];
|
||||
|
||||
// If we know the image width and/or height, check them now and drop the "uninteresting" images.
|
||||
if ( img.src.indexOf( 'avatar' ) > -1 || img.className.indexOf( 'avatar' ) > -1 ||
|
||||
( img.width && img.width < 256 ) || ( img.height && img.height < 128 ) ) {
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
add( '_images[]', img.src );
|
||||
}
|
||||
|
||||
iframes = document.body.getElementsByTagName( 'iframe' ) || [];
|
||||
|
||||
for ( var p = 0; p < iframes.length; p++ ) {
|
||||
if ( p >= 50 ) {
|
||||
break;
|
||||
}
|
||||
|
||||
add( '_embeds[]', iframes[ p ].src );
|
||||
}
|
||||
|
||||
if ( document.title ) {
|
||||
add( 't', document.title );
|
||||
}
|
||||
|
||||
if ( selection ) {
|
||||
add( 's', selection );
|
||||
}
|
||||
|
||||
form.setAttribute( 'method', 'POST' );
|
||||
form.setAttribute( 'action', pt_url );
|
||||
form.setAttribute( 'target', target );
|
||||
form.setAttribute( 'style', 'display: none;' );
|
||||
|
||||
window.open( 'about:blank', target, 'location,resizable,scrollbars,width=' + windowWidth + ',height=' + windowHeight );
|
||||
|
||||
document.body.appendChild( form );
|
||||
form.submit();
|
||||
} )( window, document, top.location.href, window.pt_url );
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/bookmarklet.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/bookmarklet.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
(function(a,b,c,d){function e(a,c){if("undefined"!=typeof c){var d=b.createElement("input");d.name=a,d.value=c,d.type="hidden",p.appendChild(d)}}var f,g,h,i,j,k,l,m,n,o=a.encodeURIComponent,p=b.createElement("form"),q=b.getElementsByTagName("head")[0],r="_press_this_app",s=!0;if(d){if(!c.match(/^https?:/))return void(top.location.href=d);if(d+="&u="+o(c),c.match(/^https:/)&&d.match(/^http:/)&&(s=!1),a.getSelection?h=a.getSelection()+"":b.getSelection?h=b.getSelection()+"":b.selection&&(h=b.selection.createRange().text||""),d+="&buster="+(new Date).getTime(),s||(b.title&&(d+="&t="+o(b.title.substr(0,256))),h&&(d+="&s="+o(h.substr(0,512)))),f=a.outerWidth||b.documentElement.clientWidth||600,g=a.outerHeight||b.documentElement.clientHeight||700,f=800>f||f>5e3?600:.7*f,g=800>g||g>3e3?700:.9*g,!s)return void a.open(d,r,"location,resizable,scrollbars,width="+f+",height="+g);i=q.getElementsByTagName("meta")||[];for(var t=0;t<i.length&&!(t>200);t++){var u=i[t],v=u.getAttribute("name"),w=u.getAttribute("property"),x=u.getAttribute("content");x&&(v?e("_meta["+v+"]",x):w&&e("_meta["+w+"]",x))}j=q.getElementsByTagName("link")||[];for(var y=0;y<j.length&&!(y>=50);y++){var z=j[y],A=z.getAttribute("rel");("canonical"===A||"icon"===A||"shortlink"===A)&&e("_links["+A+"]",z.getAttribute("href"))}b.body.getElementsByClassName&&(k=b.body.getElementsByClassName("hfeed")[0]),k=b.getElementById("content")||k||b.body,l=k.getElementsByTagName("img")||[];for(var B=0;B<l.length&&!(B>=100);B++)n=l[B],n.src.indexOf("avatar")>-1||n.className.indexOf("avatar")>-1||n.width&&n.width<256||n.height&&n.height<128||e("_images[]",n.src);m=b.body.getElementsByTagName("iframe")||[];for(var C=0;C<m.length&&!(C>=50);C++)e("_embeds[]",m[C].src);b.title&&e("t",b.title),h&&e("s",h),p.setAttribute("method","POST"),p.setAttribute("action",d),p.setAttribute("target",r),p.setAttribute("style","display: none;"),a.open("about:blank",r,"location,resizable,scrollbars,width="+f+",height="+g),b.body.appendChild(p),p.submit()}})(window,document,top.location.href,window.pt_url);
|
||||
159
Kapitel_7/Lektion_4/wordpress/wp-admin/js/color-picker.js
Executable file
159
Kapitel_7/Lektion_4/wordpress/wp-admin/js/color-picker.js
Executable file
@@ -0,0 +1,159 @@
|
||||
/* global wpColorPickerL10n */
|
||||
( function( $, undef ){
|
||||
|
||||
var ColorPicker,
|
||||
// html stuff
|
||||
_before = '<a tabindex="0" class="wp-color-result" />',
|
||||
_after = '<div class="wp-picker-holder" />',
|
||||
_wrap = '<div class="wp-picker-container" />',
|
||||
_button = '<input type="button" class="button button-small hidden" />';
|
||||
|
||||
// jQuery UI Widget constructor
|
||||
ColorPicker = {
|
||||
options: {
|
||||
defaultColor: false,
|
||||
change: false,
|
||||
clear: false,
|
||||
hide: true,
|
||||
palettes: true,
|
||||
width: 255,
|
||||
mode: 'hsv'
|
||||
},
|
||||
_create: function() {
|
||||
// bail early for unsupported Iris.
|
||||
if ( ! $.support.iris ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var self = this,
|
||||
el = self.element;
|
||||
|
||||
$.extend( self.options, el.data() );
|
||||
|
||||
// keep close bound so it can be attached to a body listener
|
||||
self.close = $.proxy( self.close, self );
|
||||
|
||||
self.initialValue = el.val();
|
||||
|
||||
// Set up HTML structure, hide things
|
||||
el.addClass( 'wp-color-picker' ).hide().wrap( _wrap );
|
||||
self.wrap = el.parent();
|
||||
self.toggler = $( _before ).insertBefore( el ).css( { backgroundColor: self.initialValue } ).attr( 'title', wpColorPickerL10n.pick ).attr( 'data-current', wpColorPickerL10n.current );
|
||||
self.pickerContainer = $( _after ).insertAfter( el );
|
||||
self.button = $( _button );
|
||||
|
||||
if ( self.options.defaultColor ) {
|
||||
self.button.addClass( 'wp-picker-default' ).val( wpColorPickerL10n.defaultString );
|
||||
} else {
|
||||
self.button.addClass( 'wp-picker-clear' ).val( wpColorPickerL10n.clear );
|
||||
}
|
||||
|
||||
el.wrap( '<span class="wp-picker-input-wrap" />' ).after(self.button);
|
||||
|
||||
el.iris( {
|
||||
target: self.pickerContainer,
|
||||
hide: self.options.hide,
|
||||
width: self.options.width,
|
||||
mode: self.options.mode,
|
||||
palettes: self.options.palettes,
|
||||
change: function( event, ui ) {
|
||||
self.toggler.css( { backgroundColor: ui.color.toString() } );
|
||||
// check for a custom cb
|
||||
if ( $.isFunction( self.options.change ) ) {
|
||||
self.options.change.call( this, event, ui );
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
||||
el.val( self.initialValue );
|
||||
self._addListeners();
|
||||
if ( ! self.options.hide ) {
|
||||
self.toggler.click();
|
||||
}
|
||||
},
|
||||
_addListeners: function() {
|
||||
var self = this;
|
||||
|
||||
// prevent any clicks inside this widget from leaking to the top and closing it
|
||||
self.wrap.on( 'click.wpcolorpicker', function( event ) {
|
||||
event.stopPropagation();
|
||||
});
|
||||
|
||||
self.toggler.click( function(){
|
||||
if ( self.toggler.hasClass( 'wp-picker-open' ) ) {
|
||||
self.close();
|
||||
} else {
|
||||
self.open();
|
||||
}
|
||||
});
|
||||
|
||||
self.element.change( function( event ) {
|
||||
var me = $( this ),
|
||||
val = me.val();
|
||||
// Empty = clear
|
||||
if ( val === '' || val === '#' ) {
|
||||
self.toggler.css( 'backgroundColor', '' );
|
||||
// fire clear callback if we have one
|
||||
if ( $.isFunction( self.options.clear ) ) {
|
||||
self.options.clear.call( this, event );
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// open a keyboard-focused closed picker with space or enter
|
||||
self.toggler.on( 'keyup', function( event ) {
|
||||
if ( event.keyCode === 13 || event.keyCode === 32 ) {
|
||||
event.preventDefault();
|
||||
self.toggler.trigger( 'click' ).next().focus();
|
||||
}
|
||||
});
|
||||
|
||||
self.button.click( function( event ) {
|
||||
var me = $( this );
|
||||
if ( me.hasClass( 'wp-picker-clear' ) ) {
|
||||
self.element.val( '' );
|
||||
self.toggler.css( 'backgroundColor', '' );
|
||||
if ( $.isFunction( self.options.clear ) ) {
|
||||
self.options.clear.call( this, event );
|
||||
}
|
||||
} else if ( me.hasClass( 'wp-picker-default' ) ) {
|
||||
self.element.val( self.options.defaultColor ).change();
|
||||
}
|
||||
});
|
||||
},
|
||||
open: function() {
|
||||
this.element.show().iris( 'toggle' ).focus();
|
||||
this.button.removeClass( 'hidden' );
|
||||
this.wrap.addClass( 'wp-picker-active' );
|
||||
this.toggler.addClass( 'wp-picker-open' );
|
||||
$( 'body' ).trigger( 'click.wpcolorpicker' ).on( 'click.wpcolorpicker', this.close );
|
||||
},
|
||||
close: function() {
|
||||
this.element.hide().iris( 'toggle' );
|
||||
this.button.addClass( 'hidden' );
|
||||
this.wrap.removeClass( 'wp-picker-active' );
|
||||
this.toggler.removeClass( 'wp-picker-open' );
|
||||
$( 'body' ).off( 'click.wpcolorpicker', this.close );
|
||||
},
|
||||
// $("#input").wpColorPicker('color') returns the current color
|
||||
// $("#input").wpColorPicker('color', '#bada55') to set
|
||||
color: function( newColor ) {
|
||||
if ( newColor === undef ) {
|
||||
return this.element.iris( 'option', 'color' );
|
||||
}
|
||||
|
||||
this.element.iris( 'option', 'color', newColor );
|
||||
},
|
||||
//$("#input").wpColorPicker('defaultColor') returns the current default color
|
||||
//$("#input").wpColorPicker('defaultColor', newDefaultColor) to set
|
||||
defaultColor: function( newDefaultColor ) {
|
||||
if ( newDefaultColor === undef ) {
|
||||
return this.options.defaultColor;
|
||||
}
|
||||
|
||||
this.options.defaultColor = newDefaultColor;
|
||||
}
|
||||
};
|
||||
|
||||
$.widget( 'wp.wpColorPicker', ColorPicker );
|
||||
}( jQuery ) );
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/color-picker.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/color-picker.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
!function(a,b){var c,d='<a tabindex="0" class="wp-color-result" />',e='<div class="wp-picker-holder" />',f='<div class="wp-picker-container" />',g='<input type="button" class="button button-small hidden" />';c={options:{defaultColor:!1,change:!1,clear:!1,hide:!0,palettes:!0,width:255,mode:"hsv"},_create:function(){if(a.support.iris){var b=this,c=b.element;a.extend(b.options,c.data()),b.close=a.proxy(b.close,b),b.initialValue=c.val(),c.addClass("wp-color-picker").hide().wrap(f),b.wrap=c.parent(),b.toggler=a(d).insertBefore(c).css({backgroundColor:b.initialValue}).attr("title",wpColorPickerL10n.pick).attr("data-current",wpColorPickerL10n.current),b.pickerContainer=a(e).insertAfter(c),b.button=a(g),b.options.defaultColor?b.button.addClass("wp-picker-default").val(wpColorPickerL10n.defaultString):b.button.addClass("wp-picker-clear").val(wpColorPickerL10n.clear),c.wrap('<span class="wp-picker-input-wrap" />').after(b.button),c.iris({target:b.pickerContainer,hide:b.options.hide,width:b.options.width,mode:b.options.mode,palettes:b.options.palettes,change:function(c,d){b.toggler.css({backgroundColor:d.color.toString()}),a.isFunction(b.options.change)&&b.options.change.call(this,c,d)}}),c.val(b.initialValue),b._addListeners(),b.options.hide||b.toggler.click()}},_addListeners:function(){var b=this;b.wrap.on("click.wpcolorpicker",function(a){a.stopPropagation()}),b.toggler.click(function(){b.toggler.hasClass("wp-picker-open")?b.close():b.open()}),b.element.change(function(c){var d=a(this),e=d.val();(""===e||"#"===e)&&(b.toggler.css("backgroundColor",""),a.isFunction(b.options.clear)&&b.options.clear.call(this,c))}),b.toggler.on("keyup",function(a){(13===a.keyCode||32===a.keyCode)&&(a.preventDefault(),b.toggler.trigger("click").next().focus())}),b.button.click(function(c){var d=a(this);d.hasClass("wp-picker-clear")?(b.element.val(""),b.toggler.css("backgroundColor",""),a.isFunction(b.options.clear)&&b.options.clear.call(this,c)):d.hasClass("wp-picker-default")&&b.element.val(b.options.defaultColor).change()})},open:function(){this.element.show().iris("toggle").focus(),this.button.removeClass("hidden"),this.wrap.addClass("wp-picker-active"),this.toggler.addClass("wp-picker-open"),a("body").trigger("click.wpcolorpicker").on("click.wpcolorpicker",this.close)},close:function(){this.element.hide().iris("toggle"),this.button.addClass("hidden"),this.wrap.removeClass("wp-picker-active"),this.toggler.removeClass("wp-picker-open"),a("body").off("click.wpcolorpicker",this.close)},color:function(a){return a===b?this.element.iris("option","color"):void this.element.iris("option","color",a)},defaultColor:function(a){return a===b?this.options.defaultColor:void(this.options.defaultColor=a)}},a.widget("wp.wpColorPicker",c)}(jQuery);
|
||||
63
Kapitel_7/Lektion_4/wordpress/wp-admin/js/comment.js
Executable file
63
Kapitel_7/Lektion_4/wordpress/wp-admin/js/comment.js
Executable file
@@ -0,0 +1,63 @@
|
||||
/* global postboxes, commentL10n */
|
||||
jQuery(document).ready( function($) {
|
||||
|
||||
postboxes.add_postbox_toggles('comment');
|
||||
|
||||
var $timestampdiv = $('#timestampdiv'),
|
||||
$timestamp = $( '#timestamp' ),
|
||||
stamp = $timestamp.html(),
|
||||
$timestampwrap = $timestampdiv.find( '.timestamp-wrap' ),
|
||||
$edittimestamp = $timestampdiv.siblings( 'a.edit-timestamp' );
|
||||
|
||||
$edittimestamp.click( function( event ) {
|
||||
if ( $timestampdiv.is( ':hidden' ) ) {
|
||||
$timestampdiv.slideDown( 'fast', function() {
|
||||
$( 'input, select', $timestampwrap ).first().focus();
|
||||
} );
|
||||
$(this).hide();
|
||||
}
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
$timestampdiv.find('.cancel-timestamp').click( function( event ) {
|
||||
// Move focus back to the Edit link.
|
||||
$edittimestamp.show().focus();
|
||||
$timestampdiv.slideUp( 'fast' );
|
||||
$('#mm').val($('#hidden_mm').val());
|
||||
$('#jj').val($('#hidden_jj').val());
|
||||
$('#aa').val($('#hidden_aa').val());
|
||||
$('#hh').val($('#hidden_hh').val());
|
||||
$('#mn').val($('#hidden_mn').val());
|
||||
$timestamp.html( stamp );
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
$timestampdiv.find('.save-timestamp').click( function( event ) { // crazyhorse - multiple ok cancels
|
||||
var aa = $('#aa').val(), mm = $('#mm').val(), jj = $('#jj').val(), hh = $('#hh').val(), mn = $('#mn').val(),
|
||||
newD = new Date( aa, mm - 1, jj, hh, mn );
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
if ( newD.getFullYear() != aa || (1 + newD.getMonth()) != mm || newD.getDate() != jj || newD.getMinutes() != mn ) {
|
||||
$timestampwrap.addClass( 'form-invalid' );
|
||||
return;
|
||||
} else {
|
||||
$timestampwrap.removeClass( 'form-invalid' );
|
||||
}
|
||||
|
||||
$timestamp.html(
|
||||
commentL10n.submittedOn + ' <b>' +
|
||||
commentL10n.dateFormat
|
||||
.replace( '%1$s', $( 'option[value="' + mm + '"]', '#mm' ).attr( 'data-text' ) )
|
||||
.replace( '%2$s', parseInt( jj, 10 ) )
|
||||
.replace( '%3$s', aa )
|
||||
.replace( '%4$s', ( '00' + hh ).slice( -2 ) )
|
||||
.replace( '%5$s', ( '00' + mn ).slice( -2 ) ) +
|
||||
'</b> '
|
||||
);
|
||||
|
||||
// Move focus back to the Edit link.
|
||||
$edittimestamp.show().focus();
|
||||
$timestampdiv.slideUp( 'fast' );
|
||||
});
|
||||
});
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/comment.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/comment.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
jQuery(document).ready(function(a){postboxes.add_postbox_toggles("comment");var b=a("#timestampdiv"),c=a("#timestamp"),d=c.html(),e=b.find(".timestamp-wrap"),f=b.siblings("a.edit-timestamp");f.click(function(c){b.is(":hidden")&&(b.slideDown("fast",function(){a("input, select",e).first().focus()}),a(this).hide()),c.preventDefault()}),b.find(".cancel-timestamp").click(function(e){f.show().focus(),b.slideUp("fast"),a("#mm").val(a("#hidden_mm").val()),a("#jj").val(a("#hidden_jj").val()),a("#aa").val(a("#hidden_aa").val()),a("#hh").val(a("#hidden_hh").val()),a("#mn").val(a("#hidden_mn").val()),c.html(d),e.preventDefault()}),b.find(".save-timestamp").click(function(d){var g=a("#aa").val(),h=a("#mm").val(),i=a("#jj").val(),j=a("#hh").val(),k=a("#mn").val(),l=new Date(g,h-1,i,j,k);return d.preventDefault(),l.getFullYear()!=g||1+l.getMonth()!=h||l.getDate()!=i||l.getMinutes()!=k?void e.addClass("form-invalid"):(e.removeClass("form-invalid"),c.html(commentL10n.submittedOn+" <b>"+commentL10n.dateFormat.replace("%1$s",a('option[value="'+h+'"]',"#mm").attr("data-text")).replace("%2$s",parseInt(i,10)).replace("%3$s",g).replace("%4$s",("00"+j).slice(-2)).replace("%5$s",("00"+k).slice(-2))+"</b> "),f.show().focus(),void b.slideUp("fast"))})});
|
||||
948
Kapitel_7/Lektion_4/wordpress/wp-admin/js/common.js
Executable file
948
Kapitel_7/Lektion_4/wordpress/wp-admin/js/common.js
Executable file
@@ -0,0 +1,948 @@
|
||||
/* global setUserSetting, ajaxurl, commonL10n, alert, confirm, pagenow */
|
||||
var showNotice, adminMenu, columns, validateForm, screenMeta;
|
||||
( function( $, window, undefined ) {
|
||||
var $document = $( document ),
|
||||
$window = $( window ),
|
||||
$body = $( document.body );
|
||||
|
||||
// Removed in 3.3.
|
||||
// (perhaps) needed for back-compat
|
||||
adminMenu = {
|
||||
init : function() {},
|
||||
fold : function() {},
|
||||
restoreMenuState : function() {},
|
||||
toggle : function() {},
|
||||
favorites : function() {}
|
||||
};
|
||||
|
||||
// show/hide/save table columns
|
||||
columns = {
|
||||
init : function() {
|
||||
var that = this;
|
||||
$('.hide-column-tog', '#adv-settings').click( function() {
|
||||
var $t = $(this), column = $t.val();
|
||||
if ( $t.prop('checked') )
|
||||
that.checked(column);
|
||||
else
|
||||
that.unchecked(column);
|
||||
|
||||
columns.saveManageColumnsState();
|
||||
});
|
||||
},
|
||||
|
||||
saveManageColumnsState : function() {
|
||||
var hidden = this.hidden();
|
||||
$.post(ajaxurl, {
|
||||
action: 'hidden-columns',
|
||||
hidden: hidden,
|
||||
screenoptionnonce: $('#screenoptionnonce').val(),
|
||||
page: pagenow
|
||||
});
|
||||
},
|
||||
|
||||
checked : function(column) {
|
||||
$('.column-' + column).removeClass( 'hidden' );
|
||||
this.colSpanChange(+1);
|
||||
},
|
||||
|
||||
unchecked : function(column) {
|
||||
$('.column-' + column).addClass( 'hidden' );
|
||||
this.colSpanChange(-1);
|
||||
},
|
||||
|
||||
hidden : function() {
|
||||
return $( '.manage-column[id]' ).filter( ':hidden' ).map(function() {
|
||||
return this.id;
|
||||
}).get().join( ',' );
|
||||
},
|
||||
|
||||
useCheckboxesForHidden : function() {
|
||||
this.hidden = function(){
|
||||
return $('.hide-column-tog').not(':checked').map(function() {
|
||||
var id = this.id;
|
||||
return id.substring( id, id.length - 5 );
|
||||
}).get().join(',');
|
||||
};
|
||||
},
|
||||
|
||||
colSpanChange : function(diff) {
|
||||
var $t = $('table').find('.colspanchange'), n;
|
||||
if ( !$t.length )
|
||||
return;
|
||||
n = parseInt( $t.attr('colspan'), 10 ) + diff;
|
||||
$t.attr('colspan', n.toString());
|
||||
}
|
||||
};
|
||||
|
||||
$document.ready(function(){columns.init();});
|
||||
|
||||
validateForm = function( form ) {
|
||||
return !$( form )
|
||||
.find( '.form-required' )
|
||||
.filter( function() { return $( 'input:visible', this ).val() === ''; } )
|
||||
.addClass( 'form-invalid' )
|
||||
.find( 'input:visible' )
|
||||
.change( function() { $( this ).closest( '.form-invalid' ).removeClass( 'form-invalid' ); } )
|
||||
.length;
|
||||
};
|
||||
|
||||
// stub for doing better warnings
|
||||
showNotice = {
|
||||
warn : function() {
|
||||
var msg = commonL10n.warnDelete || '';
|
||||
if ( confirm(msg) ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
note : function(text) {
|
||||
alert(text);
|
||||
}
|
||||
};
|
||||
|
||||
screenMeta = {
|
||||
element: null, // #screen-meta
|
||||
toggles: null, // .screen-meta-toggle
|
||||
page: null, // #wpcontent
|
||||
|
||||
init: function() {
|
||||
this.element = $('#screen-meta');
|
||||
this.toggles = $( '#screen-meta-links' ).find( '.show-settings' );
|
||||
this.page = $('#wpcontent');
|
||||
|
||||
this.toggles.click( this.toggleEvent );
|
||||
},
|
||||
|
||||
toggleEvent: function() {
|
||||
var panel = $( '#' + $( this ).attr( 'aria-controls' ) );
|
||||
|
||||
if ( !panel.length )
|
||||
return;
|
||||
|
||||
if ( panel.is(':visible') )
|
||||
screenMeta.close( panel, $(this) );
|
||||
else
|
||||
screenMeta.open( panel, $(this) );
|
||||
},
|
||||
|
||||
open: function( panel, button ) {
|
||||
|
||||
$( '#screen-meta-links' ).find( '.screen-meta-toggle' ).not( button.parent() ).css( 'visibility', 'hidden' );
|
||||
|
||||
panel.parent().show();
|
||||
panel.slideDown( 'fast', function() {
|
||||
panel.focus();
|
||||
button.addClass( 'screen-meta-active' ).attr( 'aria-expanded', true );
|
||||
});
|
||||
|
||||
$document.trigger( 'screen:options:open' );
|
||||
},
|
||||
|
||||
close: function( panel, button ) {
|
||||
panel.slideUp( 'fast', function() {
|
||||
button.removeClass( 'screen-meta-active' ).attr( 'aria-expanded', false );
|
||||
$('.screen-meta-toggle').css('visibility', '');
|
||||
panel.parent().hide();
|
||||
});
|
||||
|
||||
$document.trigger( 'screen:options:close' );
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Help tabs.
|
||||
*/
|
||||
$('.contextual-help-tabs').delegate('a', 'click', function(e) {
|
||||
var link = $(this),
|
||||
panel;
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
// Don't do anything if the click is for the tab already showing.
|
||||
if ( link.is('.active a') )
|
||||
return false;
|
||||
|
||||
// Links
|
||||
$('.contextual-help-tabs .active').removeClass('active');
|
||||
link.parent('li').addClass('active');
|
||||
|
||||
panel = $( link.attr('href') );
|
||||
|
||||
// Panels
|
||||
$('.help-tab-content').not( panel ).removeClass('active').hide();
|
||||
panel.addClass('active').show();
|
||||
});
|
||||
|
||||
$document.ready( function() {
|
||||
var checks, first, last, checked, sliced, mobileEvent, transitionTimeout, focusedRowActions,
|
||||
lastClicked = false,
|
||||
pageInput = $('input.current-page'),
|
||||
currentPage = pageInput.val(),
|
||||
isIOS = /iPhone|iPad|iPod/.test( navigator.userAgent ),
|
||||
isAndroid = navigator.userAgent.indexOf( 'Android' ) !== -1,
|
||||
isIE8 = $( document.documentElement ).hasClass( 'ie8' ),
|
||||
$adminMenuWrap = $( '#adminmenuwrap' ),
|
||||
$wpwrap = $( '#wpwrap' ),
|
||||
$adminmenu = $( '#adminmenu' ),
|
||||
$overlay = $( '#wp-responsive-overlay' ),
|
||||
$toolbar = $( '#wp-toolbar' ),
|
||||
$toolbarPopups = $toolbar.find( 'a[aria-haspopup="true"]' ),
|
||||
$sortables = $('.meta-box-sortables'),
|
||||
wpResponsiveActive = false,
|
||||
$adminbar = $( '#wpadminbar' ),
|
||||
lastScrollPosition = 0,
|
||||
pinnedMenuTop = false,
|
||||
pinnedMenuBottom = false,
|
||||
menuTop = 0,
|
||||
menuIsPinned = false,
|
||||
height = {
|
||||
window: $window.height(),
|
||||
wpwrap: $wpwrap.height(),
|
||||
adminbar: $adminbar.height(),
|
||||
menu: $adminMenuWrap.height()
|
||||
};
|
||||
|
||||
|
||||
// when the menu is folded, make the fly-out submenu header clickable
|
||||
$adminmenu.on('click.wp-submenu-head', '.wp-submenu-head', function(e){
|
||||
$(e.target).parent().siblings('a').get(0).click();
|
||||
});
|
||||
|
||||
$('#collapse-menu').on('click.collapse-menu', function() {
|
||||
var respWidth, state;
|
||||
|
||||
// reset any compensation for submenus near the bottom of the screen
|
||||
$('#adminmenu div.wp-submenu').css('margin-top', '');
|
||||
|
||||
if ( window.innerWidth ) {
|
||||
// window.innerWidth is affected by zooming on phones
|
||||
respWidth = Math.max( window.innerWidth, document.documentElement.clientWidth );
|
||||
} else {
|
||||
// IE < 9 doesn't support @media CSS rules
|
||||
respWidth = 961;
|
||||
}
|
||||
|
||||
if ( respWidth && respWidth < 960 ) {
|
||||
if ( $body.hasClass('auto-fold') ) {
|
||||
$body.removeClass('auto-fold').removeClass('folded');
|
||||
setUserSetting('unfold', 1);
|
||||
setUserSetting('mfold', 'o');
|
||||
state = 'open';
|
||||
} else {
|
||||
$body.addClass('auto-fold');
|
||||
setUserSetting('unfold', 0);
|
||||
state = 'folded';
|
||||
}
|
||||
} else {
|
||||
if ( $body.hasClass('folded') ) {
|
||||
$body.removeClass('folded');
|
||||
setUserSetting('mfold', 'o');
|
||||
state = 'open';
|
||||
} else {
|
||||
$body.addClass('folded');
|
||||
setUserSetting('mfold', 'f');
|
||||
state = 'folded';
|
||||
}
|
||||
}
|
||||
|
||||
currentMenuItemHasPopup();
|
||||
$document.trigger( 'wp-collapse-menu', { state: state } );
|
||||
});
|
||||
|
||||
// Handle the `aria-haspopup` attribute on the current menu item when it has a sub-menu.
|
||||
function currentMenuItemHasPopup() {
|
||||
var respWidth,
|
||||
$current = $( 'a.wp-has-current-submenu' );
|
||||
|
||||
if ( window.innerWidth ) {
|
||||
respWidth = Math.max( window.innerWidth, document.documentElement.clientWidth );
|
||||
} else {
|
||||
respWidth = 961;
|
||||
}
|
||||
|
||||
if ( $body.hasClass( 'folded' ) || ( $body.hasClass( 'auto-fold' ) && respWidth && respWidth <= 960 && respWidth > 782 ) ) {
|
||||
// When folded or auto-folded and not responsive view, the current menu item does have a fly-out sub-menu.
|
||||
$current.attr( 'aria-haspopup', 'true' );
|
||||
} else {
|
||||
// When expanded or in responsive view, reset aria-haspopup.
|
||||
$current.attr( 'aria-haspopup', 'false' );
|
||||
}
|
||||
}
|
||||
|
||||
$document.on( 'wp-window-resized wp-responsive-activate wp-responsive-deactivate', currentMenuItemHasPopup );
|
||||
|
||||
/**
|
||||
* Ensure an admin submenu is within the visual viewport.
|
||||
*
|
||||
* @since 4.1.0
|
||||
*
|
||||
* @param {jQuery} $menuItem The parent menu item containing the submenu.
|
||||
*/
|
||||
function adjustSubmenu( $menuItem ) {
|
||||
var bottomOffset, pageHeight, adjustment, theFold, menutop, wintop, maxtop,
|
||||
$submenu = $menuItem.find( '.wp-submenu' );
|
||||
|
||||
menutop = $menuItem.offset().top;
|
||||
wintop = $window.scrollTop();
|
||||
maxtop = menutop - wintop - 30; // max = make the top of the sub almost touch admin bar
|
||||
|
||||
bottomOffset = menutop + $submenu.height() + 1; // Bottom offset of the menu
|
||||
pageHeight = $wpwrap.height(); // Height of the entire page
|
||||
adjustment = 60 + bottomOffset - pageHeight;
|
||||
theFold = $window.height() + wintop - 50; // The fold
|
||||
|
||||
if ( theFold < ( bottomOffset - adjustment ) ) {
|
||||
adjustment = bottomOffset - theFold;
|
||||
}
|
||||
|
||||
if ( adjustment > maxtop ) {
|
||||
adjustment = maxtop;
|
||||
}
|
||||
|
||||
if ( adjustment > 1 ) {
|
||||
$submenu.css( 'margin-top', '-' + adjustment + 'px' );
|
||||
} else {
|
||||
$submenu.css( 'margin-top', '' );
|
||||
}
|
||||
}
|
||||
|
||||
if ( 'ontouchstart' in window || /IEMobile\/[1-9]/.test(navigator.userAgent) ) { // touch screen device
|
||||
// iOS Safari works with touchstart, the rest work with click
|
||||
mobileEvent = isIOS ? 'touchstart' : 'click';
|
||||
|
||||
// close any open submenus when touch/click is not on the menu
|
||||
$body.on( mobileEvent+'.wp-mobile-hover', function(e) {
|
||||
if ( $adminmenu.data('wp-responsive') ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ! $( e.target ).closest( '#adminmenu' ).length ) {
|
||||
$adminmenu.find( 'li.opensub' ).removeClass( 'opensub' );
|
||||
}
|
||||
});
|
||||
|
||||
$adminmenu.find( 'a.wp-has-submenu' ).on( mobileEvent + '.wp-mobile-hover', function( event ) {
|
||||
var $menuItem = $(this).parent();
|
||||
|
||||
if ( $adminmenu.data( 'wp-responsive' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Show the sub instead of following the link if:
|
||||
// - the submenu is not open
|
||||
// - the submenu is not shown inline or the menu is not folded
|
||||
if ( ! $menuItem.hasClass( 'opensub' ) && ( ! $menuItem.hasClass( 'wp-menu-open' ) || $menuItem.width() < 40 ) ) {
|
||||
event.preventDefault();
|
||||
adjustSubmenu( $menuItem );
|
||||
$adminmenu.find( 'li.opensub' ).removeClass( 'opensub' );
|
||||
$menuItem.addClass('opensub');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if ( ! isIOS && ! isAndroid ) {
|
||||
$adminmenu.find( 'li.wp-has-submenu' ).hoverIntent({
|
||||
over: function() {
|
||||
var $menuItem = $( this ),
|
||||
$submenu = $menuItem.find( '.wp-submenu' ),
|
||||
top = parseInt( $submenu.css( 'top' ), 10 );
|
||||
|
||||
if ( isNaN( top ) || top > -5 ) { // the submenu is visible
|
||||
return;
|
||||
}
|
||||
|
||||
if ( $adminmenu.data( 'wp-responsive' ) ) {
|
||||
// The menu is in responsive mode, bail
|
||||
return;
|
||||
}
|
||||
|
||||
adjustSubmenu( $menuItem );
|
||||
$adminmenu.find( 'li.opensub' ).removeClass( 'opensub' );
|
||||
$menuItem.addClass( 'opensub' );
|
||||
},
|
||||
out: function(){
|
||||
if ( $adminmenu.data( 'wp-responsive' ) ) {
|
||||
// The menu is in responsive mode, bail
|
||||
return;
|
||||
}
|
||||
|
||||
$( this ).removeClass( 'opensub' ).find( '.wp-submenu' ).css( 'margin-top', '' );
|
||||
},
|
||||
timeout: 200,
|
||||
sensitivity: 7,
|
||||
interval: 90
|
||||
});
|
||||
|
||||
$adminmenu.on( 'focus.adminmenu', '.wp-submenu a', function( event ) {
|
||||
if ( $adminmenu.data( 'wp-responsive' ) ) {
|
||||
// The menu is in responsive mode, bail
|
||||
return;
|
||||
}
|
||||
|
||||
$( event.target ).closest( 'li.menu-top' ).addClass( 'opensub' );
|
||||
}).on( 'blur.adminmenu', '.wp-submenu a', function( event ) {
|
||||
if ( $adminmenu.data( 'wp-responsive' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$( event.target ).closest( 'li.menu-top' ).removeClass( 'opensub' );
|
||||
}).find( 'li.wp-has-submenu.wp-not-current-submenu' ).on( 'focusin.adminmenu', function() {
|
||||
adjustSubmenu( $( this ) );
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* 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 h1, .wrap h2' ).first() );
|
||||
|
||||
// Make notices dismissible
|
||||
function makeNoticesDismissible() {
|
||||
$( '.notice.is-dismissible' ).each( function() {
|
||||
var $el = $( this ),
|
||||
$button = $( '<button type="button" class="notice-dismiss"><span class="screen-reader-text"></span></button>' ),
|
||||
btnText = commonL10n.dismiss || '';
|
||||
|
||||
// Ensure plain text
|
||||
$button.find( '.screen-reader-text' ).text( btnText );
|
||||
$button.on( 'click.wp-dismiss-notice', function( event ) {
|
||||
event.preventDefault();
|
||||
$el.fadeTo( 100, 0, function() {
|
||||
$el.slideUp( 100, function() {
|
||||
$el.remove();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
$el.append( $button );
|
||||
});
|
||||
}
|
||||
|
||||
$document.on( 'wp-plugin-update-error', function() {
|
||||
makeNoticesDismissible();
|
||||
});
|
||||
|
||||
// Init screen meta
|
||||
screenMeta.init();
|
||||
|
||||
// check all checkboxes
|
||||
$('tbody').children().children('.check-column').find(':checkbox').click( function(e) {
|
||||
if ( 'undefined' == e.shiftKey ) { return true; }
|
||||
if ( e.shiftKey ) {
|
||||
if ( !lastClicked ) { return true; }
|
||||
checks = $( lastClicked ).closest( 'form' ).find( ':checkbox' ).filter( ':visible:enabled' );
|
||||
first = checks.index( lastClicked );
|
||||
last = checks.index( this );
|
||||
checked = $(this).prop('checked');
|
||||
if ( 0 < first && 0 < last && first != last ) {
|
||||
sliced = ( last > first ) ? checks.slice( first, last ) : checks.slice( last, first );
|
||||
sliced.prop( 'checked', function() {
|
||||
if ( $(this).closest('tr').is(':visible') )
|
||||
return checked;
|
||||
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
||||
lastClicked = this;
|
||||
|
||||
// toggle "check all" checkboxes
|
||||
var unchecked = $(this).closest('tbody').find(':checkbox').filter(':visible:enabled').not(':checked');
|
||||
$(this).closest('table').children('thead, tfoot').find(':checkbox').prop('checked', function() {
|
||||
return ( 0 === unchecked.length );
|
||||
});
|
||||
|
||||
return true;
|
||||
});
|
||||
|
||||
$('thead, tfoot').find('.check-column :checkbox').on( 'click.wp-toggle-checkboxes', function( event ) {
|
||||
var $this = $(this),
|
||||
$table = $this.closest( 'table' ),
|
||||
controlChecked = $this.prop('checked'),
|
||||
toggle = event.shiftKey || $this.data('wp-toggle');
|
||||
|
||||
$table.children( 'tbody' ).filter(':visible')
|
||||
.children().children('.check-column').find(':checkbox')
|
||||
.prop('checked', function() {
|
||||
if ( $(this).is(':hidden,:disabled') ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( toggle ) {
|
||||
return ! $(this).prop( 'checked' );
|
||||
} else if ( controlChecked ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
$table.children('thead, tfoot').filter(':visible')
|
||||
.children().children('.check-column').find(':checkbox')
|
||||
.prop('checked', function() {
|
||||
if ( toggle ) {
|
||||
return false;
|
||||
} else if ( controlChecked ) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
});
|
||||
|
||||
// Show row actions on keyboard focus of its parent container element or any other elements contained within
|
||||
$( '#wpbody-content' ).on({
|
||||
focusin: function() {
|
||||
clearTimeout( transitionTimeout );
|
||||
focusedRowActions = $( this ).find( '.row-actions' );
|
||||
// transitionTimeout is necessary for Firefox, but Chrome won't remove the CSS class without a little help.
|
||||
$( '.row-actions' ).not( this ).removeClass( 'visible' );
|
||||
focusedRowActions.addClass( 'visible' );
|
||||
},
|
||||
focusout: function() {
|
||||
// Tabbing between post title and .row-actions links needs a brief pause, otherwise
|
||||
// the .row-actions div gets hidden in transit in some browsers (ahem, Firefox).
|
||||
transitionTimeout = setTimeout( function() {
|
||||
focusedRowActions.removeClass( 'visible' );
|
||||
}, 30 );
|
||||
}
|
||||
}, '.has-row-actions' );
|
||||
|
||||
// Toggle list table rows on small screens
|
||||
$( 'tbody' ).on( 'click', '.toggle-row', function() {
|
||||
$( this ).closest( 'tr' ).toggleClass( 'is-expanded' );
|
||||
});
|
||||
|
||||
$('#default-password-nag-no').click( function() {
|
||||
setUserSetting('default_password_nag', 'hide');
|
||||
$('div.default-password-nag').hide();
|
||||
return false;
|
||||
});
|
||||
|
||||
// tab in textareas
|
||||
$('#newcontent').bind('keydown.wpevent_InsertTab', function(e) {
|
||||
var el = e.target, selStart, selEnd, val, scroll, sel;
|
||||
|
||||
if ( e.keyCode == 27 ) { // escape key
|
||||
// when pressing Escape: Opera 12 and 27 blur form fields, IE 8 clears them
|
||||
e.preventDefault();
|
||||
$(el).data('tab-out', true);
|
||||
return;
|
||||
}
|
||||
|
||||
if ( e.keyCode != 9 || e.ctrlKey || e.altKey || e.shiftKey ) // tab key
|
||||
return;
|
||||
|
||||
if ( $(el).data('tab-out') ) {
|
||||
$(el).data('tab-out', false);
|
||||
return;
|
||||
}
|
||||
|
||||
selStart = el.selectionStart;
|
||||
selEnd = el.selectionEnd;
|
||||
val = el.value;
|
||||
|
||||
if ( document.selection ) {
|
||||
el.focus();
|
||||
sel = document.selection.createRange();
|
||||
sel.text = '\t';
|
||||
} else if ( selStart >= 0 ) {
|
||||
scroll = this.scrollTop;
|
||||
el.value = val.substring(0, selStart).concat('\t', val.substring(selEnd) );
|
||||
el.selectionStart = el.selectionEnd = selStart + 1;
|
||||
this.scrollTop = scroll;
|
||||
}
|
||||
|
||||
if ( e.stopPropagation )
|
||||
e.stopPropagation();
|
||||
if ( e.preventDefault )
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
if ( pageInput.length ) {
|
||||
pageInput.closest('form').submit( function() {
|
||||
|
||||
// Reset paging var for new filters/searches but not for bulk actions. See #17685.
|
||||
if ( $('select[name="action"]').val() == -1 && $('select[name="action2"]').val() == -1 && pageInput.val() == currentPage )
|
||||
pageInput.val('1');
|
||||
});
|
||||
}
|
||||
|
||||
$('.search-box input[type="search"], .search-box input[type="submit"]').mousedown(function () {
|
||||
$('select[name^="action"]').val('-1');
|
||||
});
|
||||
|
||||
// Scroll into view when focused
|
||||
$('#contextual-help-link, #show-settings-link').on( 'focus.scroll-into-view', function(e){
|
||||
if ( e.target.scrollIntoView )
|
||||
e.target.scrollIntoView(false);
|
||||
});
|
||||
|
||||
// Disable upload buttons until files are selected
|
||||
(function(){
|
||||
var button, input, form = $('form.wp-upload-form');
|
||||
if ( ! form.length )
|
||||
return;
|
||||
button = form.find('input[type="submit"]');
|
||||
input = form.find('input[type="file"]');
|
||||
|
||||
function toggleUploadButton() {
|
||||
button.prop('disabled', '' === input.map( function() {
|
||||
return $(this).val();
|
||||
}).get().join(''));
|
||||
}
|
||||
toggleUploadButton();
|
||||
input.on('change', toggleUploadButton);
|
||||
})();
|
||||
|
||||
function pinMenu( event ) {
|
||||
var windowPos = $window.scrollTop(),
|
||||
resizing = ! event || event.type !== 'scroll';
|
||||
|
||||
if ( isIOS || isIE8 || $adminmenu.data( 'wp-responsive' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( height.menu + height.adminbar < height.window ||
|
||||
height.menu + height.adminbar + 20 > height.wpwrap ) {
|
||||
unpinMenu();
|
||||
return;
|
||||
}
|
||||
|
||||
menuIsPinned = true;
|
||||
|
||||
if ( height.menu + height.adminbar > height.window ) {
|
||||
// Check for overscrolling
|
||||
if ( windowPos < 0 ) {
|
||||
if ( ! pinnedMenuTop ) {
|
||||
pinnedMenuTop = true;
|
||||
pinnedMenuBottom = false;
|
||||
|
||||
$adminMenuWrap.css({
|
||||
position: 'fixed',
|
||||
top: '',
|
||||
bottom: ''
|
||||
});
|
||||
}
|
||||
|
||||
return;
|
||||
} else if ( windowPos + height.window > $document.height() - 1 ) {
|
||||
if ( ! pinnedMenuBottom ) {
|
||||
pinnedMenuBottom = true;
|
||||
pinnedMenuTop = false;
|
||||
|
||||
$adminMenuWrap.css({
|
||||
position: 'fixed',
|
||||
top: '',
|
||||
bottom: 0
|
||||
});
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if ( windowPos > lastScrollPosition ) {
|
||||
// Scrolling down
|
||||
if ( pinnedMenuTop ) {
|
||||
// let it scroll
|
||||
pinnedMenuTop = false;
|
||||
menuTop = $adminMenuWrap.offset().top - height.adminbar - ( windowPos - lastScrollPosition );
|
||||
|
||||
if ( menuTop + height.menu + height.adminbar < windowPos + height.window ) {
|
||||
menuTop = windowPos + height.window - height.menu - height.adminbar;
|
||||
}
|
||||
|
||||
$adminMenuWrap.css({
|
||||
position: 'absolute',
|
||||
top: menuTop,
|
||||
bottom: ''
|
||||
});
|
||||
} else if ( ! pinnedMenuBottom && $adminMenuWrap.offset().top + height.menu < windowPos + height.window ) {
|
||||
// pin the bottom
|
||||
pinnedMenuBottom = true;
|
||||
|
||||
$adminMenuWrap.css({
|
||||
position: 'fixed',
|
||||
top: '',
|
||||
bottom: 0
|
||||
});
|
||||
}
|
||||
} else if ( windowPos < lastScrollPosition ) {
|
||||
// Scrolling up
|
||||
if ( pinnedMenuBottom ) {
|
||||
// let it scroll
|
||||
pinnedMenuBottom = false;
|
||||
menuTop = $adminMenuWrap.offset().top - height.adminbar + ( lastScrollPosition - windowPos );
|
||||
|
||||
if ( menuTop + height.menu > windowPos + height.window ) {
|
||||
menuTop = windowPos;
|
||||
}
|
||||
|
||||
$adminMenuWrap.css({
|
||||
position: 'absolute',
|
||||
top: menuTop,
|
||||
bottom: ''
|
||||
});
|
||||
} else if ( ! pinnedMenuTop && $adminMenuWrap.offset().top >= windowPos + height.adminbar ) {
|
||||
// pin the top
|
||||
pinnedMenuTop = true;
|
||||
|
||||
$adminMenuWrap.css({
|
||||
position: 'fixed',
|
||||
top: '',
|
||||
bottom: ''
|
||||
});
|
||||
}
|
||||
} else if ( resizing ) {
|
||||
// Resizing
|
||||
pinnedMenuTop = pinnedMenuBottom = false;
|
||||
menuTop = windowPos + height.window - height.menu - height.adminbar - 1;
|
||||
|
||||
if ( menuTop > 0 ) {
|
||||
$adminMenuWrap.css({
|
||||
position: 'absolute',
|
||||
top: menuTop,
|
||||
bottom: ''
|
||||
});
|
||||
} else {
|
||||
unpinMenu();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
lastScrollPosition = windowPos;
|
||||
}
|
||||
|
||||
function resetHeights() {
|
||||
height = {
|
||||
window: $window.height(),
|
||||
wpwrap: $wpwrap.height(),
|
||||
adminbar: $adminbar.height(),
|
||||
menu: $adminMenuWrap.height()
|
||||
};
|
||||
}
|
||||
|
||||
function unpinMenu() {
|
||||
if ( isIOS || ! menuIsPinned ) {
|
||||
return;
|
||||
}
|
||||
|
||||
pinnedMenuTop = pinnedMenuBottom = menuIsPinned = false;
|
||||
$adminMenuWrap.css({
|
||||
position: '',
|
||||
top: '',
|
||||
bottom: ''
|
||||
});
|
||||
}
|
||||
|
||||
function setPinMenu() {
|
||||
resetHeights();
|
||||
|
||||
if ( $adminmenu.data('wp-responsive') ) {
|
||||
$body.removeClass( 'sticky-menu' );
|
||||
unpinMenu();
|
||||
} else if ( height.menu + height.adminbar > height.window ) {
|
||||
pinMenu();
|
||||
$body.removeClass( 'sticky-menu' );
|
||||
} else {
|
||||
$body.addClass( 'sticky-menu' );
|
||||
unpinMenu();
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! isIOS ) {
|
||||
$window.on( 'scroll.pin-menu', pinMenu );
|
||||
$document.on( 'tinymce-editor-init.pin-menu', function( event, editor ) {
|
||||
editor.on( 'wp-autoresize', resetHeights );
|
||||
});
|
||||
}
|
||||
|
||||
window.wpResponsive = {
|
||||
init: function() {
|
||||
var self = this;
|
||||
|
||||
// Modify functionality based on custom activate/deactivate event
|
||||
$document.on( 'wp-responsive-activate.wp-responsive', function() {
|
||||
self.activate();
|
||||
}).on( 'wp-responsive-deactivate.wp-responsive', function() {
|
||||
self.deactivate();
|
||||
});
|
||||
|
||||
$( '#wp-admin-bar-menu-toggle a' ).attr( 'aria-expanded', 'false' );
|
||||
|
||||
// Toggle sidebar when toggle is clicked
|
||||
$( '#wp-admin-bar-menu-toggle' ).on( 'click.wp-responsive', function( event ) {
|
||||
event.preventDefault();
|
||||
|
||||
// close any open toolbar submenus
|
||||
$adminbar.find( '.hover' ).removeClass( 'hover' );
|
||||
|
||||
$wpwrap.toggleClass( 'wp-responsive-open' );
|
||||
if ( $wpwrap.hasClass( 'wp-responsive-open' ) ) {
|
||||
$(this).find('a').attr( 'aria-expanded', 'true' );
|
||||
$( '#adminmenu a:first' ).focus();
|
||||
} else {
|
||||
$(this).find('a').attr( 'aria-expanded', 'false' );
|
||||
}
|
||||
} );
|
||||
|
||||
// Add menu events
|
||||
$adminmenu.on( 'click.wp-responsive', 'li.wp-has-submenu > a', function( event ) {
|
||||
if ( ! $adminmenu.data('wp-responsive') ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$( this ).parent( 'li' ).toggleClass( 'selected' );
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
self.trigger();
|
||||
$document.on( 'wp-window-resized.wp-responsive', $.proxy( this.trigger, this ) );
|
||||
|
||||
// This needs to run later as UI Sortable may be initialized later on $(document).ready()
|
||||
$window.on( 'load.wp-responsive', function() {
|
||||
var width = navigator.userAgent.indexOf('AppleWebKit/') > -1 ? $window.width() : window.innerWidth;
|
||||
|
||||
if ( width <= 782 ) {
|
||||
self.disableSortables();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
activate: function() {
|
||||
setPinMenu();
|
||||
|
||||
if ( ! $body.hasClass( 'auto-fold' ) ) {
|
||||
$body.addClass( 'auto-fold' );
|
||||
}
|
||||
|
||||
$adminmenu.data( 'wp-responsive', 1 );
|
||||
this.disableSortables();
|
||||
},
|
||||
|
||||
deactivate: function() {
|
||||
setPinMenu();
|
||||
$adminmenu.removeData('wp-responsive');
|
||||
this.enableSortables();
|
||||
},
|
||||
|
||||
trigger: function() {
|
||||
var width;
|
||||
|
||||
if ( window.innerWidth ) {
|
||||
// window.innerWidth is affected by zooming on phones
|
||||
width = Math.max( window.innerWidth, document.documentElement.clientWidth );
|
||||
} else {
|
||||
// Exclude IE < 9, it doesn't support @media CSS rules
|
||||
return;
|
||||
}
|
||||
|
||||
if ( width <= 782 ) {
|
||||
if ( ! wpResponsiveActive ) {
|
||||
$document.trigger( 'wp-responsive-activate' );
|
||||
wpResponsiveActive = true;
|
||||
}
|
||||
} else {
|
||||
if ( wpResponsiveActive ) {
|
||||
$document.trigger( 'wp-responsive-deactivate' );
|
||||
wpResponsiveActive = false;
|
||||
}
|
||||
}
|
||||
|
||||
if ( width <= 480 ) {
|
||||
this.enableOverlay();
|
||||
} else {
|
||||
this.disableOverlay();
|
||||
}
|
||||
},
|
||||
|
||||
enableOverlay: function() {
|
||||
if ( $overlay.length === 0 ) {
|
||||
$overlay = $( '<div id="wp-responsive-overlay"></div>' )
|
||||
.insertAfter( '#wpcontent' )
|
||||
.hide()
|
||||
.on( 'click.wp-responsive', function() {
|
||||
$toolbar.find( '.menupop.hover' ).removeClass( 'hover' );
|
||||
$( this ).hide();
|
||||
});
|
||||
}
|
||||
|
||||
$toolbarPopups.on( 'click.wp-responsive', function() {
|
||||
$overlay.show();
|
||||
});
|
||||
},
|
||||
|
||||
disableOverlay: function() {
|
||||
$toolbarPopups.off( 'click.wp-responsive' );
|
||||
$overlay.hide();
|
||||
},
|
||||
|
||||
disableSortables: function() {
|
||||
if ( $sortables.length ) {
|
||||
try {
|
||||
$sortables.sortable('disable');
|
||||
} catch(e) {}
|
||||
}
|
||||
},
|
||||
|
||||
enableSortables: function() {
|
||||
if ( $sortables.length ) {
|
||||
try {
|
||||
$sortables.sortable('enable');
|
||||
} catch(e) {}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Add an ARIA role `button` to elements that behave like UI controls when JavaScript is on.
|
||||
function aria_button_if_js() {
|
||||
$( '.aria-button-if-js' ).attr( 'role', 'button' );
|
||||
}
|
||||
|
||||
$( document ).ajaxComplete( function() {
|
||||
aria_button_if_js();
|
||||
});
|
||||
|
||||
window.wpResponsive.init();
|
||||
setPinMenu();
|
||||
currentMenuItemHasPopup();
|
||||
makeNoticesDismissible();
|
||||
aria_button_if_js();
|
||||
|
||||
$document.on( 'wp-pin-menu wp-window-resized.pin-menu postboxes-columnchange.pin-menu postbox-toggled.pin-menu wp-collapse-menu.pin-menu wp-scroll-start.pin-menu', setPinMenu );
|
||||
|
||||
// Set initial focus on a specific element.
|
||||
$( '.wp-initial-focus' ).focus();
|
||||
});
|
||||
|
||||
// Fire a custom jQuery event at the end of window resize
|
||||
( function() {
|
||||
var timeout;
|
||||
|
||||
function triggerEvent() {
|
||||
$document.trigger( 'wp-window-resized' );
|
||||
}
|
||||
|
||||
function fireOnce() {
|
||||
window.clearTimeout( timeout );
|
||||
timeout = window.setTimeout( triggerEvent, 200 );
|
||||
}
|
||||
|
||||
$window.on( 'resize.wp-fire-once', fireOnce );
|
||||
}());
|
||||
|
||||
// Make Windows 8 devices play along nicely.
|
||||
(function(){
|
||||
if ( '-ms-user-select' in document.documentElement.style && navigator.userAgent.match(/IEMobile\/10\.0/) ) {
|
||||
var msViewportStyle = document.createElement( 'style' );
|
||||
msViewportStyle.appendChild(
|
||||
document.createTextNode( '@-ms-viewport{width:auto!important}' )
|
||||
);
|
||||
document.getElementsByTagName( 'head' )[0].appendChild( msViewportStyle );
|
||||
}
|
||||
})();
|
||||
|
||||
}( jQuery, window ));
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/common.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/common.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
75
Kapitel_7/Lektion_4/wordpress/wp-admin/js/custom-background.js
Executable file
75
Kapitel_7/Lektion_4/wordpress/wp-admin/js/custom-background.js
Executable file
@@ -0,0 +1,75 @@
|
||||
/* global ajaxurl */
|
||||
(function($) {
|
||||
$(document).ready(function() {
|
||||
var frame,
|
||||
bgImage = $( '#custom-background-image' );
|
||||
|
||||
$('#background-color').wpColorPicker({
|
||||
change: function( event, ui ) {
|
||||
bgImage.css('background-color', ui.color.toString());
|
||||
},
|
||||
clear: function() {
|
||||
bgImage.css('background-color', '');
|
||||
}
|
||||
});
|
||||
|
||||
$('input[name="background-position-x"]').change(function() {
|
||||
bgImage.css('background-position', $(this).val() + ' top');
|
||||
});
|
||||
|
||||
$('input[name="background-repeat"]').change(function() {
|
||||
bgImage.css('background-repeat', $(this).val());
|
||||
});
|
||||
|
||||
$('#choose-from-library-link').click( function( event ) {
|
||||
var $el = $(this);
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
// If the media frame already exists, reopen it.
|
||||
if ( frame ) {
|
||||
frame.open();
|
||||
return;
|
||||
}
|
||||
|
||||
// Create the media frame.
|
||||
frame = wp.media.frames.customBackground = wp.media({
|
||||
// Set the title of the modal.
|
||||
title: $el.data('choose'),
|
||||
|
||||
// Tell the modal to show only images.
|
||||
library: {
|
||||
type: 'image'
|
||||
},
|
||||
|
||||
// Customize the submit button.
|
||||
button: {
|
||||
// Set the text of the button.
|
||||
text: $el.data('update'),
|
||||
// Tell the button not to close the modal, since we're
|
||||
// going to refresh the page when the image is selected.
|
||||
close: false
|
||||
}
|
||||
});
|
||||
|
||||
// When an image is selected, run a callback.
|
||||
frame.on( 'select', function() {
|
||||
// Grab the selected attachment.
|
||||
var attachment = frame.state().get('selection').first();
|
||||
|
||||
// Run an AJAX request to set the background image.
|
||||
$.post( ajaxurl, {
|
||||
action: 'set-background-image',
|
||||
attachment_id: attachment.id,
|
||||
size: 'full'
|
||||
}).done( function() {
|
||||
// When the request completes, reload the window.
|
||||
window.location.reload();
|
||||
});
|
||||
});
|
||||
|
||||
// Finally, open the modal.
|
||||
frame.open();
|
||||
});
|
||||
});
|
||||
})(jQuery);
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/custom-background.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/custom-background.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
!function(a){a(document).ready(function(){var b,c=a("#custom-background-image");a("#background-color").wpColorPicker({change:function(a,b){c.css("background-color",b.color.toString())},clear:function(){c.css("background-color","")}}),a('input[name="background-position-x"]').change(function(){c.css("background-position",a(this).val()+" top")}),a('input[name="background-repeat"]').change(function(){c.css("background-repeat",a(this).val())}),a("#choose-from-library-link").click(function(c){var d=a(this);return c.preventDefault(),b?void b.open():(b=wp.media.frames.customBackground=wp.media({title:d.data("choose"),library:{type:"image"},button:{text:d.data("update"),close:!1}}),b.on("select",function(){var c=b.state().get("selection").first();a.post(ajaxurl,{action:"set-background-image",attachment_id:c.id,size:"full"}).done(function(){window.location.reload()})}),void b.open())})})}(jQuery);
|
||||
61
Kapitel_7/Lektion_4/wordpress/wp-admin/js/custom-header.js
Executable file
61
Kapitel_7/Lektion_4/wordpress/wp-admin/js/custom-header.js
Executable file
@@ -0,0 +1,61 @@
|
||||
/* global isRtl */
|
||||
(function($) {
|
||||
var frame;
|
||||
|
||||
$( function() {
|
||||
// Fetch available headers and apply jQuery.masonry
|
||||
// once the images have loaded.
|
||||
var $headers = $('.available-headers');
|
||||
|
||||
$headers.imagesLoaded( function() {
|
||||
$headers.masonry({
|
||||
itemSelector: '.default-header',
|
||||
isRTL: !! ( 'undefined' != typeof isRtl && isRtl )
|
||||
});
|
||||
});
|
||||
|
||||
// Build the choose from library frame.
|
||||
$('#choose-from-library-link').click( function( event ) {
|
||||
var $el = $(this);
|
||||
event.preventDefault();
|
||||
|
||||
// If the media frame already exists, reopen it.
|
||||
if ( frame ) {
|
||||
frame.open();
|
||||
return;
|
||||
}
|
||||
|
||||
// Create the media frame.
|
||||
frame = wp.media.frames.customHeader = wp.media({
|
||||
// Set the title of the modal.
|
||||
title: $el.data('choose'),
|
||||
|
||||
// Tell the modal to show only images.
|
||||
library: {
|
||||
type: 'image'
|
||||
},
|
||||
|
||||
// Customize the submit button.
|
||||
button: {
|
||||
// Set the text of the button.
|
||||
text: $el.data('update'),
|
||||
// Tell the button not to close the modal, since we're
|
||||
// going to refresh the page when the image is selected.
|
||||
close: false
|
||||
}
|
||||
});
|
||||
|
||||
// When an image is selected, run a callback.
|
||||
frame.on( 'select', function() {
|
||||
// Grab the selected attachment.
|
||||
var attachment = frame.state().get('selection').first(),
|
||||
link = $el.data('updateLink');
|
||||
|
||||
// Tell the browser to navigate to the crop step.
|
||||
window.location = link + '&file=' + attachment.id;
|
||||
});
|
||||
|
||||
frame.open();
|
||||
});
|
||||
});
|
||||
}(jQuery));
|
||||
3856
Kapitel_7/Lektion_4/wordpress/wp-admin/js/customize-controls.js
Executable file
3856
Kapitel_7/Lektion_4/wordpress/wp-admin/js/customize-controls.js
Executable file
File diff suppressed because it is too large
Load Diff
2
Kapitel_7/Lektion_4/wordpress/wp-admin/js/customize-controls.min.js
vendored
Executable file
2
Kapitel_7/Lektion_4/wordpress/wp-admin/js/customize-controls.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
2793
Kapitel_7/Lektion_4/wordpress/wp-admin/js/customize-nav-menus.js
Executable file
2793
Kapitel_7/Lektion_4/wordpress/wp-admin/js/customize-nav-menus.js
Executable file
File diff suppressed because it is too large
Load Diff
2
Kapitel_7/Lektion_4/wordpress/wp-admin/js/customize-nav-menus.min.js
vendored
Executable file
2
Kapitel_7/Lektion_4/wordpress/wp-admin/js/customize-nav-menus.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
2179
Kapitel_7/Lektion_4/wordpress/wp-admin/js/customize-widgets.js
Executable file
2179
Kapitel_7/Lektion_4/wordpress/wp-admin/js/customize-widgets.js
Executable file
File diff suppressed because it is too large
Load Diff
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/customize-widgets.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/customize-widgets.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
189
Kapitel_7/Lektion_4/wordpress/wp-admin/js/dashboard.js
Executable file
189
Kapitel_7/Lektion_4/wordpress/wp-admin/js/dashboard.js
Executable file
@@ -0,0 +1,189 @@
|
||||
/* global pagenow, ajaxurl, postboxes, wpActiveEditor:true */
|
||||
var ajaxWidgets, ajaxPopulateWidgets, quickPressLoad;
|
||||
|
||||
jQuery(document).ready( function($) {
|
||||
var welcomePanel = $( '#welcome-panel' ),
|
||||
welcomePanelHide = $('#wp_welcome_panel-hide'),
|
||||
updateWelcomePanel;
|
||||
|
||||
updateWelcomePanel = function( visible ) {
|
||||
$.post( ajaxurl, {
|
||||
action: 'update-welcome-panel',
|
||||
visible: visible,
|
||||
welcomepanelnonce: $( '#welcomepanelnonce' ).val()
|
||||
});
|
||||
};
|
||||
|
||||
if ( welcomePanel.hasClass('hidden') && welcomePanelHide.prop('checked') ) {
|
||||
welcomePanel.removeClass('hidden');
|
||||
}
|
||||
|
||||
$('.welcome-panel-close, .welcome-panel-dismiss a', welcomePanel).click( function(e) {
|
||||
e.preventDefault();
|
||||
welcomePanel.addClass('hidden');
|
||||
updateWelcomePanel( 0 );
|
||||
$('#wp_welcome_panel-hide').prop('checked', false);
|
||||
});
|
||||
|
||||
welcomePanelHide.click( function() {
|
||||
welcomePanel.toggleClass('hidden', ! this.checked );
|
||||
updateWelcomePanel( this.checked ? 1 : 0 );
|
||||
});
|
||||
|
||||
// These widgets are sometimes populated via ajax
|
||||
ajaxWidgets = ['dashboard_primary'];
|
||||
|
||||
ajaxPopulateWidgets = function(el) {
|
||||
function show(i, id) {
|
||||
var p, e = $('#' + id + ' div.inside:visible').find('.widget-loading');
|
||||
if ( e.length ) {
|
||||
p = e.parent();
|
||||
setTimeout( function(){
|
||||
p.load( ajaxurl + '?action=dashboard-widgets&widget=' + id + '&pagenow=' + pagenow, '', function() {
|
||||
p.hide().slideDown('normal', function(){
|
||||
$(this).css('display', '');
|
||||
});
|
||||
});
|
||||
}, i * 500 );
|
||||
}
|
||||
}
|
||||
|
||||
if ( el ) {
|
||||
el = el.toString();
|
||||
if ( $.inArray(el, ajaxWidgets) !== -1 ) {
|
||||
show(0, el);
|
||||
}
|
||||
} else {
|
||||
$.each( ajaxWidgets, show );
|
||||
}
|
||||
};
|
||||
ajaxPopulateWidgets();
|
||||
|
||||
postboxes.add_postbox_toggles(pagenow, { pbshow: ajaxPopulateWidgets } );
|
||||
|
||||
/* QuickPress */
|
||||
quickPressLoad = function() {
|
||||
var act = $('#quickpost-action'), t;
|
||||
|
||||
$( '#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]' ).prop( 'disabled' , false );
|
||||
|
||||
t = $('#quick-press').submit( function( e ) {
|
||||
e.preventDefault();
|
||||
$('#dashboard_quick_press #publishing-action .spinner').show();
|
||||
$('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop('disabled', true);
|
||||
|
||||
$.post( t.attr( 'action' ), t.serializeArray(), function( data ) {
|
||||
// Replace the form, and prepend the published post.
|
||||
$('#dashboard_quick_press .inside').html( data );
|
||||
$('#quick-press').removeClass('initial-form');
|
||||
quickPressLoad();
|
||||
highlightLatestPost();
|
||||
$('#title').focus();
|
||||
});
|
||||
|
||||
function highlightLatestPost () {
|
||||
var latestPost = $('.drafts ul li').first();
|
||||
latestPost.css('background', '#fffbe5');
|
||||
setTimeout(function () {
|
||||
latestPost.css('background', 'none');
|
||||
}, 1000);
|
||||
}
|
||||
} );
|
||||
|
||||
$('#publish').click( function() { act.val( 'post-quickpress-publish' ); } );
|
||||
|
||||
$('#title, #tags-input, #content').each( function() {
|
||||
var input = $(this), prompt = $('#' + this.id + '-prompt-text');
|
||||
|
||||
if ( '' === this.value ) {
|
||||
prompt.removeClass('screen-reader-text');
|
||||
}
|
||||
|
||||
prompt.click( function() {
|
||||
$(this).addClass('screen-reader-text');
|
||||
input.focus();
|
||||
});
|
||||
|
||||
input.blur( function() {
|
||||
if ( '' === this.value ) {
|
||||
prompt.removeClass('screen-reader-text');
|
||||
}
|
||||
});
|
||||
|
||||
input.focus( function() {
|
||||
prompt.addClass('screen-reader-text');
|
||||
});
|
||||
});
|
||||
|
||||
$('#quick-press').on( 'click focusin', function() {
|
||||
wpActiveEditor = 'content';
|
||||
});
|
||||
|
||||
autoResizeTextarea();
|
||||
};
|
||||
quickPressLoad();
|
||||
|
||||
$( '.meta-box-sortables' ).sortable( 'option', 'containment', '#wpwrap' );
|
||||
|
||||
function autoResizeTextarea() {
|
||||
if ( document.documentMode && document.documentMode < 9 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Add a hidden div. We'll copy over the text from the textarea to measure its height.
|
||||
$('body').append( '<div class="quick-draft-textarea-clone" style="display: none;"></div>' );
|
||||
|
||||
var clone = $('.quick-draft-textarea-clone'),
|
||||
editor = $('#content'),
|
||||
editorHeight = editor.height(),
|
||||
// 100px roughly accounts for browser chrome and allows the
|
||||
// save draft button to show on-screen at the same time.
|
||||
editorMaxHeight = $(window).height() - 100;
|
||||
|
||||
// Match up textarea and clone div as much as possible.
|
||||
// Padding cannot be reliably retrieved using shorthand in all browsers.
|
||||
clone.css({
|
||||
'font-family': editor.css('font-family'),
|
||||
'font-size': editor.css('font-size'),
|
||||
'line-height': editor.css('line-height'),
|
||||
'padding-bottom': editor.css('paddingBottom'),
|
||||
'padding-left': editor.css('paddingLeft'),
|
||||
'padding-right': editor.css('paddingRight'),
|
||||
'padding-top': editor.css('paddingTop'),
|
||||
'white-space': 'pre-wrap',
|
||||
'word-wrap': 'break-word',
|
||||
'display': 'none'
|
||||
});
|
||||
|
||||
// propertychange is for IE < 9
|
||||
editor.on('focus input propertychange', function() {
|
||||
var $this = $(this),
|
||||
// is to ensure that the height of a final trailing newline is included.
|
||||
textareaContent = $this.val() + ' ',
|
||||
// 2px is for border-top & border-bottom
|
||||
cloneHeight = clone.css('width', $this.css('width')).text(textareaContent).outerHeight() + 2;
|
||||
|
||||
// Default to having scrollbars
|
||||
editor.css('overflow-y', 'auto');
|
||||
|
||||
// Only change the height if it has indeed changed and both heights are below the max.
|
||||
if ( cloneHeight === editorHeight || ( cloneHeight >= editorMaxHeight && editorHeight >= editorMaxHeight ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Don't allow editor to exceed height of window.
|
||||
// This is also bound in CSS to a max-height of 1300px to be extra safe.
|
||||
if ( cloneHeight > editorMaxHeight ) {
|
||||
editorHeight = editorMaxHeight;
|
||||
} else {
|
||||
editorHeight = cloneHeight;
|
||||
}
|
||||
|
||||
// No scrollbars as we change height, not for IE < 9
|
||||
editor.css('overflow', 'hidden');
|
||||
|
||||
$this.css('height', editorHeight + 'px');
|
||||
});
|
||||
}
|
||||
|
||||
} );
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/dashboard.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/dashboard.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(a){function b(){if(!(document.documentMode&&document.documentMode<9)){a("body").append('<div class="quick-draft-textarea-clone" style="display: none;"></div>');var b=a(".quick-draft-textarea-clone"),c=a("#content"),d=c.height(),e=a(window).height()-100;b.css({"font-family":c.css("font-family"),"font-size":c.css("font-size"),"line-height":c.css("line-height"),"padding-bottom":c.css("paddingBottom"),"padding-left":c.css("paddingLeft"),"padding-right":c.css("paddingRight"),"padding-top":c.css("paddingTop"),"white-space":"pre-wrap","word-wrap":"break-word",display:"none"}),c.on("focus input propertychange",function(){var f=a(this),g=f.val()+" ",h=b.css("width",f.css("width")).text(g).outerHeight()+2;c.css("overflow-y","auto"),h===d||h>=e&&d>=e||(d=h>e?e:h,c.css("overflow","hidden"),f.css("height",d+"px"))})}}var c,d=a("#welcome-panel"),e=a("#wp_welcome_panel-hide");c=function(b){a.post(ajaxurl,{action:"update-welcome-panel",visible:b,welcomepanelnonce:a("#welcomepanelnonce").val()})},d.hasClass("hidden")&&e.prop("checked")&&d.removeClass("hidden"),a(".welcome-panel-close, .welcome-panel-dismiss a",d).click(function(b){b.preventDefault(),d.addClass("hidden"),c(0),a("#wp_welcome_panel-hide").prop("checked",!1)}),e.click(function(){d.toggleClass("hidden",!this.checked),c(this.checked?1:0)}),ajaxWidgets=["dashboard_primary"],ajaxPopulateWidgets=function(b){function c(b,c){var d,e=a("#"+c+" div.inside:visible").find(".widget-loading");e.length&&(d=e.parent(),setTimeout(function(){d.load(ajaxurl+"?action=dashboard-widgets&widget="+c+"&pagenow="+pagenow,"",function(){d.hide().slideDown("normal",function(){a(this).css("display","")})})},500*b))}b?(b=b.toString(),-1!==a.inArray(b,ajaxWidgets)&&c(0,b)):a.each(ajaxWidgets,c)},ajaxPopulateWidgets(),postboxes.add_postbox_toggles(pagenow,{pbshow:ajaxPopulateWidgets}),quickPressLoad=function(){var c,d=a("#quickpost-action");a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",!1),c=a("#quick-press").submit(function(b){function d(){var b=a(".drafts ul li").first();b.css("background","#fffbe5"),setTimeout(function(){b.css("background","none")},1e3)}b.preventDefault(),a("#dashboard_quick_press #publishing-action .spinner").show(),a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",!0),a.post(c.attr("action"),c.serializeArray(),function(b){a("#dashboard_quick_press .inside").html(b),a("#quick-press").removeClass("initial-form"),quickPressLoad(),d(),a("#title").focus()})}),a("#publish").click(function(){d.val("post-quickpress-publish")}),a("#title, #tags-input, #content").each(function(){var b=a(this),c=a("#"+this.id+"-prompt-text");""===this.value&&c.removeClass("screen-reader-text"),c.click(function(){a(this).addClass("screen-reader-text"),b.focus()}),b.blur(function(){""===this.value&&c.removeClass("screen-reader-text")}),b.focus(function(){c.addClass("screen-reader-text")})}),a("#quick-press").on("click focusin",function(){wpActiveEditor="content"}),b()},quickPressLoad(),a(".meta-box-sortables").sortable("option","containment","#wpwrap")});
|
||||
937
Kapitel_7/Lektion_4/wordpress/wp-admin/js/edit-comments.js
Executable file
937
Kapitel_7/Lektion_4/wordpress/wp-admin/js/edit-comments.js
Executable file
@@ -0,0 +1,937 @@
|
||||
/* global adminCommentsL10n, thousandsSeparator, list_args, QTags, ajaxurl, wpAjax */
|
||||
var setCommentsList, theList, theExtraList, commentReply;
|
||||
|
||||
(function($) {
|
||||
var getCount, updateCount, updateCountText, updatePending, updateApproved,
|
||||
updateHtmlTitle, updateDashboardText, adminTitle = document.title,
|
||||
isDashboard = $('#dashboard_right_now').length,
|
||||
titleDiv, titleRegEx;
|
||||
|
||||
getCount = function(el) {
|
||||
var n = parseInt( el.html().replace(/[^0-9]+/g, ''), 10 );
|
||||
if ( isNaN(n) ) {
|
||||
return 0;
|
||||
}
|
||||
return n;
|
||||
};
|
||||
|
||||
updateCount = function(el, n) {
|
||||
var n1 = '';
|
||||
if ( isNaN(n) ) {
|
||||
return;
|
||||
}
|
||||
n = n < 1 ? '0' : n.toString();
|
||||
if ( n.length > 3 ) {
|
||||
while ( n.length > 3 ) {
|
||||
n1 = thousandsSeparator + n.substr(n.length - 3) + n1;
|
||||
n = n.substr(0, n.length - 3);
|
||||
}
|
||||
n = n + n1;
|
||||
}
|
||||
el.html(n);
|
||||
};
|
||||
|
||||
updateApproved = function( diff, commentPostId ) {
|
||||
var postSelector = '.post-com-count-' + commentPostId,
|
||||
noClass = 'comment-count-no-comments',
|
||||
approvedClass = 'comment-count-approved',
|
||||
approved,
|
||||
noComments;
|
||||
|
||||
updateCountText( 'span.approved-count', diff );
|
||||
|
||||
if ( ! commentPostId ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// cache selectors to not get dupes
|
||||
approved = $( 'span.' + approvedClass, postSelector );
|
||||
noComments = $( 'span.' + noClass, postSelector );
|
||||
|
||||
approved.each(function() {
|
||||
var a = $(this), n = getCount(a) + diff;
|
||||
if ( n < 1 )
|
||||
n = 0;
|
||||
|
||||
if ( 0 === n ) {
|
||||
a.removeClass( approvedClass ).addClass( noClass );
|
||||
} else {
|
||||
a.addClass( approvedClass ).removeClass( noClass );
|
||||
}
|
||||
updateCount( a, n );
|
||||
});
|
||||
|
||||
noComments.each(function() {
|
||||
var a = $(this);
|
||||
if ( diff > 0 ) {
|
||||
a.removeClass( noClass ).addClass( approvedClass );
|
||||
} else {
|
||||
a.addClass( noClass ).removeClass( approvedClass );
|
||||
}
|
||||
updateCount( a, diff );
|
||||
});
|
||||
};
|
||||
|
||||
updateCountText = function( selector, diff ) {
|
||||
$( selector ).each(function() {
|
||||
var a = $(this), n = getCount(a) + diff;
|
||||
if ( n < 1 ) {
|
||||
n = 0;
|
||||
}
|
||||
updateCount( a, n );
|
||||
});
|
||||
};
|
||||
|
||||
updateDashboardText = function ( response ) {
|
||||
if ( ! isDashboard || ! response || ! response.i18n_comments_text ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var rightNow = $( '#dashboard_right_now' );
|
||||
|
||||
$( '.comment-count a', rightNow ).text( response.i18n_comments_text );
|
||||
$( '.comment-mod-count a', rightNow ).text( response.i18n_moderation_text )
|
||||
.parent()
|
||||
[ response.in_moderation > 0 ? 'removeClass' : 'addClass' ]( 'hidden' );
|
||||
};
|
||||
|
||||
updateHtmlTitle = function ( diff ) {
|
||||
var newTitle, regExMatch, titleCount, commentFrag;
|
||||
|
||||
titleRegEx = titleRegEx || new RegExp( adminCommentsL10n.docTitleCommentsCount.replace( '%s', '\\([0-9' + thousandsSeparator + ']+\\)' ) + '?' );
|
||||
// count funcs operate on a $'d element
|
||||
titleDiv = titleDiv || $( '<div />' );
|
||||
newTitle = adminTitle;
|
||||
|
||||
commentFrag = titleRegEx.exec( document.title );
|
||||
if ( commentFrag ) {
|
||||
commentFrag = commentFrag[0];
|
||||
titleDiv.html( commentFrag );
|
||||
titleCount = getCount( titleDiv ) + diff;
|
||||
} else {
|
||||
titleDiv.html( 0 );
|
||||
titleCount = diff;
|
||||
}
|
||||
|
||||
if ( titleCount >= 1 ) {
|
||||
updateCount( titleDiv, titleCount );
|
||||
regExMatch = titleRegEx.exec( document.title );
|
||||
if ( regExMatch ) {
|
||||
newTitle = document.title.replace( regExMatch[0], adminCommentsL10n.docTitleCommentsCount.replace( '%s', titleDiv.text() ) + ' ' );
|
||||
}
|
||||
} else {
|
||||
regExMatch = titleRegEx.exec( newTitle );
|
||||
if ( regExMatch ) {
|
||||
newTitle = newTitle.replace( regExMatch[0], adminCommentsL10n.docTitleComments );
|
||||
}
|
||||
}
|
||||
document.title = newTitle;
|
||||
};
|
||||
|
||||
updatePending = function( diff, commentPostId ) {
|
||||
var postSelector = '.post-com-count-' + commentPostId,
|
||||
noClass = 'comment-count-no-pending',
|
||||
noParentClass = 'post-com-count-no-pending',
|
||||
pendingClass = 'comment-count-pending',
|
||||
pending,
|
||||
noPending;
|
||||
|
||||
if ( ! isDashboard ) {
|
||||
updateHtmlTitle( diff );
|
||||
}
|
||||
|
||||
$( 'span.pending-count' ).each(function() {
|
||||
var a = $(this), n = getCount(a) + diff;
|
||||
if ( n < 1 )
|
||||
n = 0;
|
||||
a.closest('.awaiting-mod')[ 0 === n ? 'addClass' : 'removeClass' ]('count-0');
|
||||
updateCount( a, n );
|
||||
});
|
||||
|
||||
if ( ! commentPostId ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// cache selectors to not get dupes
|
||||
pending = $( 'span.' + pendingClass, postSelector );
|
||||
noPending = $( 'span.' + noClass, postSelector );
|
||||
|
||||
pending.each(function() {
|
||||
var a = $(this), n = getCount(a) + diff;
|
||||
if ( n < 1 )
|
||||
n = 0;
|
||||
|
||||
if ( 0 === n ) {
|
||||
a.parent().addClass( noParentClass );
|
||||
a.removeClass( pendingClass ).addClass( noClass );
|
||||
} else {
|
||||
a.parent().removeClass( noParentClass );
|
||||
a.addClass( pendingClass ).removeClass( noClass );
|
||||
}
|
||||
updateCount( a, n );
|
||||
});
|
||||
|
||||
noPending.each(function() {
|
||||
var a = $(this);
|
||||
if ( diff > 0 ) {
|
||||
a.parent().removeClass( noParentClass );
|
||||
a.removeClass( noClass ).addClass( pendingClass );
|
||||
} else {
|
||||
a.parent().addClass( noParentClass );
|
||||
a.addClass( noClass ).removeClass( pendingClass );
|
||||
}
|
||||
updateCount( a, diff );
|
||||
});
|
||||
};
|
||||
|
||||
setCommentsList = function() {
|
||||
var totalInput, perPageInput, pageInput, dimAfter, delBefore, updateTotalCount, delAfter, refillTheExtraList, diff,
|
||||
lastConfidentTime = 0;
|
||||
|
||||
totalInput = $('input[name="_total"]', '#comments-form');
|
||||
perPageInput = $('input[name="_per_page"]', '#comments-form');
|
||||
pageInput = $('input[name="_page"]', '#comments-form');
|
||||
|
||||
// Updates the current total (stored in the _total input)
|
||||
updateTotalCount = function( total, time, setConfidentTime ) {
|
||||
if ( time < lastConfidentTime )
|
||||
return;
|
||||
|
||||
if ( setConfidentTime )
|
||||
lastConfidentTime = time;
|
||||
|
||||
totalInput.val( total.toString() );
|
||||
};
|
||||
|
||||
// this fires when viewing "All"
|
||||
dimAfter = function( r, settings ) {
|
||||
var editRow, replyID, replyButton, response,
|
||||
c = $( '#' + settings.element );
|
||||
|
||||
if ( true !== settings.parsed ) {
|
||||
response = settings.parsed.responses[0];
|
||||
}
|
||||
|
||||
editRow = $('#replyrow');
|
||||
replyID = $('#comment_ID', editRow).val();
|
||||
replyButton = $('#replybtn', editRow);
|
||||
|
||||
if ( c.is('.unapproved') ) {
|
||||
if ( settings.data.id == replyID )
|
||||
replyButton.text(adminCommentsL10n.replyApprove);
|
||||
|
||||
c.find('div.comment_status').html('0');
|
||||
} else {
|
||||
if ( settings.data.id == replyID )
|
||||
replyButton.text(adminCommentsL10n.reply);
|
||||
|
||||
c.find('div.comment_status').html('1');
|
||||
}
|
||||
|
||||
diff = $('#' + settings.element).is('.' + settings.dimClass) ? 1 : -1;
|
||||
if ( response ) {
|
||||
updateDashboardText( response.supplemental );
|
||||
updatePending( diff, response.supplemental.postId );
|
||||
updateApproved( -1 * diff, response.supplemental.postId );
|
||||
} else {
|
||||
updatePending( diff );
|
||||
updateApproved( -1 * diff );
|
||||
}
|
||||
};
|
||||
|
||||
// Send current total, page, per_page and url
|
||||
delBefore = function( settings, list ) {
|
||||
var note, id, el, n, h, a, author,
|
||||
action = false,
|
||||
wpListsData = $( settings.target ).attr( 'data-wp-lists' );
|
||||
|
||||
settings.data._total = totalInput.val() || 0;
|
||||
settings.data._per_page = perPageInput.val() || 0;
|
||||
settings.data._page = pageInput.val() || 0;
|
||||
settings.data._url = document.location.href;
|
||||
settings.data.comment_status = $('input[name="comment_status"]', '#comments-form').val();
|
||||
|
||||
if ( wpListsData.indexOf(':trash=1') != -1 )
|
||||
action = 'trash';
|
||||
else if ( wpListsData.indexOf(':spam=1') != -1 )
|
||||
action = 'spam';
|
||||
|
||||
if ( action ) {
|
||||
id = wpListsData.replace(/.*?comment-([0-9]+).*/, '$1');
|
||||
el = $('#comment-' + id);
|
||||
note = $('#' + action + '-undo-holder').html();
|
||||
|
||||
el.find('.check-column :checkbox').prop('checked', false); // Uncheck the row so as not to be affected by Bulk Edits.
|
||||
|
||||
if ( el.siblings('#replyrow').length && commentReply.cid == id )
|
||||
commentReply.close();
|
||||
|
||||
if ( el.is('tr') ) {
|
||||
n = el.children(':visible').length;
|
||||
author = $('.author strong', el).text();
|
||||
h = $('<tr id="undo-' + id + '" class="undo un' + action + '" style="display:none;"><td colspan="' + n + '">' + note + '</td></tr>');
|
||||
} else {
|
||||
author = $('.comment-author', el).text();
|
||||
h = $('<div id="undo-' + id + '" style="display:none;" class="undo un' + action + '">' + note + '</div>');
|
||||
}
|
||||
|
||||
el.before(h);
|
||||
|
||||
$('strong', '#undo-' + id).text(author);
|
||||
a = $('.undo a', '#undo-' + id);
|
||||
a.attr('href', 'comment.php?action=un' + action + 'comment&c=' + id + '&_wpnonce=' + settings.data._ajax_nonce);
|
||||
a.attr('data-wp-lists', 'delete:the-comment-list:comment-' + id + '::un' + action + '=1');
|
||||
a.attr('class', 'vim-z vim-destructive');
|
||||
$('.avatar', el).first().clone().prependTo('#undo-' + id + ' .' + action + '-undo-inside');
|
||||
|
||||
a.click(function( e ){
|
||||
e.preventDefault();
|
||||
e.stopPropagation(); // ticket #35904
|
||||
list.wpList.del(this);
|
||||
$('#undo-' + id).css( {backgroundColor:'#ceb'} ).fadeOut(350, function(){
|
||||
$(this).remove();
|
||||
$('#comment-' + id).css('backgroundColor', '').fadeIn(300, function(){ $(this).show(); });
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
return settings;
|
||||
};
|
||||
|
||||
// In admin-ajax.php, we send back the unix time stamp instead of 1 on success
|
||||
delAfter = function( r, settings ) {
|
||||
var total_items_i18n, total, animated, animatedCallback,
|
||||
response = true === settings.parsed ? {} : settings.parsed.responses[0],
|
||||
commentStatus = true === settings.parsed ? '' : response.supplemental.status,
|
||||
commentPostId = true === settings.parsed ? '' : response.supplemental.postId,
|
||||
newTotal = true === settings.parsed ? '' : response.supplemental,
|
||||
|
||||
targetParent = $( settings.target ).parent(),
|
||||
commentRow = $('#' + settings.element),
|
||||
|
||||
spamDiff, trashDiff, pendingDiff, approvedDiff,
|
||||
|
||||
approved = commentRow.hasClass( 'approved' ),
|
||||
unapproved = commentRow.hasClass( 'unapproved' ),
|
||||
spammed = commentRow.hasClass( 'spam' ),
|
||||
trashed = commentRow.hasClass( 'trash' ),
|
||||
undoing = false; // ticket #35904
|
||||
|
||||
updateDashboardText( newTotal );
|
||||
|
||||
// the order of these checks is important
|
||||
// .unspam can also have .approve or .unapprove
|
||||
// .untrash can also have .approve or .unapprove
|
||||
|
||||
if ( targetParent.is( 'span.undo' ) ) {
|
||||
// the comment was spammed
|
||||
if ( targetParent.hasClass( 'unspam' ) ) {
|
||||
spamDiff = -1;
|
||||
|
||||
if ( 'trash' === commentStatus ) {
|
||||
trashDiff = 1;
|
||||
} else if ( '1' === commentStatus ) {
|
||||
approvedDiff = 1;
|
||||
} else if ( '0' === commentStatus ) {
|
||||
pendingDiff = 1;
|
||||
}
|
||||
|
||||
// the comment was trashed
|
||||
} else if ( targetParent.hasClass( 'untrash' ) ) {
|
||||
trashDiff = -1;
|
||||
|
||||
if ( 'spam' === commentStatus ) {
|
||||
spamDiff = 1;
|
||||
} else if ( '1' === commentStatus ) {
|
||||
approvedDiff = 1;
|
||||
} else if ( '0' === commentStatus ) {
|
||||
pendingDiff = 1;
|
||||
}
|
||||
}
|
||||
|
||||
undoing = true;
|
||||
|
||||
// user clicked "Spam"
|
||||
} else if ( targetParent.is( 'span.spam' ) ) {
|
||||
// the comment is currently approved
|
||||
if ( approved ) {
|
||||
approvedDiff = -1;
|
||||
// the comment is currently pending
|
||||
} else if ( unapproved ) {
|
||||
pendingDiff = -1;
|
||||
// the comment was in the trash
|
||||
} else if ( trashed ) {
|
||||
trashDiff = -1;
|
||||
}
|
||||
// you can't spam an item on the spam screen
|
||||
spamDiff = 1;
|
||||
|
||||
// user clicked "Unspam"
|
||||
} else if ( targetParent.is( 'span.unspam' ) ) {
|
||||
if ( approved ) {
|
||||
pendingDiff = 1;
|
||||
} else if ( unapproved ) {
|
||||
approvedDiff = 1;
|
||||
} else if ( trashed ) {
|
||||
// the comment was previously approved
|
||||
if ( targetParent.hasClass( 'approve' ) ) {
|
||||
approvedDiff = 1;
|
||||
// the comment was previously pending
|
||||
} else if ( targetParent.hasClass( 'unapprove' ) ) {
|
||||
pendingDiff = 1;
|
||||
}
|
||||
} else if ( spammed ) {
|
||||
if ( targetParent.hasClass( 'approve' ) ) {
|
||||
approvedDiff = 1;
|
||||
|
||||
} else if ( targetParent.hasClass( 'unapprove' ) ) {
|
||||
pendingDiff = 1;
|
||||
}
|
||||
}
|
||||
// you can Unspam an item on the spam screen
|
||||
spamDiff = -1;
|
||||
|
||||
// user clicked "Trash"
|
||||
} else if ( targetParent.is( 'span.trash' ) ) {
|
||||
if ( approved ) {
|
||||
approvedDiff = -1;
|
||||
} else if ( unapproved ) {
|
||||
pendingDiff = -1;
|
||||
// the comment was in the spam queue
|
||||
} else if ( spammed ) {
|
||||
spamDiff = -1;
|
||||
}
|
||||
// you can't trash an item on the trash screen
|
||||
trashDiff = 1;
|
||||
|
||||
// user clicked "Restore"
|
||||
} else if ( targetParent.is( 'span.untrash' ) ) {
|
||||
if ( approved ) {
|
||||
pendingDiff = 1;
|
||||
} else if ( unapproved ) {
|
||||
approvedDiff = 1;
|
||||
} else if ( trashed ) {
|
||||
if ( targetParent.hasClass( 'approve' ) ) {
|
||||
approvedDiff = 1;
|
||||
} else if ( targetParent.hasClass( 'unapprove' ) ) {
|
||||
pendingDiff = 1;
|
||||
}
|
||||
}
|
||||
// you can't go from trash to spam
|
||||
// you can untrash on the trash screen
|
||||
trashDiff = -1;
|
||||
|
||||
// User clicked "Approve"
|
||||
} else if ( targetParent.is( 'span.approve:not(.unspam):not(.untrash)' ) ) {
|
||||
approvedDiff = 1;
|
||||
pendingDiff = -1;
|
||||
|
||||
// User clicked "Unapprove"
|
||||
} else if ( targetParent.is( 'span.unapprove:not(.unspam):not(.untrash)' ) ) {
|
||||
approvedDiff = -1;
|
||||
pendingDiff = 1;
|
||||
|
||||
// User clicked "Delete Permanently"
|
||||
} else if ( targetParent.is( 'span.delete' ) ) {
|
||||
if ( spammed ) {
|
||||
spamDiff = -1;
|
||||
} else if ( trashed ) {
|
||||
trashDiff = -1;
|
||||
}
|
||||
}
|
||||
|
||||
if ( pendingDiff ) {
|
||||
updatePending( pendingDiff, commentPostId );
|
||||
updateCountText( 'span.all-count', pendingDiff );
|
||||
}
|
||||
|
||||
if ( approvedDiff ) {
|
||||
updateApproved( approvedDiff, commentPostId );
|
||||
updateCountText( 'span.all-count', approvedDiff );
|
||||
}
|
||||
|
||||
if ( spamDiff ) {
|
||||
updateCountText( 'span.spam-count', spamDiff );
|
||||
}
|
||||
|
||||
if ( trashDiff ) {
|
||||
updateCountText( 'span.trash-count', trashDiff );
|
||||
}
|
||||
|
||||
if ( ! isDashboard ) {
|
||||
total = totalInput.val() ? parseInt( totalInput.val(), 10 ) : 0;
|
||||
if ( $(settings.target).parent().is('span.undo') )
|
||||
total++;
|
||||
else
|
||||
total--;
|
||||
|
||||
if ( total < 0 )
|
||||
total = 0;
|
||||
|
||||
if ( 'object' === typeof r ) {
|
||||
if ( response.supplemental.total_items_i18n && lastConfidentTime < response.supplemental.time ) {
|
||||
total_items_i18n = response.supplemental.total_items_i18n || '';
|
||||
if ( total_items_i18n ) {
|
||||
$('.displaying-num').text( total_items_i18n );
|
||||
$('.total-pages').text( response.supplemental.total_pages_i18n );
|
||||
$('.tablenav-pages').find('.next-page, .last-page').toggleClass('disabled', response.supplemental.total_pages == $('.current-page').val());
|
||||
}
|
||||
updateTotalCount( total, response.supplemental.time, true );
|
||||
} else if ( response.supplemental.time ) {
|
||||
updateTotalCount( total, response.supplemental.time, false );
|
||||
}
|
||||
} else {
|
||||
updateTotalCount( total, r, false );
|
||||
}
|
||||
}
|
||||
|
||||
if ( ! theExtraList || theExtraList.length === 0 || theExtraList.children().length === 0 || undoing ) {
|
||||
return;
|
||||
}
|
||||
|
||||
theList.get(0).wpList.add( theExtraList.children( ':eq(0):not(.no-items)' ).remove().clone() );
|
||||
|
||||
refillTheExtraList();
|
||||
|
||||
animated = $( ':animated', '#the-comment-list' );
|
||||
animatedCallback = function () {
|
||||
if ( ! $( '#the-comment-list tr:visible' ).length ) {
|
||||
theList.get(0).wpList.add( theExtraList.find( '.no-items' ).clone() );
|
||||
}
|
||||
};
|
||||
|
||||
if ( animated.length ) {
|
||||
animated.promise().done( animatedCallback );
|
||||
} else {
|
||||
animatedCallback();
|
||||
}
|
||||
};
|
||||
|
||||
refillTheExtraList = function(ev) {
|
||||
var args = $.query.get(), total_pages = $('.total-pages').text(), per_page = $('input[name="_per_page"]', '#comments-form').val();
|
||||
|
||||
if (! args.paged)
|
||||
args.paged = 1;
|
||||
|
||||
if (args.paged > total_pages) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (ev) {
|
||||
theExtraList.empty();
|
||||
args.number = Math.min(8, per_page); // see WP_Comments_List_Table::prepare_items() @ class-wp-comments-list-table.php
|
||||
} else {
|
||||
args.number = 1;
|
||||
args.offset = Math.min(8, per_page) - 1; // fetch only the next item on the extra list
|
||||
}
|
||||
|
||||
args.no_placeholder = true;
|
||||
|
||||
args.paged ++;
|
||||
|
||||
// $.query.get() needs some correction to be sent into an ajax request
|
||||
if ( true === args.comment_type )
|
||||
args.comment_type = '';
|
||||
|
||||
args = $.extend(args, {
|
||||
'action': 'fetch-list',
|
||||
'list_args': list_args,
|
||||
'_ajax_fetch_list_nonce': $('#_ajax_fetch_list_nonce').val()
|
||||
});
|
||||
|
||||
$.ajax({
|
||||
url: ajaxurl,
|
||||
global: false,
|
||||
dataType: 'json',
|
||||
data: args,
|
||||
success: function(response) {
|
||||
theExtraList.get(0).wpList.add( response.rows );
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
theExtraList = $('#the-extra-comment-list').wpList( { alt: '', delColor: 'none', addColor: 'none' } );
|
||||
theList = $('#the-comment-list').wpList( { alt: '', delBefore: delBefore, dimAfter: dimAfter, delAfter: delAfter, addColor: 'none' } )
|
||||
.bind('wpListDelEnd', function(e, s){
|
||||
var wpListsData = $(s.target).attr('data-wp-lists'), id = s.element.replace(/[^0-9]+/g, '');
|
||||
|
||||
if ( wpListsData.indexOf(':trash=1') != -1 || wpListsData.indexOf(':spam=1') != -1 )
|
||||
$('#undo-' + id).fadeIn(300, function(){ $(this).show(); });
|
||||
});
|
||||
};
|
||||
|
||||
commentReply = {
|
||||
cid : '',
|
||||
act : '',
|
||||
|
||||
init : function() {
|
||||
var row = $('#replyrow');
|
||||
|
||||
$('a.cancel', row).click(function() { return commentReply.revert(); });
|
||||
$('a.save', row).click(function() { return commentReply.send(); });
|
||||
$( 'input#author-name, input#author-email, input#author-url', row ).keypress( function( e ) {
|
||||
if ( e.which == 13 ) {
|
||||
commentReply.send();
|
||||
e.preventDefault();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
// add events
|
||||
$('#the-comment-list .column-comment > p').dblclick(function(){
|
||||
commentReply.toggle($(this).parent());
|
||||
});
|
||||
|
||||
$('#doaction, #doaction2, #post-query-submit').click(function(){
|
||||
if ( $('#the-comment-list #replyrow').length > 0 )
|
||||
commentReply.close();
|
||||
});
|
||||
|
||||
this.comments_listing = $('#comments-form > input[name="comment_status"]').val() || '';
|
||||
|
||||
/* $(listTable).bind('beforeChangePage', function(){
|
||||
commentReply.close();
|
||||
}); */
|
||||
},
|
||||
|
||||
addEvents : function(r) {
|
||||
r.each(function() {
|
||||
$(this).find('.column-comment > p').dblclick(function(){
|
||||
commentReply.toggle($(this).parent());
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
toggle : function(el) {
|
||||
if ( 'none' !== $( el ).css( 'display' ) && ( $( '#replyrow' ).parent().is('#com-reply') || window.confirm( adminCommentsL10n.warnQuickEdit ) ) ) {
|
||||
$( el ).find( 'a.vim-q' ).click();
|
||||
}
|
||||
},
|
||||
|
||||
revert : function() {
|
||||
|
||||
if ( $('#the-comment-list #replyrow').length < 1 )
|
||||
return false;
|
||||
|
||||
$('#replyrow').fadeOut('fast', function(){
|
||||
commentReply.close();
|
||||
});
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
close : function() {
|
||||
var c, replyrow = $('#replyrow');
|
||||
|
||||
// replyrow is not showing?
|
||||
if ( replyrow.parent().is('#com-reply') )
|
||||
return;
|
||||
|
||||
if ( this.cid && this.act == 'edit-comment' ) {
|
||||
c = $('#comment-' + this.cid);
|
||||
c.fadeIn(300, function(){ c.show(); }).css('backgroundColor', '');
|
||||
}
|
||||
|
||||
// reset the Quicktags buttons
|
||||
if ( typeof QTags != 'undefined' )
|
||||
QTags.closeAllTags('replycontent');
|
||||
|
||||
$('#add-new-comment').css('display', '');
|
||||
|
||||
replyrow.hide();
|
||||
$('#com-reply').append( replyrow );
|
||||
$('#replycontent').css('height', '').val('');
|
||||
$('#edithead input').val('');
|
||||
$('.error', replyrow).empty().hide();
|
||||
$( '.spinner', replyrow ).removeClass( 'is-active' );
|
||||
|
||||
this.cid = '';
|
||||
},
|
||||
|
||||
open : function(comment_id, post_id, action) {
|
||||
var editRow, rowData, act, replyButton, editHeight,
|
||||
t = this,
|
||||
c = $('#comment-' + comment_id),
|
||||
h = c.height(),
|
||||
colspanVal = 0;
|
||||
|
||||
t.close();
|
||||
t.cid = comment_id;
|
||||
|
||||
editRow = $('#replyrow');
|
||||
rowData = $('#inline-'+comment_id);
|
||||
action = action || 'replyto';
|
||||
act = 'edit' == action ? 'edit' : 'replyto';
|
||||
act = t.act = act + '-comment';
|
||||
colspanVal = $( '> th:visible, > td:visible', c ).length;
|
||||
|
||||
// Make sure it's actually a table and there's a `colspan` value to apply.
|
||||
if ( editRow.hasClass( 'inline-edit-row' ) && 0 !== colspanVal ) {
|
||||
$( 'td', editRow ).attr( 'colspan', colspanVal );
|
||||
}
|
||||
|
||||
$('#action', editRow).val(act);
|
||||
$('#comment_post_ID', editRow).val(post_id);
|
||||
$('#comment_ID', editRow).val(comment_id);
|
||||
|
||||
if ( action == 'edit' ) {
|
||||
$( '#author-name', editRow ).val( $( 'div.author', rowData ).text() );
|
||||
$('#author-email', editRow).val( $('div.author-email', rowData).text() );
|
||||
$('#author-url', editRow).val( $('div.author-url', rowData).text() );
|
||||
$('#status', editRow).val( $('div.comment_status', rowData).text() );
|
||||
$('#replycontent', editRow).val( $('textarea.comment', rowData).val() );
|
||||
$( '#edithead, #editlegend, #savebtn', editRow ).show();
|
||||
$('#replyhead, #replybtn, #addhead, #addbtn', editRow).hide();
|
||||
|
||||
if ( h > 120 ) {
|
||||
// Limit the maximum height when editing very long comments to make it more manageable.
|
||||
// The textarea is resizable in most browsers, so the user can adjust it if needed.
|
||||
editHeight = h > 500 ? 500 : h;
|
||||
$('#replycontent', editRow).css('height', editHeight + 'px');
|
||||
}
|
||||
|
||||
c.after( editRow ).fadeOut('fast', function(){
|
||||
$('#replyrow').fadeIn(300, function(){ $(this).show(); });
|
||||
});
|
||||
} else if ( action == 'add' ) {
|
||||
$('#addhead, #addbtn', editRow).show();
|
||||
$( '#replyhead, #replybtn, #edithead, #editlegend, #savebtn', editRow ) .hide();
|
||||
$('#the-comment-list').prepend(editRow);
|
||||
$('#replyrow').fadeIn(300);
|
||||
} else {
|
||||
replyButton = $('#replybtn', editRow);
|
||||
$( '#edithead, #editlegend, #savebtn, #addhead, #addbtn', editRow ).hide();
|
||||
$('#replyhead, #replybtn', editRow).show();
|
||||
c.after(editRow);
|
||||
|
||||
if ( c.hasClass('unapproved') ) {
|
||||
replyButton.text(adminCommentsL10n.replyApprove);
|
||||
} else {
|
||||
replyButton.text(adminCommentsL10n.reply);
|
||||
}
|
||||
|
||||
$('#replyrow').fadeIn(300, function(){ $(this).show(); });
|
||||
}
|
||||
|
||||
setTimeout(function() {
|
||||
var rtop, rbottom, scrollTop, vp, scrollBottom;
|
||||
|
||||
rtop = $('#replyrow').offset().top;
|
||||
rbottom = rtop + $('#replyrow').height();
|
||||
scrollTop = window.pageYOffset || document.documentElement.scrollTop;
|
||||
vp = document.documentElement.clientHeight || window.innerHeight || 0;
|
||||
scrollBottom = scrollTop + vp;
|
||||
|
||||
if ( scrollBottom - 20 < rbottom )
|
||||
window.scroll(0, rbottom - vp + 35);
|
||||
else if ( rtop - 20 < scrollTop )
|
||||
window.scroll(0, rtop - 35);
|
||||
|
||||
$('#replycontent').focus().keyup(function(e){
|
||||
if ( e.which == 27 )
|
||||
commentReply.revert(); // close on Escape
|
||||
});
|
||||
}, 600);
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
send : function() {
|
||||
var post = {};
|
||||
|
||||
$('#replysubmit .error').hide();
|
||||
$( '#replysubmit .spinner' ).addClass( 'is-active' );
|
||||
|
||||
$('#replyrow input').not(':button').each(function() {
|
||||
var t = $(this);
|
||||
post[ t.attr('name') ] = t.val();
|
||||
});
|
||||
|
||||
post.content = $('#replycontent').val();
|
||||
post.id = post.comment_post_ID;
|
||||
post.comments_listing = this.comments_listing;
|
||||
post.p = $('[name="p"]').val();
|
||||
|
||||
if ( $('#comment-' + $('#comment_ID').val()).hasClass('unapproved') )
|
||||
post.approve_parent = 1;
|
||||
|
||||
$.ajax({
|
||||
type : 'POST',
|
||||
url : ajaxurl,
|
||||
data : post,
|
||||
success : function(x) { commentReply.show(x); },
|
||||
error : function(r) { commentReply.error(r); }
|
||||
});
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
show : function(xml) {
|
||||
var t = this, r, c, id, bg, pid;
|
||||
|
||||
if ( typeof(xml) == 'string' ) {
|
||||
t.error({'responseText': xml});
|
||||
return false;
|
||||
}
|
||||
|
||||
r = wpAjax.parseAjaxResponse(xml);
|
||||
if ( r.errors ) {
|
||||
t.error({'responseText': wpAjax.broken});
|
||||
return false;
|
||||
}
|
||||
|
||||
t.revert();
|
||||
|
||||
r = r.responses[0];
|
||||
id = '#comment-' + r.id;
|
||||
|
||||
if ( 'edit-comment' == t.act )
|
||||
$(id).remove();
|
||||
|
||||
if ( r.supplemental.parent_approved ) {
|
||||
pid = $('#comment-' + r.supplemental.parent_approved);
|
||||
updatePending( -1, r.supplemental.parent_post_id );
|
||||
|
||||
if ( this.comments_listing == 'moderated' ) {
|
||||
pid.animate( { 'backgroundColor':'#CCEEBB' }, 400, function(){
|
||||
pid.fadeOut();
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if ( r.supplemental.i18n_comments_text ) {
|
||||
if ( isDashboard ) {
|
||||
updateDashboardText( r.supplemental );
|
||||
} else {
|
||||
updateApproved( 1, r.supplemental.parent_post_id );
|
||||
updateCountText( 'span.all-count', 1 );
|
||||
}
|
||||
}
|
||||
|
||||
c = $.trim(r.data); // Trim leading whitespaces
|
||||
$(c).hide();
|
||||
$('#replyrow').after(c);
|
||||
|
||||
id = $(id);
|
||||
t.addEvents(id);
|
||||
bg = id.hasClass('unapproved') ? '#FFFFE0' : id.closest('.widefat, .postbox').css('backgroundColor');
|
||||
|
||||
id.animate( { 'backgroundColor':'#CCEEBB' }, 300 )
|
||||
.animate( { 'backgroundColor': bg }, 300, function() {
|
||||
if ( pid && pid.length ) {
|
||||
pid.animate( { 'backgroundColor':'#CCEEBB' }, 300 )
|
||||
.animate( { 'backgroundColor': bg }, 300 )
|
||||
.removeClass('unapproved').addClass('approved')
|
||||
.find('div.comment_status').html('1');
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
error : function(r) {
|
||||
var er = r.statusText;
|
||||
|
||||
$( '#replysubmit .spinner' ).removeClass( 'is-active' );
|
||||
|
||||
if ( r.responseText )
|
||||
er = r.responseText.replace( /<.[^<>]*?>/g, '' );
|
||||
|
||||
if ( er )
|
||||
$('#replysubmit .error').html(er).show();
|
||||
|
||||
},
|
||||
|
||||
addcomment: function(post_id) {
|
||||
var t = this;
|
||||
|
||||
$('#add-new-comment').fadeOut(200, function(){
|
||||
t.open(0, post_id, 'add');
|
||||
$('table.comments-box').css('display', '');
|
||||
$('#no-comments').remove();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$(document).ready(function(){
|
||||
var make_hotkeys_redirect, edit_comment, toggle_all, make_bulk;
|
||||
|
||||
setCommentsList();
|
||||
commentReply.init();
|
||||
|
||||
$(document).on( 'click', 'span.delete a.delete', function( e ) {
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
if ( typeof $.table_hotkeys != 'undefined' ) {
|
||||
make_hotkeys_redirect = function(which) {
|
||||
return function() {
|
||||
var first_last, l;
|
||||
|
||||
first_last = 'next' == which? 'first' : 'last';
|
||||
l = $('.tablenav-pages .'+which+'-page:not(.disabled)');
|
||||
if (l.length)
|
||||
window.location = l[0].href.replace(/\&hotkeys_highlight_(first|last)=1/g, '')+'&hotkeys_highlight_'+first_last+'=1';
|
||||
};
|
||||
};
|
||||
|
||||
edit_comment = function(event, current_row) {
|
||||
window.location = $('span.edit a', current_row).attr('href');
|
||||
};
|
||||
|
||||
toggle_all = function() {
|
||||
$('#cb-select-all-1').data( 'wp-toggle', 1 ).trigger( 'click' ).removeData( 'wp-toggle' );
|
||||
};
|
||||
|
||||
make_bulk = function(value) {
|
||||
return function() {
|
||||
var scope = $('select[name="action"]');
|
||||
$('option[value="' + value + '"]', scope).prop('selected', true);
|
||||
$('#doaction').click();
|
||||
};
|
||||
};
|
||||
|
||||
$.table_hotkeys(
|
||||
$('table.widefat'),
|
||||
[
|
||||
'a', 'u', 's', 'd', 'r', 'q', 'z',
|
||||
['e', edit_comment],
|
||||
['shift+x', toggle_all],
|
||||
['shift+a', make_bulk('approve')],
|
||||
['shift+s', make_bulk('spam')],
|
||||
['shift+d', make_bulk('delete')],
|
||||
['shift+t', make_bulk('trash')],
|
||||
['shift+z', make_bulk('untrash')],
|
||||
['shift+u', make_bulk('unapprove')]
|
||||
],
|
||||
{
|
||||
highlight_first: adminCommentsL10n.hotkeys_highlight_first,
|
||||
highlight_last: adminCommentsL10n.hotkeys_highlight_last,
|
||||
prev_page_link_cb: make_hotkeys_redirect('prev'),
|
||||
next_page_link_cb: make_hotkeys_redirect('next'),
|
||||
hotkeys_opts: {
|
||||
disableInInput: true,
|
||||
type: 'keypress',
|
||||
noDisable: '.check-column input[type="checkbox"]'
|
||||
},
|
||||
cycle_expr: '#the-comment-list tr',
|
||||
start_row_index: 0
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
// Quick Edit and Reply have an inline comment editor.
|
||||
$( '#the-comment-list' ).on( 'click', '.comment-inline', function (e) {
|
||||
e.preventDefault();
|
||||
var $el = $( this ),
|
||||
action = 'replyto';
|
||||
|
||||
if ( 'undefined' !== typeof $el.data( 'action' ) ) {
|
||||
action = $el.data( 'action' );
|
||||
}
|
||||
|
||||
commentReply.open( $el.data( 'commentId' ), $el.data( 'postId' ), action );
|
||||
} );
|
||||
});
|
||||
|
||||
})(jQuery);
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/edit-comments.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/edit-comments.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
1242
Kapitel_7/Lektion_4/wordpress/wp-admin/js/editor-expand.js
Executable file
1242
Kapitel_7/Lektion_4/wordpress/wp-admin/js/editor-expand.js
Executable file
File diff suppressed because it is too large
Load Diff
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/editor-expand.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/editor-expand.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
370
Kapitel_7/Lektion_4/wordpress/wp-admin/js/editor.js
Executable file
370
Kapitel_7/Lektion_4/wordpress/wp-admin/js/editor.js
Executable file
@@ -0,0 +1,370 @@
|
||||
|
||||
( function( $ ) {
|
||||
function SwitchEditors() {
|
||||
var tinymce, $$,
|
||||
exports = {};
|
||||
|
||||
function init() {
|
||||
if ( ! tinymce && window.tinymce ) {
|
||||
tinymce = window.tinymce;
|
||||
$$ = tinymce.$;
|
||||
|
||||
$$( document ).on( 'click', function( event ) {
|
||||
var id, mode,
|
||||
target = $$( event.target );
|
||||
|
||||
if ( target.hasClass( 'wp-switch-editor' ) ) {
|
||||
id = target.attr( 'data-wp-editor-id' );
|
||||
mode = target.hasClass( 'switch-tmce' ) ? 'tmce' : 'html';
|
||||
switchEditor( id, mode );
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function getToolbarHeight( editor ) {
|
||||
var node = $$( '.mce-toolbar-grp', editor.getContainer() )[0],
|
||||
height = node && node.clientHeight;
|
||||
|
||||
if ( height && height > 10 && height < 200 ) {
|
||||
return parseInt( height, 10 );
|
||||
}
|
||||
|
||||
return 30;
|
||||
}
|
||||
|
||||
function switchEditor( id, mode ) {
|
||||
id = id || 'content';
|
||||
mode = mode || 'toggle';
|
||||
|
||||
var editorHeight, toolbarHeight, iframe,
|
||||
editor = tinymce.get( id ),
|
||||
wrap = $$( '#wp-' + id + '-wrap' ),
|
||||
$textarea = $$( '#' + id ),
|
||||
textarea = $textarea[0];
|
||||
|
||||
if ( 'toggle' === mode ) {
|
||||
if ( editor && ! editor.isHidden() ) {
|
||||
mode = 'html';
|
||||
} else {
|
||||
mode = 'tmce';
|
||||
}
|
||||
}
|
||||
|
||||
if ( 'tmce' === mode || 'tinymce' === mode ) {
|
||||
if ( editor && ! editor.isHidden() ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( typeof( window.QTags ) !== 'undefined' ) {
|
||||
window.QTags.closeAllTags( id );
|
||||
}
|
||||
|
||||
editorHeight = parseInt( textarea.style.height, 10 ) || 0;
|
||||
|
||||
if ( editor ) {
|
||||
editor.show();
|
||||
|
||||
// No point resizing the iframe in iOS
|
||||
if ( ! tinymce.Env.iOS && editorHeight ) {
|
||||
toolbarHeight = getToolbarHeight( editor );
|
||||
editorHeight = editorHeight - toolbarHeight + 14;
|
||||
|
||||
// height cannot be under 50 or over 5000
|
||||
if ( editorHeight > 50 && editorHeight < 5000 ) {
|
||||
editor.theme.resizeTo( null, editorHeight );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
tinymce.init( window.tinyMCEPreInit.mceInit[id] );
|
||||
}
|
||||
|
||||
wrap.removeClass( 'html-active' ).addClass( 'tmce-active' );
|
||||
$textarea.attr( 'aria-hidden', true );
|
||||
window.setUserSetting( 'editor', 'tinymce' );
|
||||
|
||||
} else if ( 'html' === mode ) {
|
||||
if ( editor && editor.isHidden() ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( editor ) {
|
||||
if ( ! tinymce.Env.iOS ) {
|
||||
iframe = editor.iframeElement;
|
||||
editorHeight = iframe ? parseInt( iframe.style.height, 10 ) : 0;
|
||||
|
||||
if ( editorHeight ) {
|
||||
toolbarHeight = getToolbarHeight( editor );
|
||||
editorHeight = editorHeight + toolbarHeight - 14;
|
||||
|
||||
// height cannot be under 50 or over 5000
|
||||
if ( editorHeight > 50 && editorHeight < 5000 ) {
|
||||
textarea.style.height = editorHeight + 'px';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
editor.hide();
|
||||
} else {
|
||||
// The TinyMCE instance doesn't exist, show the textarea
|
||||
$textarea.css({ 'display': '', 'visibility': '' });
|
||||
}
|
||||
|
||||
wrap.removeClass( 'tmce-active' ).addClass( 'html-active' );
|
||||
$textarea.attr( 'aria-hidden', false );
|
||||
window.setUserSetting( 'editor', 'html' );
|
||||
}
|
||||
}
|
||||
|
||||
// Replace paragraphs with double line breaks
|
||||
function removep( html ) {
|
||||
var blocklist = 'blockquote|ul|ol|li|dl|dt|dd|table|thead|tbody|tfoot|tr|th|td|h[1-6]|fieldset',
|
||||
blocklist1 = blocklist + '|div|p',
|
||||
blocklist2 = blocklist + '|pre',
|
||||
preserve_linebreaks = false,
|
||||
preserve_br = false;
|
||||
|
||||
if ( ! html ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
// Protect pre|script tags
|
||||
if ( html.indexOf( '<pre' ) !== -1 || html.indexOf( '<script' ) !== -1 ) {
|
||||
preserve_linebreaks = true;
|
||||
html = html.replace( /<(pre|script)[^>]*>[\s\S]+?<\/\1>/g, function( a ) {
|
||||
a = a.replace( /<br ?\/?>(\r\n|\n)?/g, '<wp-line-break>' );
|
||||
a = a.replace( /<\/?p( [^>]*)?>(\r\n|\n)?/g, '<wp-line-break>' );
|
||||
return a.replace( /\r?\n/g, '<wp-line-break>' );
|
||||
});
|
||||
}
|
||||
|
||||
// keep <br> tags inside captions and remove line breaks
|
||||
if ( html.indexOf( '[caption' ) !== -1 ) {
|
||||
preserve_br = true;
|
||||
html = html.replace( /\[caption[\s\S]+?\[\/caption\]/g, function( a ) {
|
||||
return a.replace( /<br([^>]*)>/g, '<wp-temp-br$1>' ).replace( /[\r\n\t]+/, '' );
|
||||
});
|
||||
}
|
||||
|
||||
// Pretty it up for the source editor
|
||||
html = html.replace( new RegExp( '\\s*</(' + blocklist1 + ')>\\s*', 'g' ), '</$1>\n' );
|
||||
html = html.replace( new RegExp( '\\s*<((?:' + blocklist1 + ')(?: [^>]*)?)>', 'g' ), '\n<$1>' );
|
||||
|
||||
// Mark </p> if it has any attributes.
|
||||
html = html.replace( /(<p [^>]+>.*?)<\/p>/g, '$1</p#>' );
|
||||
|
||||
// Separate <div> containing <p>
|
||||
html = html.replace( /<div( [^>]*)?>\s*<p>/gi, '<div$1>\n\n' );
|
||||
|
||||
// Remove <p> and <br />
|
||||
html = html.replace( /\s*<p>/gi, '' );
|
||||
html = html.replace( /\s*<\/p>\s*/gi, '\n\n' );
|
||||
html = html.replace( /\n[\s\u00a0]+\n/g, '\n\n' );
|
||||
html = html.replace( /\s*<br ?\/?>\s*/gi, '\n' );
|
||||
|
||||
// Fix some block element newline issues
|
||||
html = html.replace( /\s*<div/g, '\n<div' );
|
||||
html = html.replace( /<\/div>\s*/g, '</div>\n' );
|
||||
html = html.replace( /\s*\[caption([^\[]+)\[\/caption\]\s*/gi, '\n\n[caption$1[/caption]\n\n' );
|
||||
html = html.replace( /caption\]\n\n+\[caption/g, 'caption]\n\n[caption' );
|
||||
|
||||
html = html.replace( new RegExp('\\s*<((?:' + blocklist2 + ')(?: [^>]*)?)\\s*>', 'g' ), '\n<$1>' );
|
||||
html = html.replace( new RegExp('\\s*</(' + blocklist2 + ')>\\s*', 'g' ), '</$1>\n' );
|
||||
html = html.replace( /<((li|dt|dd)[^>]*)>/g, ' \t<$1>' );
|
||||
|
||||
if ( html.indexOf( '<option' ) !== -1 ) {
|
||||
html = html.replace( /\s*<option/g, '\n<option' );
|
||||
html = html.replace( /\s*<\/select>/g, '\n</select>' );
|
||||
}
|
||||
|
||||
if ( html.indexOf( '<hr' ) !== -1 ) {
|
||||
html = html.replace( /\s*<hr( [^>]*)?>\s*/g, '\n\n<hr$1>\n\n' );
|
||||
}
|
||||
|
||||
if ( html.indexOf( '<object' ) !== -1 ) {
|
||||
html = html.replace( /<object[\s\S]+?<\/object>/g, function( a ) {
|
||||
return a.replace( /[\r\n]+/g, '' );
|
||||
});
|
||||
}
|
||||
|
||||
// Unmark special paragraph closing tags
|
||||
html = html.replace( /<\/p#>/g, '</p>\n' );
|
||||
html = html.replace( /\s*(<p [^>]+>[\s\S]*?<\/p>)/g, '\n$1' );
|
||||
|
||||
// Trim whitespace
|
||||
html = html.replace( /^\s+/, '' );
|
||||
html = html.replace( /[\s\u00a0]+$/, '' );
|
||||
|
||||
// put back the line breaks in pre|script
|
||||
if ( preserve_linebreaks ) {
|
||||
html = html.replace( /<wp-line-break>/g, '\n' );
|
||||
}
|
||||
|
||||
// and the <br> tags in captions
|
||||
if ( preserve_br ) {
|
||||
html = html.replace( /<wp-temp-br([^>]*)>/g, '<br$1>' );
|
||||
}
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
// Similar to `wpautop()` in formatting.php
|
||||
function autop( text ) {
|
||||
var preserve_linebreaks = false,
|
||||
preserve_br = false,
|
||||
blocklist = 'table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre' +
|
||||
'|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section' +
|
||||
'|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary';
|
||||
|
||||
// Normalize line breaks
|
||||
text = text.replace( /\r\n|\r/g, '\n' );
|
||||
|
||||
if ( text.indexOf( '\n' ) === -1 ) {
|
||||
return text;
|
||||
}
|
||||
|
||||
if ( text.indexOf( '<object' ) !== -1 ) {
|
||||
text = text.replace( /<object[\s\S]+?<\/object>/g, function( a ) {
|
||||
return a.replace( /\n+/g, '' );
|
||||
});
|
||||
}
|
||||
|
||||
text = text.replace( /<[^<>]+>/g, function( a ) {
|
||||
return a.replace( /[\n\t ]+/g, ' ' );
|
||||
});
|
||||
|
||||
// Protect pre|script tags
|
||||
if ( text.indexOf( '<pre' ) !== -1 || text.indexOf( '<script' ) !== -1 ) {
|
||||
preserve_linebreaks = true;
|
||||
text = text.replace( /<(pre|script)[^>]*>[\s\S]*?<\/\1>/g, function( a ) {
|
||||
return a.replace( /\n/g, '<wp-line-break>' );
|
||||
});
|
||||
}
|
||||
|
||||
// keep <br> tags inside captions and convert line breaks
|
||||
if ( text.indexOf( '[caption' ) !== -1 ) {
|
||||
preserve_br = true;
|
||||
text = text.replace( /\[caption[\s\S]+?\[\/caption\]/g, function( a ) {
|
||||
// keep existing <br>
|
||||
a = a.replace( /<br([^>]*)>/g, '<wp-temp-br$1>' );
|
||||
// no line breaks inside HTML tags
|
||||
a = a.replace( /<[^<>]+>/g, function( b ) {
|
||||
return b.replace( /[\n\t ]+/, ' ' );
|
||||
});
|
||||
// convert remaining line breaks to <br>
|
||||
return a.replace( /\s*\n\s*/g, '<wp-temp-br />' );
|
||||
});
|
||||
}
|
||||
|
||||
text = text + '\n\n';
|
||||
text = text.replace( /<br \/>\s*<br \/>/gi, '\n\n' );
|
||||
text = text.replace( new RegExp( '(<(?:' + blocklist + ')(?: [^>]*)?>)', 'gi' ), '\n$1' );
|
||||
text = text.replace( new RegExp( '(</(?:' + blocklist + ')>)', 'gi' ), '$1\n\n' );
|
||||
text = text.replace( /<hr( [^>]*)?>/gi, '<hr$1>\n\n' ); // hr is self closing block element
|
||||
text = text.replace( /\s*<option/gi, '<option' ); // No <p> or <br> around <option>
|
||||
text = text.replace( /<\/option>\s*/gi, '</option>' );
|
||||
text = text.replace( /\n\s*\n+/g, '\n\n' );
|
||||
text = text.replace( /([\s\S]+?)\n\n/g, '<p>$1</p>\n' );
|
||||
text = text.replace( /<p>\s*?<\/p>/gi, '');
|
||||
text = text.replace( new RegExp( '<p>\\s*(</?(?:' + blocklist + ')(?: [^>]*)?>)\\s*</p>', 'gi' ), '$1' );
|
||||
text = text.replace( /<p>(<li.+?)<\/p>/gi, '$1');
|
||||
text = text.replace( /<p>\s*<blockquote([^>]*)>/gi, '<blockquote$1><p>');
|
||||
text = text.replace( /<\/blockquote>\s*<\/p>/gi, '</p></blockquote>');
|
||||
text = text.replace( new RegExp( '<p>\\s*(</?(?:' + blocklist + ')(?: [^>]*)?>)', 'gi' ), '$1' );
|
||||
text = text.replace( new RegExp( '(</?(?:' + blocklist + ')(?: [^>]*)?>)\\s*</p>', 'gi' ), '$1' );
|
||||
|
||||
// Remove redundant spaces and line breaks after existing <br /> tags
|
||||
text = text.replace( /(<br[^>]*>)\s*\n/gi, '$1' );
|
||||
|
||||
// Create <br /> from the remaining line breaks
|
||||
text = text.replace( /\s*\n/g, '<br />\n');
|
||||
|
||||
text = text.replace( new RegExp( '(</?(?:' + blocklist + ')[^>]*>)\\s*<br />', 'gi' ), '$1' );
|
||||
text = text.replace( /<br \/>(\s*<\/?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)/gi, '$1' );
|
||||
text = text.replace( /(?:<p>|<br ?\/?>)*\s*\[caption([^\[]+)\[\/caption\]\s*(?:<\/p>|<br ?\/?>)*/gi, '[caption$1[/caption]' );
|
||||
|
||||
text = text.replace( /(<(?:div|th|td|form|fieldset|dd)[^>]*>)(.*?)<\/p>/g, function( a, b, c ) {
|
||||
if ( c.match( /<p( [^>]*)?>/ ) ) {
|
||||
return a;
|
||||
}
|
||||
|
||||
return b + '<p>' + c + '</p>';
|
||||
});
|
||||
|
||||
// put back the line breaks in pre|script
|
||||
if ( preserve_linebreaks ) {
|
||||
text = text.replace( /<wp-line-break>/g, '\n' );
|
||||
}
|
||||
|
||||
if ( preserve_br ) {
|
||||
text = text.replace( /<wp-temp-br([^>]*)>/g, '<br$1>' );
|
||||
}
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
// Add old events
|
||||
function pre_wpautop( html ) {
|
||||
var obj = { o: exports, data: html, unfiltered: html };
|
||||
|
||||
if ( $ ) {
|
||||
$( 'body' ).trigger( 'beforePreWpautop', [ obj ] );
|
||||
}
|
||||
|
||||
obj.data = removep( obj.data );
|
||||
|
||||
if ( $ ) {
|
||||
$( 'body' ).trigger( 'afterPreWpautop', [ obj ] );
|
||||
}
|
||||
|
||||
return obj.data;
|
||||
}
|
||||
|
||||
function wpautop( text ) {
|
||||
var obj = { o: exports, data: text, unfiltered: text };
|
||||
|
||||
if ( $ ) {
|
||||
$( 'body' ).trigger( 'beforeWpautop', [ obj ] );
|
||||
}
|
||||
|
||||
obj.data = autop( obj.data );
|
||||
|
||||
if ( $ ) {
|
||||
$( 'body' ).trigger( 'afterWpautop', [ obj ] );
|
||||
}
|
||||
|
||||
return obj.data;
|
||||
}
|
||||
|
||||
if ( $ ) {
|
||||
$( document ).ready( init );
|
||||
} else if ( document.addEventListener ) {
|
||||
document.addEventListener( 'DOMContentLoaded', init, false );
|
||||
window.addEventListener( 'load', init, false );
|
||||
} else if ( window.attachEvent ) {
|
||||
window.attachEvent( 'onload', init );
|
||||
document.attachEvent( 'onreadystatechange', function() {
|
||||
if ( 'complete' === document.readyState ) {
|
||||
init();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
window.wp = window.wp || {};
|
||||
window.wp.editor = window.wp.editor || {};
|
||||
window.wp.editor.autop = wpautop;
|
||||
window.wp.editor.removep = pre_wpautop;
|
||||
|
||||
exports = {
|
||||
go: switchEditor,
|
||||
wpautop: wpautop,
|
||||
pre_wpautop: pre_wpautop,
|
||||
_wp_Autop: autop,
|
||||
_wp_Nop: removep
|
||||
};
|
||||
|
||||
return exports;
|
||||
}
|
||||
|
||||
window.switchEditors = new SwitchEditors();
|
||||
}( window.jQuery ));
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/editor.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/editor.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
276
Kapitel_7/Lektion_4/wordpress/wp-admin/js/farbtastic.js
Executable file
276
Kapitel_7/Lektion_4/wordpress/wp-admin/js/farbtastic.js
Executable file
@@ -0,0 +1,276 @@
|
||||
/*!
|
||||
* Farbtastic: jQuery color picker plug-in v1.3u
|
||||
*
|
||||
* Licensed under the GPL license:
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
*/
|
||||
(function($) {
|
||||
|
||||
$.fn.farbtastic = function (options) {
|
||||
$.farbtastic(this, options);
|
||||
return this;
|
||||
};
|
||||
|
||||
$.farbtastic = function (container, callback) {
|
||||
var container = $(container).get(0);
|
||||
return container.farbtastic || (container.farbtastic = new $._farbtastic(container, callback));
|
||||
};
|
||||
|
||||
$._farbtastic = function (container, callback) {
|
||||
// Store farbtastic object
|
||||
var fb = this;
|
||||
|
||||
// Insert markup
|
||||
$(container).html('<div class="farbtastic"><div class="color"></div><div class="wheel"></div><div class="overlay"></div><div class="h-marker marker"></div><div class="sl-marker marker"></div></div>');
|
||||
var e = $('.farbtastic', container);
|
||||
fb.wheel = $('.wheel', container).get(0);
|
||||
// Dimensions
|
||||
fb.radius = 84;
|
||||
fb.square = 100;
|
||||
fb.width = 194;
|
||||
|
||||
// Fix background PNGs in IE6
|
||||
if (navigator.appVersion.match(/MSIE [0-6]\./)) {
|
||||
$('*', e).each(function () {
|
||||
if (this.currentStyle.backgroundImage != 'none') {
|
||||
var image = this.currentStyle.backgroundImage;
|
||||
image = this.currentStyle.backgroundImage.substring(5, image.length - 2);
|
||||
$(this).css({
|
||||
'backgroundImage': 'none',
|
||||
'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" + image + "')"
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Link to the given element(s) or callback.
|
||||
*/
|
||||
fb.linkTo = function (callback) {
|
||||
// Unbind previous nodes
|
||||
if (typeof fb.callback == 'object') {
|
||||
$(fb.callback).unbind('keyup', fb.updateValue);
|
||||
}
|
||||
|
||||
// Reset color
|
||||
fb.color = null;
|
||||
|
||||
// Bind callback or elements
|
||||
if (typeof callback == 'function') {
|
||||
fb.callback = callback;
|
||||
}
|
||||
else if (typeof callback == 'object' || typeof callback == 'string') {
|
||||
fb.callback = $(callback);
|
||||
fb.callback.bind('keyup', fb.updateValue);
|
||||
if (fb.callback.get(0).value) {
|
||||
fb.setColor(fb.callback.get(0).value);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
};
|
||||
fb.updateValue = function (event) {
|
||||
if (this.value && this.value != fb.color) {
|
||||
fb.setColor(this.value);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Change color with HTML syntax #123456
|
||||
*/
|
||||
fb.setColor = function (color) {
|
||||
var unpack = fb.unpack(color);
|
||||
if (fb.color != color && unpack) {
|
||||
fb.color = color;
|
||||
fb.rgb = unpack;
|
||||
fb.hsl = fb.RGBToHSL(fb.rgb);
|
||||
fb.updateDisplay();
|
||||
}
|
||||
return this;
|
||||
};
|
||||
|
||||
/**
|
||||
* Change color with HSL triplet [0..1, 0..1, 0..1]
|
||||
*/
|
||||
fb.setHSL = function (hsl) {
|
||||
fb.hsl = hsl;
|
||||
fb.rgb = fb.HSLToRGB(hsl);
|
||||
fb.color = fb.pack(fb.rgb);
|
||||
fb.updateDisplay();
|
||||
return this;
|
||||
};
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
|
||||
/**
|
||||
* Retrieve the coordinates of the given event relative to the center
|
||||
* of the widget.
|
||||
*/
|
||||
fb.widgetCoords = function (event) {
|
||||
var offset = $(fb.wheel).offset();
|
||||
return { x: (event.pageX - offset.left) - fb.width / 2, y: (event.pageY - offset.top) - fb.width / 2 };
|
||||
};
|
||||
|
||||
/**
|
||||
* Mousedown handler
|
||||
*/
|
||||
fb.mousedown = function (event) {
|
||||
// Capture mouse
|
||||
if (!document.dragging) {
|
||||
$(document).bind('mousemove', fb.mousemove).bind('mouseup', fb.mouseup);
|
||||
document.dragging = true;
|
||||
}
|
||||
|
||||
// Check which area is being dragged
|
||||
var pos = fb.widgetCoords(event);
|
||||
fb.circleDrag = Math.max(Math.abs(pos.x), Math.abs(pos.y)) * 2 > fb.square;
|
||||
|
||||
// Process
|
||||
fb.mousemove(event);
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Mousemove handler
|
||||
*/
|
||||
fb.mousemove = function (event) {
|
||||
// Get coordinates relative to color picker center
|
||||
var pos = fb.widgetCoords(event);
|
||||
|
||||
// Set new HSL parameters
|
||||
if (fb.circleDrag) {
|
||||
var hue = Math.atan2(pos.x, -pos.y) / 6.28;
|
||||
if (hue < 0) hue += 1;
|
||||
fb.setHSL([hue, fb.hsl[1], fb.hsl[2]]);
|
||||
}
|
||||
else {
|
||||
var sat = Math.max(0, Math.min(1, -(pos.x / fb.square) + .5));
|
||||
var lum = Math.max(0, Math.min(1, -(pos.y / fb.square) + .5));
|
||||
fb.setHSL([fb.hsl[0], sat, lum]);
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Mouseup handler
|
||||
*/
|
||||
fb.mouseup = function () {
|
||||
// Uncapture mouse
|
||||
$(document).unbind('mousemove', fb.mousemove);
|
||||
$(document).unbind('mouseup', fb.mouseup);
|
||||
document.dragging = false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Update the markers and styles
|
||||
*/
|
||||
fb.updateDisplay = function () {
|
||||
// Markers
|
||||
var angle = fb.hsl[0] * 6.28;
|
||||
$('.h-marker', e).css({
|
||||
left: Math.round(Math.sin(angle) * fb.radius + fb.width / 2) + 'px',
|
||||
top: Math.round(-Math.cos(angle) * fb.radius + fb.width / 2) + 'px'
|
||||
});
|
||||
|
||||
$('.sl-marker', e).css({
|
||||
left: Math.round(fb.square * (.5 - fb.hsl[1]) + fb.width / 2) + 'px',
|
||||
top: Math.round(fb.square * (.5 - fb.hsl[2]) + fb.width / 2) + 'px'
|
||||
});
|
||||
|
||||
// Saturation/Luminance gradient
|
||||
$('.color', e).css('backgroundColor', fb.pack(fb.HSLToRGB([fb.hsl[0], 1, 0.5])));
|
||||
|
||||
// Linked elements or callback
|
||||
if (typeof fb.callback == 'object') {
|
||||
// Set background/foreground color
|
||||
$(fb.callback).css({
|
||||
backgroundColor: fb.color,
|
||||
color: fb.hsl[2] > 0.5 ? '#000' : '#fff'
|
||||
});
|
||||
|
||||
// Change linked value
|
||||
$(fb.callback).each(function() {
|
||||
if (this.value && this.value != fb.color) {
|
||||
this.value = fb.color;
|
||||
}
|
||||
});
|
||||
}
|
||||
else if (typeof fb.callback == 'function') {
|
||||
fb.callback.call(fb, fb.color);
|
||||
}
|
||||
};
|
||||
|
||||
/* Various color utility functions */
|
||||
fb.pack = function (rgb) {
|
||||
var r = Math.round(rgb[0] * 255);
|
||||
var g = Math.round(rgb[1] * 255);
|
||||
var b = Math.round(rgb[2] * 255);
|
||||
return '#' + (r < 16 ? '0' : '') + r.toString(16) +
|
||||
(g < 16 ? '0' : '') + g.toString(16) +
|
||||
(b < 16 ? '0' : '') + b.toString(16);
|
||||
};
|
||||
|
||||
fb.unpack = function (color) {
|
||||
if (color.length == 7) {
|
||||
return [parseInt('0x' + color.substring(1, 3)) / 255,
|
||||
parseInt('0x' + color.substring(3, 5)) / 255,
|
||||
parseInt('0x' + color.substring(5, 7)) / 255];
|
||||
}
|
||||
else if (color.length == 4) {
|
||||
return [parseInt('0x' + color.substring(1, 2)) / 15,
|
||||
parseInt('0x' + color.substring(2, 3)) / 15,
|
||||
parseInt('0x' + color.substring(3, 4)) / 15];
|
||||
}
|
||||
};
|
||||
|
||||
fb.HSLToRGB = function (hsl) {
|
||||
var m1, m2, r, g, b;
|
||||
var h = hsl[0], s = hsl[1], l = hsl[2];
|
||||
m2 = (l <= 0.5) ? l * (s + 1) : l + s - l*s;
|
||||
m1 = l * 2 - m2;
|
||||
return [this.hueToRGB(m1, m2, h+0.33333),
|
||||
this.hueToRGB(m1, m2, h),
|
||||
this.hueToRGB(m1, m2, h-0.33333)];
|
||||
};
|
||||
|
||||
fb.hueToRGB = function (m1, m2, h) {
|
||||
h = (h < 0) ? h + 1 : ((h > 1) ? h - 1 : h);
|
||||
if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;
|
||||
if (h * 2 < 1) return m2;
|
||||
if (h * 3 < 2) return m1 + (m2 - m1) * (0.66666 - h) * 6;
|
||||
return m1;
|
||||
};
|
||||
|
||||
fb.RGBToHSL = function (rgb) {
|
||||
var min, max, delta, h, s, l;
|
||||
var r = rgb[0], g = rgb[1], b = rgb[2];
|
||||
min = Math.min(r, Math.min(g, b));
|
||||
max = Math.max(r, Math.max(g, b));
|
||||
delta = max - min;
|
||||
l = (min + max) / 2;
|
||||
s = 0;
|
||||
if (l > 0 && l < 1) {
|
||||
s = delta / (l < 0.5 ? (2 * l) : (2 - 2 * l));
|
||||
}
|
||||
h = 0;
|
||||
if (delta > 0) {
|
||||
if (max == r && max != g) h += (g - b) / delta;
|
||||
if (max == g && max != b) h += (2 + (b - r) / delta);
|
||||
if (max == b && max != r) h += (4 + (r - g) / delta);
|
||||
h /= 6;
|
||||
}
|
||||
return [h, s, l];
|
||||
};
|
||||
|
||||
// Install mousedown handler (the others are set on the document on-demand)
|
||||
$('*', e).mousedown(fb.mousedown);
|
||||
|
||||
// Init color
|
||||
fb.setColor('#000000');
|
||||
|
||||
// Set linked elements/callback
|
||||
if (callback) {
|
||||
fb.linkTo(callback);
|
||||
}
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
237
Kapitel_7/Lektion_4/wordpress/wp-admin/js/gallery.js
Executable file
237
Kapitel_7/Lektion_4/wordpress/wp-admin/js/gallery.js
Executable file
@@ -0,0 +1,237 @@
|
||||
/* global unescape, getUserSetting, setUserSetting */
|
||||
|
||||
jQuery(document).ready(function($) {
|
||||
var gallerySortable, gallerySortableInit, sortIt, clearAll, w, desc = false;
|
||||
|
||||
gallerySortableInit = function() {
|
||||
gallerySortable = $('#media-items').sortable( {
|
||||
items: 'div.media-item',
|
||||
placeholder: 'sorthelper',
|
||||
axis: 'y',
|
||||
distance: 2,
|
||||
handle: 'div.filename',
|
||||
stop: function() {
|
||||
// When an update has occurred, adjust the order for each item
|
||||
var all = $('#media-items').sortable('toArray'), len = all.length;
|
||||
$.each(all, function(i, id) {
|
||||
var order = desc ? (len - i) : (1 + i);
|
||||
$('#' + id + ' .menu_order input').val(order);
|
||||
});
|
||||
}
|
||||
} );
|
||||
};
|
||||
|
||||
sortIt = function() {
|
||||
var all = $('.menu_order_input'), len = all.length;
|
||||
all.each(function(i){
|
||||
var order = desc ? (len - i) : (1 + i);
|
||||
$(this).val(order);
|
||||
});
|
||||
};
|
||||
|
||||
clearAll = function(c) {
|
||||
c = c || 0;
|
||||
$('.menu_order_input').each( function() {
|
||||
if ( this.value === '0' || c ) {
|
||||
this.value = '';
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
$('#asc').click( function( e ) {
|
||||
e.preventDefault();
|
||||
desc = false;
|
||||
sortIt();
|
||||
});
|
||||
$('#desc').click( function( e ) {
|
||||
e.preventDefault();
|
||||
desc = true;
|
||||
sortIt();
|
||||
});
|
||||
$('#clear').click( function( e ) {
|
||||
e.preventDefault();
|
||||
clearAll(1);
|
||||
});
|
||||
$('#showall').click( function( e ) {
|
||||
e.preventDefault();
|
||||
$('#sort-buttons span a').toggle();
|
||||
$('a.describe-toggle-on').hide();
|
||||
$('a.describe-toggle-off, table.slidetoggle').show();
|
||||
$('img.pinkynail').toggle(false);
|
||||
});
|
||||
$('#hideall').click( function( e ) {
|
||||
e.preventDefault();
|
||||
$('#sort-buttons span a').toggle();
|
||||
$('a.describe-toggle-on').show();
|
||||
$('a.describe-toggle-off, table.slidetoggle').hide();
|
||||
$('img.pinkynail').toggle(true);
|
||||
});
|
||||
|
||||
// initialize sortable
|
||||
gallerySortableInit();
|
||||
clearAll();
|
||||
|
||||
if ( $('#media-items>*').length > 1 ) {
|
||||
w = wpgallery.getWin();
|
||||
|
||||
$('#save-all, #gallery-settings').show();
|
||||
if ( typeof w.tinyMCE !== 'undefined' && w.tinyMCE.activeEditor && ! w.tinyMCE.activeEditor.isHidden() ) {
|
||||
wpgallery.mcemode = true;
|
||||
wpgallery.init();
|
||||
} else {
|
||||
$('#insert-gallery').show();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
jQuery(window).unload( function () { tinymce = tinyMCE = wpgallery = null; } ); // Cleanup
|
||||
|
||||
/* gallery settings */
|
||||
var tinymce = null, tinyMCE, wpgallery;
|
||||
|
||||
wpgallery = {
|
||||
mcemode : false,
|
||||
editor : {},
|
||||
dom : {},
|
||||
is_update : false,
|
||||
el : {},
|
||||
|
||||
I : function(e) {
|
||||
return document.getElementById(e);
|
||||
},
|
||||
|
||||
init: function() {
|
||||
var t = this, li, q, i, it, w = t.getWin();
|
||||
|
||||
if ( ! t.mcemode ) {
|
||||
return;
|
||||
}
|
||||
|
||||
li = ('' + document.location.search).replace(/^\?/, '').split('&');
|
||||
q = {};
|
||||
for (i=0; i<li.length; i++) {
|
||||
it = li[i].split('=');
|
||||
q[unescape(it[0])] = unescape(it[1]);
|
||||
}
|
||||
|
||||
if ( q.mce_rdomain ) {
|
||||
document.domain = q.mce_rdomain;
|
||||
}
|
||||
|
||||
// Find window & API
|
||||
tinymce = w.tinymce;
|
||||
tinyMCE = w.tinyMCE;
|
||||
t.editor = tinymce.EditorManager.activeEditor;
|
||||
|
||||
t.setup();
|
||||
},
|
||||
|
||||
getWin : function() {
|
||||
return window.dialogArguments || opener || parent || top;
|
||||
},
|
||||
|
||||
setup : function() {
|
||||
var t = this, a, ed = t.editor, g, columns, link, order, orderby;
|
||||
if ( ! t.mcemode ) {
|
||||
return;
|
||||
}
|
||||
|
||||
t.el = ed.selection.getNode();
|
||||
|
||||
if ( t.el.nodeName !== 'IMG' || ! ed.dom.hasClass(t.el, 'wpGallery') ) {
|
||||
if ( ( g = ed.dom.select('img.wpGallery') ) && g[0] ) {
|
||||
t.el = g[0];
|
||||
} else {
|
||||
if ( getUserSetting('galfile') === '1' ) {
|
||||
t.I('linkto-file').checked = 'checked';
|
||||
}
|
||||
if ( getUserSetting('galdesc') === '1' ) {
|
||||
t.I('order-desc').checked = 'checked';
|
||||
}
|
||||
if ( getUserSetting('galcols') ) {
|
||||
t.I('columns').value = getUserSetting('galcols');
|
||||
}
|
||||
if ( getUserSetting('galord') ) {
|
||||
t.I('orderby').value = getUserSetting('galord');
|
||||
}
|
||||
jQuery('#insert-gallery').show();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
a = ed.dom.getAttrib(t.el, 'title');
|
||||
a = ed.dom.decode(a);
|
||||
|
||||
if ( a ) {
|
||||
jQuery('#update-gallery').show();
|
||||
t.is_update = true;
|
||||
|
||||
columns = a.match(/columns=['"]([0-9]+)['"]/);
|
||||
link = a.match(/link=['"]([^'"]+)['"]/i);
|
||||
order = a.match(/order=['"]([^'"]+)['"]/i);
|
||||
orderby = a.match(/orderby=['"]([^'"]+)['"]/i);
|
||||
|
||||
if ( link && link[1] ) {
|
||||
t.I('linkto-file').checked = 'checked';
|
||||
}
|
||||
if ( order && order[1] ) {
|
||||
t.I('order-desc').checked = 'checked';
|
||||
}
|
||||
if ( columns && columns[1] ) {
|
||||
t.I('columns').value = '' + columns[1];
|
||||
}
|
||||
if ( orderby && orderby[1] ) {
|
||||
t.I('orderby').value = orderby[1];
|
||||
}
|
||||
} else {
|
||||
jQuery('#insert-gallery').show();
|
||||
}
|
||||
},
|
||||
|
||||
update : function() {
|
||||
var t = this, ed = t.editor, all = '', s;
|
||||
|
||||
if ( ! t.mcemode || ! t.is_update ) {
|
||||
s = '[gallery' + t.getSettings() + ']';
|
||||
t.getWin().send_to_editor(s);
|
||||
return;
|
||||
}
|
||||
|
||||
if ( t.el.nodeName !== 'IMG' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
all = ed.dom.decode( ed.dom.getAttrib( t.el, 'title' ) );
|
||||
all = all.replace(/\s*(order|link|columns|orderby)=['"]([^'"]+)['"]/gi, '');
|
||||
all += t.getSettings();
|
||||
|
||||
ed.dom.setAttrib(t.el, 'title', all);
|
||||
t.getWin().tb_remove();
|
||||
},
|
||||
|
||||
getSettings : function() {
|
||||
var I = this.I, s = '';
|
||||
|
||||
if ( I('linkto-file').checked ) {
|
||||
s += ' link="file"';
|
||||
setUserSetting('galfile', '1');
|
||||
}
|
||||
|
||||
if ( I('order-desc').checked ) {
|
||||
s += ' order="DESC"';
|
||||
setUserSetting('galdesc', '1');
|
||||
}
|
||||
|
||||
if ( I('columns').value !== 3 ) {
|
||||
s += ' columns="' + I('columns').value + '"';
|
||||
setUserSetting('galcols', I('columns').value);
|
||||
}
|
||||
|
||||
if ( I('orderby').value !== 'menu_order' ) {
|
||||
s += ' orderby="' + I('orderby').value + '"';
|
||||
setUserSetting('galord', I('orderby').value);
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
};
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/gallery.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/gallery.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
jQuery(document).ready(function(a){var b,c,d,e,f,g=!1;c=function(){b=a("#media-items").sortable({items:"div.media-item",placeholder:"sorthelper",axis:"y",distance:2,handle:"div.filename",stop:function(){var b=a("#media-items").sortable("toArray"),c=b.length;a.each(b,function(b,d){var e=g?c-b:1+b;a("#"+d+" .menu_order input").val(e)})}})},d=function(){var b=a(".menu_order_input"),c=b.length;b.each(function(b){var d=g?c-b:1+b;a(this).val(d)})},e=function(b){b=b||0,a(".menu_order_input").each(function(){("0"===this.value||b)&&(this.value="")})},a("#asc").click(function(a){a.preventDefault(),g=!1,d()}),a("#desc").click(function(a){a.preventDefault(),g=!0,d()}),a("#clear").click(function(a){a.preventDefault(),e(1)}),a("#showall").click(function(b){b.preventDefault(),a("#sort-buttons span a").toggle(),a("a.describe-toggle-on").hide(),a("a.describe-toggle-off, table.slidetoggle").show(),a("img.pinkynail").toggle(!1)}),a("#hideall").click(function(b){b.preventDefault(),a("#sort-buttons span a").toggle(),a("a.describe-toggle-on").show(),a("a.describe-toggle-off, table.slidetoggle").hide(),a("img.pinkynail").toggle(!0)}),c(),e(),a("#media-items>*").length>1&&(f=wpgallery.getWin(),a("#save-all, #gallery-settings").show(),"undefined"!=typeof f.tinyMCE&&f.tinyMCE.activeEditor&&!f.tinyMCE.activeEditor.isHidden()?(wpgallery.mcemode=!0,wpgallery.init()):a("#insert-gallery").show())}),jQuery(window).unload(function(){tinymce=tinyMCE=wpgallery=null});var tinymce=null,tinyMCE,wpgallery;wpgallery={mcemode:!1,editor:{},dom:{},is_update:!1,el:{},I:function(a){return document.getElementById(a)},init:function(){var a,b,c,d,e=this,f=e.getWin();if(e.mcemode){for(a=(""+document.location.search).replace(/^\?/,"").split("&"),b={},c=0;c<a.length;c++)d=a[c].split("="),b[unescape(d[0])]=unescape(d[1]);b.mce_rdomain&&(document.domain=b.mce_rdomain),tinymce=f.tinymce,tinyMCE=f.tinyMCE,e.editor=tinymce.EditorManager.activeEditor,e.setup()}},getWin:function(){return window.dialogArguments||opener||parent||top},setup:function(){var a,b,c,d,e,f,g=this,h=g.editor;if(g.mcemode){if(g.el=h.selection.getNode(),"IMG"!==g.el.nodeName||!h.dom.hasClass(g.el,"wpGallery")){if(!(b=h.dom.select("img.wpGallery"))||!b[0])return"1"===getUserSetting("galfile")&&(g.I("linkto-file").checked="checked"),"1"===getUserSetting("galdesc")&&(g.I("order-desc").checked="checked"),getUserSetting("galcols")&&(g.I("columns").value=getUserSetting("galcols")),getUserSetting("galord")&&(g.I("orderby").value=getUserSetting("galord")),void jQuery("#insert-gallery").show();g.el=b[0]}a=h.dom.getAttrib(g.el,"title"),a=h.dom.decode(a),a?(jQuery("#update-gallery").show(),g.is_update=!0,c=a.match(/columns=['"]([0-9]+)['"]/),d=a.match(/link=['"]([^'"]+)['"]/i),e=a.match(/order=['"]([^'"]+)['"]/i),f=a.match(/orderby=['"]([^'"]+)['"]/i),d&&d[1]&&(g.I("linkto-file").checked="checked"),e&&e[1]&&(g.I("order-desc").checked="checked"),c&&c[1]&&(g.I("columns").value=""+c[1]),f&&f[1]&&(g.I("orderby").value=f[1])):jQuery("#insert-gallery").show()}},update:function(){var a,b=this,c=b.editor,d="";return b.mcemode&&b.is_update?void("IMG"===b.el.nodeName&&(d=c.dom.decode(c.dom.getAttrib(b.el,"title")),d=d.replace(/\s*(order|link|columns|orderby)=['"]([^'"]+)['"]/gi,""),d+=b.getSettings(),c.dom.setAttrib(b.el,"title",d),b.getWin().tb_remove())):(a="[gallery"+b.getSettings()+"]",void b.getWin().send_to_editor(a))},getSettings:function(){var a=this.I,b="";return a("linkto-file").checked&&(b+=' link="file"',setUserSetting("galfile","1")),a("order-desc").checked&&(b+=' order="DESC"',setUserSetting("galdesc","1")),3!==a("columns").value&&(b+=' columns="'+a("columns").value+'"',setUserSetting("galcols",a("columns").value)),"menu_order"!==a("orderby").value&&(b+=' orderby="'+a("orderby").value+'"',setUserSetting("galord",a("orderby").value)),b}};
|
||||
681
Kapitel_7/Lektion_4/wordpress/wp-admin/js/image-edit.js
Executable file
681
Kapitel_7/Lektion_4/wordpress/wp-admin/js/image-edit.js
Executable file
@@ -0,0 +1,681 @@
|
||||
/* global imageEditL10n, ajaxurl, confirm */
|
||||
|
||||
(function($) {
|
||||
var imageEdit = window.imageEdit = {
|
||||
iasapi : {},
|
||||
hold : {},
|
||||
postid : '',
|
||||
_view : false,
|
||||
|
||||
intval : function(f) {
|
||||
return f | 0;
|
||||
},
|
||||
|
||||
setDisabled : function( el, s ) {
|
||||
/*
|
||||
* `el` can be a single form element or a fieldset. Before #28864, the disabled state on
|
||||
* some text fields was handled targeting $('input', el). Now we need to handle the
|
||||
* disabled state on buttons too so we can just target `el` regardless if it's a single
|
||||
* element or a fieldset because when a fieldset is disabled, its descendants are disabled too.
|
||||
*/
|
||||
if ( s ) {
|
||||
el.removeClass( 'disabled' ).prop( 'disabled', false );
|
||||
} else {
|
||||
el.addClass( 'disabled' ).prop( 'disabled', true );
|
||||
}
|
||||
},
|
||||
|
||||
init : function(postid) {
|
||||
var t = this, old = $('#image-editor-' + t.postid),
|
||||
x = t.intval( $('#imgedit-x-' + postid).val() ),
|
||||
y = t.intval( $('#imgedit-y-' + postid).val() );
|
||||
|
||||
if ( t.postid !== postid && old.length ) {
|
||||
t.close(t.postid);
|
||||
}
|
||||
|
||||
t.hold.w = t.hold.ow = x;
|
||||
t.hold.h = t.hold.oh = y;
|
||||
t.hold.xy_ratio = x / y;
|
||||
t.hold.sizer = parseFloat( $('#imgedit-sizer-' + postid).val() );
|
||||
t.postid = postid;
|
||||
$('#imgedit-response-' + postid).empty();
|
||||
|
||||
$('input[type="text"]', '#imgedit-panel-' + postid).keypress(function(e) {
|
||||
var k = e.keyCode;
|
||||
|
||||
if ( 36 < k && k < 41 ) {
|
||||
$(this).blur();
|
||||
}
|
||||
|
||||
if ( 13 === k ) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
toggleEditor : function(postid, toggle) {
|
||||
var wait = $('#imgedit-wait-' + postid);
|
||||
|
||||
if ( toggle ) {
|
||||
wait.fadeIn( 'fast' );
|
||||
} else {
|
||||
wait.fadeOut('fast');
|
||||
}
|
||||
},
|
||||
|
||||
toggleHelp : function(el) {
|
||||
var $el = $( el );
|
||||
$el
|
||||
.attr( 'aria-expanded', 'false' === $el.attr( 'aria-expanded' ) ? 'true' : 'false' )
|
||||
.parents( '.imgedit-group-top' ).toggleClass( 'imgedit-help-toggled' ).find( '.imgedit-help' ).slideToggle( 'fast' );
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
getTarget : function(postid) {
|
||||
return $('input[name="imgedit-target-' + postid + '"]:checked', '#imgedit-save-target-' + postid).val() || 'full';
|
||||
},
|
||||
|
||||
scaleChanged : function(postid, x) {
|
||||
var w = $('#imgedit-scale-width-' + postid), h = $('#imgedit-scale-height-' + postid),
|
||||
warn = $('#imgedit-scale-warn-' + postid), w1 = '', h1 = '';
|
||||
|
||||
if ( x ) {
|
||||
h1 = ( w.val() !== '' ) ? Math.round( w.val() / this.hold.xy_ratio ) : '';
|
||||
h.val( h1 );
|
||||
} else {
|
||||
w1 = ( h.val() !== '' ) ? Math.round( h.val() * this.hold.xy_ratio ) : '';
|
||||
w.val( w1 );
|
||||
}
|
||||
|
||||
if ( ( h1 && h1 > this.hold.oh ) || ( w1 && w1 > this.hold.ow ) ) {
|
||||
warn.css('visibility', 'visible');
|
||||
} else {
|
||||
warn.css('visibility', 'hidden');
|
||||
}
|
||||
},
|
||||
|
||||
getSelRatio : function(postid) {
|
||||
var x = this.hold.w, y = this.hold.h,
|
||||
X = this.intval( $('#imgedit-crop-width-' + postid).val() ),
|
||||
Y = this.intval( $('#imgedit-crop-height-' + postid).val() );
|
||||
|
||||
if ( X && Y ) {
|
||||
return X + ':' + Y;
|
||||
}
|
||||
|
||||
if ( x && y ) {
|
||||
return x + ':' + y;
|
||||
}
|
||||
|
||||
return '1:1';
|
||||
},
|
||||
|
||||
filterHistory : function(postid, setSize) {
|
||||
// apply undo state to history
|
||||
var history = $('#imgedit-history-' + postid).val(), pop, n, o, i, op = [];
|
||||
|
||||
if ( history !== '' ) {
|
||||
history = JSON.parse(history);
|
||||
pop = this.intval( $('#imgedit-undone-' + postid).val() );
|
||||
if ( pop > 0 ) {
|
||||
while ( pop > 0 ) {
|
||||
history.pop();
|
||||
pop--;
|
||||
}
|
||||
}
|
||||
|
||||
if ( setSize ) {
|
||||
if ( !history.length ) {
|
||||
this.hold.w = this.hold.ow;
|
||||
this.hold.h = this.hold.oh;
|
||||
return '';
|
||||
}
|
||||
|
||||
// restore
|
||||
o = history[history.length - 1];
|
||||
o = o.c || o.r || o.f || false;
|
||||
|
||||
if ( o ) {
|
||||
this.hold.w = o.fw;
|
||||
this.hold.h = o.fh;
|
||||
}
|
||||
}
|
||||
|
||||
// filter the values
|
||||
for ( n in history ) {
|
||||
i = history[n];
|
||||
if ( i.hasOwnProperty('c') ) {
|
||||
op[n] = { 'c': { 'x': i.c.x, 'y': i.c.y, 'w': i.c.w, 'h': i.c.h } };
|
||||
} else if ( i.hasOwnProperty('r') ) {
|
||||
op[n] = { 'r': i.r.r };
|
||||
} else if ( i.hasOwnProperty('f') ) {
|
||||
op[n] = { 'f': i.f.f };
|
||||
}
|
||||
}
|
||||
return JSON.stringify(op);
|
||||
}
|
||||
return '';
|
||||
},
|
||||
|
||||
refreshEditor : function(postid, nonce, callback) {
|
||||
var t = this, data, img;
|
||||
|
||||
t.toggleEditor(postid, 1);
|
||||
data = {
|
||||
'action': 'imgedit-preview',
|
||||
'_ajax_nonce': nonce,
|
||||
'postid': postid,
|
||||
'history': t.filterHistory(postid, 1),
|
||||
'rand': t.intval(Math.random() * 1000000)
|
||||
};
|
||||
|
||||
img = $( '<img id="image-preview-' + postid + '" alt="" />' )
|
||||
.on( 'load', { history: data.history }, function( event ) {
|
||||
var max1, max2,
|
||||
parent = $( '#imgedit-crop-' + postid ),
|
||||
t = imageEdit,
|
||||
historyObj;
|
||||
|
||||
if ( '' !== event.data.history ) {
|
||||
historyObj = JSON.parse( event.data.history );
|
||||
// If last executed action in history is a crop action.
|
||||
if ( historyObj[historyObj.length - 1].hasOwnProperty( 'c' ) ) {
|
||||
/*
|
||||
* A crop action has completed and the crop button gets disabled
|
||||
* ensure the undo button is enabled.
|
||||
*/
|
||||
t.setDisabled( $( '#image-undo-' + postid) , true );
|
||||
// Move focus to the undo button to avoid a focus loss.
|
||||
$( '#image-undo-' + postid ).focus();
|
||||
}
|
||||
}
|
||||
|
||||
parent.empty().append(img);
|
||||
|
||||
// w, h are the new full size dims
|
||||
max1 = Math.max( t.hold.w, t.hold.h );
|
||||
max2 = Math.max( $(img).width(), $(img).height() );
|
||||
t.hold.sizer = max1 > max2 ? max2 / max1 : 1;
|
||||
|
||||
t.initCrop(postid, img, parent);
|
||||
t.setCropSelection(postid, 0);
|
||||
|
||||
if ( (typeof callback !== 'undefined') && callback !== null ) {
|
||||
callback();
|
||||
}
|
||||
|
||||
if ( $('#imgedit-history-' + postid).val() && $('#imgedit-undone-' + postid).val() === '0' ) {
|
||||
$('input.imgedit-submit-btn', '#imgedit-panel-' + postid).removeAttr('disabled');
|
||||
} else {
|
||||
$('input.imgedit-submit-btn', '#imgedit-panel-' + postid).prop('disabled', true);
|
||||
}
|
||||
|
||||
t.toggleEditor(postid, 0);
|
||||
})
|
||||
.on('error', function() {
|
||||
$('#imgedit-crop-' + postid).empty().append('<div class="error"><p>' + imageEditL10n.error + '</p></div>');
|
||||
t.toggleEditor(postid, 0);
|
||||
})
|
||||
.attr('src', ajaxurl + '?' + $.param(data));
|
||||
},
|
||||
|
||||
action : function(postid, nonce, action) {
|
||||
var t = this, data, w, h, fw, fh;
|
||||
|
||||
if ( t.notsaved(postid) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
data = {
|
||||
'action': 'image-editor',
|
||||
'_ajax_nonce': nonce,
|
||||
'postid': postid
|
||||
};
|
||||
|
||||
if ( 'scale' === action ) {
|
||||
w = $('#imgedit-scale-width-' + postid),
|
||||
h = $('#imgedit-scale-height-' + postid),
|
||||
fw = t.intval(w.val()),
|
||||
fh = t.intval(h.val());
|
||||
|
||||
if ( fw < 1 ) {
|
||||
w.focus();
|
||||
return false;
|
||||
} else if ( fh < 1 ) {
|
||||
h.focus();
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( fw === t.hold.ow || fh === t.hold.oh ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
data['do'] = 'scale';
|
||||
data.fwidth = fw;
|
||||
data.fheight = fh;
|
||||
} else if ( 'restore' === action ) {
|
||||
data['do'] = 'restore';
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
t.toggleEditor(postid, 1);
|
||||
$.post(ajaxurl, data, function(r) {
|
||||
$('#image-editor-' + postid).empty().append(r);
|
||||
t.toggleEditor(postid, 0);
|
||||
// refresh the attachment model so that changes propagate
|
||||
if ( t._view ) {
|
||||
t._view.refresh();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
save : function(postid, nonce) {
|
||||
var data,
|
||||
target = this.getTarget(postid),
|
||||
history = this.filterHistory(postid, 0),
|
||||
self = this;
|
||||
|
||||
if ( '' === history ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
this.toggleEditor(postid, 1);
|
||||
data = {
|
||||
'action': 'image-editor',
|
||||
'_ajax_nonce': nonce,
|
||||
'postid': postid,
|
||||
'history': history,
|
||||
'target': target,
|
||||
'context': $('#image-edit-context').length ? $('#image-edit-context').val() : null,
|
||||
'do': 'save'
|
||||
};
|
||||
|
||||
$.post(ajaxurl, data, function(r) {
|
||||
var ret = JSON.parse(r);
|
||||
|
||||
if ( ret.error ) {
|
||||
$('#imgedit-response-' + postid).html('<div class="error"><p>' + ret.error + '</p></div>');
|
||||
imageEdit.close(postid);
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ret.fw && ret.fh ) {
|
||||
$('#media-dims-' + postid).html( ret.fw + ' × ' + ret.fh );
|
||||
}
|
||||
|
||||
if ( ret.thumbnail ) {
|
||||
$('.thumbnail', '#thumbnail-head-' + postid).attr('src', ''+ret.thumbnail);
|
||||
}
|
||||
|
||||
if ( ret.msg ) {
|
||||
$('#imgedit-response-' + postid).html('<div class="updated"><p>' + ret.msg + '</p></div>');
|
||||
}
|
||||
|
||||
if ( self._view ) {
|
||||
self._view.save();
|
||||
} else {
|
||||
imageEdit.close(postid);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
open : function( postid, nonce, view ) {
|
||||
this._view = view;
|
||||
|
||||
var dfd, data, elem = $('#image-editor-' + postid), head = $('#media-head-' + postid),
|
||||
btn = $('#imgedit-open-btn-' + postid), spin = btn.siblings('.spinner');
|
||||
|
||||
/*
|
||||
* Instead of disabling the button, which causes a focus loss and makes screen
|
||||
* readers announce "unavailable", return if the button was already clicked.
|
||||
*/
|
||||
if ( btn.hasClass( 'button-activated' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
spin.addClass( 'is-active' );
|
||||
|
||||
data = {
|
||||
'action': 'image-editor',
|
||||
'_ajax_nonce': nonce,
|
||||
'postid': postid,
|
||||
'do': 'open'
|
||||
};
|
||||
|
||||
dfd = $.ajax({
|
||||
url: ajaxurl,
|
||||
type: 'post',
|
||||
data: data,
|
||||
beforeSend: function() {
|
||||
btn.addClass( 'button-activated' );
|
||||
}
|
||||
}).done(function( html ) {
|
||||
elem.html( html );
|
||||
head.fadeOut('fast', function(){
|
||||
elem.fadeIn('fast');
|
||||
btn.removeClass( 'button-activated' );
|
||||
spin.removeClass( 'is-active' );
|
||||
});
|
||||
});
|
||||
|
||||
return dfd;
|
||||
},
|
||||
|
||||
imgLoaded : function(postid) {
|
||||
var img = $('#image-preview-' + postid), parent = $('#imgedit-crop-' + postid);
|
||||
|
||||
this.initCrop(postid, img, parent);
|
||||
this.setCropSelection(postid, 0);
|
||||
this.toggleEditor(postid, 0);
|
||||
// Editor is ready, move focus to the first focusable element.
|
||||
$( '.imgedit-wrap .imgedit-help-toggle' ).eq( 0 ).focus();
|
||||
},
|
||||
|
||||
initCrop : function(postid, image, parent) {
|
||||
var t = this,
|
||||
selW = $('#imgedit-sel-width-' + postid),
|
||||
selH = $('#imgedit-sel-height-' + postid),
|
||||
$img;
|
||||
|
||||
t.iasapi = $(image).imgAreaSelect({
|
||||
parent: parent,
|
||||
instance: true,
|
||||
handles: true,
|
||||
keys: true,
|
||||
minWidth: 3,
|
||||
minHeight: 3,
|
||||
|
||||
onInit: function( img ) {
|
||||
// Ensure that the imgareaselect wrapper elements are position:absolute
|
||||
// (even if we're in a position:fixed modal)
|
||||
$img = $( img );
|
||||
$img.next().css( 'position', 'absolute' )
|
||||
.nextAll( '.imgareaselect-outer' ).css( 'position', 'absolute' );
|
||||
|
||||
parent.children().mousedown(function(e){
|
||||
var ratio = false, sel, defRatio;
|
||||
|
||||
if ( e.shiftKey ) {
|
||||
sel = t.iasapi.getSelection();
|
||||
defRatio = t.getSelRatio(postid);
|
||||
ratio = ( sel && sel.width && sel.height ) ? sel.width + ':' + sel.height : defRatio;
|
||||
}
|
||||
|
||||
t.iasapi.setOptions({
|
||||
aspectRatio: ratio
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
onSelectStart: function() {
|
||||
imageEdit.setDisabled($('#imgedit-crop-sel-' + postid), 1);
|
||||
},
|
||||
|
||||
onSelectEnd: function(img, c) {
|
||||
imageEdit.setCropSelection(postid, c);
|
||||
},
|
||||
|
||||
onSelectChange: function(img, c) {
|
||||
var sizer = imageEdit.hold.sizer;
|
||||
selW.val( imageEdit.round(c.width / sizer) );
|
||||
selH.val( imageEdit.round(c.height / sizer) );
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
setCropSelection : function(postid, c) {
|
||||
var sel;
|
||||
|
||||
c = c || 0;
|
||||
|
||||
if ( !c || ( c.width < 3 && c.height < 3 ) ) {
|
||||
this.setDisabled($('.imgedit-crop', '#imgedit-panel-' + postid), 0);
|
||||
this.setDisabled($('#imgedit-crop-sel-' + postid), 0);
|
||||
$('#imgedit-sel-width-' + postid).val('');
|
||||
$('#imgedit-sel-height-' + postid).val('');
|
||||
$('#imgedit-selection-' + postid).val('');
|
||||
return false;
|
||||
}
|
||||
|
||||
sel = { 'x': c.x1, 'y': c.y1, 'w': c.width, 'h': c.height };
|
||||
this.setDisabled($('.imgedit-crop', '#imgedit-panel-' + postid), 1);
|
||||
$('#imgedit-selection-' + postid).val( JSON.stringify(sel) );
|
||||
},
|
||||
|
||||
close : function(postid, warn) {
|
||||
warn = warn || false;
|
||||
|
||||
if ( warn && this.notsaved(postid) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
this.iasapi = {};
|
||||
this.hold = {};
|
||||
|
||||
// If we've loaded the editor in the context of a Media Modal, then switch to the previous view,
|
||||
// whatever that might have been.
|
||||
if ( this._view ){
|
||||
this._view.back();
|
||||
}
|
||||
|
||||
// In case we are not accessing the image editor in the context of a View, close the editor the old-skool way
|
||||
else {
|
||||
$('#image-editor-' + postid).fadeOut('fast', function() {
|
||||
$( '#media-head-' + postid ).fadeIn( 'fast', function() {
|
||||
// Move focus back to the Edit Image button. Runs also when saving.
|
||||
$( '#imgedit-open-btn-' + postid ).focus();
|
||||
});
|
||||
$(this).empty();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
},
|
||||
|
||||
notsaved : function(postid) {
|
||||
var h = $('#imgedit-history-' + postid).val(),
|
||||
history = ( h !== '' ) ? JSON.parse(h) : [],
|
||||
pop = this.intval( $('#imgedit-undone-' + postid).val() );
|
||||
|
||||
if ( pop < history.length ) {
|
||||
if ( confirm( $('#imgedit-leaving-' + postid).html() ) ) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
addStep : function(op, postid, nonce) {
|
||||
var t = this, elem = $('#imgedit-history-' + postid),
|
||||
history = ( elem.val() !== '' ) ? JSON.parse( elem.val() ) : [],
|
||||
undone = $( '#imgedit-undone-' + postid ),
|
||||
pop = t.intval( undone.val() );
|
||||
|
||||
while ( pop > 0 ) {
|
||||
history.pop();
|
||||
pop--;
|
||||
}
|
||||
undone.val(0); // reset
|
||||
|
||||
history.push(op);
|
||||
elem.val( JSON.stringify(history) );
|
||||
|
||||
t.refreshEditor(postid, nonce, function() {
|
||||
t.setDisabled($('#image-undo-' + postid), true);
|
||||
t.setDisabled($('#image-redo-' + postid), false);
|
||||
});
|
||||
},
|
||||
|
||||
rotate : function(angle, postid, nonce, t) {
|
||||
if ( $(t).hasClass('disabled') ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
this.addStep({ 'r': { 'r': angle, 'fw': this.hold.h, 'fh': this.hold.w }}, postid, nonce);
|
||||
},
|
||||
|
||||
flip : function (axis, postid, nonce, t) {
|
||||
if ( $(t).hasClass('disabled') ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
this.addStep({ 'f': { 'f': axis, 'fw': this.hold.w, 'fh': this.hold.h }}, postid, nonce);
|
||||
},
|
||||
|
||||
crop : function (postid, nonce, t) {
|
||||
var sel = $('#imgedit-selection-' + postid).val(),
|
||||
w = this.intval( $('#imgedit-sel-width-' + postid).val() ),
|
||||
h = this.intval( $('#imgedit-sel-height-' + postid).val() );
|
||||
|
||||
if ( $(t).hasClass('disabled') || sel === '' ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
sel = JSON.parse(sel);
|
||||
if ( sel.w > 0 && sel.h > 0 && w > 0 && h > 0 ) {
|
||||
sel.fw = w;
|
||||
sel.fh = h;
|
||||
this.addStep({ 'c': sel }, postid, nonce);
|
||||
}
|
||||
},
|
||||
|
||||
undo : function (postid, nonce) {
|
||||
var t = this, button = $('#image-undo-' + postid), elem = $('#imgedit-undone-' + postid),
|
||||
pop = t.intval( elem.val() ) + 1;
|
||||
|
||||
if ( button.hasClass('disabled') ) {
|
||||
return;
|
||||
}
|
||||
|
||||
elem.val(pop);
|
||||
t.refreshEditor(postid, nonce, function() {
|
||||
var elem = $('#imgedit-history-' + postid),
|
||||
history = ( elem.val() !== '' ) ? JSON.parse( elem.val() ) : [];
|
||||
|
||||
t.setDisabled($('#image-redo-' + postid), true);
|
||||
t.setDisabled(button, pop < history.length);
|
||||
// When undo gets disabled, move focus to the redo button to avoid a focus loss.
|
||||
if ( history.length === pop ) {
|
||||
$( '#image-redo-' + postid ).focus();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
redo : function(postid, nonce) {
|
||||
var t = this, button = $('#image-redo-' + postid), elem = $('#imgedit-undone-' + postid),
|
||||
pop = t.intval( elem.val() ) - 1;
|
||||
|
||||
if ( button.hasClass('disabled') ) {
|
||||
return;
|
||||
}
|
||||
|
||||
elem.val(pop);
|
||||
t.refreshEditor(postid, nonce, function() {
|
||||
t.setDisabled($('#image-undo-' + postid), true);
|
||||
t.setDisabled(button, pop > 0);
|
||||
// When redo gets disabled, move focus to the undo button to avoid a focus loss.
|
||||
if ( 0 === pop ) {
|
||||
$( '#image-undo-' + postid ).focus();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
setNumSelection : function(postid) {
|
||||
var sel, elX = $('#imgedit-sel-width-' + postid), elY = $('#imgedit-sel-height-' + postid),
|
||||
x = this.intval( elX.val() ), y = this.intval( elY.val() ),
|
||||
img = $('#image-preview-' + postid), imgh = img.height(), imgw = img.width(),
|
||||
sizer = this.hold.sizer, x1, y1, x2, y2, ias = this.iasapi;
|
||||
|
||||
if ( x < 1 ) {
|
||||
elX.val('');
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( y < 1 ) {
|
||||
elY.val('');
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( x && y && ( sel = ias.getSelection() ) ) {
|
||||
x2 = sel.x1 + Math.round( x * sizer );
|
||||
y2 = sel.y1 + Math.round( y * sizer );
|
||||
x1 = sel.x1;
|
||||
y1 = sel.y1;
|
||||
|
||||
if ( x2 > imgw ) {
|
||||
x1 = 0;
|
||||
x2 = imgw;
|
||||
elX.val( Math.round( x2 / sizer ) );
|
||||
}
|
||||
|
||||
if ( y2 > imgh ) {
|
||||
y1 = 0;
|
||||
y2 = imgh;
|
||||
elY.val( Math.round( y2 / sizer ) );
|
||||
}
|
||||
|
||||
ias.setSelection( x1, y1, x2, y2 );
|
||||
ias.update();
|
||||
this.setCropSelection(postid, ias.getSelection());
|
||||
}
|
||||
},
|
||||
|
||||
round : function(num) {
|
||||
var s;
|
||||
num = Math.round(num);
|
||||
|
||||
if ( this.hold.sizer > 0.6 ) {
|
||||
return num;
|
||||
}
|
||||
|
||||
s = num.toString().slice(-1);
|
||||
|
||||
if ( '1' === s ) {
|
||||
return num - 1;
|
||||
} else if ( '9' === s ) {
|
||||
return num + 1;
|
||||
}
|
||||
|
||||
return num;
|
||||
},
|
||||
|
||||
setRatioSelection : function(postid, n, el) {
|
||||
var sel, r, x = this.intval( $('#imgedit-crop-width-' + postid).val() ),
|
||||
y = this.intval( $('#imgedit-crop-height-' + postid).val() ),
|
||||
h = $('#image-preview-' + postid).height();
|
||||
|
||||
if ( !this.intval( $(el).val() ) ) {
|
||||
$(el).val('');
|
||||
return;
|
||||
}
|
||||
|
||||
if ( x && y ) {
|
||||
this.iasapi.setOptions({
|
||||
aspectRatio: x + ':' + y
|
||||
});
|
||||
|
||||
if ( sel = this.iasapi.getSelection(true) ) {
|
||||
r = Math.ceil( sel.y1 + ( ( sel.x2 - sel.x1 ) / ( x / y ) ) );
|
||||
|
||||
if ( r > h ) {
|
||||
r = h;
|
||||
if ( n ) {
|
||||
$('#imgedit-crop-height-' + postid).val('');
|
||||
} else {
|
||||
$('#imgedit-crop-width-' + postid).val('');
|
||||
}
|
||||
}
|
||||
|
||||
this.iasapi.setSelection( sel.x1, sel.y1, sel.x2, r );
|
||||
this.iasapi.update();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
})(jQuery);
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/image-edit.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/image-edit.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
374
Kapitel_7/Lektion_4/wordpress/wp-admin/js/inline-edit-post.js
Executable file
374
Kapitel_7/Lektion_4/wordpress/wp-admin/js/inline-edit-post.js
Executable file
@@ -0,0 +1,374 @@
|
||||
/* global inlineEditL10n, ajaxurl, typenow */
|
||||
window.wp = window.wp || {};
|
||||
|
||||
var inlineEditPost;
|
||||
( function( $, wp ) {
|
||||
inlineEditPost = {
|
||||
|
||||
init : function(){
|
||||
var t = this, qeRow = $('#inline-edit'), bulkRow = $('#bulk-edit');
|
||||
|
||||
t.type = $('table.widefat').hasClass('pages') ? 'page' : 'post';
|
||||
t.what = '#post-';
|
||||
|
||||
// prepare the edit rows
|
||||
qeRow.keyup(function(e){
|
||||
if ( e.which === 27 ) {
|
||||
return inlineEditPost.revert();
|
||||
}
|
||||
});
|
||||
bulkRow.keyup(function(e){
|
||||
if ( e.which === 27 ) {
|
||||
return inlineEditPost.revert();
|
||||
}
|
||||
});
|
||||
|
||||
$( '.cancel', qeRow ).click( function() {
|
||||
return inlineEditPost.revert();
|
||||
});
|
||||
$( '.save', qeRow ).click( function() {
|
||||
return inlineEditPost.save(this);
|
||||
});
|
||||
$('td', qeRow).keydown(function(e){
|
||||
if ( e.which === 13 && ! $( e.target ).hasClass( 'cancel' ) ) {
|
||||
return inlineEditPost.save(this);
|
||||
}
|
||||
});
|
||||
|
||||
$( '.cancel', bulkRow ).click( function() {
|
||||
return inlineEditPost.revert();
|
||||
});
|
||||
|
||||
$('#inline-edit .inline-edit-private input[value="private"]').click( function(){
|
||||
var pw = $('input.inline-edit-password-input');
|
||||
if ( $(this).prop('checked') ) {
|
||||
pw.val('').prop('disabled', true);
|
||||
} else {
|
||||
pw.prop('disabled', false);
|
||||
}
|
||||
});
|
||||
|
||||
// add events
|
||||
$('#the-list').on( 'click', 'a.editinline', function( e ) {
|
||||
e.preventDefault();
|
||||
inlineEditPost.edit(this);
|
||||
});
|
||||
|
||||
$('#bulk-edit').find('fieldset:first').after(
|
||||
$('#inline-edit fieldset.inline-edit-categories').clone()
|
||||
).siblings( 'fieldset:last' ).prepend(
|
||||
$('#inline-edit label.inline-edit-tags').clone()
|
||||
);
|
||||
|
||||
$('select[name="_status"] option[value="future"]', bulkRow).remove();
|
||||
|
||||
$('#doaction, #doaction2').click(function(e){
|
||||
var n;
|
||||
|
||||
t.whichBulkButtonId = $( this ).attr( 'id' );
|
||||
n = t.whichBulkButtonId.substr( 2 );
|
||||
|
||||
if ( 'edit' === $( 'select[name="' + n + '"]' ).val() ) {
|
||||
e.preventDefault();
|
||||
t.setBulk();
|
||||
} else if ( $('form#posts-filter tr.inline-editor').length > 0 ) {
|
||||
t.revert();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
toggle : function(el){
|
||||
var t = this;
|
||||
$( t.what + t.getId( el ) ).css( 'display' ) === 'none' ? t.revert() : t.edit( el );
|
||||
},
|
||||
|
||||
setBulk : function(){
|
||||
var te = '', type = this.type, tax, c = true;
|
||||
this.revert();
|
||||
|
||||
$( '#bulk-edit td' ).attr( 'colspan', $( 'th:visible, td:visible', '.widefat:first thead' ).length );
|
||||
// Insert the editor at the top of the table with an empty row above to maintain zebra striping.
|
||||
$('table.widefat tbody').prepend( $('#bulk-edit') ).prepend('<tr class="hidden"></tr>');
|
||||
$('#bulk-edit').addClass('inline-editor').show();
|
||||
|
||||
$( 'tbody th.check-column input[type="checkbox"]' ).each( function() {
|
||||
if ( $(this).prop('checked') ) {
|
||||
c = false;
|
||||
var id = $(this).val(), theTitle;
|
||||
theTitle = $('#inline_'+id+' .post_title').html() || inlineEditL10n.notitle;
|
||||
te += '<div id="ttle'+id+'"><a id="_'+id+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+theTitle+'</div>';
|
||||
}
|
||||
});
|
||||
|
||||
if ( c ) {
|
||||
return this.revert();
|
||||
}
|
||||
|
||||
$('#bulk-titles').html(te);
|
||||
$('#bulk-titles a').click(function(){
|
||||
var id = $(this).attr('id').substr(1);
|
||||
|
||||
$('table.widefat input[value="' + id + '"]').prop('checked', false);
|
||||
$('#ttle'+id).remove();
|
||||
});
|
||||
|
||||
// enable autocomplete for tags
|
||||
if ( 'post' === type ) {
|
||||
// support multi taxonomies?
|
||||
tax = 'post_tag';
|
||||
$('tr.inline-editor textarea[name="tax_input['+tax+']"]').suggest( ajaxurl + '?action=ajax-tag-search&tax=' + tax, { delay: 500, minchars: 2, multiple: true, multipleSep: inlineEditL10n.comma } );
|
||||
}
|
||||
$('html, body').animate( { scrollTop: 0 }, 'fast' );
|
||||
},
|
||||
|
||||
edit : function(id) {
|
||||
var t = this, fields, editRow, rowData, status, pageOpt, pageLevel, nextPage, pageLoop = true, nextLevel, f, val, pw;
|
||||
t.revert();
|
||||
|
||||
if ( typeof(id) === 'object' ) {
|
||||
id = t.getId(id);
|
||||
}
|
||||
|
||||
fields = ['post_title', 'post_name', 'post_author', '_status', 'jj', 'mm', 'aa', 'hh', 'mn', 'ss', 'post_password', 'post_format', 'menu_order'];
|
||||
if ( t.type === 'page' ) {
|
||||
fields.push('post_parent', 'page_template');
|
||||
}
|
||||
|
||||
// add the new edit row with an extra blank row underneath to maintain zebra striping.
|
||||
editRow = $('#inline-edit').clone(true);
|
||||
$( 'td', editRow ).attr( 'colspan', $( 'th:visible, td:visible', '.widefat:first thead' ).length );
|
||||
|
||||
$(t.what+id).removeClass('is-expanded').hide().after(editRow).after('<tr class="hidden"></tr>');
|
||||
|
||||
// populate the data
|
||||
rowData = $('#inline_'+id);
|
||||
if ( !$(':input[name="post_author"] option[value="' + $('.post_author', rowData).text() + '"]', editRow).val() ) {
|
||||
// author no longer has edit caps, so we need to add them to the list of authors
|
||||
$(':input[name="post_author"]', editRow).prepend('<option value="' + $('.post_author', rowData).text() + '">' + $('#' + t.type + '-' + id + ' .author').text() + '</option>');
|
||||
}
|
||||
if ( $( ':input[name="post_author"] option', editRow ).length === 1 ) {
|
||||
$('label.inline-edit-author', editRow).hide();
|
||||
}
|
||||
|
||||
for ( f = 0; f < fields.length; f++ ) {
|
||||
val = $('.'+fields[f], rowData);
|
||||
// Deal with Twemoji
|
||||
val.find( 'img' ).replaceWith( function() { return this.alt; } );
|
||||
val = val.text();
|
||||
$(':input[name="' + fields[f] + '"]', editRow).val( val );
|
||||
}
|
||||
|
||||
if ( $( '.comment_status', rowData ).text() === 'open' ) {
|
||||
$( 'input[name="comment_status"]', editRow ).prop( 'checked', true );
|
||||
}
|
||||
if ( $( '.ping_status', rowData ).text() === 'open' ) {
|
||||
$( 'input[name="ping_status"]', editRow ).prop( 'checked', true );
|
||||
}
|
||||
if ( $( '.sticky', rowData ).text() === 'sticky' ) {
|
||||
$( 'input[name="sticky"]', editRow ).prop( 'checked', true );
|
||||
}
|
||||
|
||||
// hierarchical taxonomies
|
||||
$('.post_category', rowData).each(function(){
|
||||
var taxname,
|
||||
term_ids = $(this).text();
|
||||
|
||||
if ( term_ids ) {
|
||||
taxname = $(this).attr('id').replace('_'+id, '');
|
||||
$('ul.'+taxname+'-checklist :checkbox', editRow).val(term_ids.split(','));
|
||||
}
|
||||
});
|
||||
|
||||
//flat taxonomies
|
||||
$('.tags_input', rowData).each(function(){
|
||||
var terms = $(this),
|
||||
taxname = $(this).attr('id').replace('_' + id, ''),
|
||||
textarea = $('textarea.tax_input_' + taxname, editRow),
|
||||
comma = inlineEditL10n.comma;
|
||||
|
||||
terms.find( 'img' ).replaceWith( function() { return this.alt; } );
|
||||
terms = terms.text();
|
||||
|
||||
if ( terms ) {
|
||||
if ( ',' !== comma ) {
|
||||
terms = terms.replace(/,/g, comma);
|
||||
}
|
||||
textarea.val(terms);
|
||||
}
|
||||
|
||||
textarea.suggest( ajaxurl + '?action=ajax-tag-search&tax=' + taxname, { delay: 500, minchars: 2, multiple: true, multipleSep: inlineEditL10n.comma } );
|
||||
});
|
||||
|
||||
// handle the post status
|
||||
status = $('._status', rowData).text();
|
||||
if ( 'future' !== status ) {
|
||||
$('select[name="_status"] option[value="future"]', editRow).remove();
|
||||
}
|
||||
|
||||
pw = $( '.inline-edit-password-input' ).prop( 'disabled', false );
|
||||
if ( 'private' === status ) {
|
||||
$('input[name="keep_private"]', editRow).prop('checked', true);
|
||||
pw.val( '' ).prop( 'disabled', true );
|
||||
}
|
||||
|
||||
// remove the current page and children from the parent dropdown
|
||||
pageOpt = $('select[name="post_parent"] option[value="' + id + '"]', editRow);
|
||||
if ( pageOpt.length > 0 ) {
|
||||
pageLevel = pageOpt[0].className.split('-')[1];
|
||||
nextPage = pageOpt;
|
||||
while ( pageLoop ) {
|
||||
nextPage = nextPage.next('option');
|
||||
if ( nextPage.length === 0 ) {
|
||||
break;
|
||||
}
|
||||
|
||||
nextLevel = nextPage[0].className.split('-')[1];
|
||||
|
||||
if ( nextLevel <= pageLevel ) {
|
||||
pageLoop = false;
|
||||
} else {
|
||||
nextPage.remove();
|
||||
nextPage = pageOpt;
|
||||
}
|
||||
}
|
||||
pageOpt.remove();
|
||||
}
|
||||
|
||||
$(editRow).attr('id', 'edit-'+id).addClass('inline-editor').show();
|
||||
$('.ptitle', editRow).focus();
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
// Ajax saving is only for Quick Edit.
|
||||
save : function(id) {
|
||||
var params, fields, page = $('.post_status_page').val() || '';
|
||||
|
||||
if ( typeof(id) === 'object' ) {
|
||||
id = this.getId(id);
|
||||
}
|
||||
|
||||
$( 'table.widefat .spinner' ).addClass( 'is-active' );
|
||||
|
||||
params = {
|
||||
action: 'inline-save',
|
||||
post_type: typenow,
|
||||
post_ID: id,
|
||||
edit_date: 'true',
|
||||
post_status: page
|
||||
};
|
||||
|
||||
fields = $('#edit-'+id).find(':input').serialize();
|
||||
params = fields + '&' + $.param(params);
|
||||
|
||||
// make ajax request
|
||||
$.post( ajaxurl, params,
|
||||
function(r) {
|
||||
var $errorSpan = $( '#edit-' + id + ' .inline-edit-save .error' );
|
||||
|
||||
$( 'table.widefat .spinner' ).removeClass( 'is-active' );
|
||||
$( '.ac_results' ).hide();
|
||||
|
||||
if (r) {
|
||||
if ( -1 !== r.indexOf( '<tr' ) ) {
|
||||
$(inlineEditPost.what+id).siblings('tr.hidden').addBack().remove();
|
||||
$('#edit-'+id).before(r).remove();
|
||||
$( inlineEditPost.what + id ).hide().fadeIn( 400, function() {
|
||||
// Move focus back to the Quick Edit link. $( this ) is the row being animated.
|
||||
$( this ).find( '.editinline' ).focus();
|
||||
wp.a11y.speak( inlineEditL10n.saved );
|
||||
});
|
||||
} else {
|
||||
r = r.replace( /<.[^<>]*?>/g, '' );
|
||||
$errorSpan.html( r ).show();
|
||||
wp.a11y.speak( $errorSpan.text() );
|
||||
}
|
||||
} else {
|
||||
$errorSpan.html( inlineEditL10n.error ).show();
|
||||
wp.a11y.speak( inlineEditL10n.error );
|
||||
}
|
||||
},
|
||||
'html');
|
||||
// Prevent submitting the form when pressing Enter on a focused field.
|
||||
return false;
|
||||
},
|
||||
|
||||
// Revert is for both Quick Edit and Bulk Edit.
|
||||
revert : function(){
|
||||
var $tableWideFat = $( '.widefat' ),
|
||||
id = $( '.inline-editor', $tableWideFat ).attr( 'id' );
|
||||
|
||||
if ( id ) {
|
||||
$( '.spinner', $tableWideFat ).removeClass( 'is-active' );
|
||||
$( '.ac_results' ).hide();
|
||||
|
||||
if ( 'bulk-edit' === id ) {
|
||||
$( '#bulk-edit', $tableWideFat ).removeClass( 'inline-editor' ).hide().siblings( '.hidden' ).remove();
|
||||
$('#bulk-titles').empty();
|
||||
$('#inlineedit').append( $('#bulk-edit') );
|
||||
// Move focus back to the Bulk Action button that was activated.
|
||||
$( '#' + inlineEditPost.whichBulkButtonId ).focus();
|
||||
} else {
|
||||
$('#'+id).siblings('tr.hidden').addBack().remove();
|
||||
id = id.substr( id.lastIndexOf('-') + 1 );
|
||||
// Show the post row and move focus back to the Quick Edit link.
|
||||
$( this.what + id ).show().find( '.editinline' ).focus();
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
getId : function(o) {
|
||||
var id = $(o).closest('tr').attr('id'),
|
||||
parts = id.split('-');
|
||||
return parts[parts.length - 1];
|
||||
}
|
||||
};
|
||||
|
||||
$( document ).ready( function(){ inlineEditPost.init(); } );
|
||||
|
||||
// Show/hide locks on posts
|
||||
$( document ).on( 'heartbeat-tick.wp-check-locked-posts', function( e, data ) {
|
||||
var locked = data['wp-check-locked-posts'] || {};
|
||||
|
||||
$('#the-list tr').each( function(i, el) {
|
||||
var key = el.id, row = $(el), lock_data, avatar;
|
||||
|
||||
if ( locked.hasOwnProperty( key ) ) {
|
||||
if ( ! row.hasClass('wp-locked') ) {
|
||||
lock_data = locked[key];
|
||||
row.find('.column-title .locked-text').text( lock_data.text );
|
||||
row.find('.check-column checkbox').prop('checked', false);
|
||||
|
||||
if ( lock_data.avatar_src ) {
|
||||
avatar = $( '<img class="avatar avatar-18 photo" width="18" height="18" alt="" />' ).attr( 'src', lock_data.avatar_src.replace( /&/g, '&' ) );
|
||||
row.find('.column-title .locked-avatar').empty().append( avatar );
|
||||
}
|
||||
row.addClass('wp-locked');
|
||||
}
|
||||
} else if ( row.hasClass('wp-locked') ) {
|
||||
// Make room for the CSS animation
|
||||
row.removeClass('wp-locked').delay(1000).find('.locked-info span').empty();
|
||||
}
|
||||
});
|
||||
}).on( 'heartbeat-send.wp-check-locked-posts', function( e, data ) {
|
||||
var check = [];
|
||||
|
||||
$('#the-list tr').each( function(i, el) {
|
||||
if ( el.id ) {
|
||||
check.push( el.id );
|
||||
}
|
||||
});
|
||||
|
||||
if ( check.length ) {
|
||||
data['wp-check-locked-posts'] = check;
|
||||
}
|
||||
}).ready( function() {
|
||||
// Set the heartbeat interval to 15 sec.
|
||||
if ( typeof wp !== 'undefined' && wp.heartbeat ) {
|
||||
wp.heartbeat.interval( 15 );
|
||||
}
|
||||
});
|
||||
|
||||
})( jQuery, window.wp );
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/inline-edit-post.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/inline-edit-post.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
163
Kapitel_7/Lektion_4/wordpress/wp-admin/js/inline-edit-tax.js
Executable file
163
Kapitel_7/Lektion_4/wordpress/wp-admin/js/inline-edit-tax.js
Executable file
@@ -0,0 +1,163 @@
|
||||
/* global inlineEditL10n, ajaxurl */
|
||||
window.wp = window.wp || {};
|
||||
|
||||
var inlineEditTax;
|
||||
( function( $, wp ) {
|
||||
inlineEditTax = {
|
||||
|
||||
init : function() {
|
||||
var t = this, row = $('#inline-edit');
|
||||
|
||||
t.type = $('#the-list').attr('data-wp-lists').substr(5);
|
||||
t.what = '#'+t.type+'-';
|
||||
|
||||
$('#the-list').on('click', 'a.editinline', function(){
|
||||
inlineEditTax.edit(this);
|
||||
return false;
|
||||
});
|
||||
|
||||
// prepare the edit row
|
||||
row.keyup( function( e ) {
|
||||
if ( e.which === 27 ) {
|
||||
return inlineEditTax.revert();
|
||||
}
|
||||
});
|
||||
|
||||
$( '.cancel', row ).click( function() {
|
||||
return inlineEditTax.revert();
|
||||
});
|
||||
$( '.save', row ).click( function() {
|
||||
return inlineEditTax.save(this);
|
||||
});
|
||||
$( 'input, select', row ).keydown( function( e ) {
|
||||
if ( e.which === 13 ) {
|
||||
return inlineEditTax.save( this );
|
||||
}
|
||||
});
|
||||
|
||||
$( '#posts-filter input[type="submit"]' ).mousedown( function() {
|
||||
t.revert();
|
||||
});
|
||||
},
|
||||
|
||||
toggle : function(el) {
|
||||
var t = this;
|
||||
$(t.what+t.getId(el)).css('display') === 'none' ? t.revert() : t.edit(el);
|
||||
},
|
||||
|
||||
edit : function(id) {
|
||||
var editRow, rowData, val,
|
||||
t = this;
|
||||
t.revert();
|
||||
|
||||
if ( typeof(id) === 'object' ) {
|
||||
id = t.getId(id);
|
||||
}
|
||||
|
||||
editRow = $('#inline-edit').clone(true), rowData = $('#inline_'+id);
|
||||
$( 'td', editRow ).attr( 'colspan', $( 'th:visible, td:visible', '.widefat:first thead' ).length );
|
||||
|
||||
$(t.what+id).hide().after(editRow).after('<tr class="hidden"></tr>');
|
||||
|
||||
val = $('.name', rowData);
|
||||
val.find( 'img' ).replaceWith( function() { return this.alt; } );
|
||||
val = val.text();
|
||||
$(':input[name="name"]', editRow).val( val );
|
||||
|
||||
val = $('.slug', rowData);
|
||||
val.find( 'img' ).replaceWith( function() { return this.alt; } );
|
||||
val = val.text();
|
||||
$(':input[name="slug"]', editRow).val( val );
|
||||
|
||||
$(editRow).attr('id', 'edit-'+id).addClass('inline-editor').show();
|
||||
$('.ptitle', editRow).eq(0).focus();
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
save : function(id) {
|
||||
var params, fields, tax = $('input[name="taxonomy"]').val() || '';
|
||||
|
||||
if( typeof(id) === 'object' ) {
|
||||
id = this.getId(id);
|
||||
}
|
||||
|
||||
$( 'table.widefat .spinner' ).addClass( 'is-active' );
|
||||
|
||||
params = {
|
||||
action: 'inline-save-tax',
|
||||
tax_type: this.type,
|
||||
tax_ID: id,
|
||||
taxonomy: tax
|
||||
};
|
||||
|
||||
fields = $('#edit-'+id).find(':input').serialize();
|
||||
params = fields + '&' + $.param(params);
|
||||
|
||||
// make ajax request
|
||||
$.post( ajaxurl, params,
|
||||
function(r) {
|
||||
var row, new_id, option_value,
|
||||
$errorSpan = $( '#edit-' + id + ' .inline-edit-save .error' );
|
||||
|
||||
$( 'table.widefat .spinner' ).removeClass( 'is-active' );
|
||||
|
||||
if (r) {
|
||||
if ( -1 !== r.indexOf( '<tr' ) ) {
|
||||
$(inlineEditTax.what+id).siblings('tr.hidden').addBack().remove();
|
||||
new_id = $(r).attr('id');
|
||||
|
||||
$('#edit-'+id).before(r).remove();
|
||||
|
||||
if ( new_id ) {
|
||||
option_value = new_id.replace( inlineEditTax.type + '-', '' );
|
||||
row = $( '#' + new_id );
|
||||
} else {
|
||||
option_value = id;
|
||||
row = $( inlineEditTax.what + id );
|
||||
}
|
||||
|
||||
// Update the value in the Parent dropdown.
|
||||
$( '#parent' ).find( 'option[value=' + option_value + ']' ).text( row.find( '.row-title' ).text() );
|
||||
|
||||
row.hide().fadeIn( 400, function() {
|
||||
// Move focus back to the Quick Edit link.
|
||||
row.find( '.editinline' ).focus();
|
||||
wp.a11y.speak( inlineEditL10n.saved );
|
||||
});
|
||||
|
||||
} else {
|
||||
$errorSpan.html( r ).show();
|
||||
// Some error strings may contain HTML entities (e.g. `“`), let's use the HTML element's text.
|
||||
wp.a11y.speak( $errorSpan.text() );
|
||||
}
|
||||
} else {
|
||||
$errorSpan.html( inlineEditL10n.error ).show();
|
||||
wp.a11y.speak( inlineEditL10n.error );
|
||||
}
|
||||
}
|
||||
);
|
||||
// Prevent submitting the form when pressing Enter on a focused field.
|
||||
return false;
|
||||
},
|
||||
|
||||
revert : function() {
|
||||
var id = $('table.widefat tr.inline-editor').attr('id');
|
||||
|
||||
if ( id ) {
|
||||
$( 'table.widefat .spinner' ).removeClass( 'is-active' );
|
||||
$('#'+id).siblings('tr.hidden').addBack().remove();
|
||||
id = id.substr( id.lastIndexOf('-') + 1 );
|
||||
// Show the taxonomy row and move focus back to the Quick Edit link.
|
||||
$( this.what + id ).show().find( '.editinline' ).focus();
|
||||
}
|
||||
},
|
||||
|
||||
getId : function(o) {
|
||||
var id = o.tagName === 'TR' ? o.id : $(o).parents('tr').attr('id'), parts = id.split('-');
|
||||
return parts[parts.length - 1];
|
||||
}
|
||||
};
|
||||
|
||||
$(document).ready(function(){inlineEditTax.init();});
|
||||
})( jQuery, window.wp );
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/inline-edit-tax.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/inline-edit-tax.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
window.wp=window.wp||{};var inlineEditTax;!function(a,b){inlineEditTax={init:function(){var b=this,c=a("#inline-edit");b.type=a("#the-list").attr("data-wp-lists").substr(5),b.what="#"+b.type+"-",a("#the-list").on("click","a.editinline",function(){return inlineEditTax.edit(this),!1}),c.keyup(function(a){return 27===a.which?inlineEditTax.revert():void 0}),a(".cancel",c).click(function(){return inlineEditTax.revert()}),a(".save",c).click(function(){return inlineEditTax.save(this)}),a("input, select",c).keydown(function(a){return 13===a.which?inlineEditTax.save(this):void 0}),a('#posts-filter input[type="submit"]').mousedown(function(){b.revert()})},toggle:function(b){var c=this;"none"===a(c.what+c.getId(b)).css("display")?c.revert():c.edit(b)},edit:function(b){var c,d,e,f=this;return f.revert(),"object"==typeof b&&(b=f.getId(b)),c=a("#inline-edit").clone(!0),d=a("#inline_"+b),a("td",c).attr("colspan",a("th:visible, td:visible",".widefat:first thead").length),a(f.what+b).hide().after(c).after('<tr class="hidden"></tr>'),e=a(".name",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="name"]',c).val(e),e=a(".slug",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="slug"]',c).val(e),a(c).attr("id","edit-"+b).addClass("inline-editor").show(),a(".ptitle",c).eq(0).focus(),!1},save:function(c){var d,e,f=a('input[name="taxonomy"]').val()||"";return"object"==typeof c&&(c=this.getId(c)),a("table.widefat .spinner").addClass("is-active"),d={action:"inline-save-tax",tax_type:this.type,tax_ID:c,taxonomy:f},e=a("#edit-"+c).find(":input").serialize(),d=e+"&"+a.param(d),a.post(ajaxurl,d,function(d){var e,f,g,h=a("#edit-"+c+" .inline-edit-save .error");a("table.widefat .spinner").removeClass("is-active"),d?-1!==d.indexOf("<tr")?(a(inlineEditTax.what+c).siblings("tr.hidden").addBack().remove(),f=a(d).attr("id"),a("#edit-"+c).before(d).remove(),f?(g=f.replace(inlineEditTax.type+"-",""),e=a("#"+f)):(g=c,e=a(inlineEditTax.what+c)),a("#parent").find("option[value="+g+"]").text(e.find(".row-title").text()),e.hide().fadeIn(400,function(){e.find(".editinline").focus(),b.a11y.speak(inlineEditL10n.saved)})):(h.html(d).show(),b.a11y.speak(h.text())):(h.html(inlineEditL10n.error).show(),b.a11y.speak(inlineEditL10n.error))}),!1},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");b&&(a("table.widefat .spinner").removeClass("is-active"),a("#"+b).siblings("tr.hidden").addBack().remove(),b=b.substr(b.lastIndexOf("-")+1),a(this.what+b).show().find(".editinline").focus())},getId:function(b){var c="TR"===b.tagName?b.id:a(b).parents("tr").attr("id"),d=c.split("-");return d[d.length-1]}},a(document).ready(function(){inlineEditTax.init()})}(jQuery,window.wp);
|
||||
4
Kapitel_7/Lektion_4/wordpress/wp-admin/js/iris.min.js
vendored
Executable file
4
Kapitel_7/Lektion_4/wordpress/wp-admin/js/iris.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
26
Kapitel_7/Lektion_4/wordpress/wp-admin/js/language-chooser.js
Executable file
26
Kapitel_7/Lektion_4/wordpress/wp-admin/js/language-chooser.js
Executable file
@@ -0,0 +1,26 @@
|
||||
jQuery( function($) {
|
||||
|
||||
var select = $( '#language' ),
|
||||
submit = $( '#language-continue' );
|
||||
|
||||
if ( ! $( 'body' ).hasClass( 'language-chooser' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
select.focus().on( 'change', function() {
|
||||
var option = select.children( 'option:selected' );
|
||||
submit.attr({
|
||||
value: option.data( 'continue' ),
|
||||
lang: option.attr( 'lang' )
|
||||
});
|
||||
});
|
||||
|
||||
$( 'form' ).submit( function() {
|
||||
// Don't show a spinner for English and installed languages,
|
||||
// as there is nothing to download.
|
||||
if ( ! select.children( 'option:selected' ).data( 'installed' ) ) {
|
||||
$( this ).find( '.step .spinner' ).css( 'visibility', 'visible' );
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/language-chooser.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/language-chooser.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
jQuery(function(a){var b=a("#language"),c=a("#language-continue");a("body").hasClass("language-chooser")&&(b.focus().on("change",function(){var a=b.children("option:selected");c.attr({value:a.data("continue"),lang:a.attr("lang")})}),a("form").submit(function(){b.children("option:selected").data("installed")||a(this).find(".step .spinner").css("visibility","visible")}))});
|
||||
69
Kapitel_7/Lektion_4/wordpress/wp-admin/js/link.js
Executable file
69
Kapitel_7/Lektion_4/wordpress/wp-admin/js/link.js
Executable file
@@ -0,0 +1,69 @@
|
||||
/* global postboxes, deleteUserSetting, setUserSetting, getUserSetting */
|
||||
|
||||
jQuery(document).ready( function($) {
|
||||
|
||||
var newCat, noSyncChecks = false, syncChecks, catAddAfter;
|
||||
|
||||
$('#link_name').focus();
|
||||
// postboxes
|
||||
postboxes.add_postbox_toggles('link');
|
||||
|
||||
// category tabs
|
||||
$('#category-tabs a').click(function(){
|
||||
var t = $(this).attr('href');
|
||||
$(this).parent().addClass('tabs').siblings('li').removeClass('tabs');
|
||||
$('.tabs-panel').hide();
|
||||
$(t).show();
|
||||
if ( '#categories-all' == t )
|
||||
deleteUserSetting('cats');
|
||||
else
|
||||
setUserSetting('cats','pop');
|
||||
return false;
|
||||
});
|
||||
if ( getUserSetting('cats') )
|
||||
$('#category-tabs a[href="#categories-pop"]').click();
|
||||
|
||||
// Ajax Cat
|
||||
newCat = $('#newcat').one( 'focus', function() { $(this).val( '' ).removeClass( 'form-input-tip' ); } );
|
||||
$('#link-category-add-submit').click( function() { newCat.focus(); } );
|
||||
syncChecks = function() {
|
||||
if ( noSyncChecks )
|
||||
return;
|
||||
noSyncChecks = true;
|
||||
var th = $(this), c = th.is(':checked'), id = th.val().toString();
|
||||
$('#in-link-category-' + id + ', #in-popular-link_category-' + id).prop( 'checked', c );
|
||||
noSyncChecks = false;
|
||||
};
|
||||
|
||||
catAddAfter = function( r, s ) {
|
||||
$(s.what + ' response_data', r).each( function() {
|
||||
var t = $($(this).text());
|
||||
t.find( 'label' ).each( function() {
|
||||
var th = $(this), val = th.find('input').val(), id = th.find('input')[0].id, name = $.trim( th.text() ), o;
|
||||
$('#' + id).change( syncChecks );
|
||||
o = $( '<option value="' + parseInt( val, 10 ) + '"></option>' ).text( name );
|
||||
} );
|
||||
} );
|
||||
};
|
||||
|
||||
$('#categorychecklist').wpList( {
|
||||
alt: '',
|
||||
what: 'link-category',
|
||||
response: 'category-ajax-response',
|
||||
addAfter: catAddAfter
|
||||
} );
|
||||
|
||||
$('a[href="#categories-all"]').click(function(){deleteUserSetting('cats');});
|
||||
$('a[href="#categories-pop"]').click(function(){setUserSetting('cats','pop');});
|
||||
if ( 'pop' == getUserSetting('cats') )
|
||||
$('a[href="#categories-pop"]').click();
|
||||
|
||||
$('#category-add-toggle').click( function() {
|
||||
$(this).parents('div:first').toggleClass( 'wp-hidden-children' );
|
||||
$('#category-tabs a[href="#categories-all"]').click();
|
||||
$('#newcategory').focus();
|
||||
return false;
|
||||
} );
|
||||
|
||||
$('.categorychecklist :checkbox').change( syncChecks ).filter( ':checked' ).change();
|
||||
});
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/link.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/link.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
jQuery(document).ready(function(a){var b,c,d,e=!1;a("#link_name").focus(),postboxes.add_postbox_toggles("link"),a("#category-tabs a").click(function(){var b=a(this).attr("href");return a(this).parent().addClass("tabs").siblings("li").removeClass("tabs"),a(".tabs-panel").hide(),a(b).show(),"#categories-all"==b?deleteUserSetting("cats"):setUserSetting("cats","pop"),!1}),getUserSetting("cats")&&a('#category-tabs a[href="#categories-pop"]').click(),b=a("#newcat").one("focus",function(){a(this).val("").removeClass("form-input-tip")}),a("#link-category-add-submit").click(function(){b.focus()}),c=function(){if(!e){e=!0;var b=a(this),c=b.is(":checked"),d=b.val().toString();a("#in-link-category-"+d+", #in-popular-link_category-"+d).prop("checked",c),e=!1}},d=function(b,d){a(d.what+" response_data",b).each(function(){var b=a(a(this).text());b.find("label").each(function(){var b,d=a(this),e=d.find("input").val(),f=d.find("input")[0].id,g=a.trim(d.text());a("#"+f).change(c),b=a('<option value="'+parseInt(e,10)+'"></option>').text(g)})})},a("#categorychecklist").wpList({alt:"",what:"link-category",response:"category-ajax-response",addAfter:d}),a('a[href="#categories-all"]').click(function(){deleteUserSetting("cats")}),a('a[href="#categories-pop"]').click(function(){setUserSetting("cats","pop")}),"pop"==getUserSetting("cats")&&a('a[href="#categories-pop"]').click(),a("#category-add-toggle").click(function(){return a(this).parents("div:first").toggleClass("wp-hidden-children"),a('#category-tabs a[href="#categories-all"]').click(),a("#newcategory").focus(),!1}),a(".categorychecklist :checkbox").change(c).filter(":checked").change()});
|
||||
26
Kapitel_7/Lektion_4/wordpress/wp-admin/js/media-gallery.js
Executable file
26
Kapitel_7/Lektion_4/wordpress/wp-admin/js/media-gallery.js
Executable file
@@ -0,0 +1,26 @@
|
||||
/* global ajaxurl */
|
||||
jQuery(function($){
|
||||
$( 'body' ).bind( 'click.wp-gallery', function(e){
|
||||
var target = $( e.target ), id, img_size;
|
||||
|
||||
if ( target.hasClass( 'wp-set-header' ) ) {
|
||||
( window.dialogArguments || opener || parent || top ).location.href = target.data( 'location' );
|
||||
e.preventDefault();
|
||||
} else if ( target.hasClass( 'wp-set-background' ) ) {
|
||||
id = target.data( 'attachment-id' );
|
||||
img_size = $( 'input[name="attachments[' + id + '][image-size]"]:checked').val();
|
||||
|
||||
jQuery.post(ajaxurl, {
|
||||
action: 'set-background-image',
|
||||
attachment_id: id,
|
||||
size: img_size
|
||||
}, function(){
|
||||
var win = window.dialogArguments || opener || parent || top;
|
||||
win.tb_remove();
|
||||
win.location.reload();
|
||||
});
|
||||
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
});
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/media-gallery.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/media-gallery.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
jQuery(function(a){a("body").bind("click.wp-gallery",function(b){var c,d,e=a(b.target);e.hasClass("wp-set-header")?((window.dialogArguments||opener||parent||top).location.href=e.data("location"),b.preventDefault()):e.hasClass("wp-set-background")&&(c=e.data("attachment-id"),d=a('input[name="attachments['+c+'][image-size]"]:checked').val(),jQuery.post(ajaxurl,{action:"set-background-image",attachment_id:c,size:d},function(){var a=window.dialogArguments||opener||parent||top;a.tb_remove(),a.location.reload()}),b.preventDefault())})});
|
||||
69
Kapitel_7/Lektion_4/wordpress/wp-admin/js/media-upload.js
Executable file
69
Kapitel_7/Lektion_4/wordpress/wp-admin/js/media-upload.js
Executable file
@@ -0,0 +1,69 @@
|
||||
/* global tinymce, QTags */
|
||||
// send html to the post editor
|
||||
|
||||
var wpActiveEditor, send_to_editor;
|
||||
|
||||
send_to_editor = function( html ) {
|
||||
var editor,
|
||||
hasTinymce = typeof tinymce !== 'undefined',
|
||||
hasQuicktags = typeof QTags !== 'undefined';
|
||||
|
||||
if ( ! wpActiveEditor ) {
|
||||
if ( hasTinymce && tinymce.activeEditor ) {
|
||||
editor = tinymce.activeEditor;
|
||||
wpActiveEditor = editor.id;
|
||||
} else if ( ! hasQuicktags ) {
|
||||
return false;
|
||||
}
|
||||
} else if ( hasTinymce ) {
|
||||
editor = tinymce.get( wpActiveEditor );
|
||||
}
|
||||
|
||||
if ( editor && ! editor.isHidden() ) {
|
||||
editor.execCommand( 'mceInsertContent', false, html );
|
||||
} else if ( hasQuicktags ) {
|
||||
QTags.insertContent( html );
|
||||
} else {
|
||||
document.getElementById( wpActiveEditor ).value += html;
|
||||
}
|
||||
|
||||
// If the old thickbox remove function exists, call it
|
||||
if ( window.tb_remove ) {
|
||||
try { window.tb_remove(); } catch( e ) {}
|
||||
}
|
||||
};
|
||||
|
||||
// thickbox settings
|
||||
var tb_position;
|
||||
(function($) {
|
||||
tb_position = function() {
|
||||
var tbWindow = $('#TB_window'),
|
||||
width = $(window).width(),
|
||||
H = $(window).height(),
|
||||
W = ( 833 < width ) ? 833 : width,
|
||||
adminbar_height = 0;
|
||||
|
||||
if ( $('#wpadminbar').length ) {
|
||||
adminbar_height = parseInt( $('#wpadminbar').css('height'), 10 );
|
||||
}
|
||||
|
||||
if ( tbWindow.length ) {
|
||||
tbWindow.width( W - 50 ).height( H - 45 - adminbar_height );
|
||||
$('#TB_iframeContent').width( W - 50 ).height( H - 75 - adminbar_height );
|
||||
tbWindow.css({'margin-left': '-' + parseInt( ( ( W - 50 ) / 2 ), 10 ) + 'px'});
|
||||
if ( typeof document.body.style.maxWidth !== 'undefined' )
|
||||
tbWindow.css({'top': 20 + adminbar_height + 'px', 'margin-top': '0'});
|
||||
}
|
||||
|
||||
return $('a.thickbox').each( function() {
|
||||
var href = $(this).attr('href');
|
||||
if ( ! href ) return;
|
||||
href = href.replace(/&width=[0-9]+/g, '');
|
||||
href = href.replace(/&height=[0-9]+/g, '');
|
||||
$(this).attr( 'href', href + '&width=' + ( W - 80 ) + '&height=' + ( H - 85 - adminbar_height ) );
|
||||
});
|
||||
};
|
||||
|
||||
$(window).resize(function(){ tb_position(); });
|
||||
|
||||
})(jQuery);
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/media-upload.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/media-upload.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
var wpActiveEditor,send_to_editor;send_to_editor=function(a){var b,c="undefined"!=typeof tinymce,d="undefined"!=typeof QTags;if(wpActiveEditor)c&&(b=tinymce.get(wpActiveEditor));else if(c&&tinymce.activeEditor)b=tinymce.activeEditor,wpActiveEditor=b.id;else if(!d)return!1;if(b&&!b.isHidden()?b.execCommand("mceInsertContent",!1,a):d?QTags.insertContent(a):document.getElementById(wpActiveEditor).value+=a,window.tb_remove)try{window.tb_remove()}catch(e){}};var tb_position;!function(a){tb_position=function(){var b=a("#TB_window"),c=a(window).width(),d=a(window).height(),e=c>833?833:c,f=0;return a("#wpadminbar").length&&(f=parseInt(a("#wpadminbar").css("height"),10)),b.length&&(b.width(e-50).height(d-45-f),a("#TB_iframeContent").width(e-50).height(d-75-f),b.css({"margin-left":"-"+parseInt((e-50)/2,10)+"px"}),"undefined"!=typeof document.body.style.maxWidth&&b.css({top:20+f+"px","margin-top":"0"})),a("a.thickbox").each(function(){var b=a(this).attr("href");b&&(b=b.replace(/&width=[0-9]+/g,""),b=b.replace(/&height=[0-9]+/g,""),a(this).attr("href",b+"&width="+(e-80)+"&height="+(d-85-f)))})},a(window).resize(function(){tb_position()})}(jQuery);
|
||||
114
Kapitel_7/Lektion_4/wordpress/wp-admin/js/media.js
Executable file
114
Kapitel_7/Lektion_4/wordpress/wp-admin/js/media.js
Executable file
@@ -0,0 +1,114 @@
|
||||
/* global ajaxurl, attachMediaBoxL10n, _wpMediaGridSettings */
|
||||
|
||||
var findPosts;
|
||||
( function( $ ){
|
||||
findPosts = {
|
||||
open: function( af_name, af_val ) {
|
||||
var overlay = $( '.ui-find-overlay' );
|
||||
|
||||
if ( overlay.length === 0 ) {
|
||||
$( 'body' ).append( '<div class="ui-find-overlay"></div>' );
|
||||
findPosts.overlay();
|
||||
}
|
||||
|
||||
overlay.show();
|
||||
|
||||
if ( af_name && af_val ) {
|
||||
$( '#affected' ).attr( 'name', af_name ).val( af_val );
|
||||
}
|
||||
|
||||
$( '#find-posts' ).show();
|
||||
|
||||
$('#find-posts-input').focus().keyup( function( event ){
|
||||
if ( event.which == 27 ) {
|
||||
findPosts.close();
|
||||
} // close on Escape
|
||||
});
|
||||
|
||||
// Pull some results up by default
|
||||
findPosts.send();
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
close: function() {
|
||||
$('#find-posts-response').empty();
|
||||
$('#find-posts').hide();
|
||||
$( '.ui-find-overlay' ).hide();
|
||||
},
|
||||
|
||||
overlay: function() {
|
||||
$( '.ui-find-overlay' ).on( 'click', function () {
|
||||
findPosts.close();
|
||||
});
|
||||
},
|
||||
|
||||
send: function() {
|
||||
var post = {
|
||||
ps: $( '#find-posts-input' ).val(),
|
||||
action: 'find_posts',
|
||||
_ajax_nonce: $('#_ajax_nonce').val()
|
||||
},
|
||||
spinner = $( '.find-box-search .spinner' );
|
||||
|
||||
spinner.addClass( 'is-active' );
|
||||
|
||||
$.ajax( ajaxurl, {
|
||||
type: 'POST',
|
||||
data: post,
|
||||
dataType: 'json'
|
||||
}).always( function() {
|
||||
spinner.removeClass( 'is-active' );
|
||||
}).done( function( x ) {
|
||||
if ( ! x.success ) {
|
||||
$( '#find-posts-response' ).text( attachMediaBoxL10n.error );
|
||||
}
|
||||
|
||||
$( '#find-posts-response' ).html( x.data );
|
||||
}).fail( function() {
|
||||
$( '#find-posts-response' ).text( attachMediaBoxL10n.error );
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$( document ).ready( function() {
|
||||
var settings, $mediaGridWrap = $( '#wp-media-grid' );
|
||||
|
||||
// Open up a manage media frame into the grid.
|
||||
if ( $mediaGridWrap.length && window.wp && window.wp.media ) {
|
||||
settings = _wpMediaGridSettings;
|
||||
|
||||
window.wp.media({
|
||||
frame: 'manage',
|
||||
container: $mediaGridWrap,
|
||||
library: settings.queryVars
|
||||
}).open();
|
||||
}
|
||||
|
||||
$( '#find-posts-submit' ).click( function( event ) {
|
||||
if ( ! $( '#find-posts-response input[type="radio"]:checked' ).length )
|
||||
event.preventDefault();
|
||||
});
|
||||
$( '#find-posts .find-box-search :input' ).keypress( function( event ) {
|
||||
if ( 13 == event.which ) {
|
||||
findPosts.send();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
$( '#find-posts-search' ).click( findPosts.send );
|
||||
$( '#find-posts-close' ).click( findPosts.close );
|
||||
$( '#doaction, #doaction2' ).click( function( event ) {
|
||||
$( 'select[name^="action"]' ).each( function() {
|
||||
if ( $(this).val() === 'attach' ) {
|
||||
event.preventDefault();
|
||||
findPosts.open();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Enable whole row to be clicked
|
||||
$( '.find-box-inside' ).on( 'click', 'tr', function() {
|
||||
$( this ).find( '.found-radio input' ).prop( 'checked', true );
|
||||
});
|
||||
});
|
||||
})( jQuery );
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/media.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/media.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
var findPosts;!function(a){findPosts={open:function(b,c){var d=a(".ui-find-overlay");return 0===d.length&&(a("body").append('<div class="ui-find-overlay"></div>'),findPosts.overlay()),d.show(),b&&c&&a("#affected").attr("name",b).val(c),a("#find-posts").show(),a("#find-posts-input").focus().keyup(function(a){27==a.which&&findPosts.close()}),findPosts.send(),!1},close:function(){a("#find-posts-response").empty(),a("#find-posts").hide(),a(".ui-find-overlay").hide()},overlay:function(){a(".ui-find-overlay").on("click",function(){findPosts.close()})},send:function(){var b={ps:a("#find-posts-input").val(),action:"find_posts",_ajax_nonce:a("#_ajax_nonce").val()},c=a(".find-box-search .spinner");c.addClass("is-active"),a.ajax(ajaxurl,{type:"POST",data:b,dataType:"json"}).always(function(){c.removeClass("is-active")}).done(function(b){b.success||a("#find-posts-response").text(attachMediaBoxL10n.error),a("#find-posts-response").html(b.data)}).fail(function(){a("#find-posts-response").text(attachMediaBoxL10n.error)})}},a(document).ready(function(){var b,c=a("#wp-media-grid");c.length&&window.wp&&window.wp.media&&(b=_wpMediaGridSettings,window.wp.media({frame:"manage",container:c,library:b.queryVars}).open()),a("#find-posts-submit").click(function(b){a('#find-posts-response input[type="radio"]:checked').length||b.preventDefault()}),a("#find-posts .find-box-search :input").keypress(function(a){return 13==a.which?(findPosts.send(),!1):void 0}),a("#find-posts-search").click(findPosts.send),a("#find-posts-close").click(findPosts.close),a("#doaction, #doaction2").click(function(b){a('select[name^="action"]').each(function(){"attach"===a(this).val()&&(b.preventDefault(),findPosts.open())})}),a(".find-box-inside").on("click","tr",function(){a(this).find(".found-radio input").prop("checked",!0)})})}(jQuery);
|
||||
1253
Kapitel_7/Lektion_4/wordpress/wp-admin/js/nav-menu.js
Executable file
1253
Kapitel_7/Lektion_4/wordpress/wp-admin/js/nav-menu.js
Executable file
File diff suppressed because it is too large
Load Diff
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/nav-menu.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/nav-menu.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
75
Kapitel_7/Lektion_4/wordpress/wp-admin/js/password-strength-meter.js
Executable file
75
Kapitel_7/Lektion_4/wordpress/wp-admin/js/password-strength-meter.js
Executable file
@@ -0,0 +1,75 @@
|
||||
/* global zxcvbn */
|
||||
window.wp = window.wp || {};
|
||||
|
||||
var passwordStrength;
|
||||
(function($){
|
||||
wp.passwordStrength = {
|
||||
/**
|
||||
* Determine the strength of a given password
|
||||
*
|
||||
* @param string password1 The password
|
||||
* @param array blacklist An array of words that will lower the entropy of the password
|
||||
* @param string password2 The confirmed password
|
||||
*/
|
||||
meter : function( password1, blacklist, password2 ) {
|
||||
if ( ! $.isArray( blacklist ) )
|
||||
blacklist = [ blacklist.toString() ];
|
||||
|
||||
if (password1 != password2 && password2 && password2.length > 0)
|
||||
return 5;
|
||||
|
||||
var result = zxcvbn( password1, blacklist );
|
||||
return result.score;
|
||||
},
|
||||
|
||||
/**
|
||||
* Builds an array of data that should be penalized, because it would lower the entropy of a password if it were used
|
||||
*
|
||||
* @return array The array of data to be blacklisted
|
||||
*/
|
||||
userInputBlacklist : function() {
|
||||
var i, userInputFieldsLength, rawValuesLength, currentField,
|
||||
rawValues = [],
|
||||
blacklist = [],
|
||||
userInputFields = [ 'user_login', 'first_name', 'last_name', 'nickname', 'display_name', 'email', 'url', 'description', 'weblog_title', 'admin_email' ];
|
||||
|
||||
// Collect all the strings we want to blacklist
|
||||
rawValues.push( document.title );
|
||||
rawValues.push( document.URL );
|
||||
|
||||
userInputFieldsLength = userInputFields.length;
|
||||
for ( i = 0; i < userInputFieldsLength; i++ ) {
|
||||
currentField = $( '#' + userInputFields[ i ] );
|
||||
|
||||
if ( 0 === currentField.length ) {
|
||||
continue;
|
||||
}
|
||||
|
||||
rawValues.push( currentField[0].defaultValue );
|
||||
rawValues.push( currentField.val() );
|
||||
}
|
||||
|
||||
// Strip out non-alphanumeric characters and convert each word to an individual entry
|
||||
rawValuesLength = rawValues.length;
|
||||
for ( i = 0; i < rawValuesLength; i++ ) {
|
||||
if ( rawValues[ i ] ) {
|
||||
blacklist = blacklist.concat( rawValues[ i ].replace( /\W/g, ' ' ).split( ' ' ) );
|
||||
}
|
||||
}
|
||||
|
||||
// Remove empty values, short words, and duplicates. Short words are likely to cause many false positives.
|
||||
blacklist = $.grep( blacklist, function( value, key ) {
|
||||
if ( '' === value || 4 > value.length ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return $.inArray( value, blacklist ) === key;
|
||||
});
|
||||
|
||||
return blacklist;
|
||||
}
|
||||
};
|
||||
|
||||
// Backwards compatibility.
|
||||
passwordStrength = wp.passwordStrength.meter;
|
||||
})(jQuery);
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/password-strength-meter.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/password-strength-meter.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
window.wp=window.wp||{};var passwordStrength;!function(a){wp.passwordStrength={meter:function(b,c,d){if(a.isArray(c)||(c=[c.toString()]),b!=d&&d&&d.length>0)return 5;var e=zxcvbn(b,c);return e.score},userInputBlacklist:function(){var b,c,d,e,f=[],g=[],h=["user_login","first_name","last_name","nickname","display_name","email","url","description","weblog_title","admin_email"];for(f.push(document.title),f.push(document.URL),c=h.length,b=0;c>b;b++)e=a("#"+h[b]),0!==e.length&&(f.push(e[0].defaultValue),f.push(e.val()));for(d=f.length,b=0;d>b;b++)f[b]&&(g=g.concat(f[b].replace(/\W/g," ").split(" ")));return g=a.grep(g,function(b,c){return""===b||4>b.length?!1:a.inArray(b,g)===c})}},passwordStrength=wp.passwordStrength.meter}(jQuery);
|
||||
177
Kapitel_7/Lektion_4/wordpress/wp-admin/js/plugin-install.js
Executable file
177
Kapitel_7/Lektion_4/wordpress/wp-admin/js/plugin-install.js
Executable file
@@ -0,0 +1,177 @@
|
||||
/* global plugininstallL10n, tb_click, tb_remove */
|
||||
|
||||
/* Plugin Browser Thickbox related JS*/
|
||||
var tb_position;
|
||||
jQuery( document ).ready( function( $ ) {
|
||||
|
||||
var tbWindow,
|
||||
$focusedBefore,
|
||||
$iframeBody,
|
||||
$tabbables,
|
||||
$firstTabbable,
|
||||
$lastTabbable;
|
||||
|
||||
tb_position = function() {
|
||||
var width = $( window ).width(),
|
||||
H = $( window ).height() - ( ( 792 < width ) ? 60 : 20 ),
|
||||
W = ( 792 < width ) ? 772 : width - 20;
|
||||
|
||||
tbWindow = $( '#TB_window' );
|
||||
|
||||
if ( tbWindow.length ) {
|
||||
tbWindow.width( W ).height( H );
|
||||
$( '#TB_iframeContent' ).width( W ).height( H );
|
||||
tbWindow.css({
|
||||
'margin-left': '-' + parseInt( ( W / 2 ), 10 ) + 'px'
|
||||
});
|
||||
if ( typeof document.body.style.maxWidth !== 'undefined' ) {
|
||||
tbWindow.css({
|
||||
'top': '30px',
|
||||
'margin-top': '0'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return $( 'a.thickbox' ).each( function() {
|
||||
var href = $( this ).attr( 'href' );
|
||||
if ( ! href ) {
|
||||
return;
|
||||
}
|
||||
href = href.replace( /&width=[0-9]+/g, '' );
|
||||
href = href.replace( /&height=[0-9]+/g, '' );
|
||||
$(this).attr( 'href', href + '&width=' + W + '&height=' + ( H ) );
|
||||
});
|
||||
};
|
||||
|
||||
$( window ).resize( function() {
|
||||
tb_position();
|
||||
});
|
||||
|
||||
/*
|
||||
* Custom events: when a Thickbox iframe has loaded and when the Thickbox
|
||||
* modal gets removed from the DOM.
|
||||
*/
|
||||
$( 'body' )
|
||||
.on( 'thickbox:iframe:loaded', tbWindow, function() {
|
||||
iframeLoaded();
|
||||
})
|
||||
.on( 'thickbox:removed', function() {
|
||||
// Set focus back to the element that opened the modal dialog.
|
||||
// Note: IE 8 would need this wrapped in a fake setTimeout `0`.
|
||||
$focusedBefore.focus();
|
||||
});
|
||||
|
||||
function iframeLoaded() {
|
||||
var $iframe = tbWindow.find( '#TB_iframeContent' );
|
||||
|
||||
// Get the iframe body.
|
||||
$iframeBody = $iframe.contents().find( 'body' );
|
||||
|
||||
// Get the tabbable elements and handle the keydown event on first load.
|
||||
handleTabbables();
|
||||
|
||||
// Set initial focus on the "Close" button.
|
||||
$firstTabbable.focus();
|
||||
|
||||
/*
|
||||
* When the "Install" button is disabled (e.g. the Plugin is already installed)
|
||||
* then we can't predict where the last focusable element is. We need to get
|
||||
* the tabbable elements and handle the keydown event again and again,
|
||||
* each time the active tab panel changes.
|
||||
*/
|
||||
$( '#plugin-information-tabs a', $iframeBody ).on( 'click', function() {
|
||||
handleTabbables();
|
||||
});
|
||||
|
||||
// Close the modal when pressing Escape.
|
||||
$iframeBody.on( 'keydown', function( event ) {
|
||||
if ( 27 !== event.which ) {
|
||||
return;
|
||||
}
|
||||
tb_remove();
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the tabbable elements and detach/attach the keydown event.
|
||||
* Called after the iframe has fully loaded so we have all the elements we need.
|
||||
* Called again each time a Tab gets clicked.
|
||||
* @todo Consider to implement a WordPress general utility for this and don't use jQuery UI.
|
||||
*/
|
||||
function handleTabbables() {
|
||||
var $firstAndLast;
|
||||
// Get all the tabbable elements.
|
||||
$tabbables = $( ':tabbable', $iframeBody );
|
||||
// Our first tabbable element is always the "Close" button.
|
||||
$firstTabbable = tbWindow.find( '#TB_closeWindowButton' );
|
||||
// Get the last tabbable element.
|
||||
$lastTabbable = $tabbables.last();
|
||||
// Make a jQuery collection.
|
||||
$firstAndLast = $firstTabbable.add( $lastTabbable );
|
||||
// Detach any previously attached keydown event.
|
||||
$firstAndLast.off( 'keydown.wp-plugin-details' );
|
||||
// Attach again the keydown event on the first and last focusable elements.
|
||||
$firstAndLast.on( 'keydown.wp-plugin-details', function( event ) {
|
||||
constrainTabbing( event );
|
||||
});
|
||||
}
|
||||
|
||||
// Constrain tabbing within the plugin modal dialog.
|
||||
function constrainTabbing( event ) {
|
||||
if ( 9 !== event.which ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( $lastTabbable[0] === event.target && ! event.shiftKey ) {
|
||||
event.preventDefault();
|
||||
$firstTabbable.focus();
|
||||
} else if ( $firstTabbable[0] === event.target && event.shiftKey ) {
|
||||
event.preventDefault();
|
||||
$lastTabbable.focus();
|
||||
}
|
||||
}
|
||||
|
||||
// Open the Plugin details modal.
|
||||
$( '.thickbox.open-plugin-details-modal' ).on( 'click', function( e ) {
|
||||
// The `data-title` attribute is used only in the Plugin screens.
|
||||
var title = $( this ).data( 'title' ) ? plugininstallL10n.plugin_information + ' ' + $( this ).data( 'title' ) : plugininstallL10n.plugin_modal_label;
|
||||
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
|
||||
// Store the element that has focus before opening the modal dialog, i.e. the control which opens it.
|
||||
$focusedBefore = $( this );
|
||||
|
||||
tb_click.call(this);
|
||||
|
||||
// Set ARIA role and ARIA label.
|
||||
tbWindow.attr({
|
||||
'role': 'dialog',
|
||||
'aria-label': plugininstallL10n.plugin_modal_label
|
||||
});
|
||||
|
||||
// Set title attribute on the iframe.
|
||||
tbWindow.find( '#TB_iframeContent' ).attr( 'title', title );
|
||||
});
|
||||
|
||||
/* Plugin install related JS */
|
||||
$( '#plugin-information-tabs a' ).click( function( event ) {
|
||||
var tab = $( this ).attr( 'name' );
|
||||
event.preventDefault();
|
||||
|
||||
// Flip the tab
|
||||
$( '#plugin-information-tabs a.current' ).removeClass( 'current' );
|
||||
$( this ).addClass( 'current' );
|
||||
|
||||
// Only show the fyi box in the description section, on smaller screen, where it's otherwise always displayed at the top.
|
||||
if ( 'description' !== tab && $( window ).width() < 772 ) {
|
||||
$( '#plugin-information-content' ).find( '.fyi' ).hide();
|
||||
} else {
|
||||
$( '#plugin-information-content' ).find( '.fyi' ).show();
|
||||
}
|
||||
|
||||
// Flip the content.
|
||||
$( '#section-holder div.section' ).hide(); // Hide 'em all.
|
||||
$( '#section-' + tab ).show();
|
||||
});
|
||||
});
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/plugin-install.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/plugin-install.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
var tb_position;jQuery(document).ready(function(a){function b(){var b=e.find("#TB_iframeContent");g=b.contents().find("body"),c(),i.focus(),a("#plugin-information-tabs a",g).on("click",function(){c()}),g.on("keydown",function(a){27===a.which&&tb_remove()})}function c(){var b;h=a(":tabbable",g),i=e.find("#TB_closeWindowButton"),j=h.last(),b=i.add(j),b.off("keydown.wp-plugin-details"),b.on("keydown.wp-plugin-details",function(a){d(a)})}function d(a){9===a.which&&(j[0]!==a.target||a.shiftKey?i[0]===a.target&&a.shiftKey&&(a.preventDefault(),j.focus()):(a.preventDefault(),i.focus()))}var e,f,g,h,i,j;tb_position=function(){var b=a(window).width(),c=a(window).height()-(b>792?60:20),d=b>792?772:b-20;return e=a("#TB_window"),e.length&&(e.width(d).height(c),a("#TB_iframeContent").width(d).height(c),e.css({"margin-left":"-"+parseInt(d/2,10)+"px"}),"undefined"!=typeof document.body.style.maxWidth&&e.css({top:"30px","margin-top":"0"})),a("a.thickbox").each(function(){var b=a(this).attr("href");b&&(b=b.replace(/&width=[0-9]+/g,""),b=b.replace(/&height=[0-9]+/g,""),a(this).attr("href",b+"&width="+d+"&height="+c))})},a(window).resize(function(){tb_position()}),a("body").on("thickbox:iframe:loaded",e,function(){b()}).on("thickbox:removed",function(){f.focus()}),a(".thickbox.open-plugin-details-modal").on("click",function(b){var c=a(this).data("title")?plugininstallL10n.plugin_information+" "+a(this).data("title"):plugininstallL10n.plugin_modal_label;b.preventDefault(),b.stopPropagation(),f=a(this),tb_click.call(this),e.attr({role:"dialog","aria-label":plugininstallL10n.plugin_modal_label}),e.find("#TB_iframeContent").attr("title",c)}),a("#plugin-information-tabs a").click(function(b){var c=a(this).attr("name");b.preventDefault(),a("#plugin-information-tabs a.current").removeClass("current"),a(this).addClass("current"),"description"!==c&&a(window).width()<772?a("#plugin-information-content").find(".fyi").hide():a("#plugin-information-content").find(".fyi").show(),a("#section-holder div.section").hide(),a("#section-"+c).show()})});
|
||||
994
Kapitel_7/Lektion_4/wordpress/wp-admin/js/post.js
Executable file
994
Kapitel_7/Lektion_4/wordpress/wp-admin/js/post.js
Executable file
@@ -0,0 +1,994 @@
|
||||
/* global postL10n, ajaxurl, wpAjax, setPostThumbnailL10n, postboxes, pagenow, tinymce, alert, deleteUserSetting */
|
||||
/* global theList:true, theExtraList:true, getUserSetting, setUserSetting, commentReply */
|
||||
|
||||
var commentsBox, WPSetThumbnailHTML, WPSetThumbnailID, WPRemoveThumbnail, wptitlehint, makeSlugeditClickable, editPermalink;
|
||||
// Back-compat: prevent fatal errors
|
||||
makeSlugeditClickable = editPermalink = function(){};
|
||||
|
||||
window.wp = window.wp || {};
|
||||
|
||||
( function( $ ) {
|
||||
var titleHasFocus = false;
|
||||
|
||||
commentsBox = {
|
||||
st : 0,
|
||||
|
||||
get : function(total, num) {
|
||||
var st = this.st, data;
|
||||
if ( ! num )
|
||||
num = 20;
|
||||
|
||||
this.st += num;
|
||||
this.total = total;
|
||||
$( '#commentsdiv .spinner' ).addClass( 'is-active' );
|
||||
|
||||
data = {
|
||||
'action' : 'get-comments',
|
||||
'mode' : 'single',
|
||||
'_ajax_nonce' : $('#add_comment_nonce').val(),
|
||||
'p' : $('#post_ID').val(),
|
||||
'start' : st,
|
||||
'number' : num
|
||||
};
|
||||
|
||||
$.post(ajaxurl, data,
|
||||
function(r) {
|
||||
r = wpAjax.parseAjaxResponse(r);
|
||||
$('#commentsdiv .widefat').show();
|
||||
$( '#commentsdiv .spinner' ).removeClass( 'is-active' );
|
||||
|
||||
if ( 'object' == typeof r && r.responses[0] ) {
|
||||
$('#the-comment-list').append( r.responses[0].data );
|
||||
|
||||
theList = theExtraList = null;
|
||||
$( 'a[className*=\':\']' ).unbind();
|
||||
|
||||
if ( commentsBox.st > commentsBox.total )
|
||||
$('#show-comments').hide();
|
||||
else
|
||||
$('#show-comments').show().children('a').html(postL10n.showcomm);
|
||||
|
||||
return;
|
||||
} else if ( 1 == r ) {
|
||||
$('#show-comments').html(postL10n.endcomm);
|
||||
return;
|
||||
}
|
||||
|
||||
$('#the-comment-list').append('<tr><td colspan="2">'+wpAjax.broken+'</td></tr>');
|
||||
}
|
||||
);
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
load: function(total){
|
||||
this.st = jQuery('#the-comment-list tr.comment:visible').length;
|
||||
this.get(total);
|
||||
}
|
||||
};
|
||||
|
||||
WPSetThumbnailHTML = function(html){
|
||||
$('.inside', '#postimagediv').html(html);
|
||||
};
|
||||
|
||||
WPSetThumbnailID = function(id){
|
||||
var field = $('input[value="_thumbnail_id"]', '#list-table');
|
||||
if ( field.length > 0 ) {
|
||||
$('#meta\\[' + field.attr('id').match(/[0-9]+/) + '\\]\\[value\\]').text(id);
|
||||
}
|
||||
};
|
||||
|
||||
WPRemoveThumbnail = function(nonce){
|
||||
$.post(ajaxurl, {
|
||||
action: 'set-post-thumbnail', post_id: $( '#post_ID' ).val(), thumbnail_id: -1, _ajax_nonce: nonce, cookie: encodeURIComponent( document.cookie )
|
||||
}, function(str){
|
||||
if ( str == '0' ) {
|
||||
alert( setPostThumbnailL10n.error );
|
||||
} else {
|
||||
WPSetThumbnailHTML(str);
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
$(document).on( 'heartbeat-send.refresh-lock', function( e, data ) {
|
||||
var lock = $('#active_post_lock').val(),
|
||||
post_id = $('#post_ID').val(),
|
||||
send = {};
|
||||
|
||||
if ( ! post_id || ! $('#post-lock-dialog').length )
|
||||
return;
|
||||
|
||||
send.post_id = post_id;
|
||||
|
||||
if ( lock )
|
||||
send.lock = lock;
|
||||
|
||||
data['wp-refresh-post-lock'] = send;
|
||||
|
||||
}).on( 'heartbeat-tick.refresh-lock', function( e, data ) {
|
||||
// Post locks: update the lock string or show the dialog if somebody has taken over editing
|
||||
var received, wrap, avatar;
|
||||
|
||||
if ( data['wp-refresh-post-lock'] ) {
|
||||
received = data['wp-refresh-post-lock'];
|
||||
|
||||
if ( received.lock_error ) {
|
||||
// show "editing taken over" message
|
||||
wrap = $('#post-lock-dialog');
|
||||
|
||||
if ( wrap.length && ! wrap.is(':visible') ) {
|
||||
if ( wp.autosave ) {
|
||||
// Save the latest changes and disable
|
||||
$(document).one( 'heartbeat-tick', function() {
|
||||
wp.autosave.server.suspend();
|
||||
wrap.removeClass('saving').addClass('saved');
|
||||
$(window).off( 'beforeunload.edit-post' );
|
||||
});
|
||||
|
||||
wrap.addClass('saving');
|
||||
wp.autosave.server.triggerSave();
|
||||
}
|
||||
|
||||
if ( received.lock_error.avatar_src ) {
|
||||
avatar = $( '<img class="avatar avatar-64 photo" width="64" height="64" alt="" />' ).attr( 'src', received.lock_error.avatar_src.replace( /&/g, '&' ) );
|
||||
wrap.find('div.post-locked-avatar').empty().append( avatar );
|
||||
}
|
||||
|
||||
wrap.show().find('.currently-editing').text( received.lock_error.text );
|
||||
wrap.find('.wp-tab-first').focus();
|
||||
}
|
||||
} else if ( received.new_lock ) {
|
||||
$('#active_post_lock').val( received.new_lock );
|
||||
}
|
||||
}
|
||||
}).on( 'before-autosave.update-post-slug', function() {
|
||||
titleHasFocus = document.activeElement && document.activeElement.id === 'title';
|
||||
}).on( 'after-autosave.update-post-slug', function() {
|
||||
// Create slug area only if not already there
|
||||
// and the title field was not focused (user was not typing a title) when autosave ran
|
||||
if ( ! $('#edit-slug-box > *').length && ! titleHasFocus ) {
|
||||
$.post( ajaxurl, {
|
||||
action: 'sample-permalink',
|
||||
post_id: $('#post_ID').val(),
|
||||
new_title: $('#title').val(),
|
||||
samplepermalinknonce: $('#samplepermalinknonce').val()
|
||||
},
|
||||
function( data ) {
|
||||
if ( data != '-1' ) {
|
||||
$('#edit-slug-box').html(data);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
}(jQuery));
|
||||
|
||||
(function($) {
|
||||
var check, timeout;
|
||||
|
||||
function schedule() {
|
||||
check = false;
|
||||
window.clearTimeout( timeout );
|
||||
timeout = window.setTimeout( function(){ check = true; }, 300000 );
|
||||
}
|
||||
|
||||
$(document).on( 'heartbeat-send.wp-refresh-nonces', function( e, data ) {
|
||||
var post_id,
|
||||
$authCheck = $('#wp-auth-check-wrap');
|
||||
|
||||
if ( check || ( $authCheck.length && ! $authCheck.hasClass( 'hidden' ) ) ) {
|
||||
if ( ( post_id = $('#post_ID').val() ) && $('#_wpnonce').val() ) {
|
||||
data['wp-refresh-post-nonces'] = {
|
||||
post_id: post_id
|
||||
};
|
||||
}
|
||||
}
|
||||
}).on( 'heartbeat-tick.wp-refresh-nonces', function( e, data ) {
|
||||
var nonces = data['wp-refresh-post-nonces'];
|
||||
|
||||
if ( nonces ) {
|
||||
schedule();
|
||||
|
||||
if ( nonces.replace ) {
|
||||
$.each( nonces.replace, function( selector, value ) {
|
||||
$( '#' + selector ).val( value );
|
||||
});
|
||||
}
|
||||
|
||||
if ( nonces.heartbeatNonce )
|
||||
window.heartbeatSettings.nonce = nonces.heartbeatNonce;
|
||||
}
|
||||
}).ready( function() {
|
||||
schedule();
|
||||
});
|
||||
}(jQuery));
|
||||
|
||||
jQuery(document).ready( function($) {
|
||||
var stamp, visibility, $submitButtons, updateVisibility, updateText,
|
||||
sticky = '',
|
||||
$textarea = $('#content'),
|
||||
$document = $(document),
|
||||
postId = $('#post_ID').val() || 0,
|
||||
$submitpost = $('#submitpost'),
|
||||
releaseLock = true,
|
||||
$postVisibilitySelect = $('#post-visibility-select'),
|
||||
$timestampdiv = $('#timestampdiv'),
|
||||
$postStatusSelect = $('#post-status-select'),
|
||||
isMac = window.navigator.platform ? window.navigator.platform.indexOf( 'Mac' ) !== -1 : false;
|
||||
|
||||
postboxes.add_postbox_toggles(pagenow);
|
||||
|
||||
// Clear the window name. Otherwise if this is a former preview window where the user navigated to edit another post,
|
||||
// and the first post is still being edited, clicking Preview there will use this window to show the preview.
|
||||
window.name = '';
|
||||
|
||||
// Post locks: contain focus inside the dialog. If the dialog is shown, focus the first item.
|
||||
$('#post-lock-dialog .notification-dialog').on( 'keydown', function(e) {
|
||||
if ( e.which != 9 )
|
||||
return;
|
||||
|
||||
var target = $(e.target);
|
||||
|
||||
if ( target.hasClass('wp-tab-first') && e.shiftKey ) {
|
||||
$(this).find('.wp-tab-last').focus();
|
||||
e.preventDefault();
|
||||
} else if ( target.hasClass('wp-tab-last') && ! e.shiftKey ) {
|
||||
$(this).find('.wp-tab-first').focus();
|
||||
e.preventDefault();
|
||||
}
|
||||
}).filter(':visible').find('.wp-tab-first').focus();
|
||||
|
||||
// Set the heartbeat interval to 15 sec. if post lock dialogs are enabled
|
||||
if ( wp.heartbeat && $('#post-lock-dialog').length ) {
|
||||
wp.heartbeat.interval( 15 );
|
||||
}
|
||||
|
||||
// The form is being submitted by the user
|
||||
$submitButtons = $submitpost.find( ':submit, a.submitdelete, #post-preview' ).on( 'click.edit-post', function( event ) {
|
||||
var $button = $(this);
|
||||
|
||||
if ( $button.hasClass('disabled') ) {
|
||||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
|
||||
if ( $button.hasClass('submitdelete') || $button.is( '#post-preview' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// The form submission can be blocked from JS or by using HTML 5.0 validation on some fields.
|
||||
// Run this only on an actual 'submit'.
|
||||
$('form#post').off( 'submit.edit-post' ).on( 'submit.edit-post', function( event ) {
|
||||
if ( event.isDefaultPrevented() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Stop autosave
|
||||
if ( wp.autosave ) {
|
||||
wp.autosave.server.suspend();
|
||||
}
|
||||
|
||||
if ( typeof commentReply !== 'undefined' ) {
|
||||
/*
|
||||
* Close the comment edit/reply form if open to stop the form
|
||||
* action from interfering with the post's form action.
|
||||
*/
|
||||
commentReply.close();
|
||||
}
|
||||
|
||||
releaseLock = false;
|
||||
$(window).off( 'beforeunload.edit-post' );
|
||||
|
||||
$submitButtons.addClass( 'disabled' );
|
||||
|
||||
if ( $button.attr('id') === 'publish' ) {
|
||||
$submitpost.find( '#major-publishing-actions .spinner' ).addClass( 'is-active' );
|
||||
} else {
|
||||
$submitpost.find( '#minor-publishing .spinner' ).addClass( 'is-active' );
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// Submit the form saving a draft or an autosave, and show a preview in a new tab
|
||||
$('#post-preview').on( 'click.post-preview', function( event ) {
|
||||
var $this = $(this),
|
||||
$form = $('form#post'),
|
||||
$previewField = $('input#wp-preview'),
|
||||
target = $this.attr('target') || 'wp-preview',
|
||||
ua = navigator.userAgent.toLowerCase();
|
||||
|
||||
event.preventDefault();
|
||||
|
||||
if ( $this.hasClass('disabled') ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( wp.autosave ) {
|
||||
wp.autosave.server.tempBlockSave();
|
||||
}
|
||||
|
||||
$previewField.val('dopreview');
|
||||
$form.attr( 'target', target ).submit().attr( 'target', '' );
|
||||
|
||||
// Workaround for WebKit bug preventing a form submitting twice to the same action.
|
||||
// https://bugs.webkit.org/show_bug.cgi?id=28633
|
||||
if ( ua.indexOf('safari') !== -1 && ua.indexOf('chrome') === -1 ) {
|
||||
$form.attr( 'action', function( index, value ) {
|
||||
return value + '?t=' + ( new Date() ).getTime();
|
||||
});
|
||||
}
|
||||
|
||||
$previewField.val('');
|
||||
});
|
||||
|
||||
// This code is meant to allow tabbing from Title to Post content.
|
||||
$('#title').on( 'keydown.editor-focus', function( event ) {
|
||||
var editor;
|
||||
|
||||
if ( event.keyCode === 9 && ! event.ctrlKey && ! event.altKey && ! event.shiftKey ) {
|
||||
editor = typeof tinymce != 'undefined' && tinymce.get('content');
|
||||
|
||||
if ( editor && ! editor.isHidden() ) {
|
||||
editor.focus();
|
||||
} else if ( $textarea.length ) {
|
||||
$textarea.focus();
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
// Autosave new posts after a title is typed
|
||||
if ( $( '#auto_draft' ).val() ) {
|
||||
$( '#title' ).blur( function() {
|
||||
var cancel;
|
||||
|
||||
if ( ! this.value || $('#edit-slug-box > *').length ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Cancel the autosave when the blur was triggered by the user submitting the form
|
||||
$('form#post').one( 'submit', function() {
|
||||
cancel = true;
|
||||
});
|
||||
|
||||
window.setTimeout( function() {
|
||||
if ( ! cancel && wp.autosave ) {
|
||||
wp.autosave.server.triggerSave();
|
||||
}
|
||||
}, 200 );
|
||||
});
|
||||
}
|
||||
|
||||
$document.on( 'autosave-disable-buttons.edit-post', function() {
|
||||
$submitButtons.addClass( 'disabled' );
|
||||
}).on( 'autosave-enable-buttons.edit-post', function() {
|
||||
if ( ! wp.heartbeat || ! wp.heartbeat.hasConnectionError() ) {
|
||||
$submitButtons.removeClass( 'disabled' );
|
||||
}
|
||||
}).on( 'before-autosave.edit-post', function() {
|
||||
$( '.autosave-message' ).text( postL10n.savingText );
|
||||
}).on( 'after-autosave.edit-post', function( event, data ) {
|
||||
$( '.autosave-message' ).text( data.message );
|
||||
|
||||
if ( $( document.body ).hasClass( 'post-new-php' ) ) {
|
||||
$( '.submitbox .submitdelete' ).show();
|
||||
}
|
||||
});
|
||||
|
||||
$(window).on( 'beforeunload.edit-post', function() {
|
||||
var editor = typeof tinymce !== 'undefined' && tinymce.get('content');
|
||||
|
||||
if ( ( editor && ! editor.isHidden() && editor.isDirty() ) ||
|
||||
( wp.autosave && wp.autosave.server.postChanged() ) ) {
|
||||
|
||||
return postL10n.saveAlert;
|
||||
}
|
||||
}).on( 'unload.edit-post', function( event ) {
|
||||
if ( ! releaseLock ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Unload is triggered (by hand) on removing the Thickbox iframe.
|
||||
// Make sure we process only the main document unload.
|
||||
if ( event.target && event.target.nodeName != '#document' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
type: 'POST',
|
||||
url: ajaxurl,
|
||||
async: false,
|
||||
data: {
|
||||
action: 'wp-remove-post-lock',
|
||||
_wpnonce: $('#_wpnonce').val(),
|
||||
post_ID: $('#post_ID').val(),
|
||||
active_post_lock: $('#active_post_lock').val()
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// multi-taxonomies
|
||||
if ( $('#tagsdiv-post_tag').length ) {
|
||||
window.tagBox && window.tagBox.init();
|
||||
} else {
|
||||
$('.meta-box-sortables').children('div.postbox').each(function(){
|
||||
if ( this.id.indexOf('tagsdiv-') === 0 ) {
|
||||
window.tagBox && window.tagBox.init();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// categories
|
||||
$('.categorydiv').each( function(){
|
||||
var this_id = $(this).attr('id'), catAddBefore, catAddAfter, taxonomyParts, taxonomy, settingName;
|
||||
|
||||
taxonomyParts = this_id.split('-');
|
||||
taxonomyParts.shift();
|
||||
taxonomy = taxonomyParts.join('-');
|
||||
settingName = taxonomy + '_tab';
|
||||
if ( taxonomy == 'category' )
|
||||
settingName = 'cats';
|
||||
|
||||
// TODO: move to jQuery 1.3+, support for multiple hierarchical taxonomies, see wp-lists.js
|
||||
$('a', '#' + taxonomy + '-tabs').click( function( e ) {
|
||||
e.preventDefault();
|
||||
var t = $(this).attr('href');
|
||||
$(this).parent().addClass('tabs').siblings('li').removeClass('tabs');
|
||||
$('#' + taxonomy + '-tabs').siblings('.tabs-panel').hide();
|
||||
$(t).show();
|
||||
if ( '#' + taxonomy + '-all' == t )
|
||||
deleteUserSetting( settingName );
|
||||
else
|
||||
setUserSetting( settingName, 'pop' );
|
||||
});
|
||||
|
||||
if ( getUserSetting( settingName ) )
|
||||
$('a[href="#' + taxonomy + '-pop"]', '#' + taxonomy + '-tabs').click();
|
||||
|
||||
// Ajax Cat
|
||||
$( '#new' + taxonomy ).one( 'focus', function() { $( this ).val( '' ).removeClass( 'form-input-tip' ); } );
|
||||
|
||||
$('#new' + taxonomy).keypress( function(event){
|
||||
if( 13 === event.keyCode ) {
|
||||
event.preventDefault();
|
||||
$('#' + taxonomy + '-add-submit').click();
|
||||
}
|
||||
});
|
||||
$('#' + taxonomy + '-add-submit').click( function(){ $('#new' + taxonomy).focus(); });
|
||||
|
||||
catAddBefore = function( s ) {
|
||||
if ( !$('#new'+taxonomy).val() )
|
||||
return false;
|
||||
s.data += '&' + $( ':checked', '#'+taxonomy+'checklist' ).serialize();
|
||||
$( '#' + taxonomy + '-add-submit' ).prop( 'disabled', true );
|
||||
return s;
|
||||
};
|
||||
|
||||
catAddAfter = function( r, s ) {
|
||||
var sup, drop = $('#new'+taxonomy+'_parent');
|
||||
|
||||
$( '#' + taxonomy + '-add-submit' ).prop( 'disabled', false );
|
||||
if ( 'undefined' != s.parsed.responses[0] && (sup = s.parsed.responses[0].supplemental.newcat_parent) ) {
|
||||
drop.before(sup);
|
||||
drop.remove();
|
||||
}
|
||||
};
|
||||
|
||||
$('#' + taxonomy + 'checklist').wpList({
|
||||
alt: '',
|
||||
response: taxonomy + '-ajax-response',
|
||||
addBefore: catAddBefore,
|
||||
addAfter: catAddAfter
|
||||
});
|
||||
|
||||
$('#' + taxonomy + '-add-toggle').click( function( e ) {
|
||||
e.preventDefault();
|
||||
$('#' + taxonomy + '-adder').toggleClass( 'wp-hidden-children' );
|
||||
$('a[href="#' + taxonomy + '-all"]', '#' + taxonomy + '-tabs').click();
|
||||
$('#new'+taxonomy).focus();
|
||||
});
|
||||
|
||||
$('#' + taxonomy + 'checklist, #' + taxonomy + 'checklist-pop').on( 'click', 'li.popular-category > label input[type="checkbox"]', function() {
|
||||
var t = $(this), c = t.is(':checked'), id = t.val();
|
||||
if ( id && t.parents('#taxonomy-'+taxonomy).length )
|
||||
$('#in-' + taxonomy + '-' + id + ', #in-popular-' + taxonomy + '-' + id).prop( 'checked', c );
|
||||
});
|
||||
|
||||
}); // end cats
|
||||
|
||||
// Custom Fields
|
||||
if ( $('#postcustom').length ) {
|
||||
$( '#the-list' ).wpList( { addAfter: function() {
|
||||
$('table#list-table').show();
|
||||
}, addBefore: function( s ) {
|
||||
s.data += '&post_id=' + $('#post_ID').val();
|
||||
return s;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// submitdiv
|
||||
if ( $('#submitdiv').length ) {
|
||||
stamp = $('#timestamp').html();
|
||||
visibility = $('#post-visibility-display').html();
|
||||
|
||||
updateVisibility = function() {
|
||||
if ( $postVisibilitySelect.find('input:radio:checked').val() != 'public' ) {
|
||||
$('#sticky').prop('checked', false);
|
||||
$('#sticky-span').hide();
|
||||
} else {
|
||||
$('#sticky-span').show();
|
||||
}
|
||||
if ( $postVisibilitySelect.find('input:radio:checked').val() != 'password' ) {
|
||||
$('#password-span').hide();
|
||||
} else {
|
||||
$('#password-span').show();
|
||||
}
|
||||
};
|
||||
|
||||
updateText = function() {
|
||||
|
||||
if ( ! $timestampdiv.length )
|
||||
return true;
|
||||
|
||||
var attemptedDate, originalDate, currentDate, publishOn, postStatus = $('#post_status'),
|
||||
optPublish = $('option[value="publish"]', postStatus), aa = $('#aa').val(),
|
||||
mm = $('#mm').val(), jj = $('#jj').val(), hh = $('#hh').val(), mn = $('#mn').val();
|
||||
|
||||
attemptedDate = new Date( aa, mm - 1, jj, hh, mn );
|
||||
originalDate = new Date( $('#hidden_aa').val(), $('#hidden_mm').val() -1, $('#hidden_jj').val(), $('#hidden_hh').val(), $('#hidden_mn').val() );
|
||||
currentDate = new Date( $('#cur_aa').val(), $('#cur_mm').val() -1, $('#cur_jj').val(), $('#cur_hh').val(), $('#cur_mn').val() );
|
||||
|
||||
if ( attemptedDate.getFullYear() != aa || (1 + attemptedDate.getMonth()) != mm || attemptedDate.getDate() != jj || attemptedDate.getMinutes() != mn ) {
|
||||
$timestampdiv.find('.timestamp-wrap').addClass('form-invalid');
|
||||
return false;
|
||||
} else {
|
||||
$timestampdiv.find('.timestamp-wrap').removeClass('form-invalid');
|
||||
}
|
||||
|
||||
if ( attemptedDate > currentDate && $('#original_post_status').val() != 'future' ) {
|
||||
publishOn = postL10n.publishOnFuture;
|
||||
$('#publish').val( postL10n.schedule );
|
||||
} else if ( attemptedDate <= currentDate && $('#original_post_status').val() != 'publish' ) {
|
||||
publishOn = postL10n.publishOn;
|
||||
$('#publish').val( postL10n.publish );
|
||||
} else {
|
||||
publishOn = postL10n.publishOnPast;
|
||||
$('#publish').val( postL10n.update );
|
||||
}
|
||||
if ( originalDate.toUTCString() == attemptedDate.toUTCString() ) { //hack
|
||||
$('#timestamp').html(stamp);
|
||||
} else {
|
||||
$('#timestamp').html(
|
||||
'\n' + publishOn + ' <b>' +
|
||||
postL10n.dateFormat
|
||||
.replace( '%1$s', $( 'option[value="' + mm + '"]', '#mm' ).attr( 'data-text' ) )
|
||||
.replace( '%2$s', parseInt( jj, 10 ) )
|
||||
.replace( '%3$s', aa )
|
||||
.replace( '%4$s', ( '00' + hh ).slice( -2 ) )
|
||||
.replace( '%5$s', ( '00' + mn ).slice( -2 ) ) +
|
||||
'</b> '
|
||||
);
|
||||
}
|
||||
|
||||
if ( $postVisibilitySelect.find('input:radio:checked').val() == 'private' ) {
|
||||
$('#publish').val( postL10n.update );
|
||||
if ( 0 === optPublish.length ) {
|
||||
postStatus.append('<option value="publish">' + postL10n.privatelyPublished + '</option>');
|
||||
} else {
|
||||
optPublish.html( postL10n.privatelyPublished );
|
||||
}
|
||||
$('option[value="publish"]', postStatus).prop('selected', true);
|
||||
$('#misc-publishing-actions .edit-post-status').hide();
|
||||
} else {
|
||||
if ( $('#original_post_status').val() == 'future' || $('#original_post_status').val() == 'draft' ) {
|
||||
if ( optPublish.length ) {
|
||||
optPublish.remove();
|
||||
postStatus.val($('#hidden_post_status').val());
|
||||
}
|
||||
} else {
|
||||
optPublish.html( postL10n.published );
|
||||
}
|
||||
if ( postStatus.is(':hidden') )
|
||||
$('#misc-publishing-actions .edit-post-status').show();
|
||||
}
|
||||
$('#post-status-display').html($('option:selected', postStatus).text());
|
||||
if ( $('option:selected', postStatus).val() == 'private' || $('option:selected', postStatus).val() == 'publish' ) {
|
||||
$('#save-post').hide();
|
||||
} else {
|
||||
$('#save-post').show();
|
||||
if ( $('option:selected', postStatus).val() == 'pending' ) {
|
||||
$('#save-post').show().val( postL10n.savePending );
|
||||
} else {
|
||||
$('#save-post').show().val( postL10n.saveDraft );
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
$( '#visibility .edit-visibility').click( function( e ) {
|
||||
e.preventDefault();
|
||||
if ( $postVisibilitySelect.is(':hidden') ) {
|
||||
updateVisibility();
|
||||
$postVisibilitySelect.slideDown( 'fast', function() {
|
||||
$postVisibilitySelect.find( 'input[type="radio"]' ).first().focus();
|
||||
} );
|
||||
$(this).hide();
|
||||
}
|
||||
});
|
||||
|
||||
$postVisibilitySelect.find('.cancel-post-visibility').click( function( event ) {
|
||||
$postVisibilitySelect.slideUp('fast');
|
||||
$('#visibility-radio-' + $('#hidden-post-visibility').val()).prop('checked', true);
|
||||
$('#post_password').val($('#hidden-post-password').val());
|
||||
$('#sticky').prop('checked', $('#hidden-post-sticky').prop('checked'));
|
||||
$('#post-visibility-display').html(visibility);
|
||||
$('#visibility .edit-visibility').show().focus();
|
||||
updateText();
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
$postVisibilitySelect.find('.save-post-visibility').click( function( event ) { // crazyhorse - multiple ok cancels
|
||||
$postVisibilitySelect.slideUp('fast');
|
||||
$('#visibility .edit-visibility').show().focus();
|
||||
updateText();
|
||||
|
||||
if ( $postVisibilitySelect.find('input:radio:checked').val() != 'public' ) {
|
||||
$('#sticky').prop('checked', false);
|
||||
} // WEAPON LOCKED
|
||||
|
||||
if ( $('#sticky').prop('checked') ) {
|
||||
sticky = 'Sticky';
|
||||
} else {
|
||||
sticky = '';
|
||||
}
|
||||
|
||||
$('#post-visibility-display').html( postL10n[ $postVisibilitySelect.find('input:radio:checked').val() + sticky ] );
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
$postVisibilitySelect.find('input:radio').change( function() {
|
||||
updateVisibility();
|
||||
});
|
||||
|
||||
$timestampdiv.siblings('a.edit-timestamp').click( function( event ) {
|
||||
if ( $timestampdiv.is( ':hidden' ) ) {
|
||||
$timestampdiv.slideDown( 'fast', function() {
|
||||
$( 'input, select', $timestampdiv.find( '.timestamp-wrap' ) ).first().focus();
|
||||
} );
|
||||
$(this).hide();
|
||||
}
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
$timestampdiv.find('.cancel-timestamp').click( function( event ) {
|
||||
$timestampdiv.slideUp('fast').siblings('a.edit-timestamp').show().focus();
|
||||
$('#mm').val($('#hidden_mm').val());
|
||||
$('#jj').val($('#hidden_jj').val());
|
||||
$('#aa').val($('#hidden_aa').val());
|
||||
$('#hh').val($('#hidden_hh').val());
|
||||
$('#mn').val($('#hidden_mn').val());
|
||||
updateText();
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
$timestampdiv.find('.save-timestamp').click( function( event ) { // crazyhorse - multiple ok cancels
|
||||
if ( updateText() ) {
|
||||
$timestampdiv.slideUp('fast');
|
||||
$timestampdiv.siblings('a.edit-timestamp').show().focus();
|
||||
}
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
$('#post').on( 'submit', function( event ) {
|
||||
if ( ! updateText() ) {
|
||||
event.preventDefault();
|
||||
$timestampdiv.show();
|
||||
|
||||
if ( wp.autosave ) {
|
||||
wp.autosave.enableButtons();
|
||||
}
|
||||
|
||||
$( '#publishing-action .spinner' ).removeClass( 'is-active' );
|
||||
}
|
||||
});
|
||||
|
||||
$postStatusSelect.siblings('a.edit-post-status').click( function( event ) {
|
||||
if ( $postStatusSelect.is( ':hidden' ) ) {
|
||||
$postStatusSelect.slideDown( 'fast', function() {
|
||||
$postStatusSelect.find('select').focus();
|
||||
} );
|
||||
$(this).hide();
|
||||
}
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
$postStatusSelect.find('.save-post-status').click( function( event ) {
|
||||
$postStatusSelect.slideUp( 'fast' ).siblings( 'a.edit-post-status' ).show().focus();
|
||||
updateText();
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
$postStatusSelect.find('.cancel-post-status').click( function( event ) {
|
||||
$postStatusSelect.slideUp( 'fast' ).siblings( 'a.edit-post-status' ).show().focus();
|
||||
$('#post_status').val( $('#hidden_post_status').val() );
|
||||
updateText();
|
||||
event.preventDefault();
|
||||
});
|
||||
} // end submitdiv
|
||||
|
||||
// permalink
|
||||
function editPermalink() {
|
||||
var i, slug_value,
|
||||
$el, revert_e,
|
||||
c = 0,
|
||||
real_slug = $('#post_name'),
|
||||
revert_slug = real_slug.val(),
|
||||
permalink = $( '#sample-permalink' ),
|
||||
permalinkOrig = permalink.html(),
|
||||
permalinkInner = $( '#sample-permalink a' ).html(),
|
||||
buttons = $('#edit-slug-buttons'),
|
||||
buttonsOrig = buttons.html(),
|
||||
full = $('#editable-post-name-full');
|
||||
|
||||
// Deal with Twemoji in the post-name
|
||||
full.find( 'img' ).replaceWith( function() { return this.alt; } );
|
||||
full = full.html();
|
||||
|
||||
permalink.html( permalinkInner );
|
||||
$el = $( '#editable-post-name' );
|
||||
revert_e = $el.html();
|
||||
|
||||
buttons.html( '<button type="button" class="save button button-small">' + postL10n.ok + '</button> <button type="button" class="cancel button-link">' + postL10n.cancel + '</button>' );
|
||||
buttons.children( '.save' ).click( function() {
|
||||
var new_slug = $el.children( 'input' ).val();
|
||||
|
||||
if ( new_slug == $('#editable-post-name-full').text() ) {
|
||||
buttons.children('.cancel').click();
|
||||
return;
|
||||
}
|
||||
$.post(ajaxurl, {
|
||||
action: 'sample-permalink',
|
||||
post_id: postId,
|
||||
new_slug: new_slug,
|
||||
new_title: $('#title').val(),
|
||||
samplepermalinknonce: $('#samplepermalinknonce').val()
|
||||
}, function(data) {
|
||||
var box = $('#edit-slug-box');
|
||||
box.html(data);
|
||||
if (box.hasClass('hidden')) {
|
||||
box.fadeIn('fast', function () {
|
||||
box.removeClass('hidden');
|
||||
});
|
||||
}
|
||||
|
||||
buttons.html(buttonsOrig);
|
||||
permalink.html(permalinkOrig);
|
||||
real_slug.val(new_slug);
|
||||
$( '.edit-slug' ).focus();
|
||||
wp.a11y.speak( postL10n.permalinkSaved );
|
||||
});
|
||||
});
|
||||
|
||||
buttons.children( '.cancel' ).click( function() {
|
||||
$('#view-post-btn').show();
|
||||
$el.html(revert_e);
|
||||
buttons.html(buttonsOrig);
|
||||
permalink.html(permalinkOrig);
|
||||
real_slug.val(revert_slug);
|
||||
$( '.edit-slug' ).focus();
|
||||
});
|
||||
|
||||
for ( i = 0; i < full.length; ++i ) {
|
||||
if ( '%' == full.charAt(i) )
|
||||
c++;
|
||||
}
|
||||
|
||||
slug_value = ( c > full.length / 4 ) ? '' : full;
|
||||
$el.html( '<input type="text" id="new-post-slug" value="' + slug_value + '" autocomplete="off" />' ).children( 'input' ).keydown( function( e ) {
|
||||
var key = e.which;
|
||||
// On enter, just save the new slug, don't save the post.
|
||||
if ( 13 === key ) {
|
||||
e.preventDefault();
|
||||
buttons.children( '.save' ).click();
|
||||
}
|
||||
if ( 27 === key ) {
|
||||
buttons.children( '.cancel' ).click();
|
||||
}
|
||||
} ).keyup( function() {
|
||||
real_slug.val( this.value );
|
||||
}).focus();
|
||||
}
|
||||
|
||||
$( '#titlediv' ).on( 'click', '.edit-slug', function() {
|
||||
editPermalink();
|
||||
});
|
||||
|
||||
wptitlehint = function(id) {
|
||||
id = id || 'title';
|
||||
|
||||
var title = $('#' + id), titleprompt = $('#' + id + '-prompt-text');
|
||||
|
||||
if ( '' === title.val() )
|
||||
titleprompt.removeClass('screen-reader-text');
|
||||
|
||||
titleprompt.click(function(){
|
||||
$(this).addClass('screen-reader-text');
|
||||
title.focus();
|
||||
});
|
||||
|
||||
title.blur(function(){
|
||||
if ( '' === this.value )
|
||||
titleprompt.removeClass('screen-reader-text');
|
||||
}).focus(function(){
|
||||
titleprompt.addClass('screen-reader-text');
|
||||
}).keydown(function(e){
|
||||
titleprompt.addClass('screen-reader-text');
|
||||
$(this).unbind(e);
|
||||
});
|
||||
};
|
||||
|
||||
wptitlehint();
|
||||
|
||||
// Resize the visual and text editors
|
||||
( function() {
|
||||
var editor, offset, mce,
|
||||
$handle = $('#post-status-info'),
|
||||
$postdivrich = $('#postdivrich');
|
||||
|
||||
// No point for touch devices
|
||||
if ( ! $textarea.length || 'ontouchstart' in window ) {
|
||||
// Hide the resize handle
|
||||
$('#content-resize-handle').hide();
|
||||
return;
|
||||
}
|
||||
|
||||
function dragging( event ) {
|
||||
if ( $postdivrich.hasClass( 'wp-editor-expand' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( mce ) {
|
||||
editor.theme.resizeTo( null, offset + event.pageY );
|
||||
} else {
|
||||
$textarea.height( Math.max( 50, offset + event.pageY ) );
|
||||
}
|
||||
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
function endDrag() {
|
||||
var height, toolbarHeight;
|
||||
|
||||
if ( $postdivrich.hasClass( 'wp-editor-expand' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( mce ) {
|
||||
editor.focus();
|
||||
toolbarHeight = parseInt( $( '#wp-content-editor-container .mce-toolbar-grp' ).height(), 10 );
|
||||
|
||||
if ( toolbarHeight < 10 || toolbarHeight > 200 ) {
|
||||
toolbarHeight = 30;
|
||||
}
|
||||
|
||||
height = parseInt( $('#content_ifr').css('height'), 10 ) + toolbarHeight - 28;
|
||||
} else {
|
||||
$textarea.focus();
|
||||
height = parseInt( $textarea.css('height'), 10 );
|
||||
}
|
||||
|
||||
$document.off( '.wp-editor-resize' );
|
||||
|
||||
// sanity check
|
||||
if ( height && height > 50 && height < 5000 ) {
|
||||
setUserSetting( 'ed_size', height );
|
||||
}
|
||||
}
|
||||
|
||||
$handle.on( 'mousedown.wp-editor-resize', function( event ) {
|
||||
if ( typeof tinymce !== 'undefined' ) {
|
||||
editor = tinymce.get('content');
|
||||
}
|
||||
|
||||
if ( editor && ! editor.isHidden() ) {
|
||||
mce = true;
|
||||
offset = $('#content_ifr').height() - event.pageY;
|
||||
} else {
|
||||
mce = false;
|
||||
offset = $textarea.height() - event.pageY;
|
||||
$textarea.blur();
|
||||
}
|
||||
|
||||
$document.on( 'mousemove.wp-editor-resize', dragging )
|
||||
.on( 'mouseup.wp-editor-resize mouseleave.wp-editor-resize', endDrag );
|
||||
|
||||
event.preventDefault();
|
||||
}).on( 'mouseup.wp-editor-resize', endDrag );
|
||||
})();
|
||||
|
||||
if ( typeof tinymce !== 'undefined' ) {
|
||||
// When changing post formats, change the editor body class
|
||||
$( '#post-formats-select input.post-format' ).on( 'change.set-editor-class', function() {
|
||||
var editor, body, format = this.id;
|
||||
|
||||
if ( format && $( this ).prop( 'checked' ) && ( editor = tinymce.get( 'content' ) ) ) {
|
||||
body = editor.getBody();
|
||||
body.className = body.className.replace( /\bpost-format-[^ ]+/, '' );
|
||||
editor.dom.addClass( body, format == 'post-format-0' ? 'post-format-standard' : format );
|
||||
$( document ).trigger( 'editor-classchange' );
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Save on pressing Ctrl/Command + S in the Text editor
|
||||
$textarea.on( 'keydown.wp-autosave', function( event ) {
|
||||
if ( event.which === 83 ) {
|
||||
if ( event.shiftKey || event.altKey || ( isMac && ( ! event.metaKey || event.ctrlKey ) ) || ( ! isMac && ! event.ctrlKey ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
wp.autosave && wp.autosave.server.triggerSave();
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
if ( $( '#original_post_status' ).val() === 'auto-draft' && window.history.replaceState ) {
|
||||
var location;
|
||||
|
||||
$( '#publish' ).on( 'click', function() {
|
||||
location = window.location.href;
|
||||
location += ( location.indexOf( '?' ) !== -1 ) ? '&' : '?';
|
||||
location += 'wp-post-new-reload=true';
|
||||
|
||||
window.history.replaceState( null, null, location );
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
( function( $, counter ) {
|
||||
$( function() {
|
||||
var $content = $( '#content' ),
|
||||
$count = $( '#wp-word-count' ).find( '.word-count' ),
|
||||
prevCount = 0,
|
||||
contentEditor;
|
||||
|
||||
function update() {
|
||||
var text, count;
|
||||
|
||||
if ( ! contentEditor || contentEditor.isHidden() ) {
|
||||
text = $content.val();
|
||||
} else {
|
||||
text = contentEditor.getContent( { format: 'raw' } );
|
||||
}
|
||||
|
||||
count = counter.count( text );
|
||||
|
||||
if ( count !== prevCount ) {
|
||||
$count.text( count );
|
||||
}
|
||||
|
||||
prevCount = count;
|
||||
}
|
||||
|
||||
$( document ).on( 'tinymce-editor-init', function( event, editor ) {
|
||||
if ( editor.id !== 'content' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
contentEditor = editor;
|
||||
|
||||
editor.on( 'nodechange keyup', _.debounce( update, 1000 ) );
|
||||
} );
|
||||
|
||||
$content.on( 'input keyup', _.debounce( update, 1000 ) );
|
||||
|
||||
update();
|
||||
} );
|
||||
} )( jQuery, new wp.utils.WordCounter() );
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/post.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/post.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
254
Kapitel_7/Lektion_4/wordpress/wp-admin/js/postbox.js
Executable file
254
Kapitel_7/Lektion_4/wordpress/wp-admin/js/postbox.js
Executable file
@@ -0,0 +1,254 @@
|
||||
/* global ajaxurl, postBoxL10n */
|
||||
|
||||
var postboxes;
|
||||
|
||||
(function($) {
|
||||
var $document = $( document );
|
||||
|
||||
postboxes = {
|
||||
handle_click : function () {
|
||||
var $el = $( this ),
|
||||
p = $el.parent( '.postbox' ),
|
||||
id = p.attr( 'id' ),
|
||||
ariaExpandedValue;
|
||||
|
||||
if ( 'dashboard_browser_nag' === id ) {
|
||||
return;
|
||||
}
|
||||
|
||||
p.toggleClass( 'closed' );
|
||||
|
||||
ariaExpandedValue = ! p.hasClass( 'closed' );
|
||||
|
||||
if ( $el.hasClass( 'handlediv' ) ) {
|
||||
// The handle button was clicked.
|
||||
$el.attr( 'aria-expanded', ariaExpandedValue );
|
||||
} else {
|
||||
// The handle heading was clicked.
|
||||
$el.closest( '.postbox' ).find( 'button.handlediv' )
|
||||
.attr( 'aria-expanded', ariaExpandedValue );
|
||||
}
|
||||
|
||||
if ( postboxes.page !== 'press-this' ) {
|
||||
postboxes.save_state( postboxes.page );
|
||||
}
|
||||
|
||||
if ( id ) {
|
||||
if ( !p.hasClass('closed') && $.isFunction( postboxes.pbshow ) ) {
|
||||
postboxes.pbshow( id );
|
||||
} else if ( p.hasClass('closed') && $.isFunction( postboxes.pbhide ) ) {
|
||||
postboxes.pbhide( id );
|
||||
}
|
||||
}
|
||||
|
||||
$document.trigger( 'postbox-toggled', p );
|
||||
},
|
||||
|
||||
add_postbox_toggles : function (page, args) {
|
||||
var $handles = $( '.postbox .hndle, .postbox .handlediv' );
|
||||
|
||||
this.page = page;
|
||||
this.init( page, args );
|
||||
|
||||
$handles.on( 'click.postboxes', this.handle_click );
|
||||
|
||||
$('.postbox .hndle a').click( function(e) {
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
$( '.postbox a.dismiss' ).on( 'click.postboxes', function( e ) {
|
||||
var hide_id = $(this).parents('.postbox').attr('id') + '-hide';
|
||||
e.preventDefault();
|
||||
$( '#' + hide_id ).prop('checked', false).triggerHandler('click');
|
||||
});
|
||||
|
||||
$('.hide-postbox-tog').bind('click.postboxes', function() {
|
||||
var $el = $(this),
|
||||
boxId = $el.val(),
|
||||
$postbox = $( '#' + boxId );
|
||||
|
||||
if ( $el.prop( 'checked' ) ) {
|
||||
$postbox.show();
|
||||
if ( $.isFunction( postboxes.pbshow ) ) {
|
||||
postboxes.pbshow( boxId );
|
||||
}
|
||||
} else {
|
||||
$postbox.hide();
|
||||
if ( $.isFunction( postboxes.pbhide ) ) {
|
||||
postboxes.pbhide( boxId );
|
||||
}
|
||||
}
|
||||
postboxes.save_state( page );
|
||||
postboxes._mark_area();
|
||||
$document.trigger( 'postbox-toggled', $postbox );
|
||||
});
|
||||
|
||||
$('.columns-prefs input[type="radio"]').bind('click.postboxes', function(){
|
||||
var n = parseInt($(this).val(), 10);
|
||||
|
||||
if ( n ) {
|
||||
postboxes._pb_edit(n);
|
||||
postboxes.save_order( page );
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
init : function(page, args) {
|
||||
var isMobile = $( document.body ).hasClass( 'mobile' ),
|
||||
$handleButtons = $( '.postbox .handlediv' );
|
||||
|
||||
$.extend( this, args || {} );
|
||||
$('#wpbody-content').css('overflow','hidden');
|
||||
$('.meta-box-sortables').sortable({
|
||||
placeholder: 'sortable-placeholder',
|
||||
connectWith: '.meta-box-sortables',
|
||||
items: '.postbox',
|
||||
handle: '.hndle',
|
||||
cursor: 'move',
|
||||
delay: ( isMobile ? 200 : 0 ),
|
||||
distance: 2,
|
||||
tolerance: 'pointer',
|
||||
forcePlaceholderSize: true,
|
||||
helper: function( event, element ) {
|
||||
// `helper: 'clone'` is equilavalent to `return element.clone();`
|
||||
// Cloning a checked radio and then inserting that clone next to the original
|
||||
// radio unchecks the original radio (since only one of the two can be checked).
|
||||
// We get around this by renaming the helper's inputs' name attributes so that,
|
||||
// when the helper is inserted into the DOM for the sortable, no radios are
|
||||
// duplicated, and no original radio gets unchecked.
|
||||
return element.clone()
|
||||
.find( ':input' )
|
||||
.attr( 'name', function( i, currentName ) {
|
||||
return 'sort_' + parseInt( Math.random() * 100000, 10 ).toString() + '_' + currentName;
|
||||
} )
|
||||
.end();
|
||||
},
|
||||
opacity: 0.65,
|
||||
stop: function() {
|
||||
var $el = $( this );
|
||||
|
||||
if ( $el.find( '#dashboard_browser_nag' ).is( ':visible' ) && 'dashboard_browser_nag' != this.firstChild.id ) {
|
||||
$el.sortable('cancel');
|
||||
return;
|
||||
}
|
||||
|
||||
postboxes.save_order(page);
|
||||
},
|
||||
receive: function(e,ui) {
|
||||
if ( 'dashboard_browser_nag' == ui.item[0].id )
|
||||
$(ui.sender).sortable('cancel');
|
||||
|
||||
postboxes._mark_area();
|
||||
}
|
||||
});
|
||||
|
||||
if ( isMobile ) {
|
||||
$(document.body).bind('orientationchange.postboxes', function(){ postboxes._pb_change(); });
|
||||
this._pb_change();
|
||||
}
|
||||
|
||||
this._mark_area();
|
||||
|
||||
// Set the handle buttons `aria-expanded` attribute initial value on page load.
|
||||
$handleButtons.each( function () {
|
||||
var $el = $( this );
|
||||
$el.attr( 'aria-expanded', ! $el.parent( '.postbox' ).hasClass( 'closed' ) );
|
||||
});
|
||||
},
|
||||
|
||||
save_state : function(page) {
|
||||
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',
|
||||
closed: closed,
|
||||
hidden: hidden,
|
||||
closedpostboxesnonce: jQuery('#closedpostboxesnonce').val(),
|
||||
page: page
|
||||
});
|
||||
},
|
||||
|
||||
save_order : function(page) {
|
||||
var postVars, page_columns = $('.columns-prefs input:checked').val() || 0;
|
||||
|
||||
postVars = {
|
||||
action: 'meta-box-order',
|
||||
_ajax_nonce: $('#meta-box-order-nonce').val(),
|
||||
page_columns: page_columns,
|
||||
page: page
|
||||
};
|
||||
$('.meta-box-sortables').each( function() {
|
||||
postVars[ 'order[' + this.id.split( '-' )[0] + ']' ] = $( this ).sortable( 'toArray' ).join( ',' );
|
||||
} );
|
||||
$.post( ajaxurl, postVars );
|
||||
},
|
||||
|
||||
_mark_area : function() {
|
||||
var visible = $('div.postbox:visible').length, side = $('#post-body #side-sortables');
|
||||
|
||||
$( '#dashboard-widgets .meta-box-sortables:visible' ).each( function() {
|
||||
var t = $(this);
|
||||
|
||||
if ( visible == 1 || t.children('.postbox:visible').length ) {
|
||||
t.removeClass('empty-container');
|
||||
}
|
||||
else {
|
||||
t.addClass('empty-container');
|
||||
t.attr('data-emptyString', postBoxL10n.postBoxEmptyString);
|
||||
}
|
||||
});
|
||||
|
||||
if ( side.length ) {
|
||||
if ( side.children('.postbox:visible').length )
|
||||
side.removeClass('empty-container');
|
||||
else if ( $('#postbox-container-1').css('width') == '280px' )
|
||||
side.addClass('empty-container');
|
||||
}
|
||||
},
|
||||
|
||||
_pb_edit : function(n) {
|
||||
var el = $('.metabox-holder').get(0);
|
||||
|
||||
if ( el ) {
|
||||
el.className = el.className.replace(/columns-\d+/, 'columns-' + n);
|
||||
}
|
||||
|
||||
$( document ).trigger( 'postboxes-columnchange' );
|
||||
},
|
||||
|
||||
_pb_change : function() {
|
||||
var check = $( 'label.columns-prefs-1 input[type="radio"]' );
|
||||
|
||||
switch ( window.orientation ) {
|
||||
case 90:
|
||||
case -90:
|
||||
if ( !check.length || !check.is(':checked') )
|
||||
this._pb_edit(2);
|
||||
break;
|
||||
case 0:
|
||||
case 180:
|
||||
if ( $('#poststuff').length ) {
|
||||
this._pb_edit(1);
|
||||
} else {
|
||||
if ( !check.length || !check.is(':checked') )
|
||||
this._pb_edit(2);
|
||||
}
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
/* Callbacks */
|
||||
pbshow : false,
|
||||
|
||||
pbhide : false
|
||||
};
|
||||
|
||||
}(jQuery));
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/postbox.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/postbox.min.js
vendored
Executable file
@@ -0,0 +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:function(a,b){return b.clone().find(":input").attr("name",function(a,b){return"sort_"+parseInt(1e5*Math.random(),10).toString()+"_"+b}).end()},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.attr("data-emptyString",postBoxL10n.postBoxEmptyString))}),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);
|
||||
932
Kapitel_7/Lektion_4/wordpress/wp-admin/js/press-this.js
Executable file
932
Kapitel_7/Lektion_4/wordpress/wp-admin/js/press-this.js
Executable file
@@ -0,0 +1,932 @@
|
||||
/**
|
||||
* PressThis App
|
||||
*
|
||||
*/
|
||||
( function( $, window ) {
|
||||
var PressThis = function() {
|
||||
var editor, $mediaList, $mediaThumbWrap,
|
||||
$window = $( window ),
|
||||
$document = $( document ),
|
||||
saveAlert = false,
|
||||
textarea = document.createElement( 'textarea' ),
|
||||
sidebarIsOpen = false,
|
||||
settings = window.wpPressThisConfig || {},
|
||||
data = window.wpPressThisData || {},
|
||||
smallestWidth = 128,
|
||||
hasSetFocus = false,
|
||||
catsCache = [],
|
||||
isOffScreen = 'is-off-screen',
|
||||
isHidden = 'is-hidden',
|
||||
offscreenHidden = isOffScreen + ' ' + isHidden,
|
||||
iOS = /iPad|iPod|iPhone/.test( window.navigator.userAgent ),
|
||||
$textEditor = $( '#pressthis' ),
|
||||
textEditor = $textEditor[0],
|
||||
textEditorMinHeight = 600,
|
||||
textLength = 0,
|
||||
transitionEndEvent = ( function() {
|
||||
var style = document.documentElement.style;
|
||||
|
||||
if ( typeof style.transition !== 'undefined' ) {
|
||||
return 'transitionend';
|
||||
}
|
||||
|
||||
if ( typeof style.WebkitTransition !== 'undefined' ) {
|
||||
return 'webkitTransitionEnd';
|
||||
}
|
||||
|
||||
return false;
|
||||
}() );
|
||||
|
||||
/* ***************************************************************
|
||||
* HELPER FUNCTIONS
|
||||
*************************************************************** */
|
||||
|
||||
/**
|
||||
* Emulates our PHP __() gettext function, powered by the strings exported in pressThisL10n.
|
||||
*
|
||||
* @param key string Key of the string to be translated, as found in pressThisL10n.
|
||||
* @returns string Original or translated string, or empty string if no key.
|
||||
*/
|
||||
function __( key ) {
|
||||
if ( key && window.pressThisL10n ) {
|
||||
return window.pressThisL10n[key] || key;
|
||||
}
|
||||
|
||||
return key || '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Strips HTML tags
|
||||
*
|
||||
* @param string string Text to have the HTML tags striped out of.
|
||||
* @returns string Stripped text.
|
||||
*/
|
||||
function stripTags( string ) {
|
||||
string = string || '';
|
||||
|
||||
return string
|
||||
.replace( /<!--[\s\S]*?(-->|$)/g, '' )
|
||||
.replace( /<(script|style)[^>]*>[\s\S]*?(<\/\1>|$)/ig, '' )
|
||||
.replace( /<\/?[a-z][\s\S]*?(>|$)/ig, '' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Strip HTML tags and convert HTML entities.
|
||||
*
|
||||
* @param text string Text.
|
||||
* @returns string Sanitized text.
|
||||
*/
|
||||
function sanitizeText( text ) {
|
||||
var _text = stripTags( text );
|
||||
|
||||
try {
|
||||
textarea.innerHTML = _text;
|
||||
_text = stripTags( textarea.value );
|
||||
} catch ( er ) {}
|
||||
|
||||
return _text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Allow only HTTP or protocol relative URLs.
|
||||
*
|
||||
* @param url string The URL.
|
||||
* @returns string Processed URL.
|
||||
*/
|
||||
function checkUrl( url ) {
|
||||
url = $.trim( url || '' );
|
||||
|
||||
if ( /^(?:https?:)?\/\//.test( url ) ) {
|
||||
url = stripTags( url );
|
||||
return url.replace( /["\\]+/g, '' );
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
/**
|
||||
* Show UX spinner
|
||||
*/
|
||||
function showSpinner() {
|
||||
$( '.spinner' ).addClass( 'is-active' );
|
||||
$( '.post-actions button' ).attr( 'disabled', 'disabled' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide UX spinner
|
||||
*/
|
||||
function hideSpinner() {
|
||||
$( '.spinner' ).removeClass( 'is-active' );
|
||||
$( '.post-actions button' ).removeAttr( 'disabled' );
|
||||
}
|
||||
|
||||
function textEditorResize( reset ) {
|
||||
var pageYOffset, height;
|
||||
|
||||
if ( editor && ! editor.isHidden() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
reset = ( reset === 'reset' ) || ( textLength && textLength > textEditor.value.length );
|
||||
height = textEditor.style.height;
|
||||
|
||||
if ( reset ) {
|
||||
pageYOffset = window.pageYOffset;
|
||||
|
||||
textEditor.style.height = 'auto';
|
||||
textEditor.style.height = Math.max( textEditor.scrollHeight, textEditorMinHeight ) + 'px';
|
||||
window.scrollTo( window.pageXOffset, pageYOffset );
|
||||
} else if ( parseInt( textEditor.style.height, 10 ) < textEditor.scrollHeight ) {
|
||||
textEditor.style.height = textEditor.scrollHeight + 'px';
|
||||
}
|
||||
|
||||
textLength = textEditor.value.length;
|
||||
}
|
||||
|
||||
function mceGetCursorOffset() {
|
||||
if ( ! editor ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var node = editor.selection.getNode(),
|
||||
range, view, offset;
|
||||
|
||||
if ( editor.wp && editor.wp.getView && ( view = editor.wp.getView( node ) ) ) {
|
||||
offset = view.getBoundingClientRect();
|
||||
} else {
|
||||
range = editor.selection.getRng();
|
||||
|
||||
try {
|
||||
offset = range.getClientRects()[0];
|
||||
} catch( er ) {}
|
||||
|
||||
if ( ! offset ) {
|
||||
offset = node.getBoundingClientRect();
|
||||
}
|
||||
}
|
||||
|
||||
return offset.height ? offset : false;
|
||||
}
|
||||
|
||||
// Make sure the caret is always visible.
|
||||
function mceKeyup( event ) {
|
||||
var VK = window.tinymce.util.VK,
|
||||
key = event.keyCode;
|
||||
|
||||
// Bail on special keys.
|
||||
if ( key <= 47 && ! ( key === VK.SPACEBAR || key === VK.ENTER || key === VK.DELETE || key === VK.BACKSPACE || key === VK.UP || key === VK.LEFT || key === VK.DOWN || key === VK.UP ) ) {
|
||||
return;
|
||||
// OS keys, function keys, num lock, scroll lock
|
||||
} else if ( ( key >= 91 && key <= 93 ) || ( key >= 112 && key <= 123 ) || key === 144 || key === 145 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
mceScroll( key );
|
||||
}
|
||||
|
||||
function mceScroll( key ) {
|
||||
var cursorTop, cursorBottom, editorBottom,
|
||||
offset = mceGetCursorOffset(),
|
||||
bufferTop = 50,
|
||||
bufferBottom = 65,
|
||||
VK = window.tinymce.util.VK;
|
||||
|
||||
if ( ! offset ) {
|
||||
return;
|
||||
}
|
||||
|
||||
cursorTop = offset.top + editor.iframeElement.getBoundingClientRect().top;
|
||||
cursorBottom = cursorTop + offset.height;
|
||||
cursorTop = cursorTop - bufferTop;
|
||||
cursorBottom = cursorBottom + bufferBottom;
|
||||
editorBottom = $window.height();
|
||||
|
||||
// Don't scroll if the node is taller than the visible part of the editor
|
||||
if ( editorBottom < offset.height ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( cursorTop < 0 && ( key === VK.UP || key === VK.LEFT || key === VK.BACKSPACE ) ) {
|
||||
window.scrollTo( window.pageXOffset, cursorTop + window.pageYOffset );
|
||||
} else if ( cursorBottom > editorBottom ) {
|
||||
window.scrollTo( window.pageXOffset, cursorBottom + window.pageYOffset - editorBottom );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Replace emoji images with chars and sanitize the text content.
|
||||
*/
|
||||
function getTitleText() {
|
||||
var $element = $( '#title-container' );
|
||||
|
||||
$element.find( 'img.emoji' ).each( function() {
|
||||
var $image = $( this );
|
||||
$image.replaceWith( $( '<span>' ).text( $image.attr( 'alt' ) ) );
|
||||
});
|
||||
|
||||
return sanitizeText( $element.text() );
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare the form data for saving.
|
||||
*/
|
||||
function prepareFormData() {
|
||||
var $form = $( '#pressthis-form' ),
|
||||
$input = $( '<input type="hidden" name="post_category[]" value="">' );
|
||||
|
||||
editor && editor.save();
|
||||
|
||||
$( '#post_title' ).val( getTitleText() );
|
||||
|
||||
// Make sure to flush out the tags with tagBox before saving
|
||||
if ( window.tagBox ) {
|
||||
$( 'div.tagsdiv' ).each( function() {
|
||||
window.tagBox.flushTags( this, false, 1 );
|
||||
} );
|
||||
}
|
||||
|
||||
// Get selected categories
|
||||
$( '.categories-select .category' ).each( function( i, element ) {
|
||||
var $cat = $( element );
|
||||
|
||||
if ( $cat.hasClass( 'selected' ) ) {
|
||||
// Have to append a node as we submit the actual form on preview
|
||||
$form.append( $input.clone().val( $cat.attr( 'data-term-id' ) || '' ) );
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Submit the post form via AJAX, and redirect to the proper screen if published vs saved as a draft.
|
||||
*
|
||||
* @param action string publish|draft
|
||||
*/
|
||||
function submitPost( action ) {
|
||||
var data;
|
||||
|
||||
saveAlert = false;
|
||||
showSpinner();
|
||||
|
||||
if ( 'publish' === action ) {
|
||||
$( '#post_status' ).val( 'publish' );
|
||||
}
|
||||
|
||||
prepareFormData();
|
||||
data = $( '#pressthis-form' ).serialize();
|
||||
|
||||
$.ajax( {
|
||||
type: 'post',
|
||||
url: window.ajaxurl,
|
||||
data: data
|
||||
}).always( function() {
|
||||
hideSpinner();
|
||||
clearNotices();
|
||||
$( '.publish-button' ).removeClass( 'is-saving' );
|
||||
}).done( function( response ) {
|
||||
if ( ! response.success ) {
|
||||
renderError( response.data.errorMessage );
|
||||
} else if ( response.data.redirect ) {
|
||||
if ( window.opener && ( settings.redirInParent || response.data.force ) ) {
|
||||
try {
|
||||
window.opener.location.href = response.data.redirect;
|
||||
|
||||
window.setTimeout( function() {
|
||||
window.self.close();
|
||||
}, 200 );
|
||||
} catch( er ) {
|
||||
window.location.href = response.data.redirect;
|
||||
}
|
||||
} else {
|
||||
window.location.href = response.data.redirect;
|
||||
}
|
||||
}
|
||||
}).fail( function() {
|
||||
renderError( __( 'serverError' ) );
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Inserts the media a user has selected from the presented list inside the editor, as an image or embed, based on type
|
||||
*
|
||||
* @param type string img|embed
|
||||
* @param src string Source URL
|
||||
* @param link string Optional destination link, for images (defaults to src)
|
||||
*/
|
||||
function insertSelectedMedia( $element ) {
|
||||
var src, link, newContent = '';
|
||||
|
||||
src = checkUrl( $element.attr( 'data-wp-src' ) || '' );
|
||||
link = checkUrl( data.u );
|
||||
|
||||
if ( $element.hasClass( 'is-image' ) ) {
|
||||
if ( ! link ) {
|
||||
link = src;
|
||||
}
|
||||
|
||||
newContent = '<a href="' + link + '"><img class="alignnone size-full" src="' + src + '" alt="" /></a>';
|
||||
} else {
|
||||
newContent = '[embed]' + src + '[/embed]';
|
||||
}
|
||||
|
||||
if ( editor && ! editor.isHidden() ) {
|
||||
if ( ! hasSetFocus ) {
|
||||
editor.setContent( '<p>' + newContent + '</p>' + editor.getContent() );
|
||||
} else {
|
||||
editor.execCommand( 'mceInsertContent', false, newContent );
|
||||
}
|
||||
} else if ( window.QTags ) {
|
||||
window.QTags.insertContent( newContent );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Save a new user-generated category via AJAX
|
||||
*/
|
||||
function saveNewCategory() {
|
||||
var data,
|
||||
name = $( '#new-category' ).val();
|
||||
|
||||
if ( ! name ) {
|
||||
return;
|
||||
}
|
||||
|
||||
data = {
|
||||
action: 'press-this-add-category',
|
||||
post_id: $( '#post_ID' ).val() || 0,
|
||||
name: name,
|
||||
new_cat_nonce: $( '#_ajax_nonce-add-category' ).val() || '',
|
||||
parent: $( '#new-category-parent' ).val() || 0
|
||||
};
|
||||
|
||||
$.post( window.ajaxurl, data, function( response ) {
|
||||
if ( ! response.success ) {
|
||||
renderError( response.data.errorMessage );
|
||||
} else {
|
||||
var $parent, $ul,
|
||||
$wrap = $( 'ul.categories-select' );
|
||||
|
||||
$.each( response.data, function( i, newCat ) {
|
||||
var $node = $( '<li>' ).append( $( '<div class="category selected" tabindex="0" role="checkbox" aria-checked="true">' )
|
||||
.attr( 'data-term-id', newCat.term_id )
|
||||
.text( newCat.name ) );
|
||||
|
||||
if ( newCat.parent ) {
|
||||
if ( ! $ul || ! $ul.length ) {
|
||||
$parent = $wrap.find( 'div[data-term-id="' + newCat.parent + '"]' ).parent();
|
||||
$ul = $parent.find( 'ul.children:first' );
|
||||
|
||||
if ( ! $ul.length ) {
|
||||
$ul = $( '<ul class="children">' ).appendTo( $parent );
|
||||
}
|
||||
}
|
||||
|
||||
$ul.prepend( $node );
|
||||
} else {
|
||||
$wrap.prepend( $node );
|
||||
}
|
||||
|
||||
$node.focus();
|
||||
} );
|
||||
|
||||
refreshCatsCache();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
/* ***************************************************************
|
||||
* RENDERING FUNCTIONS
|
||||
*************************************************************** */
|
||||
|
||||
/**
|
||||
* Hide the form letting users enter a URL to be scanned, if a URL was already passed.
|
||||
*/
|
||||
function renderToolsVisibility() {
|
||||
if ( data.hasData ) {
|
||||
$( '#scanbar' ).hide();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Render error notice
|
||||
*
|
||||
* @param msg string Notice/error message
|
||||
* @param error string error|notice CSS class for display
|
||||
*/
|
||||
function renderNotice( msg, error ) {
|
||||
var $alerts = $( '.editor-wrapper div.alerts' ),
|
||||
className = error ? 'is-error' : 'is-notice';
|
||||
|
||||
$alerts.append( $( '<p class="alert ' + className + '">' ).text( msg ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Render error notice
|
||||
*
|
||||
* @param msg string Error message
|
||||
*/
|
||||
function renderError( msg ) {
|
||||
renderNotice( msg, true );
|
||||
}
|
||||
|
||||
function clearNotices() {
|
||||
$( 'div.alerts' ).empty();
|
||||
}
|
||||
|
||||
/**
|
||||
* Render notices on page load, if any already
|
||||
*/
|
||||
function renderStartupNotices() {
|
||||
// Render errors sent in the data, if any
|
||||
if ( data.errors ) {
|
||||
$.each( data.errors, function( i, msg ) {
|
||||
renderError( msg );
|
||||
} );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add an image to the list of found images.
|
||||
*/
|
||||
function addImg( src, displaySrc, i ) {
|
||||
var $element = $mediaThumbWrap.clone().addClass( 'is-image' );
|
||||
|
||||
$element.attr( 'data-wp-src', src ).css( 'background-image', 'url(' + displaySrc + ')' )
|
||||
.find( 'span' ).text( __( 'suggestedImgAlt' ).replace( '%d', i + 1 ) );
|
||||
|
||||
$mediaList.append( $element );
|
||||
}
|
||||
|
||||
/**
|
||||
* Render the detected images and embed for selection, if any
|
||||
*/
|
||||
function renderDetectedMedia() {
|
||||
var found = 0;
|
||||
|
||||
$mediaList = $( 'ul.media-list' );
|
||||
$mediaThumbWrap = $( '<li class="suggested-media-thumbnail" tabindex="0"><span class="screen-reader-text"></span></li>' );
|
||||
|
||||
if ( data._embeds ) {
|
||||
$.each( data._embeds, function ( i, src ) {
|
||||
var displaySrc = '',
|
||||
cssClass = '',
|
||||
$element = $mediaThumbWrap.clone().addClass( 'is-embed' );
|
||||
|
||||
src = checkUrl( src );
|
||||
|
||||
if ( src.indexOf( 'youtube.com/' ) > -1 ) {
|
||||
displaySrc = 'https://i.ytimg.com/vi/' + src.replace( /.+v=([^&]+).*/, '$1' ) + '/hqdefault.jpg';
|
||||
cssClass += ' is-video';
|
||||
} else if ( src.indexOf( 'youtu.be/' ) > -1 ) {
|
||||
displaySrc = 'https://i.ytimg.com/vi/' + src.replace( /\/([^\/])$/, '$1' ) + '/hqdefault.jpg';
|
||||
cssClass += ' is-video';
|
||||
} else if ( src.indexOf( 'dailymotion.com' ) > -1 ) {
|
||||
displaySrc = src.replace( '/video/', '/thumbnail/video/' );
|
||||
cssClass += ' is-video';
|
||||
} else if ( src.indexOf( 'soundcloud.com' ) > -1 ) {
|
||||
cssClass += ' is-audio';
|
||||
} else if ( src.indexOf( 'twitter.com' ) > -1 ) {
|
||||
cssClass += ' is-tweet';
|
||||
} else {
|
||||
cssClass += ' is-video';
|
||||
}
|
||||
|
||||
$element.attr( 'data-wp-src', src ).find( 'span' ).text( __( 'suggestedEmbedAlt' ).replace( '%d', i + 1 ) );
|
||||
|
||||
if ( displaySrc ) {
|
||||
$element.css( 'background-image', 'url(' + displaySrc + ')' );
|
||||
}
|
||||
|
||||
$mediaList.append( $element );
|
||||
found++;
|
||||
} );
|
||||
}
|
||||
|
||||
if ( data._images ) {
|
||||
$.each( data._images, function( i, src ) {
|
||||
var displaySrc, img = new Image();
|
||||
|
||||
src = checkUrl( src );
|
||||
displaySrc = src.replace( /^(http[^\?]+)(\?.*)?$/, '$1' );
|
||||
|
||||
if ( src.indexOf( 'files.wordpress.com/' ) > -1 ) {
|
||||
displaySrc = displaySrc.replace( /\?.*$/, '' ) + '?w=' + smallestWidth;
|
||||
} else if ( src.indexOf( 'gravatar.com/' ) > -1 ) {
|
||||
displaySrc = displaySrc.replace( /\?.*$/, '' ) + '?s=' + smallestWidth;
|
||||
} else {
|
||||
displaySrc = src;
|
||||
}
|
||||
|
||||
img.onload = function() {
|
||||
if ( ( img.width && img.width < 256 ) ||
|
||||
( img.height && img.height < 128 ) ) {
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
addImg( src, displaySrc, i );
|
||||
};
|
||||
|
||||
img.src = src;
|
||||
found++;
|
||||
} );
|
||||
}
|
||||
|
||||
if ( found ) {
|
||||
$( '.media-list-container' ).addClass( 'has-media' );
|
||||
}
|
||||
}
|
||||
|
||||
/* ***************************************************************
|
||||
* MONITORING FUNCTIONS
|
||||
*************************************************************** */
|
||||
|
||||
/**
|
||||
* Interactive navigation behavior for the options modal (post format, tags, categories)
|
||||
*/
|
||||
function monitorOptionsModal() {
|
||||
var $postOptions = $( '.post-options' ),
|
||||
$postOption = $( '.post-option' ),
|
||||
$settingModal = $( '.setting-modal' ),
|
||||
$modalClose = $( '.modal-close' );
|
||||
|
||||
$postOption.on( 'click', function() {
|
||||
var index = $( this ).index(),
|
||||
$targetSettingModal = $settingModal.eq( index );
|
||||
|
||||
$postOptions.addClass( isOffScreen )
|
||||
.one( transitionEndEvent, function() {
|
||||
$( this ).addClass( isHidden );
|
||||
} );
|
||||
|
||||
$targetSettingModal.removeClass( offscreenHidden )
|
||||
.one( transitionEndEvent, function() {
|
||||
$( this ).find( '.modal-close' ).focus();
|
||||
} );
|
||||
} );
|
||||
|
||||
$modalClose.on( 'click', function() {
|
||||
var $targetSettingModal = $( this ).parent(),
|
||||
index = $targetSettingModal.index();
|
||||
|
||||
$postOptions.removeClass( offscreenHidden );
|
||||
$targetSettingModal.addClass( isOffScreen );
|
||||
|
||||
if ( transitionEndEvent ) {
|
||||
$targetSettingModal.one( transitionEndEvent, function() {
|
||||
$( this ).addClass( isHidden );
|
||||
$postOption.eq( index - 1 ).focus();
|
||||
} );
|
||||
} else {
|
||||
setTimeout( function() {
|
||||
$targetSettingModal.addClass( isHidden );
|
||||
$postOption.eq( index - 1 ).focus();
|
||||
}, 350 );
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
/**
|
||||
* Interactive behavior for the sidebar toggle, to show the options modals
|
||||
*/
|
||||
function openSidebar() {
|
||||
sidebarIsOpen = true;
|
||||
|
||||
$( '.options' ).removeClass( 'closed' ).addClass( 'open' );
|
||||
$( '.press-this-actions, #scanbar' ).addClass( isHidden );
|
||||
$( '.options-panel-back' ).removeClass( isHidden );
|
||||
|
||||
$( '.options-panel' ).removeClass( offscreenHidden )
|
||||
.one( transitionEndEvent, function() {
|
||||
$( '.post-option:first' ).focus();
|
||||
} );
|
||||
}
|
||||
|
||||
function closeSidebar() {
|
||||
sidebarIsOpen = false;
|
||||
|
||||
$( '.options' ).removeClass( 'open' ).addClass( 'closed' );
|
||||
$( '.options-panel-back' ).addClass( isHidden );
|
||||
$( '.press-this-actions, #scanbar' ).removeClass( isHidden );
|
||||
|
||||
$( '.options-panel' ).addClass( isOffScreen )
|
||||
.one( transitionEndEvent, function() {
|
||||
$( this ).addClass( isHidden );
|
||||
// Reset to options list
|
||||
$( '.post-options' ).removeClass( offscreenHidden );
|
||||
$( '.setting-modal').addClass( offscreenHidden );
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Interactive behavior for the post title's field placeholder
|
||||
*/
|
||||
function monitorPlaceholder() {
|
||||
var $titleField = $( '#title-container' ),
|
||||
$placeholder = $( '.post-title-placeholder' );
|
||||
|
||||
$titleField.on( 'focus', function() {
|
||||
$placeholder.addClass( 'is-hidden' );
|
||||
}).on( 'blur', function() {
|
||||
if ( ! $titleField.text() && ! $titleField.html() ) {
|
||||
$placeholder.removeClass( 'is-hidden' );
|
||||
}
|
||||
}).on( 'keyup', function() {
|
||||
saveAlert = true;
|
||||
}).on( 'paste', function( event ) {
|
||||
var text, range,
|
||||
clipboard = event.originalEvent.clipboardData || window.clipboardData;
|
||||
|
||||
if ( clipboard ) {
|
||||
try{
|
||||
text = clipboard.getData( 'Text' ) || clipboard.getData( 'text/plain' );
|
||||
|
||||
if ( text ) {
|
||||
text = $.trim( text.replace( /\s+/g, ' ' ) );
|
||||
|
||||
if ( window.getSelection ) {
|
||||
range = window.getSelection().getRangeAt(0);
|
||||
|
||||
if ( range ) {
|
||||
if ( ! range.collapsed ) {
|
||||
range.deleteContents();
|
||||
}
|
||||
|
||||
range.insertNode( document.createTextNode( text ) );
|
||||
}
|
||||
} else if ( document.selection ) {
|
||||
range = document.selection.createRange();
|
||||
|
||||
if ( range ) {
|
||||
range.text = text;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch ( er ) {}
|
||||
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
saveAlert = true;
|
||||
|
||||
setTimeout( function() {
|
||||
$titleField.text( getTitleText() );
|
||||
}, 50 );
|
||||
});
|
||||
|
||||
if ( $titleField.text() || $titleField.html() ) {
|
||||
$placeholder.addClass('is-hidden');
|
||||
}
|
||||
}
|
||||
|
||||
function toggleCatItem( $element ) {
|
||||
if ( $element.hasClass( 'selected' ) ) {
|
||||
$element.removeClass( 'selected' ).attr( 'aria-checked', 'false' );
|
||||
} else {
|
||||
$element.addClass( 'selected' ).attr( 'aria-checked', 'true' );
|
||||
}
|
||||
}
|
||||
|
||||
function monitorCatList() {
|
||||
$( '.categories-select' ).on( 'click.press-this keydown.press-this', function( event ) {
|
||||
var $element = $( event.target );
|
||||
|
||||
if ( $element.is( 'div.category' ) ) {
|
||||
if ( event.type === 'keydown' && event.keyCode !== 32 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
toggleCatItem( $element );
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function splitButtonClose() {
|
||||
$( '.split-button' ).removeClass( 'is-open' );
|
||||
$( '.split-button-toggle' ).attr( 'aria-expanded', 'false' );
|
||||
}
|
||||
|
||||
/* ***************************************************************
|
||||
* PROCESSING FUNCTIONS
|
||||
*************************************************************** */
|
||||
|
||||
/**
|
||||
* Calls all the rendring related functions to happen on page load
|
||||
*/
|
||||
function render(){
|
||||
// We're on!
|
||||
renderToolsVisibility();
|
||||
renderDetectedMedia();
|
||||
renderStartupNotices();
|
||||
|
||||
if ( window.tagBox ) {
|
||||
window.tagBox.init();
|
||||
}
|
||||
|
||||
// iOS doesn't fire click events on "standard" elements without this...
|
||||
if ( iOS ) {
|
||||
$( document.body ).css( 'cursor', 'pointer' );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set app events and other state monitoring related code.
|
||||
*/
|
||||
function monitor() {
|
||||
var $splitButton = $( '.split-button' );
|
||||
|
||||
$document.on( 'tinymce-editor-init', function( event, ed ) {
|
||||
editor = ed;
|
||||
|
||||
editor.on( 'nodechange', function() {
|
||||
hasSetFocus = true;
|
||||
});
|
||||
|
||||
editor.on( 'focus', function() {
|
||||
splitButtonClose();
|
||||
});
|
||||
|
||||
editor.on( 'show', function() {
|
||||
setTimeout( function() {
|
||||
editor.execCommand( 'wpAutoResize' );
|
||||
}, 300 );
|
||||
});
|
||||
|
||||
editor.on( 'hide', function() {
|
||||
setTimeout( function() {
|
||||
textEditorResize( 'reset' );
|
||||
}, 100 );
|
||||
});
|
||||
|
||||
editor.on( 'keyup', mceKeyup );
|
||||
editor.on( 'undo redo', mceScroll );
|
||||
|
||||
}).on( 'click.press-this keypress.press-this', '.suggested-media-thumbnail', function( event ) {
|
||||
if ( event.type === 'click' || event.keyCode === 13 ) {
|
||||
insertSelectedMedia( $( this ) );
|
||||
}
|
||||
}).on( 'click.press-this', function( event ) {
|
||||
if ( ! $( event.target ).closest( 'button' ).hasClass( 'split-button-toggle' ) ) {
|
||||
splitButtonClose();
|
||||
}
|
||||
});
|
||||
|
||||
// Publish, Draft and Preview buttons
|
||||
$( '.post-actions' ).on( 'click.press-this', function( event ) {
|
||||
var location,
|
||||
$target = $( event.target ),
|
||||
$button = $target.closest( 'button' );
|
||||
|
||||
if ( $button.length ) {
|
||||
if ( $button.hasClass( 'draft-button' ) ) {
|
||||
$( '.publish-button' ).addClass( 'is-saving' );
|
||||
submitPost( 'draft' );
|
||||
} else if ( $button.hasClass( 'publish-button' ) ) {
|
||||
$button.addClass( 'is-saving' );
|
||||
|
||||
if ( window.history.replaceState ) {
|
||||
location = window.location.href;
|
||||
location += ( location.indexOf( '?' ) !== -1 ) ? '&' : '?';
|
||||
location += 'wp-press-this-reload=true';
|
||||
|
||||
window.history.replaceState( null, null, location );
|
||||
}
|
||||
|
||||
submitPost( 'publish' );
|
||||
} else if ( $button.hasClass( 'preview-button' ) ) {
|
||||
prepareFormData();
|
||||
window.opener && window.opener.focus();
|
||||
|
||||
$( '#wp-preview' ).val( 'dopreview' );
|
||||
$( '#pressthis-form' ).attr( 'target', '_blank' ).submit().attr( 'target', '' );
|
||||
$( '#wp-preview' ).val( '' );
|
||||
} else if ( $button.hasClass( 'standard-editor-button' ) ) {
|
||||
$( '.publish-button' ).addClass( 'is-saving' );
|
||||
$( '#pt-force-redirect' ).val( 'true' );
|
||||
submitPost( 'draft' );
|
||||
} else if ( $button.hasClass( 'split-button-toggle' ) ) {
|
||||
if ( $splitButton.hasClass( 'is-open' ) ) {
|
||||
$splitButton.removeClass( 'is-open' );
|
||||
$button.attr( 'aria-expanded', 'false' );
|
||||
} else {
|
||||
$splitButton.addClass( 'is-open' );
|
||||
$button.attr( 'aria-expanded', 'true' );
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
monitorOptionsModal();
|
||||
monitorPlaceholder();
|
||||
monitorCatList();
|
||||
|
||||
$( '.options' ).on( 'click.press-this', function() {
|
||||
if ( $( this ).hasClass( 'open' ) ) {
|
||||
closeSidebar();
|
||||
} else {
|
||||
openSidebar();
|
||||
}
|
||||
});
|
||||
|
||||
// Close the sidebar when focus moves outside of it.
|
||||
$( '.options-panel, .options-panel-back' ).on( 'focusout.press-this', function() {
|
||||
setTimeout( function() {
|
||||
var node = document.activeElement,
|
||||
$node = $( node );
|
||||
|
||||
if ( sidebarIsOpen && node && ! $node.hasClass( 'options-panel-back' ) &&
|
||||
( node.nodeName === 'BODY' ||
|
||||
( ! $node.closest( '.options-panel' ).length &&
|
||||
! $node.closest( '.options' ).length ) ) ) {
|
||||
|
||||
closeSidebar();
|
||||
}
|
||||
}, 50 );
|
||||
});
|
||||
|
||||
$( '#post-formats-select input' ).on( 'change', function() {
|
||||
var $this = $( this );
|
||||
|
||||
if ( $this.is( ':checked' ) ) {
|
||||
$( '#post-option-post-format' ).text( $( 'label[for="' + $this.attr( 'id' ) + '"]' ).text() || '' );
|
||||
}
|
||||
} );
|
||||
|
||||
$window.on( 'beforeunload.press-this', function() {
|
||||
if ( saveAlert || ( editor && editor.isDirty() ) ) {
|
||||
return __( 'saveAlert' );
|
||||
}
|
||||
} ).on( 'resize.press-this', function() {
|
||||
if ( ! editor || editor.isHidden() ) {
|
||||
textEditorResize( 'reset' );
|
||||
}
|
||||
});
|
||||
|
||||
$( 'button.add-cat-toggle' ).on( 'click.press-this', function() {
|
||||
var $this = $( this );
|
||||
|
||||
$this.toggleClass( 'is-toggled' );
|
||||
$this.attr( 'aria-expanded', 'false' === $this.attr( 'aria-expanded' ) ? 'true' : 'false' );
|
||||
$( '.setting-modal .add-category, .categories-search-wrapper' ).toggleClass( 'is-hidden' );
|
||||
} );
|
||||
|
||||
$( 'button.add-cat-submit' ).on( 'click.press-this', saveNewCategory );
|
||||
|
||||
$( '.categories-search' ).on( 'keyup.press-this', function() {
|
||||
var search = $( this ).val().toLowerCase() || '';
|
||||
|
||||
// Don't search when less thasn 3 extended ASCII chars
|
||||
if ( /[\x20-\xFF]+/.test( search ) && search.length < 2 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$.each( catsCache, function( i, cat ) {
|
||||
cat.node.removeClass( 'is-hidden searched-parent' );
|
||||
} );
|
||||
|
||||
if ( search ) {
|
||||
$.each( catsCache, function( i, cat ) {
|
||||
if ( cat.text.indexOf( search ) === -1 ) {
|
||||
cat.node.addClass( 'is-hidden' );
|
||||
} else {
|
||||
cat.parents.addClass( 'searched-parent' );
|
||||
}
|
||||
} );
|
||||
}
|
||||
} );
|
||||
|
||||
$textEditor.on( 'focus.press-this input.press-this propertychange.press-this', textEditorResize );
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function refreshCatsCache() {
|
||||
$( '.categories-select' ).find( 'li' ).each( function() {
|
||||
var $this = $( this );
|
||||
|
||||
catsCache.push( {
|
||||
node: $this,
|
||||
parents: $this.parents( 'li' ),
|
||||
text: $this.children( '.category' ).text().toLowerCase()
|
||||
} );
|
||||
} );
|
||||
}
|
||||
|
||||
// Let's go!
|
||||
$document.ready( function() {
|
||||
render();
|
||||
monitor();
|
||||
refreshCatsCache();
|
||||
});
|
||||
|
||||
// Expose public methods?
|
||||
return {
|
||||
renderNotice: renderNotice,
|
||||
renderError: renderError
|
||||
};
|
||||
};
|
||||
|
||||
window.wp = window.wp || {};
|
||||
window.wp.pressThis = new PressThis();
|
||||
|
||||
}( jQuery, window ));
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/press-this.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/press-this.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
1166
Kapitel_7/Lektion_4/wordpress/wp-admin/js/revisions.js
Executable file
1166
Kapitel_7/Lektion_4/wordpress/wp-admin/js/revisions.js
Executable file
File diff suppressed because it is too large
Load Diff
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/revisions.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/revisions.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
24
Kapitel_7/Lektion_4/wordpress/wp-admin/js/set-post-thumbnail.js
Executable file
24
Kapitel_7/Lektion_4/wordpress/wp-admin/js/set-post-thumbnail.js
Executable file
@@ -0,0 +1,24 @@
|
||||
/* global setPostThumbnailL10n, ajaxurl, post_id, alert */
|
||||
/* exported WPSetAsThumbnail */
|
||||
|
||||
function WPSetAsThumbnail( id, nonce ) {
|
||||
var $link = jQuery('a#wp-post-thumbnail-' + id);
|
||||
|
||||
$link.text( setPostThumbnailL10n.saving );
|
||||
jQuery.post(ajaxurl, {
|
||||
action: 'set-post-thumbnail', post_id: post_id, thumbnail_id: id, _ajax_nonce: nonce, cookie: encodeURIComponent( document.cookie )
|
||||
}, function(str){
|
||||
var win = window.dialogArguments || opener || parent || top;
|
||||
$link.text( setPostThumbnailL10n.setThumbnail );
|
||||
if ( str == '0' ) {
|
||||
alert( setPostThumbnailL10n.error );
|
||||
} else {
|
||||
jQuery('a.wp-post-thumbnail').show();
|
||||
$link.text( setPostThumbnailL10n.done );
|
||||
$link.fadeOut( 2000 );
|
||||
win.WPSetThumbnailID(id);
|
||||
win.WPSetThumbnailHTML(str);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/set-post-thumbnail.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/set-post-thumbnail.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
function WPSetAsThumbnail(a,b){var c=jQuery("a#wp-post-thumbnail-"+a);c.text(setPostThumbnailL10n.saving),jQuery.post(ajaxurl,{action:"set-post-thumbnail",post_id:post_id,thumbnail_id:a,_ajax_nonce:b,cookie:encodeURIComponent(document.cookie)},function(b){var d=window.dialogArguments||opener||parent||top;c.text(setPostThumbnailL10n.setThumbnail),"0"==b?alert(setPostThumbnailL10n.error):(jQuery("a.wp-post-thumbnail").show(),c.text(setPostThumbnailL10n.done),c.fadeOut(2e3),d.WPSetThumbnailID(a),d.WPSetThumbnailHTML(b))})}
|
||||
240
Kapitel_7/Lektion_4/wordpress/wp-admin/js/svg-painter.js
Executable file
240
Kapitel_7/Lektion_4/wordpress/wp-admin/js/svg-painter.js
Executable file
@@ -0,0 +1,240 @@
|
||||
/**
|
||||
* Attempt to re-color SVG icons used in the admin menu or the toolbar
|
||||
*
|
||||
*/
|
||||
|
||||
window.wp = window.wp || {};
|
||||
|
||||
wp.svgPainter = ( function( $, window, document, undefined ) {
|
||||
'use strict';
|
||||
var selector, base64, painter,
|
||||
colorscheme = {},
|
||||
elements = [];
|
||||
|
||||
$(document).ready( function() {
|
||||
// detection for browser SVG capability
|
||||
if ( document.implementation.hasFeature( 'http://www.w3.org/TR/SVG11/feature#Image', '1.1' ) ) {
|
||||
$( document.body ).removeClass( 'no-svg' ).addClass( 'svg' );
|
||||
wp.svgPainter.init();
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Needed only for IE9
|
||||
*
|
||||
* Based on jquery.base64.js 0.0.3 - https://github.com/yckart/jquery.base64.js
|
||||
*
|
||||
* Based on: https://gist.github.com/Yaffle/1284012
|
||||
*
|
||||
* Copyright (c) 2012 Yannick Albert (http://yckart.com)
|
||||
* Licensed under the MIT license
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
*/
|
||||
base64 = ( function() {
|
||||
var c,
|
||||
b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
|
||||
a256 = '',
|
||||
r64 = [256],
|
||||
r256 = [256],
|
||||
i = 0;
|
||||
|
||||
function init() {
|
||||
while( i < 256 ) {
|
||||
c = String.fromCharCode(i);
|
||||
a256 += c;
|
||||
r256[i] = i;
|
||||
r64[i] = b64.indexOf(c);
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
||||
function code( s, discard, alpha, beta, w1, w2 ) {
|
||||
var tmp, length,
|
||||
buffer = 0,
|
||||
i = 0,
|
||||
result = '',
|
||||
bitsInBuffer = 0;
|
||||
|
||||
s = String(s);
|
||||
length = s.length;
|
||||
|
||||
while( i < length ) {
|
||||
c = s.charCodeAt(i);
|
||||
c = c < 256 ? alpha[c] : -1;
|
||||
|
||||
buffer = ( buffer << w1 ) + c;
|
||||
bitsInBuffer += w1;
|
||||
|
||||
while( bitsInBuffer >= w2 ) {
|
||||
bitsInBuffer -= w2;
|
||||
tmp = buffer >> bitsInBuffer;
|
||||
result += beta.charAt(tmp);
|
||||
buffer ^= tmp << bitsInBuffer;
|
||||
}
|
||||
++i;
|
||||
}
|
||||
|
||||
if ( ! discard && bitsInBuffer > 0 ) {
|
||||
result += beta.charAt( buffer << ( w2 - bitsInBuffer ) );
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function btoa( plain ) {
|
||||
if ( ! c ) {
|
||||
init();
|
||||
}
|
||||
|
||||
plain = code( plain, false, r256, b64, 8, 6 );
|
||||
return plain + '===='.slice( ( plain.length % 4 ) || 4 );
|
||||
}
|
||||
|
||||
function atob( coded ) {
|
||||
var i;
|
||||
|
||||
if ( ! c ) {
|
||||
init();
|
||||
}
|
||||
|
||||
coded = coded.replace( /[^A-Za-z0-9\+\/\=]/g, '' );
|
||||
coded = String(coded).split('=');
|
||||
i = coded.length;
|
||||
|
||||
do {
|
||||
--i;
|
||||
coded[i] = code( coded[i], true, r64, a256, 6, 8 );
|
||||
} while ( i > 0 );
|
||||
|
||||
coded = coded.join('');
|
||||
return coded;
|
||||
}
|
||||
|
||||
return {
|
||||
atob: atob,
|
||||
btoa: btoa
|
||||
};
|
||||
})();
|
||||
|
||||
return {
|
||||
init: function() {
|
||||
painter = this;
|
||||
selector = $( '#adminmenu .wp-menu-image, #wpadminbar .ab-item' );
|
||||
|
||||
this.setColors();
|
||||
this.findElements();
|
||||
this.paint();
|
||||
},
|
||||
|
||||
setColors: function( colors ) {
|
||||
if ( typeof colors === 'undefined' && typeof window._wpColorScheme !== 'undefined' ) {
|
||||
colors = window._wpColorScheme;
|
||||
}
|
||||
|
||||
if ( colors && colors.icons && colors.icons.base && colors.icons.current && colors.icons.focus ) {
|
||||
colorscheme = colors.icons;
|
||||
}
|
||||
},
|
||||
|
||||
findElements: function() {
|
||||
selector.each( function() {
|
||||
var $this = $(this), bgImage = $this.css( 'background-image' );
|
||||
|
||||
if ( bgImage && bgImage.indexOf( 'data:image/svg+xml;base64' ) != -1 ) {
|
||||
elements.push( $this );
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
paint: function() {
|
||||
// loop through all elements
|
||||
$.each( elements, function( index, $element ) {
|
||||
var $menuitem = $element.parent().parent();
|
||||
|
||||
if ( $menuitem.hasClass( 'current' ) || $menuitem.hasClass( 'wp-has-current-submenu' ) ) {
|
||||
// paint icon in 'current' color
|
||||
painter.paintElement( $element, 'current' );
|
||||
} else {
|
||||
// paint icon in base color
|
||||
painter.paintElement( $element, 'base' );
|
||||
|
||||
// set hover callbacks
|
||||
$menuitem.hover(
|
||||
function() {
|
||||
painter.paintElement( $element, 'focus' );
|
||||
},
|
||||
function() {
|
||||
// Match the delay from hoverIntent
|
||||
window.setTimeout( function() {
|
||||
painter.paintElement( $element, 'base' );
|
||||
}, 100 );
|
||||
}
|
||||
);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
paintElement: function( $element, colorType ) {
|
||||
var xml, encoded, color;
|
||||
|
||||
if ( ! colorType || ! colorscheme.hasOwnProperty( colorType ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
color = colorscheme[ colorType ];
|
||||
|
||||
// only accept hex colors: #101 or #101010
|
||||
if ( ! color.match( /^(#[0-9a-f]{3}|#[0-9a-f]{6})$/i ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
xml = $element.data( 'wp-ui-svg-' + color );
|
||||
|
||||
if ( xml === 'none' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( ! xml ) {
|
||||
encoded = $element.css( 'background-image' ).match( /.+data:image\/svg\+xml;base64,([A-Za-z0-9\+\/\=]+)/ );
|
||||
|
||||
if ( ! encoded || ! encoded[1] ) {
|
||||
$element.data( 'wp-ui-svg-' + color, 'none' );
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
if ( 'atob' in window ) {
|
||||
xml = window.atob( encoded[1] );
|
||||
} else {
|
||||
xml = base64.atob( encoded[1] );
|
||||
}
|
||||
} catch ( error ) {}
|
||||
|
||||
if ( xml ) {
|
||||
// replace `fill` attributes
|
||||
xml = xml.replace( /fill="(.+?)"/g, 'fill="' + color + '"');
|
||||
|
||||
// replace `style` attributes
|
||||
xml = xml.replace( /style="(.+?)"/g, 'style="fill:' + color + '"');
|
||||
|
||||
// replace `fill` properties in `<style>` tags
|
||||
xml = xml.replace( /fill:.*?;/g, 'fill: ' + color + ';');
|
||||
|
||||
if ( 'btoa' in window ) {
|
||||
xml = window.btoa( xml );
|
||||
} else {
|
||||
xml = base64.btoa( xml );
|
||||
}
|
||||
|
||||
$element.data( 'wp-ui-svg-' + color, xml );
|
||||
} else {
|
||||
$element.data( 'wp-ui-svg-' + color, 'none' );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$element.attr( 'style', 'background-image: url("data:image/svg+xml;base64,' + xml + '") !important;' );
|
||||
}
|
||||
};
|
||||
|
||||
})( jQuery, window, document );
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/svg-painter.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/svg-painter.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
window.wp=window.wp||{},wp.svgPainter=function(a,b,c,d){"use strict";var e,f,g,h={},i=[];return a(c).ready(function(){c.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1")&&(a(c.body).removeClass("no-svg").addClass("svg"),wp.svgPainter.init())}),f=function(){function a(){for(;256>j;)e=String.fromCharCode(j),g+=e,i[j]=j,h[j]=f.indexOf(e),++j}function b(a,b,c,d,f,g){var h,i,j=0,k=0,l="",m=0;for(a=String(a),i=a.length;i>k;){for(e=a.charCodeAt(k),e=256>e?c[e]:-1,j=(j<<f)+e,m+=f;m>=g;)m-=g,h=j>>m,l+=d.charAt(h),j^=h<<m;++k}return!b&&m>0&&(l+=d.charAt(j<<g-m)),l}function c(c){return e||a(),c=b(c,!1,i,f,8,6),c+"====".slice(c.length%4||4)}function d(c){var d;e||a(),c=c.replace(/[^A-Za-z0-9\+\/\=]/g,""),c=String(c).split("="),d=c.length;do--d,c[d]=b(c[d],!0,h,g,6,8);while(d>0);return c=c.join("")}var e,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",g="",h=[256],i=[256],j=0;return{atob:d,btoa:c}}(),{init:function(){g=this,e=a("#adminmenu .wp-menu-image, #wpadminbar .ab-item"),this.setColors(),this.findElements(),this.paint()},setColors:function(a){"undefined"==typeof a&&"undefined"!=typeof b._wpColorScheme&&(a=b._wpColorScheme),a&&a.icons&&a.icons.base&&a.icons.current&&a.icons.focus&&(h=a.icons)},findElements:function(){e.each(function(){var b=a(this),c=b.css("background-image");c&&-1!=c.indexOf("data:image/svg+xml;base64")&&i.push(b)})},paint:function(){a.each(i,function(a,c){var d=c.parent().parent();d.hasClass("current")||d.hasClass("wp-has-current-submenu")?g.paintElement(c,"current"):(g.paintElement(c,"base"),d.hover(function(){g.paintElement(c,"focus")},function(){b.setTimeout(function(){g.paintElement(c,"base")},100)}))})},paintElement:function(a,c){var d,e,g;if(c&&h.hasOwnProperty(c)&&(g=h[c],g.match(/^(#[0-9a-f]{3}|#[0-9a-f]{6})$/i)&&(d=a.data("wp-ui-svg-"+g),"none"!==d))){if(!d){if(e=a.css("background-image").match(/.+data:image\/svg\+xml;base64,([A-Za-z0-9\+\/\=]+)/),!e||!e[1])return void a.data("wp-ui-svg-"+g,"none");try{d="atob"in b?b.atob(e[1]):f.atob(e[1])}catch(i){}if(!d)return void a.data("wp-ui-svg-"+g,"none");d=d.replace(/fill="(.+?)"/g,'fill="'+g+'"'),d=d.replace(/style="(.+?)"/g,'style="fill:'+g+'"'),d=d.replace(/fill:.*?;/g,"fill: "+g+";"),d="btoa"in b?b.btoa(d):f.btoa(d),a.data("wp-ui-svg-"+g,d)}a.attr("style",'background-image: url("data:image/svg+xml;base64,'+d+'") !important;')}}}}(jQuery,window,document);
|
||||
202
Kapitel_7/Lektion_4/wordpress/wp-admin/js/tags-box.js
Executable file
202
Kapitel_7/Lektion_4/wordpress/wp-admin/js/tags-box.js
Executable file
@@ -0,0 +1,202 @@
|
||||
/* jshint curly: false, eqeqeq: false */
|
||||
/* global ajaxurl */
|
||||
|
||||
var tagBox, array_unique_noempty;
|
||||
|
||||
( function( $ ) {
|
||||
// Return an array with any duplicate, whitespace or empty values removed
|
||||
array_unique_noempty = function( array ) {
|
||||
var out = [];
|
||||
|
||||
$.each( array, function( key, val ) {
|
||||
val = $.trim( val );
|
||||
|
||||
if ( val && $.inArray( val, out ) === -1 ) {
|
||||
out.push( val );
|
||||
}
|
||||
} );
|
||||
|
||||
return out;
|
||||
};
|
||||
|
||||
tagBox = {
|
||||
clean : function(tags) {
|
||||
var comma = window.tagsBoxL10n.tagDelimiter;
|
||||
if ( ',' !== comma )
|
||||
tags = tags.replace(new RegExp(comma, 'g'), ',');
|
||||
tags = tags.replace(/\s*,\s*/g, ',').replace(/,+/g, ',').replace(/[,\s]+$/, '').replace(/^[,\s]+/, '');
|
||||
if ( ',' !== comma )
|
||||
tags = tags.replace(/,/g, comma);
|
||||
return tags;
|
||||
},
|
||||
|
||||
parseTags : function(el) {
|
||||
var id = el.id,
|
||||
num = id.split('-check-num-')[1],
|
||||
taxbox = $(el).closest('.tagsdiv'),
|
||||
thetags = taxbox.find('.the-tags'),
|
||||
comma = window.tagsBoxL10n.tagDelimiter,
|
||||
current_tags = thetags.val().split( comma ),
|
||||
new_tags = [];
|
||||
|
||||
delete current_tags[num];
|
||||
|
||||
$.each( current_tags, function( key, val ) {
|
||||
val = $.trim( val );
|
||||
if ( val ) {
|
||||
new_tags.push( val );
|
||||
}
|
||||
});
|
||||
|
||||
thetags.val( this.clean( new_tags.join( comma ) ) );
|
||||
|
||||
this.quickClicks( taxbox );
|
||||
return false;
|
||||
},
|
||||
|
||||
quickClicks : function( el ) {
|
||||
var thetags = $('.the-tags', el),
|
||||
tagchecklist = $('.tagchecklist', el),
|
||||
id = $(el).attr('id'),
|
||||
current_tags, disabled;
|
||||
|
||||
if ( ! thetags.length )
|
||||
return;
|
||||
|
||||
disabled = thetags.prop('disabled');
|
||||
|
||||
current_tags = thetags.val().split( window.tagsBoxL10n.tagDelimiter );
|
||||
tagchecklist.empty();
|
||||
|
||||
$.each( current_tags, function( key, val ) {
|
||||
var span, xbutton;
|
||||
|
||||
val = $.trim( val );
|
||||
|
||||
if ( ! val )
|
||||
return;
|
||||
|
||||
// Create a new span, and ensure the text is properly escaped.
|
||||
span = $('<span />').text( val );
|
||||
|
||||
// If tags editing isn't disabled, create the X button.
|
||||
if ( ! disabled ) {
|
||||
xbutton = $( '<a id="' + id + '-check-num-' + key + '" class="ntdelbutton" tabindex="0">X</a>' );
|
||||
|
||||
xbutton.on( 'click keypress', function( e ) {
|
||||
// Trigger function if pressed Enter - keyboard navigation
|
||||
if ( e.type === 'click' || e.keyCode === 13 ) {
|
||||
// When using keyboard, move focus back to the new tag field.
|
||||
if ( e.keyCode === 13 ) {
|
||||
$( this ).closest( '.tagsdiv' ).find( 'input.newtag' ).focus();
|
||||
}
|
||||
|
||||
tagBox.parseTags( this );
|
||||
}
|
||||
});
|
||||
|
||||
span.prepend( ' ' ).prepend( xbutton );
|
||||
}
|
||||
|
||||
// Append the span to the tag list.
|
||||
tagchecklist.append( span );
|
||||
});
|
||||
},
|
||||
|
||||
flushTags : function( el, a, f ) {
|
||||
var tagsval, newtags, text,
|
||||
tags = $( '.the-tags', el ),
|
||||
newtag = $( 'input.newtag', el ),
|
||||
comma = window.tagsBoxL10n.tagDelimiter;
|
||||
|
||||
a = a || false;
|
||||
|
||||
text = a ? $(a).text() : newtag.val();
|
||||
|
||||
if ( 'undefined' == typeof( text ) ) {
|
||||
return false;
|
||||
}
|
||||
|
||||
tagsval = tags.val();
|
||||
newtags = tagsval ? tagsval + comma + text : text;
|
||||
|
||||
newtags = this.clean( newtags );
|
||||
newtags = array_unique_noempty( newtags.split( comma ) ).join( comma );
|
||||
tags.val( newtags );
|
||||
this.quickClicks( el );
|
||||
|
||||
if ( ! a )
|
||||
newtag.val('');
|
||||
if ( 'undefined' == typeof( f ) )
|
||||
newtag.focus();
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
get : function( id ) {
|
||||
var tax = id.substr( id.indexOf('-') + 1 );
|
||||
|
||||
$.post( ajaxurl, { 'action': 'get-tagcloud', 'tax': tax }, function( r, stat ) {
|
||||
if ( 0 === r || 'success' != stat ) {
|
||||
return;
|
||||
}
|
||||
|
||||
r = $( '<p id="tagcloud-' + tax + '" class="the-tagcloud">' + r + '</p>' );
|
||||
|
||||
$( 'a', r ).click( function() {
|
||||
tagBox.flushTags( $( '#' + tax ), this );
|
||||
return false;
|
||||
});
|
||||
|
||||
$( '#' + id ).after( r );
|
||||
});
|
||||
},
|
||||
|
||||
init : function() {
|
||||
var t = this, ajaxtag = $('div.ajaxtag');
|
||||
|
||||
$('.tagsdiv').each( function() {
|
||||
tagBox.quickClicks(this);
|
||||
});
|
||||
|
||||
$('.tagadd', ajaxtag).click(function(){
|
||||
t.flushTags( $(this).closest('.tagsdiv') );
|
||||
});
|
||||
|
||||
$('input.newtag', ajaxtag).keyup(function(e){
|
||||
if ( 13 == e.which ) {
|
||||
tagBox.flushTags( $(this).closest('.tagsdiv') );
|
||||
return false;
|
||||
}
|
||||
}).keypress(function(e){
|
||||
if ( 13 == e.which ) {
|
||||
e.preventDefault();
|
||||
return false;
|
||||
}
|
||||
}).each( function() {
|
||||
var tax = $(this).closest('div.tagsdiv').attr('id');
|
||||
$(this).suggest(
|
||||
ajaxurl + '?action=ajax-tag-search&tax=' + tax,
|
||||
{ delay: 500, minchars: 2, multiple: true, multipleSep: window.tagsBoxL10n.tagDelimiter }
|
||||
);
|
||||
});
|
||||
|
||||
// save tags on post save/publish
|
||||
$('#post').submit(function(){
|
||||
$('div.tagsdiv').each( function() {
|
||||
tagBox.flushTags(this, false, 1);
|
||||
});
|
||||
});
|
||||
|
||||
// tag cloud
|
||||
$('.tagcloud-link').click(function(){
|
||||
tagBox.get( $(this).attr('id') );
|
||||
$(this).unbind().click(function(){
|
||||
$(this).siblings('.the-tagcloud').toggle();
|
||||
return false;
|
||||
});
|
||||
return false;
|
||||
});
|
||||
}
|
||||
};
|
||||
}( jQuery ));
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/tags-box.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/tags-box.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
var tagBox,array_unique_noempty;!function(a){array_unique_noempty=function(b){var c=[];return a.each(b,function(b,d){d=a.trim(d),d&&-1===a.inArray(d,c)&&c.push(d)}),c},tagBox={clean:function(a){var b=window.tagsBoxL10n.tagDelimiter;return","!==b&&(a=a.replace(new RegExp(b,"g"),",")),a=a.replace(/\s*,\s*/g,",").replace(/,+/g,",").replace(/[,\s]+$/,"").replace(/^[,\s]+/,""),","!==b&&(a=a.replace(/,/g,b)),a},parseTags:function(b){var c=b.id,d=c.split("-check-num-")[1],e=a(b).closest(".tagsdiv"),f=e.find(".the-tags"),g=window.tagsBoxL10n.tagDelimiter,h=f.val().split(g),i=[];return delete h[d],a.each(h,function(b,c){c=a.trim(c),c&&i.push(c)}),f.val(this.clean(i.join(g))),this.quickClicks(e),!1},quickClicks:function(b){var c,d,e=a(".the-tags",b),f=a(".tagchecklist",b),g=a(b).attr("id");e.length&&(d=e.prop("disabled"),c=e.val().split(window.tagsBoxL10n.tagDelimiter),f.empty(),a.each(c,function(b,c){var e,h;c=a.trim(c),c&&(e=a("<span />").text(c),d||(h=a('<a id="'+g+"-check-num-"+b+'" class="ntdelbutton" tabindex="0">X</a>'),h.on("click keypress",function(b){("click"===b.type||13===b.keyCode)&&(13===b.keyCode&&a(this).closest(".tagsdiv").find("input.newtag").focus(),tagBox.parseTags(this))}),e.prepend(" ").prepend(h)),f.append(e))}))},flushTags:function(b,c,d){var e,f,g,h=a(".the-tags",b),i=a("input.newtag",b),j=window.tagsBoxL10n.tagDelimiter;return c=c||!1,g=c?a(c).text():i.val(),"undefined"==typeof g?!1:(e=h.val(),f=e?e+j+g:g,f=this.clean(f),f=array_unique_noempty(f.split(j)).join(j),h.val(f),this.quickClicks(b),c||i.val(""),"undefined"==typeof d&&i.focus(),!1)},get:function(b){var c=b.substr(b.indexOf("-")+1);a.post(ajaxurl,{action:"get-tagcloud",tax:c},function(d,e){0!==d&&"success"==e&&(d=a('<p id="tagcloud-'+c+'" class="the-tagcloud">'+d+"</p>"),a("a",d).click(function(){return tagBox.flushTags(a("#"+c),this),!1}),a("#"+b).after(d))})},init:function(){var b=this,c=a("div.ajaxtag");a(".tagsdiv").each(function(){tagBox.quickClicks(this)}),a(".tagadd",c).click(function(){b.flushTags(a(this).closest(".tagsdiv"))}),a("input.newtag",c).keyup(function(b){return 13==b.which?(tagBox.flushTags(a(this).closest(".tagsdiv")),!1):void 0}).keypress(function(a){return 13==a.which?(a.preventDefault(),!1):void 0}).each(function(){var b=a(this).closest("div.tagsdiv").attr("id");a(this).suggest(ajaxurl+"?action=ajax-tag-search&tax="+b,{delay:500,minchars:2,multiple:!0,multipleSep:window.tagsBoxL10n.tagDelimiter})}),a("#post").submit(function(){a("div.tagsdiv").each(function(){tagBox.flushTags(this,!1,1)})}),a(".tagcloud-link").click(function(){return tagBox.get(a(this).attr("id")),a(this).unbind().click(function(){return a(this).siblings(".the-tagcloud").toggle(),!1}),!1})}}}(jQuery);
|
||||
72
Kapitel_7/Lektion_4/wordpress/wp-admin/js/tags.js
Executable file
72
Kapitel_7/Lektion_4/wordpress/wp-admin/js/tags.js
Executable file
@@ -0,0 +1,72 @@
|
||||
/* global ajaxurl, wpAjax, tagsl10n, showNotice, validateForm */
|
||||
|
||||
jQuery(document).ready(function($) {
|
||||
|
||||
$( '#the-list' ).on( 'click', '.delete-tag', function() {
|
||||
var t = $(this), tr = t.parents('tr'), r = true, data;
|
||||
if ( 'undefined' != showNotice )
|
||||
r = showNotice.warn();
|
||||
if ( r ) {
|
||||
data = t.attr('href').replace(/[^?]*\?/, '').replace(/action=delete/, 'action=delete-tag');
|
||||
$.post(ajaxurl, data, function(r){
|
||||
if ( '1' == r ) {
|
||||
$('#ajax-response').empty();
|
||||
tr.fadeOut('normal', function(){ tr.remove(); });
|
||||
// Remove the term from the parent box and tag cloud
|
||||
$('select#parent option[value="' + data.match(/tag_ID=(\d+)/)[1] + '"]').remove();
|
||||
$('a.tag-link-' + data.match(/tag_ID=(\d+)/)[1]).remove();
|
||||
} else if ( '-1' == r ) {
|
||||
$('#ajax-response').empty().append('<div class="error"><p>' + tagsl10n.noPerm + '</p></div>');
|
||||
tr.children().css('backgroundColor', '');
|
||||
} else {
|
||||
$('#ajax-response').empty().append('<div class="error"><p>' + tagsl10n.broken + '</p></div>');
|
||||
tr.children().css('backgroundColor', '');
|
||||
}
|
||||
});
|
||||
tr.children().css('backgroundColor', '#f33');
|
||||
}
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#submit').click(function(){
|
||||
var form = $(this).parents('form');
|
||||
|
||||
if ( ! validateForm( form ) )
|
||||
return false;
|
||||
|
||||
$.post(ajaxurl, $('#addtag').serialize(), function(r){
|
||||
var res, parent, term, indent, i;
|
||||
|
||||
$('#ajax-response').empty();
|
||||
res = wpAjax.parseAjaxResponse( r, 'ajax-response' );
|
||||
if ( ! res || res.errors )
|
||||
return;
|
||||
|
||||
parent = form.find( 'select#parent' ).val();
|
||||
|
||||
if ( parent > 0 && $('#tag-' + parent ).length > 0 ) // If the parent exists on this page, insert it below. Else insert it at the top of the list.
|
||||
$( '.tags #tag-' + parent ).after( res.responses[0].supplemental.noparents ); // As the parent exists, Insert the version with - - - prefixed
|
||||
else
|
||||
$( '.tags' ).prepend( res.responses[0].supplemental.parents ); // As the parent is not visible, Insert the version with Parent - Child - ThisTerm
|
||||
|
||||
$('.tags .no-items').remove();
|
||||
|
||||
if ( form.find('select#parent') ) {
|
||||
// Parents field exists, Add new term to the list.
|
||||
term = res.responses[1].supplemental;
|
||||
|
||||
// Create an indent for the Parent field
|
||||
indent = '';
|
||||
for ( i = 0; i < res.responses[1].position; i++ )
|
||||
indent += ' ';
|
||||
|
||||
form.find( 'select#parent option:selected' ).after( '<option value="' + term.term_id + '">' + indent + term.name + '</option>' );
|
||||
}
|
||||
|
||||
$('input[type="text"]:visible, textarea:visible', form).val('');
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/tags.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/tags.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
jQuery(document).ready(function(a){a("#the-list").on("click",".delete-tag",function(){var b,c=a(this),d=c.parents("tr"),e=!0;return"undefined"!=showNotice&&(e=showNotice.warn()),e&&(b=c.attr("href").replace(/[^?]*\?/,"").replace(/action=delete/,"action=delete-tag"),a.post(ajaxurl,b,function(c){"1"==c?(a("#ajax-response").empty(),d.fadeOut("normal",function(){d.remove()}),a('select#parent option[value="'+b.match(/tag_ID=(\d+)/)[1]+'"]').remove(),a("a.tag-link-"+b.match(/tag_ID=(\d+)/)[1]).remove()):"-1"==c?(a("#ajax-response").empty().append('<div class="error"><p>'+tagsl10n.noPerm+"</p></div>"),d.children().css("backgroundColor","")):(a("#ajax-response").empty().append('<div class="error"><p>'+tagsl10n.broken+"</p></div>"),d.children().css("backgroundColor",""))}),d.children().css("backgroundColor","#f33")),!1}),a("#submit").click(function(){var b=a(this).parents("form");return validateForm(b)?(a.post(ajaxurl,a("#addtag").serialize(),function(c){var d,e,f,g,h;if(a("#ajax-response").empty(),d=wpAjax.parseAjaxResponse(c,"ajax-response"),d&&!d.errors){if(e=b.find("select#parent").val(),e>0&&a("#tag-"+e).length>0?a(".tags #tag-"+e).after(d.responses[0].supplemental.noparents):a(".tags").prepend(d.responses[0].supplemental.parents),a(".tags .no-items").remove(),b.find("select#parent")){for(f=d.responses[1].supplemental,g="",h=0;h<d.responses[1].position;h++)g+=" ";b.find("select#parent option:selected").after('<option value="'+f.term_id+'">'+g+f.name+"</option>")}a('input[type="text"]:visible, textarea:visible',b).val("")}}),!1):!1})});
|
||||
1811
Kapitel_7/Lektion_4/wordpress/wp-admin/js/theme.js
Executable file
1811
Kapitel_7/Lektion_4/wordpress/wp-admin/js/theme.js
Executable file
File diff suppressed because it is too large
Load Diff
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/theme.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/theme.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
596
Kapitel_7/Lektion_4/wordpress/wp-admin/js/updates.js
Executable file
596
Kapitel_7/Lektion_4/wordpress/wp-admin/js/updates.js
Executable file
@@ -0,0 +1,596 @@
|
||||
/* global tb_remove */
|
||||
window.wp = window.wp || {};
|
||||
|
||||
(function( $, wp, pagenow ) {
|
||||
wp.updates = {};
|
||||
|
||||
/**
|
||||
* User nonce for ajax calls.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
wp.updates.ajaxNonce = window._wpUpdatesSettings.ajax_nonce;
|
||||
|
||||
/**
|
||||
* Localized strings.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*
|
||||
* @var object
|
||||
*/
|
||||
wp.updates.l10n = window._wpUpdatesSettings.l10n;
|
||||
|
||||
/**
|
||||
* Whether filesystem credentials need to be requested from the user.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
wp.updates.shouldRequestFilesystemCredentials = null;
|
||||
|
||||
/**
|
||||
* Filesystem credentials to be packaged along with the request.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*
|
||||
* @var object
|
||||
*/
|
||||
wp.updates.filesystemCredentials = {
|
||||
ftp: {
|
||||
host: null,
|
||||
username: null,
|
||||
password: null,
|
||||
connectionType: null
|
||||
},
|
||||
ssh: {
|
||||
publicKey: null,
|
||||
privateKey: null
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Flag if we're waiting for an update to complete.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
wp.updates.updateLock = false;
|
||||
|
||||
/**
|
||||
* * Flag if we've done an update successfully.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
wp.updates.updateDoneSuccessfully = false;
|
||||
|
||||
/**
|
||||
* If the user tries to update a plugin while an update is
|
||||
* already happening, it can be placed in this queue to perform later.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
wp.updates.updateQueue = [];
|
||||
|
||||
/**
|
||||
* Store a jQuery reference to return focus to when exiting the request credentials modal.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*
|
||||
* @var jQuery object
|
||||
*/
|
||||
wp.updates.$elToReturnFocusToFromCredentialsModal = null;
|
||||
|
||||
/**
|
||||
* Decrement update counts throughout the various menus.
|
||||
*
|
||||
* @since 3.9.0
|
||||
*
|
||||
* @param {string} upgradeType
|
||||
*/
|
||||
wp.updates.decrementCount = function( upgradeType ) {
|
||||
var count,
|
||||
pluginCount,
|
||||
$adminBarUpdateCount = $( '#wp-admin-bar-updates .ab-label' ),
|
||||
$dashboardNavMenuUpdateCount = $( 'a[href="update-core.php"] .update-plugins' ),
|
||||
$pluginsMenuItem = $( '#menu-plugins' );
|
||||
|
||||
|
||||
count = $adminBarUpdateCount.text();
|
||||
count = parseInt( count, 10 ) - 1;
|
||||
if ( count < 0 || isNaN( count ) ) {
|
||||
return;
|
||||
}
|
||||
$( '#wp-admin-bar-updates .ab-item' ).removeAttr( 'title' );
|
||||
$adminBarUpdateCount.text( count );
|
||||
|
||||
|
||||
$dashboardNavMenuUpdateCount.each( function( index, elem ) {
|
||||
elem.className = elem.className.replace( /count-\d+/, 'count-' + count );
|
||||
} );
|
||||
$dashboardNavMenuUpdateCount.removeAttr( 'title' );
|
||||
$dashboardNavMenuUpdateCount.find( '.update-count' ).text( count );
|
||||
|
||||
if ( 'plugin' === upgradeType ) {
|
||||
pluginCount = $pluginsMenuItem.find( '.plugin-count' ).eq(0).text();
|
||||
pluginCount = parseInt( pluginCount, 10 ) - 1;
|
||||
if ( pluginCount < 0 || isNaN( pluginCount ) ) {
|
||||
return;
|
||||
}
|
||||
$pluginsMenuItem.find( '.plugin-count' ).text( pluginCount );
|
||||
$pluginsMenuItem.find( '.update-plugins' ).each( function( index, elem ) {
|
||||
elem.className = elem.className.replace( /count-\d+/, 'count-' + pluginCount );
|
||||
} );
|
||||
|
||||
if (pluginCount > 0 ) {
|
||||
$( '.subsubsub .upgrade .count' ).text( '(' + pluginCount + ')' );
|
||||
} else {
|
||||
$( '.subsubsub .upgrade' ).remove();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Send an Ajax request to the server to update a plugin.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*
|
||||
* @param {string} plugin
|
||||
* @param {string} slug
|
||||
*/
|
||||
wp.updates.updatePlugin = function( plugin, slug ) {
|
||||
var $message, name,
|
||||
$card = $( '.plugin-card-' + slug );
|
||||
|
||||
if ( 'plugins' === pagenow || 'plugins-network' === pagenow ) {
|
||||
$message = $( '[data-plugin="' + plugin + '"]' ).next().find( '.update-message' );
|
||||
} else if ( 'plugin-install' === pagenow ) {
|
||||
$message = $card.find( '.update-now' );
|
||||
name = $message.data( 'name' );
|
||||
$message.attr( 'aria-label', wp.updates.l10n.updatingLabel.replace( '%s', name ) );
|
||||
// Remove previous error messages, if any.
|
||||
$card.removeClass( 'plugin-card-update-failed' ).find( '.notice.notice-error' ).remove();
|
||||
}
|
||||
|
||||
$message.addClass( 'updating-message' );
|
||||
if ( $message.html() !== wp.updates.l10n.updating ){
|
||||
$message.data( 'originaltext', $message.html() );
|
||||
}
|
||||
|
||||
$message.text( wp.updates.l10n.updating );
|
||||
wp.a11y.speak( wp.updates.l10n.updatingMsg );
|
||||
|
||||
if ( wp.updates.updateLock ) {
|
||||
wp.updates.updateQueue.push( {
|
||||
type: 'update-plugin',
|
||||
data: {
|
||||
plugin: plugin,
|
||||
slug: slug
|
||||
}
|
||||
} );
|
||||
return;
|
||||
}
|
||||
|
||||
wp.updates.updateLock = true;
|
||||
|
||||
var data = {
|
||||
_ajax_nonce: wp.updates.ajaxNonce,
|
||||
plugin: plugin,
|
||||
slug: slug,
|
||||
username: wp.updates.filesystemCredentials.ftp.username,
|
||||
password: wp.updates.filesystemCredentials.ftp.password,
|
||||
hostname: wp.updates.filesystemCredentials.ftp.hostname,
|
||||
connection_type: wp.updates.filesystemCredentials.ftp.connectionType,
|
||||
public_key: wp.updates.filesystemCredentials.ssh.publicKey,
|
||||
private_key: wp.updates.filesystemCredentials.ssh.privateKey
|
||||
};
|
||||
|
||||
wp.ajax.post( 'update-plugin', data )
|
||||
.done( wp.updates.updateSuccess )
|
||||
.fail( wp.updates.updateError );
|
||||
};
|
||||
|
||||
/**
|
||||
* On a successful plugin update, update the UI with the result.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*
|
||||
* @param {object} response
|
||||
*/
|
||||
wp.updates.updateSuccess = function( response ) {
|
||||
var $updateMessage, name, $pluginRow, newText;
|
||||
if ( 'plugins' === pagenow || 'plugins-network' === pagenow ) {
|
||||
$pluginRow = $( '[data-plugin="' + response.plugin + '"]' ).first();
|
||||
$updateMessage = $pluginRow.next().find( '.update-message' );
|
||||
$pluginRow.addClass( 'updated' ).removeClass( 'update' );
|
||||
|
||||
// Update the version number in the row.
|
||||
newText = $pluginRow.find('.plugin-version-author-uri').html().replace( response.oldVersion, response.newVersion );
|
||||
$pluginRow.find('.plugin-version-author-uri').html( newText );
|
||||
|
||||
// Add updated class to update message parent tr
|
||||
$pluginRow.next().addClass( 'updated' );
|
||||
} else if ( 'plugin-install' === pagenow ) {
|
||||
$updateMessage = $( '.plugin-card-' + response.slug ).find( '.update-now' );
|
||||
$updateMessage.addClass( 'button-disabled' );
|
||||
name = $updateMessage.data( 'name' );
|
||||
$updateMessage.attr( 'aria-label', wp.updates.l10n.updatedLabel.replace( '%s', name ) );
|
||||
}
|
||||
|
||||
$updateMessage.removeClass( 'updating-message' ).addClass( 'updated-message' );
|
||||
$updateMessage.text( wp.updates.l10n.updated );
|
||||
wp.a11y.speak( wp.updates.l10n.updatedMsg );
|
||||
|
||||
wp.updates.decrementCount( 'plugin' );
|
||||
|
||||
wp.updates.updateDoneSuccessfully = true;
|
||||
|
||||
/*
|
||||
* The lock can be released since the update was successful,
|
||||
* and any other updates can commence.
|
||||
*/
|
||||
wp.updates.updateLock = false;
|
||||
|
||||
$(document).trigger( 'wp-plugin-update-success', response );
|
||||
|
||||
wp.updates.queueChecker();
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* On a plugin update error, update the UI appropriately.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*
|
||||
* @param {object} response
|
||||
*/
|
||||
wp.updates.updateError = function( response ) {
|
||||
var $card = $( '.plugin-card-' + response.slug ),
|
||||
$message,
|
||||
$button,
|
||||
name,
|
||||
error_message;
|
||||
|
||||
wp.updates.updateDoneSuccessfully = false;
|
||||
|
||||
if ( response.errorCode && response.errorCode == 'unable_to_connect_to_filesystem' && wp.updates.shouldRequestFilesystemCredentials ) {
|
||||
wp.updates.credentialError( response, 'update-plugin' );
|
||||
return;
|
||||
}
|
||||
|
||||
error_message = wp.updates.l10n.updateFailed.replace( '%s', response.error );
|
||||
|
||||
if ( 'plugins' === pagenow || 'plugins-network' === pagenow ) {
|
||||
$message = $( '[data-plugin="' + response.plugin + '"]' ).next().find( '.update-message' );
|
||||
$message.html( error_message ).removeClass( 'updating-message' );
|
||||
} else if ( 'plugin-install' === pagenow ) {
|
||||
$button = $card.find( '.update-now' );
|
||||
name = $button.data( 'name' );
|
||||
|
||||
$card
|
||||
.addClass( 'plugin-card-update-failed' )
|
||||
.append( '<div class="notice notice-error is-dismissible"><p>' + error_message + '</p></div>' );
|
||||
|
||||
$button
|
||||
.attr( 'aria-label', wp.updates.l10n.updateFailedLabel.replace( '%s', name ) )
|
||||
.html( wp.updates.l10n.updateFailedShort ).removeClass( 'updating-message' );
|
||||
|
||||
$card.on( 'click', '.notice.is-dismissible .notice-dismiss', function() {
|
||||
// Use same delay as the total duration of the notice fadeTo + slideUp animation.
|
||||
setTimeout( function() {
|
||||
$card
|
||||
.removeClass( 'plugin-card-update-failed' )
|
||||
.find( '.column-name a' ).focus();
|
||||
}, 200 );
|
||||
});
|
||||
}
|
||||
|
||||
wp.a11y.speak( error_message, 'assertive' );
|
||||
|
||||
/*
|
||||
* The lock can be released since this failure was
|
||||
* after the credentials form.
|
||||
*/
|
||||
wp.updates.updateLock = false;
|
||||
|
||||
$(document).trigger( 'wp-plugin-update-error', response );
|
||||
|
||||
wp.updates.queueChecker();
|
||||
};
|
||||
|
||||
/**
|
||||
* Show an error message in the request for credentials form.
|
||||
*
|
||||
* @param {string} message
|
||||
* @since 4.2.0
|
||||
*/
|
||||
wp.updates.showErrorInCredentialsForm = function( message ) {
|
||||
var $modal = $( '.notification-dialog' );
|
||||
|
||||
// Remove any existing error.
|
||||
$modal.find( '.error' ).remove();
|
||||
|
||||
$modal.find( 'h3' ).after( '<div class="error">' + message + '</div>' );
|
||||
};
|
||||
|
||||
/**
|
||||
* Events that need to happen when there is a credential error
|
||||
*
|
||||
* @since 4.2.0
|
||||
*/
|
||||
wp.updates.credentialError = function( response, type ) {
|
||||
wp.updates.updateQueue.push( {
|
||||
'type': type,
|
||||
'data': {
|
||||
// Not cool that we're depending on response for this data.
|
||||
// This would feel more whole in a view all tied together.
|
||||
plugin: response.plugin,
|
||||
slug: response.slug
|
||||
}
|
||||
} );
|
||||
wp.updates.showErrorInCredentialsForm( response.error );
|
||||
wp.updates.requestFilesystemCredentials();
|
||||
};
|
||||
|
||||
/**
|
||||
* If an update job has been placed in the queue, queueChecker pulls it out and runs it.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*/
|
||||
wp.updates.queueChecker = function() {
|
||||
if ( wp.updates.updateLock || wp.updates.updateQueue.length <= 0 ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var job = wp.updates.updateQueue.shift();
|
||||
|
||||
wp.updates.updatePlugin( job.data.plugin, job.data.slug );
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Request the users filesystem credentials if we don't have them already.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*/
|
||||
wp.updates.requestFilesystemCredentials = function( event ) {
|
||||
if ( wp.updates.updateDoneSuccessfully === false ) {
|
||||
/*
|
||||
* For the plugin install screen, return the focus to the install button
|
||||
* after exiting the credentials request modal.
|
||||
*/
|
||||
if ( 'plugin-install' === pagenow && event ) {
|
||||
wp.updates.$elToReturnFocusToFromCredentialsModal = $( event.target );
|
||||
}
|
||||
|
||||
wp.updates.updateLock = true;
|
||||
|
||||
wp.updates.requestForCredentialsModalOpen();
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Keydown handler for the request for credentials modal.
|
||||
*
|
||||
* Close the modal when the escape key is pressed.
|
||||
* Constrain keyboard navigation to inside the modal.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*/
|
||||
wp.updates.keydown = function( event ) {
|
||||
if ( 27 === event.keyCode ) {
|
||||
wp.updates.requestForCredentialsModalCancel();
|
||||
} else if ( 9 === event.keyCode ) {
|
||||
// #upgrade button must always be the last focusable element in the dialog.
|
||||
if ( event.target.id === 'upgrade' && ! event.shiftKey ) {
|
||||
$( '#hostname' ).focus();
|
||||
event.preventDefault();
|
||||
} else if ( event.target.id === 'hostname' && event.shiftKey ) {
|
||||
$( '#upgrade' ).focus();
|
||||
event.preventDefault();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Open the request for credentials modal.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*/
|
||||
wp.updates.requestForCredentialsModalOpen = function() {
|
||||
var $modal = $( '#request-filesystem-credentials-dialog' );
|
||||
$( 'body' ).addClass( 'modal-open' );
|
||||
$modal.show();
|
||||
|
||||
$modal.find( 'input:enabled:first' ).focus();
|
||||
$modal.keydown( wp.updates.keydown );
|
||||
};
|
||||
|
||||
/**
|
||||
* Close the request for credentials modal.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*/
|
||||
wp.updates.requestForCredentialsModalClose = function() {
|
||||
$( '#request-filesystem-credentials-dialog' ).hide();
|
||||
$( 'body' ).removeClass( 'modal-open' );
|
||||
wp.updates.$elToReturnFocusToFromCredentialsModal.focus();
|
||||
};
|
||||
|
||||
/**
|
||||
* The steps that need to happen when the modal is canceled out
|
||||
*
|
||||
* @since 4.2.0
|
||||
*/
|
||||
wp.updates.requestForCredentialsModalCancel = function() {
|
||||
// no updateLock and no updateQueue means we already have cleared things up
|
||||
var data, $message;
|
||||
|
||||
if( wp.updates.updateLock === false && wp.updates.updateQueue.length === 0 ){
|
||||
return;
|
||||
}
|
||||
|
||||
data = wp.updates.updateQueue[0].data;
|
||||
|
||||
// remove the lock, and clear the queue
|
||||
wp.updates.updateLock = false;
|
||||
wp.updates.updateQueue = [];
|
||||
|
||||
wp.updates.requestForCredentialsModalClose();
|
||||
if ( 'plugins' === pagenow || 'plugins-network' === pagenow ) {
|
||||
$message = $( '[data-plugin="' + data.plugin + '"]' ).next().find( '.update-message' );
|
||||
} else if ( 'plugin-install' === pagenow ) {
|
||||
$message = $( '.plugin-card-' + data.slug ).find( '.update-now' );
|
||||
}
|
||||
|
||||
$message.removeClass( 'updating-message' );
|
||||
$message.html( $message.data( 'originaltext' ) );
|
||||
wp.a11y.speak( wp.updates.l10n.updateCancel );
|
||||
};
|
||||
/**
|
||||
* Potentially add an AYS to a user attempting to leave the page
|
||||
*
|
||||
* If an update is on-going and a user attempts to leave the page,
|
||||
* open an "Are you sure?" alert.
|
||||
*
|
||||
* @since 4.2.0
|
||||
*/
|
||||
|
||||
wp.updates.beforeunload = function() {
|
||||
if ( wp.updates.updateLock ) {
|
||||
return wp.updates.l10n.beforeunload;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
$( document ).ready( function() {
|
||||
/*
|
||||
* Check whether a user needs to submit filesystem credentials based on whether
|
||||
* the form was output on the page server-side.
|
||||
*
|
||||
* @see {wp_print_request_filesystem_credentials_modal() in PHP}
|
||||
*/
|
||||
wp.updates.shouldRequestFilesystemCredentials = ( $( '#request-filesystem-credentials-dialog' ).length <= 0 ) ? false : true;
|
||||
|
||||
// File system credentials form submit noop-er / handler.
|
||||
$( '#request-filesystem-credentials-dialog form' ).on( 'submit', function() {
|
||||
// Persist the credentials input by the user for the duration of the page load.
|
||||
wp.updates.filesystemCredentials.ftp.hostname = $('#hostname').val();
|
||||
wp.updates.filesystemCredentials.ftp.username = $('#username').val();
|
||||
wp.updates.filesystemCredentials.ftp.password = $('#password').val();
|
||||
wp.updates.filesystemCredentials.ftp.connectionType = $('input[name="connection_type"]:checked').val();
|
||||
wp.updates.filesystemCredentials.ssh.publicKey = $('#public_key').val();
|
||||
wp.updates.filesystemCredentials.ssh.privateKey = $('#private_key').val();
|
||||
|
||||
wp.updates.requestForCredentialsModalClose();
|
||||
|
||||
// Unlock and invoke the queue.
|
||||
wp.updates.updateLock = false;
|
||||
wp.updates.queueChecker();
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
// Close the request credentials modal when
|
||||
$( '#request-filesystem-credentials-dialog [data-js-action="close"], .notification-dialog-background' ).on( 'click', function() {
|
||||
wp.updates.requestForCredentialsModalCancel();
|
||||
});
|
||||
|
||||
// Hide SSH fields when not selected
|
||||
$( '#request-filesystem-credentials-dialog input[name="connection_type"]' ).on( 'change', function() {
|
||||
$( this ).parents( 'form' ).find( '#private_key, #public_key' ).parents( 'label' ).toggle( ( 'ssh' == $( this ).val() ) );
|
||||
}).change();
|
||||
|
||||
// Click handler for plugin updates in List Table view.
|
||||
$( '.plugin-update-tr' ).on( 'click', '.update-link', function( e ) {
|
||||
e.preventDefault();
|
||||
if ( wp.updates.shouldRequestFilesystemCredentials && ! wp.updates.updateLock ) {
|
||||
wp.updates.requestFilesystemCredentials( e );
|
||||
}
|
||||
var updateRow = $( e.target ).parents( '.plugin-update-tr' );
|
||||
// Return the user to the input box of the plugin's table row after closing the modal.
|
||||
wp.updates.$elToReturnFocusToFromCredentialsModal = updateRow.prev().find( '.check-column input' );
|
||||
wp.updates.updatePlugin( updateRow.data( 'plugin' ), updateRow.data( 'slug' ) );
|
||||
} );
|
||||
|
||||
$( '.plugin-card' ).on( 'click', '.update-now', function( e ) {
|
||||
e.preventDefault();
|
||||
var $button = $( e.target );
|
||||
|
||||
// Do nothing while updating and when the button is disabled.
|
||||
if ( $button.hasClass( 'updating-message' ) || $button.hasClass( 'button-disabled' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( wp.updates.shouldRequestFilesystemCredentials && ! wp.updates.updateLock ) {
|
||||
wp.updates.requestFilesystemCredentials( e );
|
||||
}
|
||||
|
||||
wp.updates.updatePlugin( $button.data( 'plugin' ), $button.data( 'slug' ) );
|
||||
} );
|
||||
|
||||
$( '#plugin_update_from_iframe' ).on( 'click' , function( e ) {
|
||||
var target, job;
|
||||
|
||||
target = window.parent == window ? null : window.parent,
|
||||
$.support.postMessage = !! window.postMessage;
|
||||
|
||||
if ( $.support.postMessage === false || target === null || window.parent.location.pathname.indexOf( 'update-core.php' ) !== -1 )
|
||||
return;
|
||||
|
||||
e.preventDefault();
|
||||
|
||||
job = {
|
||||
action: 'updatePlugin',
|
||||
type: 'update-plugin',
|
||||
data: {
|
||||
plugin: $( this ).data( 'plugin' ),
|
||||
slug: $( this ).data( 'slug' )
|
||||
}
|
||||
};
|
||||
|
||||
target.postMessage( JSON.stringify( job ), window.location.origin );
|
||||
});
|
||||
|
||||
} );
|
||||
|
||||
$( window ).on( 'message', function( e ) {
|
||||
var event = e.originalEvent,
|
||||
message,
|
||||
loc = document.location,
|
||||
expectedOrigin = loc.protocol + '//' + loc.hostname;
|
||||
|
||||
if ( event.origin !== expectedOrigin ) {
|
||||
return;
|
||||
}
|
||||
|
||||
message = $.parseJSON( event.data );
|
||||
|
||||
if ( typeof message.action === 'undefined' ) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (message.action){
|
||||
case 'decrementUpdateCount' :
|
||||
wp.updates.decrementCount( message.upgradeType );
|
||||
break;
|
||||
case 'updatePlugin' :
|
||||
tb_remove();
|
||||
|
||||
wp.updates.updateQueue.push( message );
|
||||
wp.updates.queueChecker();
|
||||
break;
|
||||
}
|
||||
|
||||
} );
|
||||
|
||||
$( window ).on( 'beforeunload', wp.updates.beforeunload );
|
||||
|
||||
})( jQuery, window.wp, window.pagenow, window.ajaxurl );
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/updates.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/updates.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
435
Kapitel_7/Lektion_4/wordpress/wp-admin/js/user-profile.js
Executable file
435
Kapitel_7/Lektion_4/wordpress/wp-admin/js/user-profile.js
Executable file
@@ -0,0 +1,435 @@
|
||||
/* global ajaxurl, pwsL10n, userProfileL10n */
|
||||
(function($) {
|
||||
var updateLock = false,
|
||||
|
||||
$pass1Row,
|
||||
$pass1Wrap,
|
||||
$pass1,
|
||||
$pass1Text,
|
||||
$pass1Label,
|
||||
$pass2,
|
||||
$weakRow,
|
||||
$weakCheckbox,
|
||||
$toggleButton,
|
||||
$submitButtons,
|
||||
$submitButton,
|
||||
currentPass,
|
||||
inputEvent;
|
||||
|
||||
/*
|
||||
* Use feature detection to determine whether password inputs should use
|
||||
* the `keyup` or `input` event. Input is preferred but lacks support
|
||||
* in legacy browsers.
|
||||
*/
|
||||
if ( 'oninput' in document.createElement( 'input' ) ) {
|
||||
inputEvent = 'input';
|
||||
} else {
|
||||
inputEvent = 'keyup';
|
||||
}
|
||||
|
||||
function generatePassword() {
|
||||
if ( typeof zxcvbn !== 'function' ) {
|
||||
setTimeout( generatePassword, 50 );
|
||||
} else {
|
||||
$pass1.val( $pass1.data( 'pw' ) );
|
||||
$pass1.trigger( 'pwupdate' ).trigger( 'wp-check-valid-field' );
|
||||
if ( 1 !== parseInt( $toggleButton.data( 'start-masked' ), 10 ) ) {
|
||||
$pass1Wrap.addClass( 'show-password' );
|
||||
} else {
|
||||
$toggleButton.trigger( 'click' );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function bindPass1() {
|
||||
var passStrength = $('#pass-strength-result')[0];
|
||||
|
||||
currentPass = $pass1.val();
|
||||
|
||||
$pass1Wrap = $pass1.parent();
|
||||
|
||||
$pass1Text = $( '<input type="text"/>' )
|
||||
.attr( {
|
||||
'id': 'pass1-text',
|
||||
'name': 'pass1-text',
|
||||
'autocomplete': 'off'
|
||||
} )
|
||||
.addClass( $pass1[0].className )
|
||||
.data( 'pw', $pass1.data( 'pw' ) )
|
||||
.val( $pass1.val() )
|
||||
.on( inputEvent, function () {
|
||||
if ( $pass1Text.val() === currentPass ) {
|
||||
return;
|
||||
}
|
||||
$pass2.val( $pass1Text.val() );
|
||||
$pass1.val( $pass1Text.val() ).trigger( 'pwupdate' );
|
||||
currentPass = $pass1Text.val();
|
||||
} );
|
||||
|
||||
$pass1.after( $pass1Text );
|
||||
|
||||
if ( 1 === parseInt( $pass1.data( 'reveal' ), 10 ) ) {
|
||||
generatePassword();
|
||||
}
|
||||
|
||||
$pass1.on( inputEvent + ' pwupdate', function () {
|
||||
if ( $pass1.val() === currentPass ) {
|
||||
return;
|
||||
}
|
||||
|
||||
currentPass = $pass1.val();
|
||||
if ( $pass1Text.val() !== currentPass ) {
|
||||
$pass1Text.val( currentPass );
|
||||
}
|
||||
$pass1.add( $pass1Text ).removeClass( 'short bad good strong' );
|
||||
|
||||
if ( passStrength.className ) {
|
||||
$pass1.add( $pass1Text ).addClass( passStrength.className );
|
||||
if ( 'short' === passStrength.className || 'bad' === passStrength.className ) {
|
||||
if ( ! $weakCheckbox.prop( 'checked' ) ) {
|
||||
$submitButtons.prop( 'disabled', true );
|
||||
}
|
||||
$weakRow.show();
|
||||
} else {
|
||||
$submitButtons.prop( 'disabled', false );
|
||||
$weakRow.hide();
|
||||
}
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
function resetToggle() {
|
||||
$toggleButton
|
||||
.data( 'toggle', 0 )
|
||||
.attr({
|
||||
'aria-label': userProfileL10n.ariaHide
|
||||
})
|
||||
.find( '.text' )
|
||||
.text( userProfileL10n.hide )
|
||||
.end()
|
||||
.find( '.dashicons' )
|
||||
.removeClass( 'dashicons-visibility' )
|
||||
.addClass( 'dashicons-hidden' );
|
||||
|
||||
$pass1Text.focus();
|
||||
|
||||
$pass1Label.attr( 'for', 'pass1-text' );
|
||||
}
|
||||
|
||||
function bindToggleButton() {
|
||||
$toggleButton = $pass1Row.find('.wp-hide-pw');
|
||||
$toggleButton.show().on( 'click', function () {
|
||||
if ( 1 === parseInt( $toggleButton.data( 'toggle' ), 10 ) ) {
|
||||
$pass1Wrap.addClass( 'show-password' );
|
||||
|
||||
resetToggle();
|
||||
|
||||
if ( ! _.isUndefined( $pass1Text[0].setSelectionRange ) ) {
|
||||
$pass1Text[0].setSelectionRange( 0, 100 );
|
||||
}
|
||||
} else {
|
||||
$pass1Wrap.removeClass( 'show-password' );
|
||||
$toggleButton
|
||||
.data( 'toggle', 1 )
|
||||
.attr({
|
||||
'aria-label': userProfileL10n.ariaShow
|
||||
})
|
||||
.find( '.text' )
|
||||
.text( userProfileL10n.show )
|
||||
.end()
|
||||
.find( '.dashicons' )
|
||||
.removeClass('dashicons-hidden')
|
||||
.addClass('dashicons-visibility');
|
||||
|
||||
$pass1.focus();
|
||||
|
||||
$pass1Label.attr( 'for', 'pass1' );
|
||||
|
||||
if ( ! _.isUndefined( $pass1[0].setSelectionRange ) ) {
|
||||
$pass1[0].setSelectionRange( 0, 100 );
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function bindPasswordForm() {
|
||||
var $passwordWrapper,
|
||||
$generateButton,
|
||||
$cancelButton;
|
||||
|
||||
$pass1Row = $('.user-pass1-wrap');
|
||||
$pass1Label = $pass1Row.find('th label').attr( 'for', 'pass1-text' );
|
||||
|
||||
// hide this
|
||||
$('.user-pass2-wrap').hide();
|
||||
|
||||
$submitButton = $( '#submit' ).on( 'click', function () {
|
||||
updateLock = false;
|
||||
});
|
||||
|
||||
$submitButtons = $submitButton.add( ' #createusersub' );
|
||||
|
||||
$weakRow = $( '.pw-weak' );
|
||||
$weakCheckbox = $weakRow.find( '.pw-checkbox' );
|
||||
$weakCheckbox.change( function() {
|
||||
$submitButtons.prop( 'disabled', ! $weakCheckbox.prop( 'checked' ) );
|
||||
} );
|
||||
|
||||
$pass1 = $('#pass1');
|
||||
if ( $pass1.length ) {
|
||||
bindPass1();
|
||||
}
|
||||
|
||||
/**
|
||||
* Fix a LastPass mismatch issue, LastPass only changes pass2.
|
||||
*
|
||||
* This fixes the issue by copying any changes from the hidden
|
||||
* pass2 field to the pass1 field, then running check_pass_strength.
|
||||
*/
|
||||
$pass2 = $('#pass2').on( inputEvent, function () {
|
||||
if ( $pass2.val().length > 0 ) {
|
||||
$pass1.val( $pass2.val() );
|
||||
$pass2.val('');
|
||||
currentPass = '';
|
||||
$pass1.trigger( 'pwupdate' );
|
||||
}
|
||||
} );
|
||||
|
||||
// Disable hidden inputs to prevent autofill and submission.
|
||||
if ( $pass1.is( ':hidden' ) ) {
|
||||
$pass1.prop( 'disabled', true );
|
||||
$pass2.prop( 'disabled', true );
|
||||
$pass1Text.prop( 'disabled', true );
|
||||
}
|
||||
|
||||
$passwordWrapper = $pass1Row.find( '.wp-pwd' );
|
||||
$generateButton = $pass1Row.find( 'button.wp-generate-pw' );
|
||||
|
||||
bindToggleButton();
|
||||
|
||||
if ( $generateButton.length ) {
|
||||
$passwordWrapper.hide();
|
||||
}
|
||||
|
||||
$generateButton.show();
|
||||
$generateButton.on( 'click', function () {
|
||||
updateLock = true;
|
||||
|
||||
$generateButton.hide();
|
||||
$passwordWrapper.show();
|
||||
|
||||
// Enable the inputs when showing.
|
||||
$pass1.attr( 'disabled', false );
|
||||
$pass2.attr( 'disabled', false );
|
||||
$pass1Text.attr( 'disabled', false );
|
||||
|
||||
if ( $pass1Text.val().length === 0 ) {
|
||||
generatePassword();
|
||||
}
|
||||
|
||||
_.defer( function() {
|
||||
$pass1Text.focus();
|
||||
if ( ! _.isUndefined( $pass1Text[0].setSelectionRange ) ) {
|
||||
$pass1Text[0].setSelectionRange( 0, 100 );
|
||||
}
|
||||
}, 0 );
|
||||
} );
|
||||
|
||||
$cancelButton = $pass1Row.find( 'button.wp-cancel-pw' );
|
||||
$cancelButton.on( 'click', function () {
|
||||
updateLock = false;
|
||||
|
||||
// Clear any entered password.
|
||||
$pass1Text.val( '' );
|
||||
|
||||
// Generate a new password.
|
||||
wp.ajax.post( 'generate-password' )
|
||||
.done( function( data ) {
|
||||
$pass1.data( 'pw', data );
|
||||
} );
|
||||
|
||||
$generateButton.show();
|
||||
$passwordWrapper.hide();
|
||||
|
||||
$weakRow.hide( 0, function () {
|
||||
$weakCheckbox.removeProp( 'checked' );
|
||||
} );
|
||||
|
||||
// Disable the inputs when hiding to prevent autofill and submission.
|
||||
$pass1.prop( 'disabled', true );
|
||||
$pass2.prop( 'disabled', true );
|
||||
$pass1Text.prop( 'disabled', true );
|
||||
|
||||
resetToggle();
|
||||
|
||||
// Clear password field to prevent update
|
||||
$pass1.val( '' ).trigger( 'pwupdate' );
|
||||
$submitButtons.prop( 'disabled', false );
|
||||
} );
|
||||
|
||||
$pass1Row.closest('form').on( 'submit', function () {
|
||||
updateLock = false;
|
||||
|
||||
$pass1.prop( 'disabled', false );
|
||||
$pass2.prop( 'disabled', false );
|
||||
$pass2.val( $pass1.val() );
|
||||
$pass1Wrap.removeClass( 'show-password' );
|
||||
});
|
||||
}
|
||||
|
||||
function check_pass_strength() {
|
||||
var pass1 = $('#pass1').val(), strength;
|
||||
|
||||
$('#pass-strength-result').removeClass('short bad good strong');
|
||||
if ( ! pass1 ) {
|
||||
$('#pass-strength-result').html( ' ' );
|
||||
return;
|
||||
}
|
||||
|
||||
strength = wp.passwordStrength.meter( pass1, wp.passwordStrength.userInputBlacklist(), pass1 );
|
||||
|
||||
switch ( strength ) {
|
||||
case 2:
|
||||
$('#pass-strength-result').addClass('bad').html( pwsL10n.bad );
|
||||
break;
|
||||
case 3:
|
||||
$('#pass-strength-result').addClass('good').html( pwsL10n.good );
|
||||
break;
|
||||
case 4:
|
||||
$('#pass-strength-result').addClass('strong').html( pwsL10n.strong );
|
||||
break;
|
||||
case 5:
|
||||
$('#pass-strength-result').addClass('short').html( pwsL10n.mismatch );
|
||||
break;
|
||||
default:
|
||||
$('#pass-strength-result').addClass('short').html( pwsL10n['short'] );
|
||||
}
|
||||
}
|
||||
|
||||
$(document).ready( function() {
|
||||
var $colorpicker, $stylesheet, user_id, current_user_id,
|
||||
select = $( '#display_name' );
|
||||
|
||||
$('#pass1').val('').on( inputEvent + ' pwupdate', check_pass_strength );
|
||||
$('#pass-strength-result').show();
|
||||
$('.color-palette').click( function() {
|
||||
$(this).siblings('input[name="admin_color"]').prop('checked', true);
|
||||
});
|
||||
|
||||
if ( select.length ) {
|
||||
$('#first_name, #last_name, #nickname').bind( 'blur.user_profile', function() {
|
||||
var dub = [],
|
||||
inputs = {
|
||||
display_nickname : $('#nickname').val() || '',
|
||||
display_username : $('#user_login').val() || '',
|
||||
display_firstname : $('#first_name').val() || '',
|
||||
display_lastname : $('#last_name').val() || ''
|
||||
};
|
||||
|
||||
if ( inputs.display_firstname && inputs.display_lastname ) {
|
||||
inputs.display_firstlast = inputs.display_firstname + ' ' + inputs.display_lastname;
|
||||
inputs.display_lastfirst = inputs.display_lastname + ' ' + inputs.display_firstname;
|
||||
}
|
||||
|
||||
$.each( $('option', select), function( i, el ){
|
||||
dub.push( el.value );
|
||||
});
|
||||
|
||||
$.each(inputs, function( id, value ) {
|
||||
if ( ! value ) {
|
||||
return;
|
||||
}
|
||||
|
||||
var val = value.replace(/<\/?[a-z][^>]*>/gi, '');
|
||||
|
||||
if ( inputs[id].length && $.inArray( val, dub ) === -1 ) {
|
||||
dub.push(val);
|
||||
$('<option />', {
|
||||
'text': val
|
||||
}).appendTo( select );
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
$colorpicker = $( '#color-picker' );
|
||||
$stylesheet = $( '#colors-css' );
|
||||
user_id = $( 'input#user_id' ).val();
|
||||
current_user_id = $( 'input[name="checkuser_id"]' ).val();
|
||||
|
||||
$colorpicker.on( 'click.colorpicker', '.color-option', function() {
|
||||
var colors,
|
||||
$this = $(this);
|
||||
|
||||
if ( $this.hasClass( 'selected' ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this.siblings( '.selected' ).removeClass( 'selected' );
|
||||
$this.addClass( 'selected' ).find( 'input[type="radio"]' ).prop( 'checked', true );
|
||||
|
||||
// Set color scheme
|
||||
if ( user_id === current_user_id ) {
|
||||
// Load the colors stylesheet.
|
||||
// The default color scheme won't have one, so we'll need to create an element.
|
||||
if ( 0 === $stylesheet.length ) {
|
||||
$stylesheet = $( '<link rel="stylesheet" />' ).appendTo( 'head' );
|
||||
}
|
||||
$stylesheet.attr( 'href', $this.children( '.css_url' ).val() );
|
||||
|
||||
// repaint icons
|
||||
if ( typeof wp !== 'undefined' && wp.svgPainter ) {
|
||||
try {
|
||||
colors = $.parseJSON( $this.children( '.icon_colors' ).val() );
|
||||
} catch ( error ) {}
|
||||
|
||||
if ( colors ) {
|
||||
wp.svgPainter.setColors( colors );
|
||||
wp.svgPainter.paint();
|
||||
}
|
||||
}
|
||||
|
||||
// update user option
|
||||
$.post( ajaxurl, {
|
||||
action: 'save-user-color-scheme',
|
||||
color_scheme: $this.children( 'input[name="admin_color"]' ).val(),
|
||||
nonce: $('#color-nonce').val()
|
||||
}).done( function( response ) {
|
||||
if ( response.success ) {
|
||||
$( 'body' ).removeClass( response.data.previousScheme ).addClass( response.data.currentScheme );
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
bindPasswordForm();
|
||||
});
|
||||
|
||||
$( '#destroy-sessions' ).on( 'click', function( e ) {
|
||||
var $this = $(this);
|
||||
|
||||
wp.ajax.post( 'destroy-sessions', {
|
||||
nonce: $( '#_wpnonce' ).val(),
|
||||
user_id: $( '#user_id' ).val()
|
||||
}).done( function( response ) {
|
||||
$this.prop( 'disabled', true );
|
||||
$this.siblings( '.notice' ).remove();
|
||||
$this.before( '<div class="notice notice-success inline"><p>' + response.message + '</p></div>' );
|
||||
}).fail( function( response ) {
|
||||
$this.siblings( '.notice' ).remove();
|
||||
$this.before( '<div class="notice notice-error inline"><p>' + response.message + '</p></div>' );
|
||||
});
|
||||
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
window.generatePassword = generatePassword;
|
||||
|
||||
/* Warn the user if password was generated but not saved */
|
||||
$( window ).on( 'beforeunload', function () {
|
||||
if ( true === updateLock ) {
|
||||
return userProfileL10n.warn;
|
||||
}
|
||||
} );
|
||||
|
||||
})(jQuery);
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/user-profile.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/user-profile.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
30
Kapitel_7/Lektion_4/wordpress/wp-admin/js/user-suggest.js
Executable file
30
Kapitel_7/Lektion_4/wordpress/wp-admin/js/user-suggest.js
Executable file
@@ -0,0 +1,30 @@
|
||||
/* global ajaxurl, current_site_id, isRtl */
|
||||
|
||||
(function( $ ) {
|
||||
var id = ( typeof current_site_id !== 'undefined' ) ? '&site_id=' + current_site_id : '';
|
||||
$(document).ready( function() {
|
||||
var position = { offset: '0, -1' };
|
||||
if ( typeof isRtl !== 'undefined' && isRtl ) {
|
||||
position.my = 'right top';
|
||||
position.at = 'right bottom';
|
||||
}
|
||||
$( '.wp-suggest-user' ).each( function(){
|
||||
var $this = $( this ),
|
||||
autocompleteType = ( typeof $this.data( 'autocompleteType' ) !== 'undefined' ) ? $this.data( 'autocompleteType' ) : 'add',
|
||||
autocompleteField = ( typeof $this.data( 'autocompleteField' ) !== 'undefined' ) ? $this.data( 'autocompleteField' ) : 'user_login';
|
||||
|
||||
$this.autocomplete({
|
||||
source: ajaxurl + '?action=autocomplete-user&autocomplete_type=' + autocompleteType + '&autocomplete_field=' + autocompleteField + id,
|
||||
delay: 500,
|
||||
minLength: 2,
|
||||
position: position,
|
||||
open: function() {
|
||||
$( this ).addClass( 'open' );
|
||||
},
|
||||
close: function() {
|
||||
$( this ).removeClass( 'open' );
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
})( jQuery );
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/user-suggest.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/user-suggest.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
!function(a){var b="undefined"!=typeof current_site_id?"&site_id="+current_site_id:"";a(document).ready(function(){var c={offset:"0, -1"};"undefined"!=typeof isRtl&&isRtl&&(c.my="right top",c.at="right bottom"),a(".wp-suggest-user").each(function(){var d=a(this),e="undefined"!=typeof d.data("autocompleteType")?d.data("autocompleteType"):"add",f="undefined"!=typeof d.data("autocompleteField")?d.data("autocompleteField"):"user_login";d.autocomplete({source:ajaxurl+"?action=autocomplete-user&autocomplete_type="+e+"&autocomplete_field="+f+b,delay:500,minLength:2,position:c,open:function(){a(this).addClass("open")},close:function(){a(this).removeClass("open")}})})})}(jQuery);
|
||||
595
Kapitel_7/Lektion_4/wordpress/wp-admin/js/widgets.js
Executable file
595
Kapitel_7/Lektion_4/wordpress/wp-admin/js/widgets.js
Executable file
@@ -0,0 +1,595 @@
|
||||
/*global ajaxurl, isRtl */
|
||||
var wpWidgets;
|
||||
(function($) {
|
||||
var $document = $( document );
|
||||
|
||||
wpWidgets = {
|
||||
/**
|
||||
* A closed Sidebar that gets a Widget dragged over it.
|
||||
*
|
||||
* @var element|null
|
||||
*/
|
||||
hoveredSidebar: null,
|
||||
|
||||
init : function() {
|
||||
var rem, the_id,
|
||||
self = this,
|
||||
chooser = $('.widgets-chooser'),
|
||||
selectSidebar = chooser.find('.widgets-chooser-sidebars'),
|
||||
sidebars = $('div.widgets-sortables'),
|
||||
isRTL = !! ( 'undefined' !== typeof isRtl && isRtl );
|
||||
|
||||
$('#widgets-right .sidebar-name').click( function() {
|
||||
var $this = $(this),
|
||||
$wrap = $this.closest('.widgets-holder-wrap');
|
||||
|
||||
if ( $wrap.hasClass('closed') ) {
|
||||
$wrap.removeClass('closed');
|
||||
$this.parent().sortable('refresh');
|
||||
} else {
|
||||
$wrap.addClass('closed');
|
||||
}
|
||||
|
||||
$document.triggerHandler( 'wp-pin-menu' );
|
||||
});
|
||||
|
||||
$('#widgets-left .sidebar-name').click( function() {
|
||||
$(this).closest('.widgets-holder-wrap').toggleClass('closed');
|
||||
$document.triggerHandler( 'wp-pin-menu' );
|
||||
});
|
||||
|
||||
$(document.body).bind('click.widgets-toggle', function(e) {
|
||||
var target = $(e.target),
|
||||
css = { 'z-index': 100 },
|
||||
widget, inside, targetWidth, widgetWidth, margin;
|
||||
|
||||
if ( target.parents('.widget-top').length && ! target.parents('#available-widgets').length ) {
|
||||
widget = target.closest('div.widget');
|
||||
inside = widget.children('.widget-inside');
|
||||
targetWidth = parseInt( widget.find('input.widget-width').val(), 10 ),
|
||||
widgetWidth = widget.parent().width();
|
||||
|
||||
if ( inside.is(':hidden') ) {
|
||||
if ( targetWidth > 250 && ( targetWidth + 30 > widgetWidth ) && widget.closest('div.widgets-sortables').length ) {
|
||||
if ( widget.closest('div.widget-liquid-right').length ) {
|
||||
margin = isRTL ? 'margin-right' : 'margin-left';
|
||||
} else {
|
||||
margin = isRTL ? 'margin-left' : 'margin-right';
|
||||
}
|
||||
|
||||
css[ margin ] = widgetWidth - ( targetWidth + 30 ) + 'px';
|
||||
widget.css( css );
|
||||
}
|
||||
widget.addClass( 'open' );
|
||||
inside.slideDown('fast');
|
||||
} else {
|
||||
inside.slideUp('fast', function() {
|
||||
widget.attr( 'style', '' );
|
||||
widget.removeClass( 'open' );
|
||||
});
|
||||
}
|
||||
e.preventDefault();
|
||||
} else if ( target.hasClass('widget-control-save') ) {
|
||||
wpWidgets.save( target.closest('div.widget'), 0, 1, 0 );
|
||||
e.preventDefault();
|
||||
} else if ( target.hasClass('widget-control-remove') ) {
|
||||
wpWidgets.save( target.closest('div.widget'), 1, 1, 0 );
|
||||
e.preventDefault();
|
||||
} else if ( target.hasClass('widget-control-close') ) {
|
||||
widget = target.closest('div.widget');
|
||||
widget.removeClass( 'open' );
|
||||
wpWidgets.close( widget );
|
||||
e.preventDefault();
|
||||
} else if ( target.attr( 'id' ) === 'inactive-widgets-control-remove' ) {
|
||||
wpWidgets.removeInactiveWidgets();
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
sidebars.children('.widget').each( function() {
|
||||
var $this = $(this);
|
||||
|
||||
wpWidgets.appendTitle( this );
|
||||
|
||||
if ( $this.find( 'p.widget-error' ).length ) {
|
||||
$this.find( 'a.widget-action' ).trigger('click');
|
||||
}
|
||||
});
|
||||
|
||||
$('#widget-list').children('.widget').draggable({
|
||||
connectToSortable: 'div.widgets-sortables',
|
||||
handle: '> .widget-top > .widget-title',
|
||||
distance: 2,
|
||||
helper: 'clone',
|
||||
zIndex: 100,
|
||||
containment: '#wpwrap',
|
||||
refreshPositions: true,
|
||||
start: function( event, ui ) {
|
||||
var chooser = $(this).find('.widgets-chooser');
|
||||
|
||||
ui.helper.find('div.widget-description').hide();
|
||||
the_id = this.id;
|
||||
|
||||
if ( chooser.length ) {
|
||||
// Hide the chooser and move it out of the widget
|
||||
$( '#wpbody-content' ).append( chooser.hide() );
|
||||
// Delete the cloned chooser from the drag helper
|
||||
ui.helper.find('.widgets-chooser').remove();
|
||||
self.clearWidgetSelection();
|
||||
}
|
||||
},
|
||||
stop: function() {
|
||||
if ( rem ) {
|
||||
$(rem).hide();
|
||||
}
|
||||
|
||||
rem = '';
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Opens and closes previously closed Sidebars when Widgets are dragged over/out of them.
|
||||
*/
|
||||
sidebars.droppable( {
|
||||
tolerance: 'intersect',
|
||||
|
||||
/**
|
||||
* Open Sidebar when a Widget gets dragged over it.
|
||||
*
|
||||
* @param event
|
||||
*/
|
||||
over: function( event ) {
|
||||
var $wrap = $( event.target ).parent();
|
||||
|
||||
if ( wpWidgets.hoveredSidebar && ! $wrap.is( wpWidgets.hoveredSidebar ) ) {
|
||||
// Close the previous Sidebar as the Widget has been dragged onto another Sidebar.
|
||||
wpWidgets.closeSidebar( event );
|
||||
}
|
||||
|
||||
if ( $wrap.hasClass( 'closed' ) ) {
|
||||
wpWidgets.hoveredSidebar = $wrap;
|
||||
$wrap.removeClass( 'closed' );
|
||||
}
|
||||
|
||||
$( this ).sortable( 'refresh' );
|
||||
},
|
||||
|
||||
/**
|
||||
* Close Sidebar when the Widget gets dragged out of it.
|
||||
*
|
||||
* @param event
|
||||
*/
|
||||
out: function( event ) {
|
||||
if ( wpWidgets.hoveredSidebar ) {
|
||||
wpWidgets.closeSidebar( event );
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
||||
sidebars.sortable({
|
||||
placeholder: 'widget-placeholder',
|
||||
items: '> .widget',
|
||||
handle: '> .widget-top > .widget-title',
|
||||
cursor: 'move',
|
||||
distance: 2,
|
||||
containment: '#wpwrap',
|
||||
tolerance: 'pointer',
|
||||
refreshPositions: true,
|
||||
start: function( event, ui ) {
|
||||
var height, $this = $(this),
|
||||
$wrap = $this.parent(),
|
||||
inside = ui.item.children('.widget-inside');
|
||||
|
||||
if ( inside.css('display') === 'block' ) {
|
||||
ui.item.removeClass('open');
|
||||
inside.hide();
|
||||
$(this).sortable('refreshPositions');
|
||||
}
|
||||
|
||||
if ( ! $wrap.hasClass('closed') ) {
|
||||
// Lock all open sidebars min-height when starting to drag.
|
||||
// Prevents jumping when dragging a widget from an open sidebar to a closed sidebar below.
|
||||
height = ui.item.hasClass('ui-draggable') ? $this.height() : 1 + $this.height();
|
||||
$this.css( 'min-height', height + 'px' );
|
||||
}
|
||||
},
|
||||
|
||||
stop: function( event, ui ) {
|
||||
var addNew, widgetNumber, $sidebar, $children, child, item,
|
||||
$widget = ui.item,
|
||||
id = the_id;
|
||||
|
||||
// Reset the var to hold a previously closed sidebar.
|
||||
wpWidgets.hoveredSidebar = null;
|
||||
|
||||
if ( $widget.hasClass('deleting') ) {
|
||||
wpWidgets.save( $widget, 1, 0, 1 ); // delete widget
|
||||
$widget.remove();
|
||||
return;
|
||||
}
|
||||
|
||||
addNew = $widget.find('input.add_new').val();
|
||||
widgetNumber = $widget.find('input.multi_number').val();
|
||||
|
||||
$widget.attr( 'style', '' ).removeClass('ui-draggable');
|
||||
the_id = '';
|
||||
|
||||
if ( addNew ) {
|
||||
if ( 'multi' === addNew ) {
|
||||
$widget.html(
|
||||
$widget.html().replace( /<[^<>]+>/g, function( tag ) {
|
||||
return tag.replace( /__i__|%i%/g, widgetNumber );
|
||||
})
|
||||
);
|
||||
|
||||
$widget.attr( 'id', id.replace( '__i__', widgetNumber ) );
|
||||
widgetNumber++;
|
||||
|
||||
$( 'div#' + id ).find( 'input.multi_number' ).val( widgetNumber );
|
||||
} else if ( 'single' === addNew ) {
|
||||
$widget.attr( 'id', 'new-' + id );
|
||||
rem = 'div#' + id;
|
||||
}
|
||||
|
||||
wpWidgets.save( $widget, 0, 0, 1 );
|
||||
$widget.find('input.add_new').val('');
|
||||
$document.trigger( 'widget-added', [ $widget ] );
|
||||
}
|
||||
|
||||
$sidebar = $widget.parent();
|
||||
|
||||
if ( $sidebar.parent().hasClass('closed') ) {
|
||||
$sidebar.parent().removeClass('closed');
|
||||
$children = $sidebar.children('.widget');
|
||||
|
||||
// Make sure the dropped widget is at the top
|
||||
if ( $children.length > 1 ) {
|
||||
child = $children.get(0);
|
||||
item = $widget.get(0);
|
||||
|
||||
if ( child.id && item.id && child.id !== item.id ) {
|
||||
$( child ).before( $widget );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( addNew ) {
|
||||
$widget.find( 'a.widget-action' ).trigger('click');
|
||||
} else {
|
||||
wpWidgets.saveOrder( $sidebar.attr('id') );
|
||||
}
|
||||
},
|
||||
|
||||
activate: function() {
|
||||
$(this).parent().addClass( 'widget-hover' );
|
||||
},
|
||||
|
||||
deactivate: function() {
|
||||
// Remove all min-height added on "start"
|
||||
$(this).css( 'min-height', '' ).parent().removeClass( 'widget-hover' );
|
||||
},
|
||||
|
||||
receive: function( event, ui ) {
|
||||
var $sender = $( ui.sender );
|
||||
|
||||
// Don't add more widgets to orphaned sidebars
|
||||
if ( this.id.indexOf('orphaned_widgets') > -1 ) {
|
||||
$sender.sortable('cancel');
|
||||
return;
|
||||
}
|
||||
|
||||
// If the last widget was moved out of an orphaned sidebar, close and remove it.
|
||||
if ( $sender.attr('id').indexOf('orphaned_widgets') > -1 && ! $sender.children('.widget').length ) {
|
||||
$sender.parents('.orphan-sidebar').slideUp( 400, function(){ $(this).remove(); } );
|
||||
}
|
||||
}
|
||||
}).sortable( 'option', 'connectWith', 'div.widgets-sortables' );
|
||||
|
||||
$('#available-widgets').droppable({
|
||||
tolerance: 'pointer',
|
||||
accept: function(o){
|
||||
return $(o).parent().attr('id') !== 'widget-list';
|
||||
},
|
||||
drop: function(e,ui) {
|
||||
ui.draggable.addClass('deleting');
|
||||
$('#removing-widget').hide().children('span').empty();
|
||||
},
|
||||
over: function(e,ui) {
|
||||
ui.draggable.addClass('deleting');
|
||||
$('div.widget-placeholder').hide();
|
||||
|
||||
if ( ui.draggable.hasClass('ui-sortable-helper') ) {
|
||||
$('#removing-widget').show().children('span')
|
||||
.html( ui.draggable.find( 'div.widget-title' ).children( 'h3' ).html() );
|
||||
}
|
||||
},
|
||||
out: function(e,ui) {
|
||||
ui.draggable.removeClass('deleting');
|
||||
$('div.widget-placeholder').show();
|
||||
$('#removing-widget').hide().children('span').empty();
|
||||
}
|
||||
});
|
||||
|
||||
// Area Chooser
|
||||
$( '#widgets-right .widgets-holder-wrap' ).each( function( index, element ) {
|
||||
var $element = $( element ),
|
||||
name = $element.find( '.sidebar-name h2' ).text(),
|
||||
id = $element.find( '.widgets-sortables' ).attr( 'id' ),
|
||||
li = $('<li tabindex="0">').text( $.trim( name ) );
|
||||
|
||||
if ( index === 0 ) {
|
||||
li.addClass( 'widgets-chooser-selected' );
|
||||
}
|
||||
|
||||
selectSidebar.append( li );
|
||||
li.data( 'sidebarId', id );
|
||||
});
|
||||
|
||||
$( '#available-widgets .widget .widget-title' ).on( 'click.widgets-chooser', function() {
|
||||
var $widget = $(this).closest( '.widget' );
|
||||
|
||||
if ( $widget.hasClass( 'widget-in-question' ) || $( '#widgets-left' ).hasClass( 'chooser' ) ) {
|
||||
self.closeChooser();
|
||||
} else {
|
||||
// Open the chooser
|
||||
self.clearWidgetSelection();
|
||||
$( '#widgets-left' ).addClass( 'chooser' );
|
||||
$widget.addClass( 'widget-in-question' ).children( '.widget-description' ).after( chooser );
|
||||
|
||||
chooser.slideDown( 300, function() {
|
||||
selectSidebar.find('.widgets-chooser-selected').focus();
|
||||
});
|
||||
|
||||
selectSidebar.find( 'li' ).on( 'focusin.widgets-chooser', function() {
|
||||
selectSidebar.find('.widgets-chooser-selected').removeClass( 'widgets-chooser-selected' );
|
||||
$(this).addClass( 'widgets-chooser-selected' );
|
||||
} );
|
||||
}
|
||||
});
|
||||
|
||||
// Add event handlers
|
||||
chooser.on( 'click.widgets-chooser', function( event ) {
|
||||
var $target = $( event.target );
|
||||
|
||||
if ( $target.hasClass('button-primary') ) {
|
||||
self.addWidget( chooser );
|
||||
self.closeChooser();
|
||||
} else if ( $target.hasClass('button-secondary') ) {
|
||||
self.closeChooser();
|
||||
}
|
||||
}).on( 'keyup.widgets-chooser', function( event ) {
|
||||
if ( event.which === $.ui.keyCode.ENTER ) {
|
||||
if ( $( event.target ).hasClass('button-secondary') ) {
|
||||
// Close instead of adding when pressing Enter on the Cancel button
|
||||
self.closeChooser();
|
||||
} else {
|
||||
self.addWidget( chooser );
|
||||
self.closeChooser();
|
||||
}
|
||||
} else if ( event.which === $.ui.keyCode.ESCAPE ) {
|
||||
self.closeChooser();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
saveOrder : function( sidebarId ) {
|
||||
var data = {
|
||||
action: 'widgets-order',
|
||||
savewidgets: $('#_wpnonce_widgets').val(),
|
||||
sidebars: []
|
||||
};
|
||||
|
||||
if ( sidebarId ) {
|
||||
$( '#' + sidebarId ).find( '.spinner:first' ).addClass( 'is-active' );
|
||||
}
|
||||
|
||||
$('div.widgets-sortables').each( function() {
|
||||
if ( $(this).sortable ) {
|
||||
data['sidebars[' + $(this).attr('id') + ']'] = $(this).sortable('toArray').join(',');
|
||||
}
|
||||
});
|
||||
|
||||
$.post( ajaxurl, data, function() {
|
||||
$( '#inactive-widgets-control-remove' ).prop( 'disabled' , ! $( '#wp_inactive_widgets .widget' ).length );
|
||||
$( '.spinner' ).removeClass( 'is-active' );
|
||||
});
|
||||
},
|
||||
|
||||
save : function( widget, del, animate, order ) {
|
||||
var sidebarId = widget.closest('div.widgets-sortables').attr('id'),
|
||||
data = widget.find('form').serialize(), a;
|
||||
|
||||
widget = $(widget);
|
||||
$( '.spinner', widget ).addClass( 'is-active' );
|
||||
|
||||
a = {
|
||||
action: 'save-widget',
|
||||
savewidgets: $('#_wpnonce_widgets').val(),
|
||||
sidebar: sidebarId
|
||||
};
|
||||
|
||||
if ( del ) {
|
||||
a.delete_widget = 1;
|
||||
}
|
||||
|
||||
data += '&' + $.param(a);
|
||||
|
||||
$.post( ajaxurl, data, function(r) {
|
||||
var id;
|
||||
|
||||
if ( del ) {
|
||||
if ( ! $('input.widget_number', widget).val() ) {
|
||||
id = $('input.widget-id', widget).val();
|
||||
$('#available-widgets').find('input.widget-id').each(function(){
|
||||
if ( $(this).val() === id ) {
|
||||
$(this).closest('div.widget').show();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if ( animate ) {
|
||||
order = 0;
|
||||
widget.slideUp('fast', function(){
|
||||
$(this).remove();
|
||||
wpWidgets.saveOrder();
|
||||
});
|
||||
} else {
|
||||
widget.remove();
|
||||
|
||||
if ( sidebarId === 'wp_inactive_widgets' ) {
|
||||
$( '#inactive-widgets-control-remove' ).prop( 'disabled' , ! $( '#wp_inactive_widgets .widget' ).length );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$( '.spinner' ).removeClass( 'is-active' );
|
||||
if ( r && r.length > 2 ) {
|
||||
$( 'div.widget-content', widget ).html( r );
|
||||
wpWidgets.appendTitle( widget );
|
||||
$document.trigger( 'widget-updated', [ widget ] );
|
||||
|
||||
if ( sidebarId === 'wp_inactive_widgets' ) {
|
||||
$( '#inactive-widgets-control-remove' ).prop( 'disabled' , ! $( '#wp_inactive_widgets .widget' ).length );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( order ) {
|
||||
wpWidgets.saveOrder();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
removeInactiveWidgets : function() {
|
||||
var $element = $( '.remove-inactive-widgets' ), a, data;
|
||||
|
||||
$( '.spinner', $element ).addClass( 'is-active' );
|
||||
|
||||
a = {
|
||||
action : 'delete-inactive-widgets',
|
||||
removeinactivewidgets : $( '#_wpnonce_remove_inactive_widgets' ).val()
|
||||
};
|
||||
|
||||
data = $.param( a );
|
||||
|
||||
$.post( ajaxurl, data, function() {
|
||||
$( '#wp_inactive_widgets .widget' ).remove();
|
||||
$( '#inactive-widgets-control-remove' ).prop( 'disabled' , true );
|
||||
$( '.spinner', $element ).removeClass( 'is-active' );
|
||||
} );
|
||||
},
|
||||
|
||||
appendTitle : function(widget) {
|
||||
var title = $('input[id*="-title"]', widget).val() || '';
|
||||
|
||||
if ( title ) {
|
||||
title = ': ' + title.replace(/<[^<>]+>/g, '').replace(/</g, '<').replace(/>/g, '>');
|
||||
}
|
||||
|
||||
$(widget).children('.widget-top').children('.widget-title').children()
|
||||
.children('.in-widget-title').html(title);
|
||||
|
||||
},
|
||||
|
||||
close : function(widget) {
|
||||
widget.children('.widget-inside').slideUp('fast', function() {
|
||||
widget.attr( 'style', '' );
|
||||
});
|
||||
},
|
||||
|
||||
addWidget: function( chooser ) {
|
||||
var widget, widgetId, add, n, viewportTop, viewportBottom, sidebarBounds,
|
||||
sidebarId = chooser.find( '.widgets-chooser-selected' ).data('sidebarId'),
|
||||
sidebar = $( '#' + sidebarId );
|
||||
|
||||
widget = $('#available-widgets').find('.widget-in-question').clone();
|
||||
widgetId = widget.attr('id');
|
||||
add = widget.find( 'input.add_new' ).val();
|
||||
n = widget.find( 'input.multi_number' ).val();
|
||||
|
||||
// Remove the cloned chooser from the widget
|
||||
widget.find('.widgets-chooser').remove();
|
||||
|
||||
if ( 'multi' === add ) {
|
||||
widget.html(
|
||||
widget.html().replace( /<[^<>]+>/g, function(m) {
|
||||
return m.replace( /__i__|%i%/g, n );
|
||||
})
|
||||
);
|
||||
|
||||
widget.attr( 'id', widgetId.replace( '__i__', n ) );
|
||||
n++;
|
||||
$( '#' + widgetId ).find('input.multi_number').val(n);
|
||||
} else if ( 'single' === add ) {
|
||||
widget.attr( 'id', 'new-' + widgetId );
|
||||
$( '#' + widgetId ).hide();
|
||||
}
|
||||
|
||||
// Open the widgets container
|
||||
sidebar.closest( '.widgets-holder-wrap' ).removeClass('closed');
|
||||
|
||||
sidebar.append( widget );
|
||||
sidebar.sortable('refresh');
|
||||
|
||||
wpWidgets.save( widget, 0, 0, 1 );
|
||||
// No longer "new" widget
|
||||
widget.find( 'input.add_new' ).val('');
|
||||
|
||||
$document.trigger( 'widget-added', [ widget ] );
|
||||
|
||||
/*
|
||||
* Check if any part of the sidebar is visible in the viewport. If it is, don't scroll.
|
||||
* Otherwise, scroll up to so the sidebar is in view.
|
||||
*
|
||||
* We do this by comparing the top and bottom, of the sidebar so see if they are within
|
||||
* the bounds of the viewport.
|
||||
*/
|
||||
viewportTop = $(window).scrollTop();
|
||||
viewportBottom = viewportTop + $(window).height();
|
||||
sidebarBounds = sidebar.offset();
|
||||
|
||||
sidebarBounds.bottom = sidebarBounds.top + sidebar.outerHeight();
|
||||
|
||||
if ( viewportTop > sidebarBounds.bottom || viewportBottom < sidebarBounds.top ) {
|
||||
$( 'html, body' ).animate({
|
||||
scrollTop: sidebarBounds.top - 130
|
||||
}, 200 );
|
||||
}
|
||||
|
||||
window.setTimeout( function() {
|
||||
// Cannot use a callback in the animation above as it fires twice,
|
||||
// have to queue this "by hand".
|
||||
widget.find( '.widget-title' ).trigger('click');
|
||||
}, 250 );
|
||||
},
|
||||
|
||||
closeChooser: function() {
|
||||
var self = this;
|
||||
|
||||
$( '.widgets-chooser' ).slideUp( 200, function() {
|
||||
$( '#wpbody-content' ).append( this );
|
||||
self.clearWidgetSelection();
|
||||
});
|
||||
},
|
||||
|
||||
clearWidgetSelection: function() {
|
||||
$( '#widgets-left' ).removeClass( 'chooser' );
|
||||
$( '.widget-in-question' ).removeClass( 'widget-in-question' );
|
||||
},
|
||||
|
||||
/**
|
||||
* Closes a Sidebar that was previously closed, but opened by dragging a Widget over it.
|
||||
*
|
||||
* Used when a Widget gets dragged in/out of the Sidebar and never dropped.
|
||||
*
|
||||
* @param sidebar
|
||||
*/
|
||||
closeSidebar: function( sidebar ) {
|
||||
this.hoveredSidebar.addClass( 'closed' );
|
||||
$( sidebar.target ).css( 'min-height', '' );
|
||||
this.hoveredSidebar = null;
|
||||
}
|
||||
};
|
||||
|
||||
$document.ready( function(){ wpWidgets.init(); } );
|
||||
|
||||
})(jQuery);
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/widgets.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/widgets.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
112
Kapitel_7/Lektion_4/wordpress/wp-admin/js/word-count.js
Executable file
112
Kapitel_7/Lektion_4/wordpress/wp-admin/js/word-count.js
Executable file
@@ -0,0 +1,112 @@
|
||||
( function() {
|
||||
function WordCounter( settings ) {
|
||||
var key,
|
||||
shortcodes;
|
||||
|
||||
if ( settings ) {
|
||||
for ( key in settings ) {
|
||||
if ( settings.hasOwnProperty( key ) ) {
|
||||
this.settings[ key ] = settings[ key ];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
shortcodes = this.settings.l10n.shortcodes;
|
||||
|
||||
if ( shortcodes && shortcodes.length ) {
|
||||
this.settings.shortcodesRegExp = new RegExp( '\\[\\/?(?:' + shortcodes.join( '|' ) + ')[^\\]]*?\\]', 'g' );
|
||||
}
|
||||
}
|
||||
|
||||
WordCounter.prototype.settings = {
|
||||
HTMLRegExp: /<\/?[a-z][^>]*?>/gi,
|
||||
HTMLcommentRegExp: /<!--[\s\S]*?-->/g,
|
||||
spaceRegExp: / | /gi,
|
||||
HTMLEntityRegExp: /&\S+?;/g,
|
||||
connectorRegExp: /--|\u2014/g,
|
||||
removeRegExp: new RegExp( [
|
||||
'[',
|
||||
// Basic Latin (extract)
|
||||
'\u0021-\u0040\u005B-\u0060\u007B-\u007E',
|
||||
// Latin-1 Supplement (extract)
|
||||
'\u0080-\u00BF\u00D7\u00F7',
|
||||
// General Punctuation
|
||||
// Superscripts and Subscripts
|
||||
// Currency Symbols
|
||||
// Combining Diacritical Marks for Symbols
|
||||
// Letterlike Symbols
|
||||
// Number Forms
|
||||
// Arrows
|
||||
// Mathematical Operators
|
||||
// Miscellaneous Technical
|
||||
// Control Pictures
|
||||
// Optical Character Recognition
|
||||
// Enclosed Alphanumerics
|
||||
// Box Drawing
|
||||
// Block Elements
|
||||
// Geometric Shapes
|
||||
// Miscellaneous Symbols
|
||||
// Dingbats
|
||||
// Miscellaneous Mathematical Symbols-A
|
||||
// Supplemental Arrows-A
|
||||
// Braille Patterns
|
||||
// Supplemental Arrows-B
|
||||
// Miscellaneous Mathematical Symbols-B
|
||||
// Supplemental Mathematical Operators
|
||||
// Miscellaneous Symbols and Arrows
|
||||
'\u2000-\u2BFF',
|
||||
// Supplemental Punctuation
|
||||
'\u2E00-\u2E7F',
|
||||
']'
|
||||
].join( '' ), 'g' ),
|
||||
astralRegExp: /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
|
||||
wordsRegExp: /\S\s+/g,
|
||||
characters_excluding_spacesRegExp: /\S/g,
|
||||
characters_including_spacesRegExp: /[^\f\n\r\t\v\u00AD\u2028\u2029]/g,
|
||||
l10n: window.wordCountL10n || {}
|
||||
};
|
||||
|
||||
WordCounter.prototype.count = function( text, type ) {
|
||||
var count = 0;
|
||||
|
||||
type = type || this.settings.l10n.type;
|
||||
|
||||
if ( type !== 'characters_excluding_spaces' && type !== 'characters_including_spaces' ) {
|
||||
type = 'words';
|
||||
}
|
||||
|
||||
if ( text ) {
|
||||
text = text + '\n';
|
||||
|
||||
text = text.replace( this.settings.HTMLRegExp, '\n' );
|
||||
text = text.replace( this.settings.HTMLcommentRegExp, '' );
|
||||
|
||||
if ( this.settings.shortcodesRegExp ) {
|
||||
text = text.replace( this.settings.shortcodesRegExp, '\n' );
|
||||
}
|
||||
|
||||
text = text.replace( this.settings.spaceRegExp, ' ' );
|
||||
|
||||
if ( type === 'words' ) {
|
||||
text = text.replace( this.settings.HTMLEntityRegExp, '' );
|
||||
text = text.replace( this.settings.connectorRegExp, ' ' );
|
||||
text = text.replace( this.settings.removeRegExp, '' );
|
||||
} else {
|
||||
text = text.replace( this.settings.HTMLEntityRegExp, 'a' );
|
||||
text = text.replace( this.settings.astralRegExp, 'a' );
|
||||
}
|
||||
|
||||
text = text.match( this.settings[ type + 'RegExp' ] );
|
||||
|
||||
if ( text ) {
|
||||
count = text.length;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
};
|
||||
|
||||
window.wp = window.wp || {};
|
||||
window.wp.utils = window.wp.utils || {};
|
||||
window.wp.utils.WordCounter = WordCounter;
|
||||
} )();
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/word-count.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/word-count.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
!function(){function a(a){var b,c;if(a)for(b in a)a.hasOwnProperty(b)&&(this.settings[b]=a[b]);c=this.settings.l10n.shortcodes,c&&c.length&&(this.settings.shortcodesRegExp=new RegExp("\\[\\/?(?:"+c.join("|")+")[^\\]]*?\\]","g"))}a.prototype.settings={HTMLRegExp:/<\/?[a-z][^>]*?>/gi,HTMLcommentRegExp:/<!--[\s\S]*?-->/g,spaceRegExp:/ | /gi,HTMLEntityRegExp:/&\S+?;/g,connectorRegExp:/--|\u2014/g,removeRegExp:new RegExp(["[","!-@[-`{-~","\x80-\xbf\xd7\xf7","\u2000-\u2bff","\u2e00-\u2e7f","]"].join(""),"g"),astralRegExp:/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,wordsRegExp:/\S\s+/g,characters_excluding_spacesRegExp:/\S/g,characters_including_spacesRegExp:/[^\f\n\r\t\v\u00AD\u2028\u2029]/g,l10n:window.wordCountL10n||{}},a.prototype.count=function(a,b){var c=0;return b=b||this.settings.l10n.type,"characters_excluding_spaces"!==b&&"characters_including_spaces"!==b&&(b="words"),a&&(a+="\n",a=a.replace(this.settings.HTMLRegExp,"\n"),a=a.replace(this.settings.HTMLcommentRegExp,""),this.settings.shortcodesRegExp&&(a=a.replace(this.settings.shortcodesRegExp,"\n")),a=a.replace(this.settings.spaceRegExp," "),"words"===b?(a=a.replace(this.settings.HTMLEntityRegExp,""),a=a.replace(this.settings.connectorRegExp," "),a=a.replace(this.settings.removeRegExp,"")):(a=a.replace(this.settings.HTMLEntityRegExp,"a"),a=a.replace(this.settings.astralRegExp,"a")),a=a.match(this.settings[b+"RegExp"]),a&&(c=a.length)),c},window.wp=window.wp||{},window.wp.utils=window.wp.utils||{},window.wp.utils.WordCounter=a}();
|
||||
39
Kapitel_7/Lektion_4/wordpress/wp-admin/js/wp-fullscreen-stub.js
Executable file
39
Kapitel_7/Lektion_4/wordpress/wp-admin/js/wp-fullscreen-stub.js
Executable file
@@ -0,0 +1,39 @@
|
||||
/**
|
||||
* Distraction-Free Writing (wp-fullscreen) backwards compatibility stub.
|
||||
* Todo: remove at the end of 2016.
|
||||
*
|
||||
* Original was deprecated in 4.1, removed in 4.3.
|
||||
*/
|
||||
( function() {
|
||||
var noop = function(){};
|
||||
|
||||
window.wp = window.wp || {};
|
||||
window.wp.editor = window.wp.editor || {};
|
||||
window.wp.editor.fullscreen = {
|
||||
bind_resize: noop,
|
||||
dfwWidth: noop,
|
||||
off: noop,
|
||||
on: noop,
|
||||
refreshButtons: noop,
|
||||
resizeTextarea: noop,
|
||||
save: noop,
|
||||
switchmode: noop,
|
||||
toggleUI: noop,
|
||||
|
||||
settings: {},
|
||||
pubsub: {
|
||||
publish: noop,
|
||||
subscribe: noop,
|
||||
unsubscribe: noop,
|
||||
topics: {}
|
||||
},
|
||||
fade: {
|
||||
In: noop,
|
||||
Out: noop
|
||||
},
|
||||
ui: {
|
||||
fade: noop,
|
||||
init: noop
|
||||
}
|
||||
};
|
||||
}());
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/wp-fullscreen-stub.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/wp-fullscreen-stub.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
!function(){var a=function(){};window.wp=window.wp||{},window.wp.editor=window.wp.editor||{},window.wp.editor.fullscreen={bind_resize:a,dfwWidth:a,off:a,on:a,refreshButtons:a,resizeTextarea:a,save:a,switchmode:a,toggleUI:a,settings:{},pubsub:{publish:a,subscribe:a,unsubscribe:a,topics:{}},fade:{In:a,Out:a},ui:{fade:a,init:a}}}();
|
||||
17
Kapitel_7/Lektion_4/wordpress/wp-admin/js/xfn.js
Executable file
17
Kapitel_7/Lektion_4/wordpress/wp-admin/js/xfn.js
Executable file
@@ -0,0 +1,17 @@
|
||||
jQuery( document ).ready(function( $ ) {
|
||||
$( '#link_rel' ).prop( 'readonly', true );
|
||||
$( '#linkxfndiv input' ).bind( 'click keyup', function() {
|
||||
var isMe = $( '#me' ).is( ':checked' ), inputs = '';
|
||||
$( 'input.valinp' ).each( function() {
|
||||
if ( isMe ) {
|
||||
$( this ).prop( 'disabled', true ).parent().addClass( 'disabled' );
|
||||
} else {
|
||||
$( this ).removeAttr( 'disabled' ).parent().removeClass( 'disabled' );
|
||||
if ( $( this ).is( ':checked' ) && $( this ).val() !== '') {
|
||||
inputs += $( this ).val() + ' ';
|
||||
}
|
||||
}
|
||||
});
|
||||
$( '#link_rel' ).val( ( isMe ) ? 'me' : inputs.substr( 0,inputs.length - 1 ) );
|
||||
});
|
||||
});
|
||||
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/xfn.min.js
vendored
Executable file
1
Kapitel_7/Lektion_4/wordpress/wp-admin/js/xfn.min.js
vendored
Executable file
@@ -0,0 +1 @@
|
||||
jQuery(document).ready(function(a){a("#link_rel").prop("readonly",!0),a("#linkxfndiv input").bind("click keyup",function(){var b=a("#me").is(":checked"),c="";a("input.valinp").each(function(){b?a(this).prop("disabled",!0).parent().addClass("disabled"):(a(this).removeAttr("disabled").parent().removeClass("disabled"),a(this).is(":checked")&&""!==a(this).val()&&(c+=a(this).val()+" "))}),a("#link_rel").val(b?"me":c.substr(0,c.length-1))})});
|
||||
Reference in New Issue
Block a user