123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- <?php
- /**
- * Implements hook_init().
- */
- function materio_personalnotes_init() {
- drupal_add_js(drupal_get_path('module', 'materio_personalnotes').'/js/materio_personalnotes.js');
- }
- /**
- * Implements hook_permission().
- */
- function materio_personalnotes_permission() {
- $perms = array(
- 'create own personal notes' => array(
- 'title' => t('Create own personal notes'),
- 'description' => t('Create own personal notes'),
- ),
- );
- return $perms;
- }
- function materio_personalnotes_menu(){
- $items = array();
- $base = array(
- 'type' => MENU_CALLBACK,
- 'file' => 'materio_personalnotes.pages.inc',
- );
- $items['materio_personalnotes/form/%/%'] = $base+array(
- 'access arguments' => array('create own personal notes'),
- 'access callback' => 'user_access',
- 'title' => 'Materio base create/edit note ajax',
- 'page callback' => 'materio_personalnotes_createeditnote',
- 'page arguments' => array(2,3),
- );
- $items['materio_personalnotes/save/%'] = $base+array(
- 'access arguments' => array('create own personal notes'),
- 'access callback' => 'user_access',
- 'title' => 'Materio base save note ajax',
- 'page callback' => 'materio_personalnotes_savenote',
- 'page arguments' => array(2),
- );
- return $items;
- }
- /**
- * Implements hook_menu_alter().
- */
- // function materio_personalnotes_menu_alter(&$items) {
- // $items['user/%user']['access callback'] = 'user_access';
- // $items['user/%user']['access arguments'] = array('view own user profile');
- // }
- /**
- * Implements hook_entity_view().
- *
- * Note this is broken for taxonomy terms. @see http://drupal.org/node/1067120
- */
- function materio_personalnotes_entity_view($entity, $type, $view_mode, $langcode) {
- // dsm($entity, 'entity');
- if($type == 'node' && $entity->type == "materiau" && in_array($view_mode, array('cardmedium', 'cardbig', 'cardfull'))){
- if(user_access('create own personal notes') && $view_mode != 'print'){
- $entity->content['personalnotelink'] = materio_personalnotes_get_note_link($entity);
- // drupal_add_css(drupal_get_path('module', 'flag') . '/theme/flag.css');
- // drupal_add_js(drupal_get_path('module', 'flag') . '/theme/flag.js');
- }
- }
- }
- function materio_personalnotes_get_note_link($entity){
- global $user;
- // dsm($user);
- // get note already created for this entity by current user
- $query = new EntityFieldQuery();
- $query
- ->entityCondition('entity_type', 'node')
- ->entityCondition('bundle', 'note')
- // ->propertyCondition('status', NODE_PUBLISHED);
- ->propertyCondition('uid', $user->uid)
- ->fieldCondition('field_target_content_nid', 'value', $entity->nid)
- ->addMetaData('account', user_load(1));
- $result = $query->execute();
- // dsm($result, 'result');
- if (isset($result['node'])) {
- // if note alredy exists link to it
- $note = array_shift($result['node']);
- // dsm($note, 'note');
- $link = array(
- '#path' => '/node/'.$note->nid.'/edit',
- '#attributes' => array(
- 'class' => array('personal-note-link', 'personal-note-edit'),
- 'title' => t('Edit your @title\'s notes.', array('@title'=>$entity->title)),
- 'src_nid' => $entity->nid,
- 'note_nid' => $note->nid,
- ),
- );
- }else{
- // else create one
- $link = array(
- // get the content type from settings OR create the content type with module install
- '#path' => '/node/add/note',
- '#query' => array(
- 'target_id'=>$entity->nid,
- ),
- '#attributes' => array(
- 'class' => array('personal-note-link', 'personal-note-create'),
- 'title' => t('create a note for @title.', array('@title'=>$entity->title)),
- 'src_nid' => $entity->nid,
- ),
- );
- }
- if(isset($link)){
- $link['#theme'] = 'materio_personalnotes_note_link';
- // dsm($link, 'link');
- drupal_add_js(drupal_get_path('module', 'materio_personalnotes').'/js/dist/materio_personalnotes.min.js');
- return $link;
- }
- return;
- }
- /**
- * Implements hook_form_alter().
- */
- function materio_personalnotes_form_alter(&$form, &$form_state, $form_id) {
- // dsm($form_id);
- if($form_id == "note_node_form" && isset($_GET['target_id']) && $target_id = $_GET['target_id']){
- // dsm($_GET, 'get');
- // dsm($target_id, 'target_id');
- // dsm($form, 'form');
- // dsm($form_state, 'form_state');
- $form['field_target_content_nid']['und'][0]['value']['#default_value'] = $target_id;
- $form['field_target_content_nid']['und'][0]['value']['#type'] = 'hidden';
- }
- }
- /**
- * Implements hook_theme().
- */
- function materio_personalnotes_theme($existing, $type, $theme, $path) {
- return array(
- 'materio_personalnotes_note_link' => array(
- 'variables' => array('path' => NULL, 'query' => array(), 'attributes' => array()),
- ),
- );
- }
- function theme_materio_personalnotes_note_link($vars){
- return l(
- '<i class="fi-pencil"></i>',
- $vars['path'],
- array(
- 'attributes' => $vars['attributes'],
- 'html' => true,
- 'query' => $vars['query'],
- )
- );
- }
- /**
- * Implements hook_block_info().
- */
- // function materio_personalnotes_block_info() {
- //
- // TODO: add my notes block
- // $blocks[''] = array(
- // 'info' => t(''),
- // 'cache' => DRUPAL_NO_CACHE
- // );
- //
- // return $blocks;
- // }
|