New module 'Clone module'

This commit is contained in:
Manuel Cillero 2017-07-26 14:03:04 +02:00
parent 6c622aad79
commit 9349230316
8 changed files with 769 additions and 0 deletions

View file

@ -0,0 +1,31 @@
<?php
/**
* Implementation of hook_views_handlers()
*/
function clone_views_handlers() {
return array(
'info' => array(
'path' => drupal_get_path('module', 'clone') . '/views',
),
'handlers' => array(
'views_handler_field_node_link_clone' => array(
'parent' => 'views_handler_field_node_link',
),
),
);
}
/**
* Implementation of hook_views_data_alter()
*/
function clone_views_data_alter(&$views_data) {
$views_data['node']['clone_node'] = array(
'field' => array(
'title' => t('Clone link'),
'help' => t('Provide a simple link to clone the node.'),
'handler' => 'views_handler_field_node_link_clone',
),
);
}

View file

@ -0,0 +1,31 @@
<?php
/**
* Field handler to present a clone node link.
*
* Closely modeled after views/modules/node/views_handler_field_node_link_edit.inc
*/
class views_handler_field_node_link_clone extends views_handler_field_node_link {
function construct() {
parent::construct();
$this->additional_fields['uid'] = 'uid';
$this->additional_fields['type'] = 'type';
$this->additional_fields['format'] = array('table' => 'node_revisions', 'field' => 'format');
}
function render($values) {
// Insure that user has access to clone this node.
$node = new stdClass();
$node->nid = $values->{$this->aliases['nid']};
$node->uid = $values->{$this->aliases['uid']};
$node->type = $values->{$this->aliases['type']};
$node->format = $values->{$this->aliases['format']};
$node->status = 1; // unpublished nodes ignore access control
if (!clone_access_cloning($node)) {
return;
}
$text = !empty($this->options['text']) ? $this->options['text'] : t('clone');
return l($text, "node/$node->nid/clone", array('query' => drupal_get_destination()));
}
}