materio_personalnotes.module 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. <?php
  2. /**
  3. * Implements hook_init().
  4. */
  5. function materio_personalnotes_init() {
  6. drupal_add_js(drupal_get_path('module', 'materio_personalnotes').'/js/materio_personalnotes.js');
  7. }
  8. /**
  9. * Implements hook_permission().
  10. */
  11. function materio_personalnotes_permission() {
  12. $perms = array(
  13. 'create own personal notes' => array(
  14. 'title' => t('Create own personal notes'),
  15. 'description' => t('Create own personal notes'),
  16. ),
  17. );
  18. return $perms;
  19. }
  20. // function materio_personalnotes_menu(){
  21. // $items = array();
  22. //
  23. // $base = array(
  24. // 'type' => MENU_CALLBACK,
  25. // 'file' => 'materio_personalnotes.pages.inc',
  26. // );
  27. //
  28. // $items['materio_personalnotes/registerblock'] = $base+array(
  29. // 'title' => 'Materio base user ajax',
  30. // 'page callback' => 'materio_personalnotes_registerblock',
  31. // // 'page arguments' => array(),
  32. // 'access callback' => TRUE,
  33. // );
  34. //
  35. // return $items;
  36. // }
  37. /**
  38. * Implements hook_menu_alter().
  39. */
  40. // function materio_personalnotes_menu_alter(&$items) {
  41. // $items['user/%user']['access callback'] = 'user_access';
  42. // $items['user/%user']['access arguments'] = array('view own user profile');
  43. // }
  44. /**
  45. * Implements hook_entity_view().
  46. *
  47. * Note this is broken for taxonomy terms. @see http://drupal.org/node/1067120
  48. */
  49. function materio_personalnotes_entity_view($entity, $type, $view_mode, $langcode) {
  50. if($type == 'node'){
  51. if(user_access('create own personal notes') && $view_mode != 'print'){
  52. $entity->content['personalnotelink'] = materio_personalnotes_get_note_link($entity);
  53. // drupal_add_css(drupal_get_path('module', 'flag') . '/theme/flag.css');
  54. // drupal_add_js(drupal_get_path('module', 'flag') . '/theme/flag.js');
  55. }
  56. }
  57. }
  58. function materio_personalnotes_get_note_link($entity){
  59. // if note alredy exists link to it
  60. // else create one
  61. #create new list
  62. $link = array(
  63. '#path' => '/node/add/note',
  64. '#query' => array(
  65. // 'edit[field_target_content][und][0][target_id]' => $entity->title.'('.$entity->nid.')',
  66. 'target_id'=>$entity->nid,
  67. ),
  68. // get the content type from settings OR create the content type with module install
  69. // TODO: add data (node nid) for pre-filled reference field of new note
  70. '#attributes' => array(
  71. 'class' => array('personal-note-link', 'personal-note-create'),
  72. 'title' => t('create a note for @title.', array('@title'=>$entity->title)),
  73. 'nid' => $entity->nid,
  74. ),
  75. '#theme'=>'materio_personalnotes_note_link',
  76. );
  77. if(isset($link)){
  78. // dsm($link, 'link');
  79. drupal_add_js(drupal_get_path('module', 'materio_personalnotes').'/js/dist/materio_personalnotes.min.js');
  80. return $link;
  81. }
  82. return;
  83. }
  84. /**
  85. * Implements hook_form_alter().
  86. */
  87. function materio_personalnotes_form_alter(&$form, &$form_state, $form_id) {
  88. // dsm($form_id);
  89. /*
  90. *if (isset($form['type']) && $form['type']['#value'] . '_node_settings' == $form_id) {
  91. * $form['workflow']['upload_' . $form['type']['#value']] = array(
  92. * '#type' => 'radios',
  93. * '#title' => t('Attachments'),
  94. * '#default_value' => variable_get('upload_' . $form['type']['#value'], 1),
  95. * '#options' => array(t('Disabled'), t('Enabled')),
  96. * );
  97. *}
  98. */
  99. if($form_id == "note_node_form" && $target_id = $_GET['target_id']){
  100. dsm($_GET, 'get');
  101. dsm($target_id, 'target_id');
  102. dsm($form, 'form');
  103. dsm($form_state, 'form_state');
  104. // $form['#after_build'][] = 'materio_personalnotes_noteform_after_build';
  105. // $form_state['field']['field_target_content']['und']['instance']['default_value'] = $target_id;
  106. $form['field_target_content_nid']['und'][0]['value']['#default_value'] = $target_id;
  107. $form['field_target_content_nid']['und'][0]['value']['#type'] = 'hidden';
  108. // $form_state['field']['field_target_content']['und']['items_count'] = 1;
  109. }
  110. }
  111. /**
  112. * Implements hook_node_presave().
  113. */
  114. function materio_personalnotes_node_presave($node) {
  115. /*
  116. *if ($node->nid && $node->moderate) {
  117. * // Reset votes when node is updated:
  118. * $node->score = 0;
  119. * $node->users = '';
  120. * $node->votes = 0;
  121. *}
  122. */
  123. /* Your code here */
  124. }
  125. // function materio_personalnotes_noteform_after_build($form, &$form_state) {
  126. // dsm($_GET, 'get');
  127. // dsm($form, 'form');
  128. // dsm($form_state, 'form_state');
  129. //
  130. // $form_state['field_target_content']['und'][0]['target_id']['#default_value'] = $target_id;
  131. //
  132. // // switch ($form['form_id']['#value']) {
  133. // //
  134. // // case 'your_form':
  135. // //
  136. // // $form['field_yournoderef']['nid']['nid']['#value'] = arg(3);
  137. // // $form['field_yournoderef']['#access'] = false;
  138. // // break;
  139. // //
  140. // // }
  141. //
  142. // return $form;
  143. //
  144. // }
  145. /**
  146. * Implements hook_theme().
  147. */
  148. function materio_personalnotes_theme($existing, $type, $theme, $path) {
  149. return array(
  150. 'materio_personalnotes_note_link' => array(
  151. 'variables' => array('path' => NULL, 'query' => array(), 'attributes' => array()),
  152. ),
  153. );
  154. }
  155. function theme_materio_personalnotes_note_link($vars){
  156. return l(
  157. '<i class="fi-pencil"></i>',
  158. $vars['path'],
  159. array(
  160. 'attributes' => $vars['attributes'],
  161. 'html' => true,
  162. 'query' => $vars['query'],
  163. )
  164. );
  165. }