Skocz do zawartości
  • 0
Mdx

Komentarze w profilu - edycja i dziwne zachowanie

Pytanie

Dziś chciałem dodać formularz komentarzy w profilu do strony głównej w profilach. Wszystko poszło dość dobrze i przez strone główna w profilu można komentowac innych. Niestety po dodaniu kodu do bitu "ProfilModern" coś się psuje z zakładką "Status" w profilu. A dokładnie to wygląda tak:

Gdy w profilu na głównej jest kod do formularza komentarzy to w zakładce ze statusami gdy ktoś skomentuje czyjś profil przenosi go do jego profilu (po wysłaniu komentarza). Komentarz normalnie się pojawia. Gdy usune poniższy kod z głównej strony profilu problem znika.

 

Kod który wrzuciłem do głównej strony profili:

<div class='content_border'><h3 class='bar noTopBorder'>Komentarze</h3>
<if test="canCreate:|:$this->memberData['member_id'] AND ( $this->memberData['member_id'] == $member['member_id'] ) AND $this->registry->getClass('memberStatus')->canCreate( $member )">
	<div class='status_update'>
		<form id='statusForm' action='{$this->settings['base_url']}app=members&amp;module=profile&amp;section=status&amp;do=new&amp;k={$this->member->form_hash}&amp;id={$this->memberData['member_id']}&amp;forMemberId={$member['member_id']}' method='post'>
		</form>
	</div>
</if>
<if test="leave_comment:|:$this->memberData['member_id'] && $this->memberData['member_id'] != $member['member_id'] && $member['pp_setting_count_comments']">
	<div class='status_update'>
		<form id='commentForm' action='{$this->settings['base_url']}app=members&amp;module=profile&amp;section=status&amp;do=new&amp;k={$this->member->form_hash}&amp;id={$this->memberData['member_id']}&amp;forMemberId={$member['member_id']}' method='post'>
				<input type='hidden' name='member_id' value='{$member['member_id']}' />
				<input type='hidden' name='auth_key' value='{$this->member->form_hash}' />
				<div id='post_comment'>
					<input type='text' class='input_text' cols='50' rows='3' id='statusUpdate_page' name='content' data-for-member-id="{$member['member_id']}" />
					<input type='submit' class='ipsButton' value='{$this->lang->words['comment_submit_post']}' data-for-member-id="{$member['member_id']}" id='statusSubmit_page' />
				</div> 
		</form>
	</div>
</if>
<div class='ipsBox clearfix'>
	<div id="status_wrapper">
		<if test="hasUpdates:|:count( $updates )">
			{parse template="statusUpdates" group="profile" params="$updates"}
			<div style='text-align: center'>
				<a href='{parse url="app=members&amp;module=profile&amp;section=status&amp;member_id={$member['member_id']}" seotitle="true" template="members_status_all" base="public"}' class='ipsButton_secondary'>{$this->lang->words['status__viewall']}</a>
			</div>
		<else />
			<p class='ipsBox_container ipsPad'>Komentarz pojawi się w zakładce <b>Status</b></p>
		</if>
	</div>
</div>
</div>
Z góry dzięki za pomoc. Edytowano przez Ciupek

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

19 odpowiedzi na to pytanie

Polecane posty

  • 0

Za przekierowanie jakk już to odpowiada plik php a nie ten kod umieszczony na stronie

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Za przekierowanie jakk już to odpowiada plik php a nie ten kod umieszczony na stronie

 

No rozumiem, ale dlaczego tak się dzieje gdy tylko wrzuce ten kod? I jak to można rozwiązać?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Wszystko wygląda ok, więc trzeba by zdiagnozować od strony plików

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

A w jakim pliku to w ogóle szukać?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

/admin/applications/members/profile/status.php i szukaj akcji dla new

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

W pliku status.php znalazłem fragment dodawania statusu (nie wiem czy ten sam fragment tyczy się komentarzy w profilach). Niestety nie wiem co dokładnie masz na myśli więc zamieszczę cały ten fragment (na końcu jest przekierowanie ale nie jestem pewny czy o nie chodzi):

