123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427 |
- <?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/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('create 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_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'=>variable_get('flag_lists_name', 'list')));
- $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 !listname'.'s', array('!listname'=>variable_get('flag_lists_name', 'list')));
- $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) {
- // # code...
- // }
- $block['subject'] = t('My !listname'.'s', array('!listname'=>variable_get('flag_lists_name', 'list')));
- $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')){
- $flaglists_links = materio_flag_get_entity_links($entity, $type, $view_mode);
- // dsm($flaglists_links, 'flaglists_links');
- $entity->content['links']['flaglistslinks'] = array('#markup' => $flaglists_links,"#html"=>true);
- drupal_add_css(drupal_get_path('module', 'flag') . '/theme/flag.css');
- drupal_add_js(drupal_get_path('module', 'flag') . '/theme/flag.js');
- }
- }
- }
- 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;
- # 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'),
- );
- }
- }
-
- #create new list
- $link = l(
- '<span>' . t('New @name', array('@name' => variable_get('flag_lists_name', t('list')))) . '</span> <i class="icon-plus"></i>',
- 'flag-lists/add/' . $entity->type,
- array(
- // 'query' => drupal_get_destination(),
- 'attributes' => array(
- 'class' => array('flag-lists-create'),
- 'title' => t('create a new @name and use it.', array('@name'=>variable_get('flag_lists_name', t('list')))),
- 'nid' => $entity->nid,
- 'token' => flag_get_token($entity->nid),
- ),
- 'html' => TRUE,
- )
- );
-
- $create = array(
- 'data' => $link,
- 'class' => array('flag-lists-create'),
- );
- }
- // if( (!isset($items) || !count($items)) && !isset($create))
- // return;
- if(isset($items)){
- $ops = array(
- 'node' => $entity,
- 'items' => $items,
- );
- }
-
- if(isset($create)){
- $ops['create'] = $create;
- // drupal_add_css(drupal_get_path('module', 'flag') . '/theme/flag.css');
- // drupal_add_js(drupal_get_path('module', 'flag') . '/theme/flag.js');
- }
-
- if(isset($ops)){
- // dsm($ops, 'ops');
- drupal_add_js(drupal_get_path('module', 'materio_flag').'/js/materio_flag-ck.js');
- return theme('materio_flag_mylists_entity_links', $ops);
- }
- return;
- }
- /**
- * 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' => $vars['name'],
- '@title' => $vars['title'],
- )
- );
- // dsm($vars, '$vars');
- }
|