Инвайты в профиле

Сейчас раздел «инвайты» вынесен в настройки (settings/invite/). Логичней этот раздел разместить в профиле. Вы скажете: «Пожалуйста, размещай ссылку в соответствующем меню». Да, но дизайн моего профиля сделан так, что определенная его часть не меняется при переходе из whois в /my/ и /favorites/, а если эту часть скопировать в invite.tpl, то возникают ошибки.

Вопрос: как интегрировать профиль и invite.tpl? Куда копать?

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

комментарий был удален
avatar
евент
protected function EventInvite() {		
		if (!USER_USE_INVITE) {
			return parent::EventNotFound();
		}
		
		$this->sMenuItemSelect='invite';
		$this->sMenuSubItemSelect='';		
		$this->Viewer_AddHtmlTitle($this->Lang_Get('settings_menu_invite'));		
		
		if (isset($_REQUEST['submit_invite'])) {
			$this->Security_ValidateSendForm();
			$bError=false;
			if (!$this->ACL_CanSendInvite($this->oUserCurrent) and !$this->oUserCurrent->isAdministrator()) {
				$this->Message_AddError($this->Lang_Get('settings_invite_available_no'),$this->Lang_Get('error'));		
				$bError=true;		
			}
			if (!func_check(getRequest('invite_mail'),'mail')) {
				$this->Message_AddError($this->Lang_Get('settings_invite_mail_error'),$this->Lang_Get('error'));		
				$bError=true;		
			}
			if (!$bError) {
				$oInvite=$this->User_GenerateInvite($this->oUserCurrent);
				$this->Notify_SendInvite($this->oUserCurrent,getRequest('invite_mail'),$oInvite);
				$this->Message_AddNoticeSingle($this->Lang_Get('settings_invite_submit_ok'));
			}
		}
		
		$this->Viewer_Assign('iCountInviteAvailable',$this->User_GetCountInviteAvailable($this->oUserCurrent));
		$this->Viewer_Assign('iCountInviteUsed',$this->User_GetCountInviteUsed($this->oUserCurrent->getId()));		
	}

из ActionSettings в ActionProfile.class.php
туда же переносишь
из евента RegisterEvent() строку
$this->AddEvent('invite','EventInvite');


пробуй. должно получиться
avatar
Да, но ты не понял. Я беру кусок кода из профиля и тащу его в invite.tpl. А это значит, что изменения нужно делать в ActionSettings, ща попробую конечно
avatar
Короче говоря: как сделать так, чтобы на странице invite.tpl выводилось, к примеру, имя пользователя? Или рейтинг? Вот что мне нужно
avatar
в ActionSettings.class.php там где EventShutdown() в самый конец вставляешь
$this->Viewer_Assign('oUserProfile',$this->oUserCurrent);	
и теперь можешь использовать вывод имени и т.д. как в «whois», например
{$oUserProfile->getLogin()}
{$oUserProfile->getRating()}
avatar
можно сразу использовать
{$oUserCurrent->getLogin()}
avatar
Хех, точно, легких путей не ищем =)
avatar
Cпасибо, как всегда, выручил :) кстати, теперь я понял, как разные вещи вставлять в разные места :)
avatar
Подключил по аналогии

$this->Viewer_Assign('iCountTopicFavourite',$iCountTopicFavourite);


Получил

Notice: Undefined variable: iCountTopicFavourite in Z:\home\mcdev.ru\www\classes\actions\ActionSettings.class.php on line 367
avatar
$this->Viewer_Assign('iCountTopicFavourite',$iCountTopicFavourite);
отправляет переменную $iCountTopicFavourite в шаблон. Но перед отправкой переменная должна иметь какое-то значение.
Собственно в ActionProfile.class.php мы это делаем:
$iCountTopicFavourite=$this->Topic_GetCountTopicsFavouriteByUserId($this->oUserProfile->getId());
А в ActionSettings.class.php вы этого не сделали.
avatar
Сделал! Но теперь вообще ничего не открывается и выдает:

Notice: Undefined property: ActionSettings::$oUserProfile in Z:\home\mcdev.ru\www\classes\actions\ActionSettings.class.php on line 364
[Денвер: показать возможную причину ошибки]
Fatal error: Call to a member function getId() on a non-object in Z:\home\mcdev.ru\www\classes\actions\ActionSettings.class.php on line 364

avatar
$oUserProfile у тебя тоже нет, заместо неё $oUserCurrent, думал догадаешься)
на блюдечке:
$iCountTopicFavourite=$this->Topic_GetCountTopicsFavouriteByUserId($this->oUserCurrent->getId());
avatar
Да, тугой я в коде, что тут поделаешь, не мое :( Хотя, догадаться действительно мог (значит тугой не только в коде :)

Как всегда — спасибо! Вы меня уже во второй раз выручили, я ваш должник )
avatar
>2009г
Да, понимаю, некротред, но я уже отчаялся.
Вот вы тут в Профиль вынесли показатель инвайтов. Это у меня вышло, это не сложно.
Проблема в другом: как вынести количество инвайтов в верхний бар?
Сейчас это выглядит вот так (дизайн потом править буду)
screenshot.su/show.php?img=c36017d12bcf3cb6d2f63200dcc523de.jpg
А на, собственно, страницу /invites/ всё в порядке.
screenshot.su/show.php?img=d6012ef4672628116411552b77102983.jpg
Да, на остальных страницах (блоги, активность и пр.) теперь тоже выводится.
Просто во все экшены приписал.
$this->Viewer_Assign('iCountInviteAvailable',$this->User_GetCountInviteAvailable($this->oUserCurrent));

Только вот на Главной это НЕ работает. Я так понимаю, копать нужно в ActionIndex.class.php?
Только вот «старая схема» не работает.
пытаюсь сделать вот так:
screenshot.su/show.php?img=4361e841733601ebc64492118eb9f1d6.jpg
И получаю вот такой результат:
screenshot.su/show.php?img=57f6957ff8701d0ef3c8c41f8baabc54.jpg

Уже извелся весь. Часа три на это потратил. Может, конечно, сейчас 6 утра и я туго соображаю, но надеяться осталось только на вас.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.