/**
	* Add a new statussesses
	*
	*/
	protected function _new()
	{
		$id   = intval( $this->memberData['member_id'] );
		$su_Twitter  = intval( $this->request['su_Twitter'] );
		$su_Facebook = intval( $this->request['su_Facebook'] );
		$forMemberId = intval( $this->request['forMemberId'] );
		
		/* Set Author */
		$this->registry->getClass('memberStatus')->setAuthor( $this->memberData );
		
		/* Set Content */
		$this->registry->getClass('memberStatus')->setContent( trim( $this->request['content'] ) );
		
		/* Can we reply? */
		if ( ! $this->registry->getClass('memberStatus')->canCreate() )
 		{
			$this->registry->output->showError( 'status_off', 10268, null, null, 403 );
		}
		
		/* Update or comment? */
		if ( $forMemberId && $forMemberId != $this->memberData['member_id'] )
		{
			$owner = IPSMember::load( $forMemberId );
			
	    	if ( ! $owner['pp_setting_count_comments'] )
	    	{
	    		$this->registry->output->showError( 'status_off', 10268, null, null, 403 );
	    	}
	
			/* Set owner */
			$this->registry->getClass('memberStatus')->setStatusOwner( $owner );
		}
		else
		{
			/* Set post outs */
			$this->registry->getClass('memberStatus')->setExternalUpdates( array( 'twitter' => $su_Twitter, 'facebook' => $su_Facebook ) );
		}

		/* Update */
		$this->registry->getClass('memberStatus')->create();
		
		/* Got a return URL? */
		if ( $this->request['rurl'] )
		{
			$this->registry->output->redirectScreen( $this->lang->words['status_was_changed'], $this->settings['base_url'] . base64_decode( $this->request['rurl'] ) );
		}
		else
		{
			$this->registry->output->redirectScreen( $this->lang->words['status_was_changed'], $this->settings['base_url'] . 'showuser=' . $id, $this->memberData['members_seo_name'] );
		}
	}
}

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

No i tutaj masz, że jeśli w żądaniu nie ma zakodowanego base64 adresu powrotu to przekierowuje na profil aktualnie zalogowanego usera:

if ( $this->request['rurl'] )
		{
			$this->registry->output->redirectScreen( $this->lang->words['status_was_changed'], $this->settings['base_url'] . base64_decode( $this->request['rurl'] ) );
		}
		else
		{
			$this->registry->output->redirectScreen( $this->lang->words['status_was_changed'], $this->settings['base_url'] . 'showuser=' . $id, $this->memberData['members_seo_name'] );
		}

Jeśli ten fragment html co dałeś odpowiada za komentarze, to ten fragment ze status.php odpowiada za ich dodawanie :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Tylko z tego co widzę to tu nie ma przekierowania na własny profil :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Tylko z tego co widzę to tu nie ma przekierowania na własny profil :)

Bo po co:

$this->registry->output->redirectScreen( $this->lang->words['status_was_changed'], $this->settings['base_url'] . 'showuser=' . $id, $this->memberData['members_seo_name'] );

A to to niby co? przekieruj na profil aktualnie zalogowanego użytkownika

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0


A to to niby co? przekieruj na profil aktualnie zalogowanego użytkownika

 

Nie wiem czy dobrze się rozumiemy. Chodzi o to by przekierowywało w to samo miejsce (czyli w tym wypadku na profil osoby u której zostawiliśmy komentarz) :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Dokładnie, a ta linia, co pokazałem przekierowuje do profilu użytkownika, który aktualnie komentuje... Zamień w linku $id a $forMemberId i powinno zadziałać

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

a jesteś pewien że zmieniłeś to:

$this->registry->output->redirectScreen( $this->lang->words['status_was_changed'], $this->settings['base_url'] . 'showuser=' . $id, $this->memberData['members_seo_name'] );

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Tak teraz wygląda tak:

$this->registry->output->redirectScreen( $this->lang->words['status_was_changed'], $this->settings['base_url'] . 'showuser=' . $forMemberId, $this->memberData['members_seo_name'] );

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

Sprawdzę to w wolnej chwili, ale coś nie bardzo mi się chce wierzyć

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0


Sprawdzę to w wolnej chwili

Byłbym wdzięczny ;)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

u mnie działa ajaxowo dodawanie komentarzy :P

 

Ok, wyłączyłem JS i dodałem. Tak jak pisałem poprawiając tą linijke wszystko działa jak należy. Tak powinna wyglądać metoda w pliku: /admin/applications/members/modules_public/profile/status.php

