Сообщите, вошел ли пользователь для редактирования/панели инструментов в Concrete5 из блока

Я пишу блок и хочу узнать, вошел ли пользователь в панель управления, когда блок просматривается. Я предполагаю, что должно быть что-то вроде isAdminArea() или isEditing(), но до сих пор не смог найти это по собственному желанию!


person Toby    schedule 22.04.2013    source источник


Ответы (4)


Если вы используете Concrete5.6.0 или выше, вы можете сделать это:

global $cp;
$canViewToolbar = (isset($cp) && is_object($cp) && $cp->canViewToolbar());
if ($canViewToolbar) {
    //do something...
}

Если вы делаете это в шаблоне темы или блочном представлении, вы можете пропустить много этого мусора и просто сделать это:

global $cp;
if ($cp->canViewToolbar()) {
    //do something...
}

Но если вы делаете это в контроллере пакетов или во время системного события, вы захотите использовать мой первый пример (чтобы убедиться, что глобальный объект «Разрешения на сбор» существует).

Если вы используете версию Concrete5 старше 5.6, используйте этот код:

global $cp;
$canViewToolbar = (isset($cp) && ($cp->canWrite() || $cp->canAddSubContent() || $cp->canAdminPage() || $cp->canApproveCollection()));
if ($canViewToolbar) {
    //do something...
}
person Jordan Lev    schedule 22.04.2013

Чтобы улучшить вышесказанное: хотя global является допустимой конструкцией в PHP, ее использования действительно следует избегать. Это лениво и опасно. Правильный способ доступа к активной модели разрешений в архитектуре C5:

$cp = new Permissions(Page::getCurrentPage());

if ($cp->canViewToolbar()) {
  ...
}
person Ian    schedule 26.05.2014

Если вас просто интересует режим редактирования, это сработает:

 <?php 
 if ($c->isEditMode()) { ?>
    //do something
 <?php } ?>
person tofraser    schedule 22.04.2013
comment
Это говорит вам только о том, редактирует ли пользователь страницу в данный момент, а не о том, вошли ли они в систему или нет. - person Jordan Lev; 22.04.2013

Это должно быть так

$u = new User();
if($u->IsLoggedIn()){
  //logged in
}

если это не работает, вверху вам может понадобиться

global $u

person MonkeyVoodoo    schedule 08.05.2014