Ситуация:
Пользователь состоит в трёх группах (OG).
Пользователь делает запись в блоге (это необязательная групповая нода).
Пользователь может отметить чекбокс куда разместить материал.
Вопрос: как ограничить количество групп в которые упадет материал, одной? По умолчанию юзер может отметить все группы в которых он состоит, что совсем не желательно.
Заранее спасибо.
Комментарии
Не думаю, что актуально уже вам, но:
для 6ого друпала в 2.0-dev необходимо в файле og.module в 2143 строке заменить TRUE на FALSE. Теперь вместо списка будет селект-бокс. Правда, работает он глупо - нельзя будет отказаться от групп.
Совсем забыл
Вот решение, вдруг кому-нибудь еще надо:
/**
* Helper function; Make the groups audience accept only a single group.
*/
function mymodule_form_alter(&$form, $form_state, $form_id) {
if (!empty($form['og_nodeapi']['visible']['og_groups'])) {
$options = array();
$options = array('') + $form['og_nodeapi']['visible']['og_groups']['#options'];
$form['og_nodeapi']['visible']['og_groups']['#type'] = 'select';
$form['og_nodeapi']['visible']['og_groups']['#multiple'] = FALSE;
$form['og_nodeapi']['visible']['og_groups']['#options'] = $options;
// Add own submit handler so we can cast the groups back to an array.
$form['#submit'][] = 'mymodule_og_audience_form_alter_submit';
}
}
/**
* Submit handler; Since we permit only a single group per content, we need to
* case to groups into an array
*/
function mymodule_og_audience_form_alter_submit($form, &$form_state) {
if (!empty($form_state['values']['og_groups']) && !is_array($form_state['values']['og_groups'])) {
$form_state['values']['og_groups'] = drupal_map_assoc((array)$form_state['values']['og_groups']);
} elseif (empty($form_state['values']['og_groups'])) {
$form_state['values']['og_groups'] = array();
}
}
Если пользователь не выберет ни одну из групп, то документ попадет в личный блог пользователя.
Mr.Alinaki, а куда этот код нужно вставлять?
В свой модуль. Ну или смотрите аттач. Я правда на орге еще не выкладывал, надо причесывать.
Mr.Alinaki - сенькс!
Для семерки есть реш-е?