/**
	* Add a new statussesses
	*
	*/
	protected function _new()
	{
		$id   = intval( $this->memberData['member_id'] );
		$su_Twitter  = intval( $this->request['su_Twitter'] );
		$su_Facebook = intval( $this->request['su_Facebook'] );
		$forMemberId = intval( $this->request['forMemberId'] );
		
		/* Set Author */
		$this->registry->getClass('memberStatus')->setAuthor( $this->memberData );
		
		/* Set Content */
		$this->registry->getClass('memberStatus')->setContent( trim( $this->request['content'] ) );
		
		/* Can we reply? */
		if ( ! $this->registry->getClass('memberStatus')->canCreate() )
 		{
			$this->registry->output->showError( 'status_off', 10268, null, null, 403 );
		}
		
		/* Update or comment? */
		if ( $forMemberId && $forMemberId != $this->memberData['member_id'] )
		{
			$owner = IPSMember::load( $forMemberId );
			
	    	if ( ! $owner['pp_setting_count_comments'] )
	    	{
	    		$this->registry->output->showError( 'status_off', 10268, null, null, 403 );
	    	}
	
			/* Set owner */
			$this->registry->getClass('memberStatus')->setStatusOwner( $owner );
		}
		else
		{
			/* Set post outs */
			$this->registry->getClass('memberStatus')->setExternalUpdates( array( 'twitter' => $su_Twitter, 'facebook' => $su_Facebook ) );
		}

		/* Update */
		$this->registry->getClass('memberStatus')->create();
		
		/* Got a return URL? */
		if ( $this->request['rurl'] )
		{
			$this->registry->output->redirectScreen( $this->lang->words['status_was_changed'], $this->settings['base_url'] . base64_decode( $this->request['rurl'] ) );
		}
		else
		{
			$this->registry->output->redirectScreen( $this->lang->words['status_was_changed'], $this->settings['base_url'] . 'showuser=' . $forMemberId, $this->memberData['members_seo_name'] );
		}
	}

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

A dodawałeś ten kod:

<div class='content_border'><h3 class='bar noTopBorder'>Komentarze</h3>
<if test="canCreate:|:$this->memberData['member_id'] AND ( $this->memberData['member_id'] == $member['member_id'] ) AND $this->registry->getClass('memberStatus')->canCreate( $member )">
	<div class='status_update'>
		<form id='statusForm' action='{$this->settings['base_url']}app=members&amp;module=profile&amp;section=status&amp;do=new&amp;k={$this->member->form_hash}&amp;id={$this->memberData['member_id']}&amp;forMemberId={$member['member_id']}' method='post'>
		</form>
	</div>
</if>
<if test="leave_comment:|:$this->memberData['member_id'] && $this->memberData['member_id'] != $member['member_id'] && $member['pp_setting_count_comments']">
	<div class='status_update'>
		<form id='commentForm' action='{$this->settings['base_url']}app=members&amp;module=profile&amp;section=status&amp;do=new&amp;k={$this->member->form_hash}&amp;id={$this->memberData['member_id']}&amp;forMemberId={$member['member_id']}' method='post'>
				<input type='hidden' name='member_id' value='{$member['member_id']}' />
				<input type='hidden' name='auth_key' value='{$this->member->form_hash}' />
				<div id='post_comment'>
					<input type='text' class='input_text' cols='50' rows='3' id='statusUpdate_page' name='content' data-for-member-id="{$member['member_id']}" />
					<input type='submit' class='ipsButton' value='{$this->lang->words['comment_submit_post']}' data-for-member-id="{$member['member_id']}" id='statusSubmit_page' />
				</div> 
		</form>
	</div>
</if>
<div class='ipsBox clearfix'>
	<div id="status_wrapper">
		<if test="hasUpdates:|:count( $updates )">
			{parse template="statusUpdates" group="profile" params="$updates"}
			<div style='text-align: center'>
				<a href='{parse url="app=members&amp;module=profile&amp;section=status&amp;member_id={$member['member_id']}" seotitle="true" template="members_status_all" base="public"}' class='ipsButton_secondary'>{$this->lang->words['status__viewall']}</a>
			</div>
		<else />
			<p class='ipsBox_container ipsPad'>Komentarz pojawi się w zakładce <b>Status</b></p>
		</if>
	</div>
</div>
</div>

Do bitu "ProfileModern"?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
  • 0

tak, dodałem dokładnie to co dałeś w pierwszym poście do profileModern po </script>

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość
Temat jest zablokowany i nie można w nim pisać.

  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×

Ważne informacje

Kontynuując przeglądanie strony, wyrażasz zgodę na używanie przez nas plików cookies.