wp/wp-content/plugins/portfolio/js/script.js
author ymh <ymh.work@gmail.com>
Mon, 14 Oct 2019 17:39:30 +0200
changeset 7 cf61fcea0001
parent 5 5e2f62d02dcd
permissions -rw-r--r--
resynchronize code repo with production

function prtfl_setMessage( msg ) {
	( function( $ ){
		$( ".error" ).hide();
		$( ".prtfl_image_update_message" ).html( msg ).show();
	} )( jQuery );
}

function prtfl_setError( msg ) {
	( function( $ ){
		$( ".prtfl_image_update_message" ).hide();
		$( ".error" ).html( msg ).show();;
	} )( jQuery );
}

( function( $ ) {
	$( document ).ready( function() {
		$( '#prtfl_ajax_update_images' ).click( function() {
			prtfl_setMessage( "<p>" + prtfl_vars.update_img_message + "</p>" );
			var curr = 0;
			$.ajax( {
				/* update_img_url */
				url: '../wp-admin/admin-ajax.php?action=prtfl_update_image',
				type: "POST",
				data: "action1=get_all_attachment&prtfl_ajax_nonce_field=" + prtfl_vars.prtfl_nonce,
				success: function( result ) {
					var list = $.parseJSON( result );
					if ( ! list ) {
						prtfl_setError( "<p>" + prtfl_vars.not_found_img_info + "</p>" );
						return;
					}
					$( '.prtfl_loader' ).css( 'display', 'inline-block' );

					var curr = 0,
						all_count = Object.keys( list ).length;
					$.each( list, function( index, value ) {
						$.ajax( {
							url: '../wp-admin/admin-ajax.php?action=prtfl_update_image',
							type: "POST",
							data: "action1=update_image&id=" + value + '&prtfl_ajax_nonce_field=' + prtfl_vars.prtfl_nonce,
							success: function( result ) {
								curr = curr + 1;
								if ( curr >= all_count ) {
									$.ajax( {
										url: '../wp-admin/admin-ajax.php?action=prtfl_update_image',
										type: "POST",
										data: "action1=update_options&prtfl_ajax_nonce_field=" + prtfl_vars.prtfl_nonce,
									} );
									prtfl_setMessage( "<p>" + prtfl_vars.img_success + "</p>" );
									$( '.prtfl_loader' ).hide();
								}
							}
						} );
					} );
				},
				error: function( request, status, error ) {
					prtfl_setError( "<p>" + prtfl_vars.img_error + request.status + "</p>" );
				}
			} );
		} );

		var is_rtl = ( $( 'body' ).hasClass( 'rtl' ) );

		$( '#_prtfl_date_compl' ).datepicker( {
			dateFormat : 'dd.mm.yy',
			isRTL : is_rtl
		} );

		$( '[name^="prtfl_custom_image_size_"]' ).change( function() {
			$( '#prtfl_ajax_update_images' ).attr( 'disabled', 'disabled' );
		} );

		/* Portfolio images */
		var images_frame;

		$( '.prtfl_add_portfolio_images' ).on( 'click', 'a', function( event ) {
			event.preventDefault();
			var $element = $( this );

			/* If the media frame already exists, reopen it */
			if ( images_frame ) {
				images_frame.open();
				return;
			}

			/* Create the media frame */
			images_frame = wp.media.frames.product_gallery = wp.media({
				title: $element.data( 'choose' ),
				button: {
					text: $element.data( 'update' )
				},
				states: [
					new wp.media.controller.Library( {
						title: $element.data( 'choose' ),
						filterable: 'all',
						multiple: true
					} )
				]
			} );

			/* run a callback when an image is selected */
			images_frame.on( 'select', function() {
				var selection = images_frame.state().get( 'selection' );
				var attachment_ids = $( '#prtfl_images' ).val();

				selection.map( function( attachment ) {
					attachment = attachment.toJSON();

					if ( attachment.id ) {
						attachment_ids   = attachment_ids ? attachment_ids + ',' + attachment.id : attachment.id;
						var attachment_image = attachment.sizes && attachment.sizes.thumbnail ? attachment.sizes.thumbnail.url : attachment.url;

						$( '#prtfl_images_container ul' ).append( '<li class="prtfl_single_image" data-attachment_id="' + attachment.id + '"><img src="' + attachment_image + '" /><span class="prtfl_delete_image"><a href="#" title="' + $element.data( 'delete' ) + '">' + $element.data( 'text' ) + '</a></span></li>' );
					}
				} );

				$( '#prtfl_images' ).val( attachment_ids );
			} );

			/* Open the modal */
			images_frame.open();
		} );

		/* Add image ordering */
		if ( $( '#prtfl_images_container ul' ).length > 0 ) {
			$( '#prtfl_images_container ul' ).sortable({
				items: 'li.prtfl_single_image',
				cursor: 'move',
				scrollSensitivity: 40,
				forcePlaceholderSize: true,
				forceHelperSize: false,
				helper: 'clone',
				opacity: 0.65,
				placeholder: 'prtfl-sortable-placeholder',
				start: function( event, ui ) {
					ui.item.css( 'background-color', '#f6f6f6' );
				},
				stop: function( event, ui ) {
					ui.item.removeAttr( 'style' );
				},
				update: function() {
					var attachment_ids = '';
					$( '#prtfl_images_container' ).find( 'ul li.prtfl_single_image' ).css( 'cursor', 'default' ).each( function() {
						var attachment_id = $( this ).attr( 'data-attachment_id' );
						attachment_ids = attachment_ids + attachment_id + ',';
					} );
					$( '#prtfl_images' ).val( attachment_ids );
				}
			} );
		}

		/* Remove image */
		$( '#prtfl_images_container' ).on( 'click', '.prtfl_delete_image a', function() {
			$( this ).closest( 'li.prtfl_single_image' ).remove();
			var attachment_ids = '';

			$( '#prtfl_images_container' ).find( 'ul li.prtfl_single_image' ).css( 'cursor', 'default' ).each( function() {
				var attachment_id = $( this ).attr( 'data-attachment_id' );
				attachment_ids = attachment_ids + attachment_id + ',';
			} );

			$( '#prtfl_images' ).val( attachment_ids );
			return false;
		} );
	} );
} )( jQuery );