%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/custom_pages/models/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/modules/custom_pages/models/Page.php |
<?php
namespace humhub\modules\custom_pages\models;
use humhub\modules\content\models\Content;
use humhub\modules\custom_pages\helpers\Url;
use humhub\modules\custom_pages\models\forms\SettingsForm;
use humhub\modules\custom_pages\modules\template\models\Template;
use humhub\modules\custom_pages\widgets\WallEntry;
use Yii;
/**
* This is the model class for table "custom_pages_page".
*
* Pages are global custom page container which can be added to the main navigation or
* user account setting navigation.
*
* The followings are the available columns in table 'custom_pages_page':
* @property integer $id
* @property integer $type
* @property string $title
* @property string $icon
* @property string $page_content
* @property string $iframe_attrs
* @property integer $sort_order
* @property integer $admin_only
* @property integer $in_new_window
* @property string $target
* @property string $cssClass
* @property string $url
* @property string $abstract
* @method string viewTemplatePage(CustomContentContainer $page)
*/
class Page extends CustomContentContainer
{
/**
* @inheritdoc
*/
public $wallEntryClass = WallEntry::class;
const NAV_CLASS_TOPNAV = 'TopMenuWidget';
const NAV_CLASS_ACCOUNTNAV = 'AccountMenuWidget';
const NAV_CLASS_EMPTY = 'WithOutMenu';
const NAV_CLASS_FOOTER = 'FooterMenuWidget';
const NAV_CLASS_PEOPLE = 'PeopleButtonsWidget';
/**
* @inheritdoc
*/
public function init()
{
parent::init();
if ($this->isNewRecord && $this->type == HtmlType::ID &&
($this->page_content === null || $this->page_content === '')) {
$this->page_content = '<div class="panel panel-default"><div class="panel-body"></div></div>';
}
}
/**
* @return string the associated database table name
*/
public static function tableName()
{
return 'custom_pages_page';
}
/**
* @inerhitdoc
* @return array
*/
public function attributeLabels()
{
$result = $this->defaultAttributeLabels();
$result['in_new_window'] = Yii::t('CustomPagesModule.models_Page', 'Open in new window');
$result['abstract'] = Yii::t('CustomPagesModule.models_Page', 'Abstract');
$result['target'] = Yii::t('CustomPagesModule.models_Page', 'Navigation');
$result['url'] = Yii::t('CustomPagesModule.models_Page', 'Url shortcut');
return $result;
}
/**
* @inhritdoc
*/
public function rules()
{
$rules = $this->defaultRules();
$target = $this->getTargetModel();
if ($target && $target->isAllowedField('in_new_window')) {
$rules[] = [['in_new_window'], 'integer'];
}
if ($target && $target->isAllowedField('abstract')) {
$rules[] = [['abstract'], 'string'];
}
if ($target && $target->isAllowedField('url')) {
$rules[] = [['url'], 'string'];
}
return $rules;
}
/**
* @inheritdoc
*/
public function beforeSave($insert)
{
$this->fixVisibility();
return parent::beforeSave($insert);
}
/**
* @inheritdoc
*/
public function fixVisibility()
{
// Force visibility access "Members & Guests" to "Members only" for
// page type "User Account Menu (Settings)"
if ($this->getTargetId() == Page::NAV_CLASS_ACCOUNTNAV) {
if ($this->visibility == CustomContentContainer::VISIBILITY_PUBLIC) {
$this->visibility = CustomContentContainer::VISIBILITY_PRIVATE;
}
if ($this->content->visibility == Content::VISIBILITY_PUBLIC) {
$this->content->visibility = Content::VISIBILITY_PRIVATE;
}
}
}
/**
* @inheritdoc
*/
public function getContentDescription()
{
return $this->title;
}
/**
* Returns a container specific title mainly used in views.
* @return string
*/
public function getLabel()
{
return Yii::t('CustomPagesModule.models_Page', 'page');
}
/**
* Returns a navigation selection for all navigations this page can be added.
* @return array
*/
public static function getDefaultTargets()
{
$targets = [
['id' => self::NAV_CLASS_TOPNAV, 'name' => Yii::t('CustomPagesModule.base', 'Top Navigation')],
['id' => self::NAV_CLASS_ACCOUNTNAV, 'name' => Yii::t('CustomPagesModule.base', 'User Account Menu (Settings)'), 'subLayout' => '@humhub/modules/user/views/account/_layout'],
['id' => self::NAV_CLASS_EMPTY, 'name' => Yii::t('CustomPagesModule.base', 'Without adding to navigation (Direct link)')],
['id' => self::NAV_CLASS_FOOTER, 'name' => Yii::t('CustomPagesModule.base', 'Footer menu')],
];
if (class_exists('humhub\modules\user\widgets\PeopleHeadingButtons')) {
$targets[] = ['id' => self::NAV_CLASS_PEOPLE, 'name' => Yii::t('CustomPagesModule.base', 'People Buttons')];
}
return $targets;
}
/**
* Returns an array of all allowed conten types for this container type.
* @return integer[]
*/
public function getContentTypes()
{
return [
LinkType::ID,
HtmlType::ID,
MarkdownType::ID,
IframeType::ID,
TemplateType::ID,
PhpType::ID
];
}
/**
* @inheritdoc
*/
public function getPageContent()
{
return $this->page_content;
}
/**
* @inheritdoc
*/
public function getAllowedTemplateSelection()
{
return Template::getSelection(['type' => Template::TYPE_LAYOUT]);
}
/**
* @inheritdoc
*/
public function getPhpViewPath()
{
return (new SettingsForm())->phpGlobalPagePath;
}
/**
* @return string
*/
public function getEditUrl()
{
return Url::toEditPage($this->id, $this->content->container);
}
/**
* @return string
*/
public function getPageType()
{
return PageType::Page;
}
}