$flag); $block = block_load('materio_flag', $block_name); $block_content = _block_render_blocks(array($block)); $build = _block_get_renderable_array($block_content); $block_rendered = drupal_render($build); $rep['block'] = $block_rendered; if(isset($block_nav_name)){ $block = block_load('materio_flag', $block_nav_name); $block_content = _block_render_blocks(array($block)); $build = _block_get_renderable_array($block_content); $block_rendered = drupal_render($build); $rep['block_nav'] = $block_rendered; } drupal_json_output($rep); } /** * materio_flag_createlist($type) * */ function materio_flag_createlist_form($type){ $debug = false; $path = 'flag-lists/add/' . $type; // check if request is ajax, if not rediret if (!$debug && (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')) { drupal_goto('flag-lists/add/' . $type); exit ; } // menu_set_active_item($path); // $return = menu_execute_active_handler($path, FALSE); // if (is_int($return)) { // switch ($return) { // case MENU_NOT_FOUND : // drupal_add_http_header('Status', '404 Not Found'); // break; // case MENU_ACCESS_DENIED : // drupal_add_http_header('Status', '403 Forbidden'); // break; // case MENU_SITE_OFFLINE : // drupal_add_http_header('Status', '503 Service unavailable'); // break; // } // } elseif (isset($return)) { // $form_state['build_info']['args'] = array(NULL, 'breve'); // $f = drupal_get_form('flag_lists_form', $form_state); // dsm($f); $form = array( '#type' => 'form', '#id' => 'materio-flag-create-list-form', ); $form['type'] = array( '#type' => 'hidden', '#value' => $type, '#name' => 'type', ); $form['listname'] = array( '#type' => 'textfield', '#title' => t('Create new @name', array('@name'=>variable_get('flag_lists_name', 'list'))), '#default_value' => '', // '#size' => 100, '#maxlength' => 255, '#name' => 'flag-lists-name', '#description' => t('A short, descriptive title for this Folder list. Limit to 255 characters.'), ); $form['actions'] = array( '#prefix' => '
', '#suffix' => '
', ); $form['actions']['create'] = array( '#type' => 'submit', '#value' => t('create'), '#name' => 'create', ); $form['actions']['cancel'] = array( '#type' => 'button', '#value' => t('cancel'), '#name' => 'cancel', ); // dsm($form, 'form'); $return = drupal_render($form); $rep = array( 'rendered_form'=>$return, ); if ($debug) { dsm($rep, 'rep'); return "debug display"; }else{ drupal_json_output($rep); } } /** * materio_flag_editlist_form() */ function materio_flag_editlist_form($type, $fid){ $debug = false; $path = 'flags/lists/edit/' . $fid; // check if request is ajax, if not rediret if (!$debug && (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')) { drupal_goto($path); exit ; } // If name is numeric, then we have the fid, so get the name. if (is_numeric($fid)) { $name = db_select('flag_lists_flags', 'f') ->fields('f', array('name')) ->condition('fid', $fid) ->execute() ->fetchField(); } if(flag_lists_is_owner('edit', $fid)){ $flag = flag_lists_get_flag($name); $form = array( '#type' => 'form', '#id' => 'materio-flag-edit-list-form', ); $form['type'] = array( '#type' => 'hidden', '#value' => $type, '#name' => 'type', ); $form['fid'] = array( '#type' => 'hidden', '#value' => $fid, '#name' => 'fid', ); $form['name'] = array( '#type' => 'hidden', '#value' => $name, '#name' => 'name', ); $form['listtitle'] = array( '#type' => 'textfield', '#title' => t('Edit this '.variable_get('flag_lists_name', 'list')), '#value' => $flag->title, // '#size' => 100, '#maxlength' => 255, '#name' => 'flag-lists-title', '#description' => t('A short, descriptive title for this Folder list. Limit to 255 characters.'), ); $form['actions'] = array( '#prefix' => '
', '#suffix' => '
', ); $form['actions']['save'] = array( '#type' => 'submit', '#value' => t('save'), '#name' => 'save', ); $form['actions']['delete'] = array( '#type' => 'submit', '#value' => t('delete'), '#name' => 'delete', ); $form['actions']['cancel'] = array( '#type' => 'button', '#value' => t('cancel'), '#name' => 'cancel', ); // dsm($form, 'form'); $return = drupal_render($form); $rep = array( 'rendered_form'=>$return, ); }else{ $rep = array( 'status' => 'error', 'message' => t('you do not have rights to edit this '.variable_get('flag_lists_name', 'list')), ); } if ($debug) { dsm($rep, 'rep'); return "debug display"; }else{ drupal_json_output($rep); } } function materio_flag_edit_list($fid, $name, $title){ $path = 'flags/lists/edit/' . $fid; // check if request is ajax, if not rediret if (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') { drupal_goto($path); exit ; } if(!flag_lists_is_owner('edit', $fid)){ $rep = array( 'error' => true, 'message' => t('You have not enough rights to edit this @name.', array('@name' => variable_get('flag_lists_name', t('list')))) ); }else if (flag_lists_title_exists($title, 'materiau') || flag_lists_title_exists($title, 'breve')){ $rep = array( 'error' => true, 'message' => t('You already have a @name with this name.', array('@name' => variable_get('flag_lists_name', t('list')))) ); }else{ $flag = flag_lists_get_flag($name); $flag->title = $title; flag_lists_set_messages($flag); flag_lists_save($flag); _flag_lists_clear_cache(); $rep = array( 'status' => 'saved', 'listname' => $name, 'listtitle' => $title, ); } drupal_json_output($rep); } function materio_flag_delete_list($fid){ $path = 'flags/lists/delete/' . $fid; // check if request is ajax, if not rediret if (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') { drupal_goto($path); exit ; } if(!flag_lists_is_owner('delete', $fid)){ $rep = array( 'error' => true, 'message' => t('You have not enough rights to delete this @name.', array('@name' => variable_get('flag_lists_name', t('list')))) ); }else{ // If name is numeric, then we have the fid, so get the name. if (is_numeric($fid)) { $name = db_select('flag_lists_flags', 'f') ->fields('f', array('name')) ->condition('fid', $fid) ->execute() ->fetchField(); } $flag = flag_lists_get_flag($name); flag_lists_fl_delete($flag); $rep = array( 'status' => 'saved', ); } drupal_json_output($rep); } function materio_flag_nodelinks(){ $nids = explode(';', $_REQUEST['nids']); if(count($nids)){ foreach ($nids as $nid) { $node = node_load($nid); $lks = render(materio_flag_get_entity_links($node, 'node')); $links[$nid] = $lks; } $rep = array( "status" => 1, "nids" => $nids, 'links' => $links, ); }else{ $rep['status'] = 0; } drupal_json_output($rep); } function materio_flag_user_bookmarks(){ global $user; drupal_set_title(t('My bookmarks'), PASS_THROUGH); $flaged = flag_get_user_flags('node'); // dsm($flaged, 'flaged'); $flag = flag_get_flag('bookmarks'); $flaged_content = $flaged['bookmarks']; // dsm($flaged_content, 'flaged_content'); $viewmode = isset($user->data['materiosearchapi_viewmode']) ? $user->data['materiosearchapi_viewmode'] : variable_get('defaultviewmode', 'full'); $limit = variable_get($viewmode.'_limite', '10'); $offset = pager_find_page() * $limit; $count = count($flaged_content); $max = $offset+$limit > $count ? $count : $offset+$limit; $i = 0; foreach ($flaged_content as $id => $item) { if($i >= $offset){ if($i < $max){ if($item->entity_type == 'node'){ $items[] = node_load($id); } }else{ break; } } } $ret['#items'] = $items; $ret['#theme'] = 'materio_flag_mylists_list'; $ret['#view_mode'] = $viewmode; $ret['#fid'] = $flag->fid; $ret['#count'] = $count; $ret['#name'] = variable_get('flag_lists_name', 'list'); $ret['#title'] = $flag->title; pager_default_initialize($count, $limit); $ret['#pager'] = theme('pager'); drupal_add_js(drupal_get_path('module', 'materio_flag').'/js/materio_flag-ck.js'); return $ret; } function materio_flag_user_lists($fid){ global $user; $flag = flag_lists_get_flag($fid); // dsm($flag, 'flag'); drupal_set_title(_materio_flag_get_listpagetitle($flag), PASS_THROUGH); $flaged_content = flag_lists_get_flagged_content($fid, $user->uid); // dsm($flaged_content, 'flaged_content'); $viewmode = isset($user->data['materiosearchapi_viewmode']) ? $user->data['materiosearchapi_viewmode'] : variable_get('defaultviewmode', 'full'); $limit = variable_get($viewmode.'_limite', '10'); $offset = pager_find_page() * $limit; $count = count($flaged_content); $max = $offset+$limit > $count ? $count : $offset+$limit; for ($i=$offset; $i < $max; $i++) { if($flaged_content[$i]->entity_type == 'node'){ $items[] = node_load($flaged_content[$i]->entity_id); } } $ret['#items'] = $items; $ret['#theme'] = 'materio_flag_mylists_list'; $ret['#view_mode'] = $viewmode; $ret['#fid'] = $fid; $ret['#count'] = $count; $ret['#name'] = variable_get('flag_lists_name', 'list'); $ret['#title'] = $flag->title; pager_default_initialize($count, $limit); $ret['#pager'] = theme('pager'); return $ret; } function materio_flag_ajax_list($fid, $page = 0){ $debug = false; $_GET['page'] = $page; if($fid == 1){ $list_path = $path = 'bookmarks'; }else{ $list_path = 'lists'; $path = $list_path.'/'.$fid; } // check if request is ajax, if not rediret to search_api_page page with right keys if (!$debug && (!isset($_SERVER['HTTP_X_REQUESTED_WITH']) || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')) { drupal_goto($path, array('query'=>array('page'=>$page)), 301); exit; } if(isset($_GET['current_path'])){ // dsm($_GET['current_path'], '$_GET[current_path]'); // url() generates the prefix using hook_url_outbound_alter(). Instead of // running the hook_url_outbound_alter() again here, extract the prefix // from url(). url('', array('prefix' => &$prefix)); $cur_path = str_replace($base_url.base_path().$prefix, '', $_GET['current_path']); // dsm($cur_path, 'cur_path'); $cur_is_list_path = strpos($cur_path, $list_path); // dsm($matches, '$matches'); if($cur_is_list_path === false){ $rep = array( "redirect" => $base_url.base_path().$prefix.$path, ); drupal_json_output($rep); exit; } } // get results menu_set_active_item($path); $return = menu_execute_active_handler($path, FALSE); dsm($return, '$return'); if (is_int($return)) { switch ($return) { case MENU_NOT_FOUND : drupal_add_http_header('Status', '404 Not Found'); break; case MENU_ACCESS_DENIED : drupal_add_http_header('Status', '403 Forbidden'); break; case MENU_SITE_OFFLINE : drupal_add_http_header('Status', '503 Service unavailable'); break; } } elseif (isset($return)) { if (is_array($return)) { $rendered = drupal_render($return); } $rep = array( 'rendered' => $rendered, 'path' => $path, 'title' => drupal_get_title(), ); if ($debug) { dsm($rep, 'rep'); return "debug display"; }else{ drupal_json_output($rep); } } }