View source
<?php
include_once drupal_get_path('module', 'pageroute') . '/pageroute.page_edit.inc';
include_once drupal_get_path('module', 'pageroute') . '/pageroute.page_view.inc';
function theme_content_profile_pageroute_empty($type_name) {
return '<div class="content-profile-empty">' . t('You have not created a @type yet. Go ahead and create one!', array(
'@type' => $type_name,
)) . '</div>';
}
class ContentProfilePageEditProfile extends PageroutePageEdit {
public function getForm(&$form, &$form_state, &$args) {
$args['hide_pageroute_buttons'] = FALSE;
$args['default_target'] = PAGEROUTE_CURRENT;
$page =& $form_state['page'];
if (isset($form_state['node']) && $form_state['node']['type'] == $this->options['content-type']) {
$node = $form_state['node'];
}
else {
if (isset($page)) {
$node = node_load(array(
'type' => $this->options['content-type'],
'uid' => pageroute_page_get_uid($page),
));
}
}
if (empty($node)) {
PageroutePageAdd::setNodeAddForm($form, $form_state, $page);
}
else {
$this
->setNodeEditForm($form, $form_state, $page, $args, $node);
}
parent::unsetForm($form);
}
public function getAdminForm($page, &$form) {
$form['options']['content-type'] = array(
'#type' => 'select',
'#title' => t('Profile content type'),
'#options' => content_profile_get_types('names'),
'#default_value' => $page->options['content-type'],
'#weight' => 2,
'#description' => t('Select a content profile type.'),
);
PageroutePage::nodeUi($page, $form, TRUE);
}
public static function help() {
return t('A page of this type will present a content profile node editing form of a configurable content-profile-type. It will edit the node with the id taken from the first argument of the pageroute. Furthermore this type can be configured to show a node adding form if the content profile is not existing. So you can build a pageroute that manages the creation and editing of content profiles.');
}
public static function info() {
return array(
'name' => t('Content profile editing form'),
);
}
public function setUp() {
}
public static function getDefaultSubmitHandler($form) {
return 'node_form_submit';
}
}
class ContentProfilePageViewProfile extends PageroutePageView {
public function getForm(&$form, &$form_state, &$args) {
$page =& $form_state['page'];
$args['hide_pageroute_buttons'] = FALSE;
$args['default_target'] = PAGEROUTE_CURRENT;
$node = node_load(array(
'type' => $page->options['content-type'],
'uid' => pageroute_page_get_uid($page),
));
if ($node->nid && node_access('view', $node)) {
if (empty($this->title)) {
drupal_set_title(check_plain($node->title));
}
node_tag_new($node->nid);
$form += array(
'pageroute-view' => array(
'#value' => node_view($node, FALSE, TRUE, FALSE),
),
);
}
else {
$type_name = node_get_types('name', $page->options['content-type']);
$form += array(
'pageroute-view' => array(
'#value' => theme('content_profile_pageroute_empty', $type_name),
),
);
}
}
public function getAdminForm($page, &$form) {
$form['options']['content-type'] = array(
'#type' => 'select',
'#title' => t('Profile content type'),
'#options' => content_profile_get_types('names'),
'#required' => TRUE,
'#default_value' => $page->options['content-type'],
'#weight' => 2,
'#description' => t('You can only use content types marked as \'content profile\''),
);
}
public static function help() {
return t('The lonely node display page can be used to view this lonely node. This might be useful for displaying the lonely node aftercreation or update. There will be a (themeable) message if there is no node that can be displayed.');
}
public static function info() {
return array(
'name' => t('Content profile display'),
);
}
}