Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » jQuery » Как заменить окно на mgnific (поправить AJAX)?

Как заменить окно на mgnific (поправить AJAX)?


     17.07.2019    dle, ajax, хак, запрос, pm    jQuery, Общие вопросы по PHP, Хаки    978

вопрос
DLEшное окно AJAX отправки сообщения

ShowLoading('');

	$.get(dle_root + "engine/ajax/controller.php?mod=pm", { name: name, action: 'show_send', skin: dle_skin, user_hash: dle_login_hash }, function(data){

		HideLoading('');

		$('body').append(data);
			
		$('#dlesendpmpopup').dialog({
			modal:!0,
			autoOpen: true,
			width: 800,
			resizable: false,
			dialogClass: "modalfixed dle-popup-sendpm",
			buttons: b
		});
			
		$('.modalfixed.ui-dialog').css({position:"fixed"});
		$('#dlesendpmpopup').dialog( "option", "position", { my: "center", at: "center", of: window } );
		
	}, 'html');
	
	return false;


Никак не могу заменить на magnific popup окно. Не получается поправить запрос. Помогите пожалуйста реализовать.

Magnific окно:

$.magnificPopup.open({
	items: {
		src: '<div style="width:400px;background:#FFF;position:relative;margin:0 auto;"> <div class="p-3"><b><i class="icon-fire text-warning mr-2"></i>'+ title +'</b> <hr> <center>'+ message +'</center></div> </div>'
	},
	type: 'inline',
	mainClass: 'mfp-fade',
	removalDelay: 170,
	overflowY: 'hide',
	closeOnBgClick: true,
	showCloseBtn: true,
	callbacks: {
		open: function() { $('#dlepopup').show() }	 
	}		
});	


Оно не ajax, дело в том что я просто невдупляю как правильно его и вставить)
Есть только вот это: mfp ajax

Ответа пока нет


8 комментариев

ТeraМoune
Юзер

ТeraМoune - 17 июля 2019 20:28 -

Данный код magnificPopup.open должен находится в теле ajax запроса $.get, который возвращает ответ от сервера и помещает его в data, а сам data уже помещается в src при вызове magnificPopup


$.get(dle_root + "engine/ajax/controller.php?mod=pm", { name: name, action: 'show_send', skin: dle_skin, user_hash: dle_login_hash }, function(data){
	HideLoading('');

$.magnificPopup.open({
	items: {
		src: '<div style="width:400px;background:#FFF;position:relative;margin:0 auto;"> + data + '</div>'
	},
	type: 'inline',
	mainClass: 'mfp-fade',
	removalDelay: 170,
	overflowY: 'hide',
	closeOnBgClick: true,
	showCloseBtn: true,
	callbacks: {
		open: function() { $('#dlepopup').show() }	 
	}		
});
		
	}, 'html');

pahuchiy
Юзер

pahuchiy - 17 июля 2019 23:40 -

Обожаю, спасибо!

pahuchiy
Юзер

pahuchiy - 18 июля 2019 00:47 -

А как добавить кнопку "Отправить"? Окно работает но кнопки нет

ТeraМoune
Юзер

ТeraМoune - 18 июля 2019 03:37 -

Два варианта, первый проследовать и добавить кнопку в ответ в файл ajax/pm.php но если не знаете то допишите её в src: '<div style="width:400px;background:#FFF;position:relative;margin:0 auto;"> + data + 'html код кнопки</div>'

а в
callbacks: {
open: function() {
$('#dlepopup').show();
$( "#target" ).click(function() {
Код
});
}
}

Где target id аттрибут, а где код там содержимое тела функции b[dle_p_send] = function() от { и до }

pahuchiy
Юзер

pahuchiy - 18 июля 2019 13:25 -

а как прописать в pm.php?

ТeraМoune
Юзер

ТeraМoune - 18 июля 2019 15:48 -

Искать где прописан шаблон и дописывать там

pahuchiy
Юзер

pahuchiy - 18 июля 2019 16:15 -

Сделал так:

$.magnificPopup.open({
	items: {
		src: '<div class="px-3 pb-4" style="width:540px;background:#FFF;position:relative;margin:0 auto;"><br><b><i class="icon-speech text-warning mr-2"></i> Написать сообщение: </b>' + name + '<hr>' + data + '<hr> <button class="btn btn-primary" type="submit" id="targetbtn" name="add">Отправить</button></div>'
	},
	type: 'inline',
	mainClass: 'mfp-fade',
	removalDelay: 170,
	overflowY: 'hide',
	closeOnBgClick: true,
	showCloseBtn: true,

callbacks: {
open: function() { $('#dlesendpmpopup').show();
$( "#targetbtn" ).click(function() {
b[dle_p_send] = function() {
		
		if (dle_wysiwyg == "2") {
			tinyMCE.triggerSave();
		}
		
		var subj = 	$('#pm_subj').val();
		var comments = 	$('#pm_text').val();
		var name = 	$('#pm_name').val();
		var question_answer = $('#pm_question_answer').val();	
		var sec_code = $('#sec_code_pm').val();
		var outboxcopy = $( '#outboxcopy:checked' ).val();
		
		var g_recaptcha_response = '';
		
		if (name == '' || comments == '' || subj == '')
		{
			DLEalert ( dle_req_field, dle_info );
			return false;
		}
		
		if ( dle_captcha_type == "1" ) {

			if ( typeof grecaptcha != "undefined"  ) {
				g_recaptcha_response = grecaptcha.getResponse(recaptcha_widget);
			}

		} else if (dle_captcha_type == "2") {
			g_recaptcha_response = $('#pm-recaptcha-response').val();
		}

		if (!outboxcopy) {
			outboxcopy = 0;
		}
		
		if (!sec_code) {
			sec_code = '';
		}
		if (!question_answer) {
			question_answer = '';
		}

		ShowLoading('');
	
		$.post(dle_root + "engine/ajax/controller.php?mod=pm", { action: 'send_pm', subj: subj, comments: comments, name: name, skin: dle_skin, sec_code: sec_code, question_answer: question_answer, g_recaptcha_response: g_recaptcha_response, outboxcopy: outboxcopy, user_hash: dle_login_hash}, function(data){
	
			HideLoading('');
			
			if ( data.success ) {
				$('#dlesendpmpopup').remove();
				DLEalert ( data.success, dle_info );
			} else if (data.error) {
				
				if (dle_captcha_type == "2") {
					if ( typeof grecaptcha != "undefined"  ) {
						var recaptcha_public_key = $('#pm-recaptcha-response').data('key');
						grecaptcha.execute(recaptcha_public_key, {action: 'pm'}).then(function(token) {
						$('#pm-recaptcha-response').val(token);
						});
					}
				}
					
				DLEalert ( data.error, dle_info );
			}
	
		}, 'json');
		
		return false;
	};
});
}	 
}
		
});


Но к сожалению ничего не происходит, нажимаю на кнопку и тишина :(

Felix
Юзер

Felix - 15 августа 2019 17:13 -

Автор вопроса кидала! Берёт деньги и гасится!
Контакты:
Телеграм Stanislavskiy 11
Телефон +77073168931
ВК vk.com/stanislavskiy11
У кидалы есть ютуб канал с этим же ником и сайт посвящённый дле! Кому нужно ссылки, пишите в личку.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх