| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491 | <?php/** * @file * The Flag bookmark module. * * This module creates a default Flag when enabled. *  *//** * Implements hook_permission(). */function materio_flag_permission() {  return array(    /*     *'administer my module' =>  array(     *  'title' => t('Administer my module'),     *  'description' => t('Perform administration tasks for my module.'),     *),     */    // 'access mybookmarks block' =>  array(    //   'title' => t('Show my bookmarks block'),    //   'description' => t('access own bookmarks block'),    // ),  );}/** * Implements hook_menu(). */function materio_flag_menu() {  $items = array();  $base = array(    'type' => MENU_CALLBACK,    'file' => 'materio_flag.pages.inc',  );  $items['materioflag/refresh/block/bookmarks'] = $base+array(    'access arguments' => array('flag bookmarks'),    'page callback' => 'materio_flag_refresh_block',    'page arguments' => array(3),  );  $items['materioflag/refresh/block/lists'] = $base+array(    'access arguments' => array('create flag lists'),    'page callback' => 'materio_flag_refresh_block',    'page arguments' => array(3),  );  $items['materioflag/createlist/form/%'] = $base+array(    'access arguments' => array('create flag lists'),    'access callback' => 'user_access',    'page callback' => 'materio_flag_createlist_form',    'page arguments' => array(3),  );    $items['materioflag/editlistform/%/%'] = $base+array(    'access arguments' => array('create flag lists'),    'access callback' => 'user_access',    'page callback' => 'materio_flag_editlist_form',    'page arguments' => array(2,3),  );    $items['materioflag/editlist/%/%'] = $base+array(    'access arguments' => array('create flag lists'),    'access callback' => 'user_access',    'page callback' => 'materio_flag_edit_list',    'page arguments' => array(2,3),  );  $items['materioflag/deletelist/%'] = $base+array(    'access arguments' => array('create flag lists'),    'access callback' => 'user_access',    'page callback' => 'materio_flag_delete_list',    'page arguments' => array(2,3),  );  $items['materioflag/nodelinks'] = $base+array(    'access arguments' => array('create flag lists'),    'access callback' => 'user_access',    'page callback' => 'materio_flag_nodelinks',    // 'page arguments' => array(3),  );    $items['lists/%'] = $base+array(    'access arguments' => array('view flag lists'),    'access callback' => 'user_access',    'page callback' => 'materio_flag_user_lists',    'page arguments' => array(1),  );   $items['materioflag/ajax/list/%'] = $base+array(    'page callback' => 'materio_flag_ajax_list',    'access arguments' => array('create flag lists'),    'access callback' => 'user_access',    'page arguments' => array(3, 4),  );  return $items;}/** * Implements hook_menu_alter(). */function materio_flag_menu_alter(&$items) {  // Example - disable the page at node/add  /*   *$items['node/add']['access callback'] = FALSE;   */  // disable tabs on user page  $items['user/%user/flags/lists']['access callback'] = false;  $items['user/%user/flags/lists/%']['access callback'] = false;}/** * Implements hook_block_info(). */function materio_flag_block_info() {    $blocks['materio_flag_mybookmarks'] = array(    'info' => t('My bookmarks'),    'cache' => DRUPAL_NO_CACHE  ); $blocks['materio_flag_mylists'] = array(    'info' => t('My Materio flag lists'),    'cache' => DRUPAL_NO_CACHE  );  $blocks['materio_flag_mylists_nav'] = array(    'info' => t('My Materio flag lists navigation'),    'cache' => DRUPAL_NO_CACHE  );  return $blocks;}/** * Implements hook_block_view(). */function materio_flag_block_view($delta = '') {  global $user;  $block = array();  switch ($delta) {    case 'materio_flag_mybookmarks':      if(user_access('access mybookmarks block')){        $userflags = flag_get_user_flags('node');        //dsm($userflags, 'userflags');        if(isset($userflags['bookmarks'])){        	$userbookmarks = array();  	      foreach ($userflags['bookmarks'] as $nid => $flag) {        		$userbookmarks[] = node_load($nid);  	      }  	      $block['subject'] = t('My bookmarks (@len)', array("@len"=>count($userbookmarks)));  	      $block['content'] = theme('materio_flag_mybookmarks_block', array("bookmarks"=>$userbookmarks, "viewmode"=>"bookmark"));        }else{        	$block['subject'] = t('My bookmarks');        	$block['content'] = t('No bookmarks yet. Add bookmarks on clicking on results star');        }        drupal_add_js(drupal_get_path('module', 'materio_flag').'/js/materio_flag-ck.js');      }      break;    case 'materio_flag_mylists':      if(user_access('create flag lists')){        $flags = flag_lists_get_user_flags(NULL, $user);        // $userflags = flag_get_user_flags('node');        // dsm($userflags, 'userflags');        // dsm($flags, 'flags');                foreach ($flags as $name => $flag) {          $flag->path = url('lists/'.$flag->fid);          $flaged_content = flag_lists_get_flagged_content($flag->fid, $user->uid);          // dsm($flaged_content, 'flaged_content');          $fcn = array();          foreach ($flaged_content as $entity) {            if($entity->entity_type == 'node'){              $node = node_load($entity->entity_id);              // dsm($node, 'node');              // $node->flag_names[] = $name;              $fcn[] = $node;            }          }          $lists[$name] = array(            'list' => $flag,            'content' => $fcn,          );        }        if(isset($lists)){          // $block['subject'] = t('My !listname'.'s', array('!listname'=>t(variable_get('flag_lists_name', 'list'))));          $block['subject'] = t('My '.variable_get('flag_lists_name', 'list').'s');          $block['content'] = theme('materio_flag_mylists_block', array("lists"=>$lists, "viewmode"=>"bookmark"));          // $block['content'] = theme('flag_lists_user_page', array('uid' => $user->uid));        }else{          $block['subject'] = t('My '. variable_get('flag_lists_name', 'list') .'s');          $block['content'] = t('No !listname yet. Add !listname on clicking on results star', array('!listname'=>variable_get('flag_lists_name', 'list')));        }        drupal_add_js(drupal_get_path('module', 'materio_flag').'/js/materio_flag-ck.js');      }      break;    case 'materio_flag_mylists_nav':      if(user_access('create flag lists')){        $flags = flag_lists_get_user_flags(NULL, $user);        foreach ($flags as $name => $flag) {          $flaged_content = flag_lists_get_flagged_content($flag->fid, $user->uid);          $flag->flaged_content = $flaged_content;          $flags[$name] = $flag;        }        // $block['subject'] = t('My !listname'.'s', array('!listname'=>variable_get('flag_lists_name', 'list')));        $block['subject'] = t('My '.variable_get('flag_lists_name', 'list').'s');        $block['content'] = theme('materio_flag_mylists_nav_block', array("flags"=>$flags));        // $block['content'] = theme('flag_lists_user_page', array('uid' => $user->uid));      }      break;  }  return $block;}/** * Implements hook_entity_info_alter(). */function materio_flag_entity_info_alter(&$entity_info) {  $entity_info['node']['view modes']['bookmark'] = array(    'label' => t('Bookmark'),    'custom settings' => TRUE,  );}/** * Implements hook_entity_view(). * * Note this is broken for taxonomy terms. @see http://drupal.org/node/1067120 */function materio_flag_entity_view($entity, $type, $view_mode, $langcode) {  if($type == 'node'){    if(user_access('create flag lists') && $view_mode != 'print'){            $entity->content['flaglistslinks'] = materio_flag_get_entity_links($entity, $type, $view_mode);      drupal_add_css(drupal_get_path('module', 'flag') . '/theme/flag.css');      drupal_add_js(drupal_get_path('module', 'flag') . '/theme/flag.js');      // Do we have a list template for this node type, or are we s      if (flag_lists_template_exists($entity->type)) {        global $user;        if ($flags = flag_lists_get_user_flags($entity->type, $user)) {          foreach ($flags as $flag) {            // dsm($flag, 'flag');            if ( ($flag->module == 'flag_lists' && _flag_lists_is_flagged($flag, $entity->nid, $user->uid, 0)) || $flag->is_flagged($entity->nid) ) {              $entity->flags[] = $flag;                  }          }        }      }          }  }}function materio_flag_get_entity_links($entity, $type, $view_mode = null){  // dsm($entity, 'entity');  // Do we have a list template for this node type, or are we s  if (!flag_lists_template_exists($entity->type)) {    return;  }  global $user;  $links = array();  # if flag name is provided we are on flaglists content list (block mylists)  if($view_mode == 'bookmark'){    // TODO:  define view mode in settings      // if (isset($entity->flag_names) && $flags = flag_lists_get_user_flags($entity->type, $user)) {    //   // dsm($flags, 'flags');    //   // TODO:  limit flag link by current flag list      //   foreach ($flags as $flag) {    //     //dsm($flag->name, 'flag');    //     if(in_array($flag->name, $entity->flag_names)){    //       if ($flag->module == 'flag_lists') {    //         $action = _flag_lists_is_flagged($flag, $entity->nid, $user->uid, 0) ? 'unflag' : 'flag';    //       } else {    //         $action = $flag->is_flagged($entity->nid) ? 'unflag' : 'flag';    //       }      //       $flag->module = 'materio_flag';    //       $link = $flag->theme($action, $entity->nid);    //       // If it's a list, fix the link.    //       if ($flag->module == 'flag_lists') {    //         flag_lists_fix_link($link, $action);    //       }    //       $items[] = array(    //         'data' => $link,    //         'class' => array('flag-lists-link', $action.'-action'),    //       );    //       // array_splice($entity->flag_names, array_search($flag->name, $entity->flag_names), 1);    //       // dsm($entity->flag_names, 'entity->flag_name');    //       // break;    //     }    //   }    // }  #normal display  }else{    if ($flags = flag_lists_get_user_flags($entity->type, $user)) {      // dsm($flags, 'flags');      // Build the list of lists for this node.      foreach ($flags as $flag) {        // dsm($flag, 'flag');        if ($flag->module == 'flag_lists') {          $action = _flag_lists_is_flagged($flag, $entity->nid, $user->uid, 0) ? 'unflag' : 'flag';        }        else {          $action = $flag->is_flagged($entity->nid) ? 'unflag' : 'flag';;        }        $link = $flag->theme($action, $entity->nid);        // If it's a list, fix the link.        if ($flag->module == 'flag_lists') {          flag_lists_fix_link($link, $action);        }        $items[] = array(          'data' => $link,          'class' => array('flag-lists-link', $action.'-action'),        );      }    }        // dsm($items, 'items '.$entity->title);    #create new list    $link = l(      '<i class="icon-plus"></i> <span>' . t('New @name', array('@name' => t(variable_get('flag_lists_name', 'list')))) . '</span>',       'flag-lists/add/' . $entity->type,      array(        'attributes' => array(          'class' => array('flag-lists-create'),          'title' => t('create a new @name and use it.', array('@name'=>t(variable_get('flag_lists_name', 'list')))),          'nid' => $entity->nid,          'token' => flag_get_token($entity->nid),        ),        'html' => TRUE,      )    );        $create = array(      'data' => $link,      'class' => array('flag-lists-create'),    );  }  if(isset($items)){    $ops = array(      '#node' => $entity,       '#items' => $items,    );  }    if(isset($create)){     $ops['#create'] = $create;  }    if(isset($ops)){    // dsm($ops, 'ops');    drupal_add_js(drupal_get_path('module', 'materio_flag').'/js/materio_flag-ck.js');    $ops['#theme'] = "materio_flag_mylists_entity_links";    return $ops;  }  return;}function _materio_flag_get_listpagetitle($flag){  $cont = '<i class="icon-materio-folder"></i>';  $cont .= '<span class="'.$flag->name.'">'.check_plain($flag->title).'</span>';    if(flag_lists_is_owner('edit', $flag->fid)){              $cont .= l('<i class="icon-wrench"></i>',                 'flags/lists/edit/'.$flag->fid,                 array(                  'html'=>true,                  'attributes'=>array('class'=>array('edit-list', $flag->name)),                )              );   }            return $cont;}/** * Implements hook_theme(). */function materio_flag_theme($existing, $type, $theme, $path) {  return array(    'materio_flag_mybookmarks_block' => array(      'arguments' => array(),      'template' => 'materio-flag-mybookmarks-block',      'path' => drupal_get_path('module', 'materio_flag').'/templates',    ),    'materio_flag_mylists_block' => array(      'arguments' => array(),      'template' => 'materio-flag-mylists-block',      'path' => drupal_get_path('module', 'materio_flag').'/templates',    ),    'materio_flag_mylists_nav_block' => array(      'arguments' => array(),      'template' => 'materio-flag-mylists-nav-block',      'path' => drupal_get_path('module', 'materio_flag').'/templates',    ),    'materio_flag_mylists_entity_links' => array(      'variables' => array('node' => NULL, 'create' => NULL, 'items' => array()),    ),    'materio_flag_mylists_list' => array(      'template' => 'materio-flag-mylists-list',      'path' => drupal_get_path('module', 'materio_flag').'/templates',      'variables' => array(        'count' => 0,        'items' => array(),        'view_mode' => 'teaser',        'pager' => NULL,        'fid' => null,        'name' => null,        'title' => null,      ),    ),  );}function template_preprocess_materio_flag_mybookmarks_block(&$vars){	// dsm($vars, 'vars');}function template_preprocess_materio_flag_mylists_block(&$vars){  // dsm($vars, 'vars');}function template_preprocess_materio_flag_mylists_nav_block(&$vars){  // dsm($vars, 'vars');}/** * theme_materio_flag_mylists_entity_links() *  * see theme_flag_lists_list() */function theme_materio_flag_mylists_entity_links($vars){    // $node = $vars['node'];  $items = $vars['items'];  // dsm($vars, 'vars HO');  if(isset($vars['create']))    $items[] = $vars['create'];    return theme('item_list', array('items' => $items, 'type' => 'ul', 'attributes' => array('class' => 'flag-lists-entity-links')));}function template_preprocess_materio_flag_mylists_list(&$vars) {    $vars['list_count'] = format_plural(    $vars['count'],    '@name @title contains 1 item.', // in @sec seconds    '@name @title contains @count items.', // in @sec seconds    array(      '@name' => t($vars['name']),      '@title' => $vars['title'],    )  );  // dsm($vars, '$vars');}
 |