// Generate the link URL. $link_type = $flag->get_link_type(); $link = module_invoke($link_type['module'], 'flag_link', $flag, $action, $content_id); if(isset($link['title'])&&empty($link['html'])){ $link['title'] = check_plain($link['title']); }
// Replace the link with the access denied text if unable to flag. if($action == 'unflag'&&!$flag->access($content_id, 'unflag')){ $link['title'] = $flag->get_label('unflag_denied_text', $content_id); unset($link['href']); }
// Anonymous users always need the JavaScript to maintain their flag state. if($user->uid == 0){ $link_type['uses standard js'] = TRUE; }
// Load the JavaScript/CSS, if the link type requires it. if(!isset($initialized[$link_type['name']])){ if($link_type['uses standard css']){ drupal_add_css(drupal_get_path('module', 'flag') . '/theme/flag.css'); } if($link_type['uses standard js']){ drupal_add_js(drupal_get_path('module', 'flag') . '/theme/flag.js'); } $initialized[$link_type['name']] = TRUE; }
// Backward compatibility: The following section preserves some deprecated // variables either to make old flag.tpl.php files continue to work, or to // prevent PHP from generating E_NOTICEs there. @todo: Remove these sometime. $variables['setup'] = FALSE; $variables['last_action'] = $variables['status']; }
Комментарии
может быть это как то можно использовать?
global $user;
static $initialized = array();
// Some typing shotcuts:
$flag = &$variables['flag'];
$action = $variables['action'];
$content_id = $variables['content_id'];
$flag_css_name = str_replace('_', '-', $flag->name);
// Generate the link URL.
$link_type = $flag->get_link_type();
$link = module_invoke($link_type['module'], 'flag_link', $flag, $action, $content_id);
if (isset($link['title']) && empty($link['html'])) {
$link['title'] = check_plain($link['title']);
}
// Replace the link with the access denied text if unable to flag.
if ($action == 'unflag' && !$flag->access($content_id, 'unflag')) {
$link['title'] = $flag->get_label('unflag_denied_text', $content_id);
unset($link['href']);
}
// Anonymous users always need the JavaScript to maintain their flag state.
if ($user->uid == 0) {
$link_type['uses standard js'] = TRUE;
}
// Load the JavaScript/CSS, if the link type requires it.
if (!isset($initialized[$link_type['name']])) {
if ($link_type['uses standard css']) {
drupal_add_css(drupal_get_path('module', 'flag') . '/theme/flag.css');
}
if ($link_type['uses standard js']) {
drupal_add_js(drupal_get_path('module', 'flag') . '/theme/flag.js');
}
$initialized[$link_type['name']] = TRUE;
}
$variables['link_href'] = isset($link['href']) ? check_url(url($link['href'], $link)) : FALSE;
$variables['link_text'] = isset($link['title']) ? $link['title'] : $flag->get_label($action . '_short', $content_id);
$variables['link_title'] = isset($link['attributes']['title']) ? check_plain($link['attributes']['title']) : check_plain(strip_tags($flag->get_label($action . '_long', $content_id)));
$variables['status'] = ($action == 'flag' ? 'unflagged' : 'flagged');
$variables['flag_wrapper_classes_array'] = array();
$variables['flag_wrapper_classes_array'][] = 'flag-wrapper';
$variables['flag_wrapper_classes_array'][] = 'flag-' . $flag_css_name;
$variables['flag_wrapper_classes_array'][] = 'flag-' . $flag_css_name . '-' . $content_id;
$variables['flag_wrapper_classes'] = implode(' ', $variables['flag_wrapper_classes_array']);
$variables['flag_classes_array'] = array();
$variables['flag_classes_array'][] = 'flag';
$variables['flag_classes_array'][] = $variables['action'] . '-action';
$variables['flag_classes_array'][] = 'flag-link-' . $flag->link_type;
if (isset($link['attributes']['class'])) {
$variables['flag_classes_array'][] = $link['attributes']['class'];
}
if ($variables['after_flagging']) {
$inverse_action = ($action == 'flag' ? 'unflag' : 'flag');
$variables['message_text'] = $flag->get_label($inverse_action . '_message', $content_id);
$variables['flag_classes_array'][] = $variables['status'];
}
$variables['flag_classes'] = implode(' ', $variables['flag_classes_array']);
// Backward compatibility: The following section preserves some deprecated
// variables either to make old flag.tpl.php files continue to work, or to
// prevent PHP from generating E_NOTICEs there. @todo: Remove these sometime.
$variables['setup'] = FALSE;
$variables['last_action'] = $variables['status'];
}
по-моему, если добавить relationship по флагу, и этот флаг потом добавить полем, то там есть возможность переписать текст флага.
не. нельзя. а если можно то только одно и тоже название будет при флаге и при унфлаге
есть хук
function hook_flag_alter(&$flag) {
}
как им воспользоваться ???
вот пробую все решить вопрос
if (in_array($vars['flag']->name, array('add'))) {
$vars['action'] = 'what should I write?';
$vars['link_text'] = t('Remove Flag');
$vars['link_title'] = t('Remove Flag for this user');
}
}
меняется и для экшена и флаг и унфлаг
как условие
if ($action == 'unflag')
прописать правильно???