Темизация node form взависимости от $_GET['destination']

Главные вкладки

Комментарии

Аватар пользователя iNFerNo iNFerNo 11 декабря 2012 в 11:26

Подскажите в хуке нашел следующее

<?php

[form_id] => Array
        (
            [
#type] => hidden
            
[#value] => facts_node_form
            
[#id] => edit-facts-node-form
            
[#parents] => Array
                
(
                    [
0] => form_id
                
)

        )

    [

#id] => facts-node-form
    
[#method] => post
    
[#action] => /node/add/facts/521?destination=node/521

?>

как мне записать [#action] сюда...

<?php

function mymodule_form_alter(&$form$form_state$form_id) {

if (

$form_id == 'facts_node_form'){

}

}

?>
Аватар пользователя iNFerNo iNFerNo 12 декабря 2012 в 22:36

"<a href="mailto:sas@drupal.org">sas@drupal.org</a>" wrote:
Можете менять содержимое $form

супер. все как доктор прописал.

если не сложно подскажите... что еще нужно добавить чтобы

при if (!isset($_GET['destination'])) выполнение ссылки было доступно только пользователю с ролью admin (цифровое значение роли), а всех других перекидывало на страницу не доступности страницы + вывод сообщения...

Аватар пользователя sas@drupal.org sas@drupal.org 13 декабря 2012 в 0:39

Так так, "выполнение ссылки" - а теперь постановку задачи пожалуйста огласите на человеческом языке, как пользователь.

Аватар пользователя iNFerNo iNFerNo 13 декабря 2012 в 8:31

При клике на ссылку если юзер - админ - выводилась форма создания, а если просто юзер... то редирект на страницу недоступности с выводом сообщения какого нить...

Аватар пользователя iNFerNo iNFerNo 13 декабря 2012 в 11:56

сузим задачу...

где access callback использовать? в каком хуке... для ограничения...

допустим создам пермишен для модуля своего юзать ссылку без destination

в противном случае нет доступа...

Аватар пользователя aljarreau aljarreau 13 декабря 2012 в 14:11

ребята всем привет!
я у вас впервые также первый раз использую друпалик, он мне понравился хороший cms ешник, мне тут одна компания гос.предприятие дали задание до завтрашнего утра предоставить им в 3 вариантах шаблона сайт, я вот скачал шаблоны с офф.сайта вставил все как полагается но нигде я не увидел как в header можн вставить допустим фото этого гос.предприятия, извините меня за глупый вопрос, просто я никогда в друпале этого не делал, вообщем мне надо сделать сайт там многие менюшки в основном будут идти в виде ссылок, извиняюсь если не так выражасюь.

Аватар пользователя iNFerNo iNFerNo 13 декабря 2012 в 15:36

Ну например

<?phpfunction mymodule_menu() {
    $items = array();
      
    $items['my-page'] = array(
        'title'           => 'Моя страница',
        'page callback'   => 'my_first_page',
        'access callback' => TRUE          
    );
    
    
    return $items;
}

function my_first_page() {
$page = array();

return $page;

?>

как это связать с этим тогда???

<?phpfunction mymodule_form_alter(&$form, $form_state, $form_id) {

if ($form_id == 'facts_node_form'){

 if (isset($_GET['destination'])) {
    
     $form['field_reference_to_fact_the_song'][und][0][nid]['#title'] = '';
     $form['field_reference_to_fact_the_song'][und][0][nid]['#description'] = '';
     
     }
     
     else {
     $form['field_reference_to_fact_the_song'][und][0][nid]['#title'] = 'Песня';
     }

}

}
?>

1. разное отображение поля формы ноды при создание при разных условиях (первый фрагмент кода)
2. создается страница (Моя страница)

как связать воедино это все дело. чтобы на созданную страницу редирект был только при условии что юзер наживем node/add/facts (форма - facts_node_form)

Аватар пользователя sas@drupal.org sas@drupal.org 13 декабря 2012 в 16:43

При клике на ссылку если юзер - админ - выводилась форма создания, а если просто юзер... то редирект на страницу недоступности с выводом сообщения какого нить...

- Даете права на создание facts только роли "админ" !
- Ничего писать не надо больше
- При попытке пользователя без прав "админ" перейти по ссылке node/add/facts - он будет переброшен на страницу drupal_access_denied

Аватар пользователя iNFerNo iNFerNo 13 декабря 2012 в 22:07

так ведь вопрос в том что юзер обычный по node/add/facts/521?destination=node/521 должен создавать. так что доступ к созданию всех юзеров должен быть

Аватар пользователя sas@drupal.org sas@drupal.org 14 декабря 2012 в 0:22

Создавать можно только по node/add/facts , а что у Вас 521 ? Я так понимаю что Вы хотите создавать не по родной ссылке для определённой роли - не знаю для чего Вам такое извращение, но в ракурсе Друпал Вам надо создать в _menu( новый page типа node/add/facts/destination/%node и у него определить 'access callback' по ролям

Аватар пользователя iNFerNo iNFerNo 14 декабря 2012 в 9:10

не это пример ссылки с destination

еще раз напишу как это написано выше я сейчас могу создать ноду

способ 1. node/add/facts/521?destination=node/521
способ 2. node/add/facts

в первом случае я создаю из конкретной ноды
во втором случае... по общей ссылке из меню создания нод...

так вот общую ссылку для обычных юзеров нужно редеректить на др страницу как вариант доступа нет с текстом сообщения каким нить (о причине).

вот и вся... задача никакого извращения.

Аватар пользователя sas@drupal.org sas@drupal.org 14 декабря 2012 в 10:37

"iNFerNo" wrote:
способ 1. node/add/facts/521?destination=node/521

destination=node/521
Однако я не могу не заметить, что Вы не изращене не ответили на вопрос - "почему 521 два раза ???
Но в любом случае
1 Вараинт
hook_menu(
.. 'node/add/facts/destination/%node
2 Вариант (movetone)
hook_form_alter(
if( ... && isset($_GET['destination'])){
drupal_access_denied();
drupal_exit();
}

Аватар пользователя iNFerNo iNFerNo 14 декабря 2012 в 10:54

"<a href="mailto:sas@drupal.org">sas@drupal.org</a>" wrote:
destination=node/521
Однако я не могу не заметить, что Вы не изращене не ответили на вопрос - "почему 521 два раза ???

ой... ну такая ссылка у меня строится через Custom Contextual Links

Аватар пользователя iNFerNo iNFerNo 14 декабря 2012 в 11:02

"<a href="mailto:sas@drupal.org">sas@drupal.org</a>" wrote:
drupal_access_denied();
drupal_exit();

что-то так не очень. а редирект на страницу

<?phpfunction mymodule_menu() {
    $items = array();
      
    $items['my-page'] = array(
        'title'           => 'Моя страница',
        'page callback'   => 'my_first_page',
        'access callback' => TRUE          
    );
    
    
    return $items;
}

function my_first_page() {
$page = array();

return $page;

?>

Аватар пользователя iNFerNo iNFerNo 14 декабря 2012 в 13:25

с этим разобрался. а что бы возвращала на туже страницу на которой был перед тем как кликнуть по ссылке...

drupal_get_destination() использовать?

я попробовал что -то белый экран...