materio_flag.pages.inc 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. <?php
  2. /**
  3. * materio_flag_refresh_blocks($flag)
  4. *
  5. */
  6. function materio_flag_refresh_block($flag){
  7. switch ($flag) {
  8. case 'bookmarks':
  9. $block_name = 'materio_flag_mybookmarks';
  10. break;
  11. case 'lists':
  12. $block_name = 'materio_flag_mylists';
  13. $block_nav_name = 'materio_flag_mylists_nav';
  14. break;
  15. }
  16. if(!isset($block_name))
  17. return;
  18. $rep = array();
  19. $block = block_load('materio_flag', $block_name);
  20. $block_content = _block_render_blocks(array($block));
  21. $build = _block_get_renderable_array($block_content);
  22. $block_rendered = drupal_render($build);
  23. $rep['block'] = $block_rendered;
  24. if(isset($block_nav_name))
  25. $block = block_load('materio_flag', $block_nav_name);
  26. $block_content = _block_render_blocks(array($block));
  27. $build = _block_get_renderable_array($block_content);
  28. $block_rendered = drupal_render($build);
  29. $rep['block_nav'] = $block_rendered;
  30. drupal_json_output($rep);
  31. }
  32. /**
  33. * materio_flag_createlist($type)
  34. *
  35. */
  36. function materio_flag_createlist_form($type){
  37. $debug = false;
  38. $path = 'flag-lists/add/' . $type;
  39. // check if request is ajax, if not rediret
  40. if (!$debug && (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')) {
  41. drupal_goto('flag-lists/add/' . $type);
  42. exit ;
  43. }
  44. // menu_set_active_item($path);
  45. // $return = menu_execute_active_handler($path, FALSE);
  46. // if (is_int($return)) {
  47. // switch ($return) {
  48. // case MENU_NOT_FOUND :
  49. // drupal_add_http_header('Status', '404 Not Found');
  50. // break;
  51. // case MENU_ACCESS_DENIED :
  52. // drupal_add_http_header('Status', '403 Forbidden');
  53. // break;
  54. // case MENU_SITE_OFFLINE :
  55. // drupal_add_http_header('Status', '503 Service unavailable');
  56. // break;
  57. // }
  58. // } elseif (isset($return)) {
  59. $form_state['build_info']['args'] = array(NULL, 'breve');
  60. // $f = drupal_get_form('flag_lists_form', $form_state);
  61. // dsm($f);
  62. $form = array(
  63. '#type' => 'form',
  64. '#id' => 'materio-flag-create-list-form',
  65. );
  66. $form['type'] = array(
  67. '#type' => 'hidden',
  68. '#value' => $type,
  69. '#name' => 'type',
  70. );
  71. $form['listname'] = array(
  72. '#type' => 'textfield',
  73. '#title' => t('Create new @name', array('@name'=>variable_get('flag_lists_name', 'list'))),
  74. '#default_value' => '',
  75. // '#size' => 100,
  76. '#maxlength' => 255,
  77. '#name' => 'flag-lists-name',
  78. '#description' => t('A short, descriptive title for this Folder list. Limit to 255 characters.'),
  79. );
  80. $form['actions'] = array(
  81. '#prefix' => '<div class="actions">',
  82. '#suffix' => '</div>',
  83. );
  84. $form['actions']['create'] = array(
  85. '#type' => 'submit',
  86. '#value' => t('create'),
  87. '#name' => 'create',
  88. );
  89. $form['actions']['cancel'] = array(
  90. '#type' => 'button',
  91. '#value' => t('cancel'),
  92. '#name' => 'cancel',
  93. );
  94. // dsm($form, 'form');
  95. $return = drupal_render($form);
  96. $rep = array(
  97. 'return'=>$return,
  98. );
  99. if ($debug) {
  100. dsm($rep, 'rep');
  101. return "debug display";
  102. }else{
  103. drupal_json_output($rep);
  104. }
  105. }
  106. function materio_flag_nodelinks(){
  107. $nids = explode(';', $_REQUEST['nids']);
  108. if(count($nids)){
  109. foreach ($nids as $nid) {
  110. $node = node_load($nid);
  111. $lks = render(materio_flag_get_entity_links($node, 'node'));
  112. $links[$nid] = $lks;
  113. }
  114. $rep = array(
  115. "status" => 1,
  116. "nids" => $nids,
  117. 'links' => $links,
  118. );
  119. }else{
  120. $rep['status'] = 0;
  121. }
  122. drupal_json_output($rep);
  123. }
  124. function materio_flag_user_lists($fid){
  125. global $user;
  126. $flag = flag_lists_get_flag($fid);
  127. // dsm($flag, 'flag');
  128. drupal_set_title('<i class="icon-materio-folder"></i>'.check_plain($flag->title), PASS_THROUGH);
  129. $flaged_content = flag_lists_get_flagged_content($fid, $user->uid);
  130. // dsm($flaged_content, 'flaged_content');
  131. $viewmode = isset($user->data['materiosearchapi_viewmode']) ? $user->data['materiosearchapi_viewmode'] : variable_get('defaultviewmode', 'full');
  132. $limit = variable_get($viewmode.'_limite', '10');
  133. $offset = pager_find_page() * $limit;
  134. $count = count($flaged_content);
  135. $max = $offset+$limit > $count ? $count : $offset+$limit;
  136. for ($i=$offset; $i < $max; $i++) {
  137. if($flaged_content[$i]->entity_type == 'node'){
  138. $items[] = node_load($flaged_content[$i]->entity_id);
  139. }
  140. }
  141. $ret['#items'] = $items;
  142. $ret['#theme'] = 'materio_flag_mylists_list';
  143. $ret['#view_mode'] = $viewmode;
  144. $ret['#fid'] = $fid;
  145. $ret['#count'] = $count;
  146. $ret['#name'] = variable_get('flag_lists_name', 'list');
  147. $ret['#title'] = $flag->title;
  148. pager_default_initialize($count, $limit);
  149. $ret['#pager'] = theme('pager');
  150. return $ret;
  151. }
  152. function materio_flag_ajax_list($fid, $page = 0){
  153. $debug = false;
  154. $_GET['page'] = $page;
  155. $path = 'lists/'.$fid;
  156. // check if request is ajax, if not rediret to search_api_page page with right keys
  157. if (!$debug && (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')) {
  158. drupal_goto($path, array('query'=>array('page'=>$page)), 301);
  159. exit;
  160. }
  161. // get results
  162. menu_set_active_item($path);
  163. $return = menu_execute_active_handler($path, FALSE);
  164. // dsm($return, '$return');
  165. if (is_int($return)) {
  166. switch ($return) {
  167. case MENU_NOT_FOUND :
  168. drupal_add_http_header('Status', '404 Not Found');
  169. break;
  170. case MENU_ACCESS_DENIED :
  171. drupal_add_http_header('Status', '403 Forbidden');
  172. break;
  173. case MENU_SITE_OFFLINE :
  174. drupal_add_http_header('Status', '503 Service unavailable');
  175. break;
  176. }
  177. } elseif (isset($return)) {
  178. if (is_array($return)) {
  179. $return = drupal_render($return);
  180. }
  181. $rep = array(
  182. 'return' => $return,
  183. 'path' => $path,
  184. 'title' => drupal_get_title(),
  185. );
  186. if ($debug) {
  187. dsm($rep, 'rep');
  188. return "debug display";
  189. }else{
  190. drupal_json_output($rep);
  191. }
  192. }
  193. }