Вот собственно сделал дизайн всех кнопок, как хочу, но не получается заключить одну единственную в те самый div`ы, которые мне нужны.
При удалении ноды
Не могу заставить кнопку Cancel плясать как мне надо. при этом нашел, что можно ее удалить или изменить в файле node.pages.inc
Помогите, как или где ее стилизовать?
Комментарии
help плиз!
Насколько я вижу вторая это ссылка, а никак не кнопка. Если вы знаете как ее изменить, так и измените ее на кнопку со ссылкой.
Дык вот и не знаю, как и где задать ей, чтобы была именно тоже кнопкой! (
Вы себе на ровно месте создали проблему. Вы можете через css темизовать эту ссылку так, что она ничем не будет отличатся от обычной кнопки.
ткните пожалуйста, где вписать divы для кнопки cancel и как?
насколько я понял тут
Сорри, но я не могу понять зачем здесь использовать дополнительный див.
Вот вам готовое решение:
ссылка{
display: block;
background-color: #ddd;
border: 1px solid #aaa;
color:#444;
text-decoration: none;
cursor: default;
float: left;
margin-left: 5px;
padding:0 10px;
}
кнопка {
float: left;
}
Внутрь тэга
<a></а>
надо вставить код кнопки, назначение кнопке можно не указывать или указать пустое назначение. Это должно работать в чистом html, но я не знаю, можно ли заставить Друпал так делать.прошу прощения, в последнем моем посте не опубликовался кусок кода почему-то. Начну сначала, ибо понял, что не все объяснил правильно!
1) Итак, скриншот, который в первом посте, отображает ситуацию при удалении ноды. Задача, сделать из ссылки "Cancel" - кнопку "Cancel".
2) Насколько я разобрался код отвечающий за этот кусок лежит в файле node.page.inc
Вот кусок этого кода
<?phpfunction node_delete_confirm(&$form_state, $node) {
$form['nid'] = array(
'#type' => 'value',
'#value' => $node->nid,
);
return confirm_form($form,
t('Are you sure you want to delete %title?', array('%title' => $node->title)),
isset($_GET['destination']) ? $_GET['destination'] : 'node/'. $node->nid,
t('This action cannot be undone.'),
t('Delete'),
t('Cancel')
);
}?>
3) Пробовал поколдовать со строкой, где этот Cancel, но ничего не выходит. Обычно ругается на синтаксис, когда я вокруг div ставлю. При этом заметил такую особенность, что например поменять местами Delete и Cancel, то Cancel становится кнопкой а Delete ссылкой.
Так вот как в этом коде темизировать это самое Cancel? или в каком другом месте?
to romass
в css разберусь, что написать, главное не ясно, как назначить ей то, что я пропишу в стиле?
Это стандартная форма друпала, потому надо копать в сторону темизации форм. Искать где эта форма темизируется и переопределить свою функцию для темизации.
дык дело в том, что темизируется она также, как и все остальные ссылки в моей теме. Так я знаю, как сделать ссылку Cancel кнопкой, но тогда все ссылки будут такие же (
а мне нужно, чтобы только этой ссылке задать свой дизайн
Мда,на что люди время тратят
вот это
t('Cancel')
как-нибудь можно темизировать? или не туда копаю?
Это лишь строка для перевода.
http://api.drupal.org/api/function/confirm_form/6
Надо или альтерить или темизировать.
Dan
спасибо уже ближе чувствую подкрался я с Вашей помощью, но вот ставлю
$form['actions']['cancel'] = array('#type' => 'submit', '#value' => $no ? $no : t('Cancel'));
и эта моя ссылка-кнопка не возвращает документ, а удаляет (
Куда ставите? Надеюсь не котят душите?
Я думаю надо что-то типа:
if(in_array($form_id, array('node_delete_confirm','user_confirm_delete'))){
$form['actions']['cancel']['#type'] = 'submit';
$form['actions']['cancel']['#value'] = t('Cancel');
$form['actions']['cancel']['#submit'] = array('ИМЯ-ВАШЕГО-МОДУЛЯ_cancel_submit');
}
}
function ИМЯ-ВАШЕГО-МОДУЛЯ_cancel_submit($form, $form_state){
switch($form_state['values']['form_id']){
case 'user_confirm_delete': drupal_goto('user/'.$form_state['values']['_account']->uid); break;
case 'node_delete_confirm': drupal_goto('node/'.$form_state['values']['nid']); break;
}
}
А удаляет потому что функция обработчика не проверяет имя кнопки, ибо подразумевается что она одна.
Dan
Благодарствую! С Вашей помощью задушил кого нужно
p.s. всем остальным тоже спасибо. Сам виноват, не сразу объяснил, что нужно и своими кривыми руками не туда смотрел ))
Dan
Подскажите еще ,как решить эту же проблему с og?
Там аналогичная ситуация при вступлениии и выходе из группы отображается "отменить" ссылкой
Сам потыркал по аналогии и не получается
заранее спасибо
Можно ещё через template.php переопределить, но вот не помню какую функцию
RxB, ты не помнишь, а я не знаю
Может кто поможет найти истину...
Я проснулся недавно, как включусь полностью, может чего умного напишу
Спасибо, доброе утро )
Вот товарищи, нагуглил кое-чего, но это форма поиска, по-этому соответственно, все значения поменять на свои, посмотреть их можно в коде страницы, лучше Firebug'ом.
function phptemplate_preprocess_search_theme_form(&$variables) {
// The variable
$form['submit'] = array(
'#type' => 'image_button',
'#value' => t('Search'),
'#attributes' => array(
'class' => 'form-submit',
'src' => 'images/submitbutton.png',
),
);
unset($variables['form']['search_theme_form']['#printed']);
$variables['search']['search_theme_form'] = drupal_render($variables['form']['search_theme_form']);
$variables['search_form'] = implode($variables['search']);
}
?>
Пруфлинк http://drupal.org/node/316740 , ошибку комрада yo2lux поправил
вот и тот же темный лес. Аналогией с прошлым решение и делал
как именно сделать все эти $form и $variables для Cancel og? (
Ну посмотрите у себя в коде страницы, я не буду ради этого ставить модуль
Хотя бы толкните. Оригинал ниже
* Confirm og membership form
*/
function og_confirm_subscribe($form_state, $gid, $node, $account) {
$form['gid'] = array('#type' => 'value', '#value' => $gid);
$form['account'] = array('#type' => 'value', '#value' => $account);
if ($node->og_selective == OG_MODERATED) {
$form['request'] = array(
'#type' => 'textarea',
'#title' => t('Additional details'),
'#description' => t('Add any detail which will help an administrator decide whether to approve or deny your membership request.')
);
}
else {
$form['request'] = array(
'#type' => 'value',
'#value' => '',
);
}
return confirm_form($form,
t('Are you sure you want to join the group %title?', array('%title' => $node->title)),
'node/'. $node->nid, ' ',
t('Join'), t('Cancel'));
}
Dan, help (
Попробуйте строчку:
if(in_array($form_id, array('node_delete_confirm','user_confirm_delete'))){
заменить на:
if($form_id == 'confirm_form'){
сделал так
$form['gid'] = array('#type' => 'value', '#value' => $gid);
$form['account'] = array('#type' => 'value', '#value' => $account);
if ($node->og_selective == OG_MODERATED) {
$form['request'] = array(
'#type' => 'textarea',
'#title' => t('Additional details'),
'#description' => t('Add any detail which will help an administrator decide whether to approve or deny your membership request.')
);
if($form_id == 'confirm_form'){
$form['actions']['cancel']['#type'] = 'submit';
$form['actions']['cancel']['#value'] = t('Cancel');
$form['actions']['cancel']['#submit'] = array('og_cancel_submit');
}
}
else {
$form['request'] = array(
'#type' => 'value',
'#value' => '',
);
}
return confirm_form($form,
t('Are you sure you want to join the group %title?', array('%title' => $node->title)),
'node/'. $node->nid, ' ',
t('Join'), t('Cancel'));
}
function og_cancel_submit($form, $form_state){
switch($form_state['values']['form_id']){
case 'user_confirm_delete': drupal_goto('user/'.$form_state['values']['_account']->uid); break;
case 'node_delete_confirm': drupal_goto('node/'.$form_state['values']['nid']); break;
}
}
не знаю, правильно ли, но понял так. В итоге все как было ((( не туда наверное вставил... или не так?!
Не понял, это вы модуль OG правили что ли?
пробовал в нем.
переопределять что, мне не понятно. Понял, что отвечает этот кусок за то, что мне нужно. А как с ним управится не разобрался, душил котят пока что. А вообще, конечно, в templates все пропишу, когда будет ясно, что... Дык что не так я сделал, подскажите?
Мой способ не работает?
прописал в tempale.php
if($form_id == 'confirm_form'){
$form['actions']['cancel']['#type'] = 'submit';
$form['actions']['cancel']['#value'] = t('Cancel');
$form['actions']['cancel']['#submit'] = array('og_cancel_submit');
}
}
function phptemplate_og_cancel_submit($form, $form_state){
switch($form_state['values']['form_id']){
case 'user_confirm_delete': drupal_goto('user/'.$form_state['values']['_account']->uid); break;
case 'node_delete_confirm': drupal_goto('node/'.$form_state['values']['nid']); break;
}
}
не помогло.
если не трудно, стукните 301068553
Попробуй добавить этот код в модуль.
добавляю этот код, он ругается на строку, где уже есть функция function og_form_alter
при удалении этой функции, ничего не происходит, а отвечает за вывод, как я писал выше function og_confirm_subscribe
=\
Делаем новый модуль. Называем его lopata24.
Создаём файл lopata24.info со следующим содержимым:
description = Здесь описание модуля
version = 6.x-1.x
core = 6.x
Создаём файл lopata24.module:
<?php
function lopata24_form_alter(&$form, &$form_state, $form_id) {
if($form_id == 'confirm_form'){
$form['actions']['cancel']['#type'] = 'submit';
$form['actions']['cancel']['#value'] = t('Cancel');
$form['actions']['cancel']['#submit'] = array('lopata24_cancel_submit');
}
}
function lopata24_cancel_submit($form, $form_state){
drupal_goto('node');
}
?>
Смотрим, что происходит
пробую...
неа, не выходит ((
Хорошо, доберусь до тестового сайта - посмотрю.
жду
ну как там?
Вот такой код получился:
<?php
function submit_form_alter(&$form, &$form_state, $form_id) {
if(in_array($form_id, array('node_delete_confirm','user_confirm_delete', 'og_confirm_subscribe'))){
$form['actions']['cancel']['#type'] = 'submit';
$form['actions']['cancel']['#value'] = t('Cancel');
$form['actions']['cancel']['#submit'] = array('submit_cancel_submit');
}
}
function submit_cancel_submit($form, $form_state){
switch($form_state['values']['form_id']){
case 'user_confirm_delete': drupal_goto('user/'.$form_state['values']['_account']->uid); break;
case 'og_confirm_subscribe': drupal_goto('node/'.$form_state['values']['gid']); break;
case 'node_delete_confirm': drupal_goto('node/'.$form_state['values']['nid']); break;
}
}
?>
Хотя решать эту задачу надо всё таки через переопределение элементов confirm_form.
Спасибо. Очень приятна такая помощь!