AHAH Form - при замене перестает работать ahah

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

Аватар пользователя sitdikov sitdikov 7 марта 2012 в 12:59

Темизация формы

function vkaz_theme()
{
        return array(
                'vkaz_get_news_form' => array(
                        'arguments' => array('form' => NULL)
                        ),
        );
}

hook_menu

function vkaz_menu()
{
        $items['block_issue_now/%'] = array(
            'page callback' => 'vkaz_get_news',
            'page arguments' => array(1),
            'access callback' => true,
            'type' => MENU_CALLBACK,
        );
       
        return $items;
}

Сама ahah-функция

function vkaz_get_news($date = NULL)
{
        return drupal_get_form('vkaz_get_news_form', $date);
}
function vkaz_get_news_form($form, $date = null)
{
       
        $ajax = 0;
        if ($date) $ajax = 1;
       
        drupal_add_css(drupal_get_path('module', 'vkaz') .'/vkaz.css');
       
        if (!$date) $date = date('Y-m-d');

        $subquery = 'SELECT `field_issue_value` FROM `content_type_story`
               
                GROUP BY `field_issue_value`
                ORDER BY `field_issue_value` DESC'
;
               
        $result = db_query($subquery);
       
        while ($row = db_fetch_array($result))
                $dates[] = str_replace('T00:00:00', '', $row['field_issue_value']);
       
       
        $query = 'SELECT * FROM `node`
                ...
                WHERE `field_issue_value` = "'
.$date.'" OR `field_issue_value` = "'.$date.'T00:00:00" ORDER BY `field_importance_value` ASC';
       
        $result = db_query($query);
       
        $p = mysqli_num_rows($result);
       
        if (!$p){
                $d = $dates;
                $date = array_shift($d);
                $query = 'SELECT * FROM `node`
                ...
                WHERE `field_issue_value` = "'
.$date.'" OR `field_issue_value` = "'.$date.'T00:00:00" ORDER BY `field_importance_value` ASC';
       
                $result = db_query($query);
        }

        $form = array();
        $t = array_search($date, $dates);
       
        if (isset($dates[$t-1]))
                $form['prev'] = array(
                '#type' => 'button',
                '#value' => '< предыдущая',
                '#ahah' => array(
                        'path' => 'block_issue_now/'.$dates[$t-1],
                        'wrapper' => 'issue_now_news',
                        'event' => 'click',
                        'method' => 'replace',
                        'effect' => 'fade',
                    ),
        );
               
        if ($ajax) $form['ajax'] = array('#value' => 1);
       
        $form['next'] = array(
                '#type' => 'button',
                '#value' => 'следующая >',
                '#ahah' => array(
                        'path' => 'block_issue_now/'.$dates[$t+1],
                        'wrapper' => 'issue_now_news',
                        'event' => 'click',
                        'method' => 'replace',
                        'effect' => 'fade',
                    ),
        );
        $form['date'] = array('#value' => $date);
       
        while ($row = db_fetch_array($result))
        {
               
                $form['news'][$row['nid']]['title'] = array(
                        '#value' => '<div class="issue_now">' . l($row['name'], url_link('taxonomy/term/'.$row['tid']), array('attributes' => array('class' => 'catLink'))) . l($row['title'], url_link('node/'.$row['nid']), array('attributes' => array('class' => 'nodeLink'))) . '</div>',
                );
        }
       
        return $form;
}

function theme_vkaz_get_news_form($form)
{
        $rows = array();
        $d = explode('-', $form['date']['#value']);
        $date = str_replace('T00:00:00', '', $d[2]).'.'.$d[1].'.'.$d[0];
       
        foreach (element_children($form['news']) as $key){
                $rows[] = $form['news'][$key]['title']['#value'];
        }
       
        $content = '<h3>НОМЕР ОТ '.$date.'</h3>';
       
        if ($form['prev']['#value']) $content .= drupal_render($form['prev']);
        if ($form['next']['#value']) $content .= drupal_render($form['next']);
        $content .= implode('', $rows);
       
        if (!isset($form['ajax']['#value']))
        return '<div id="issue_now_news">'.$content.'</div>';
        else {
                print(drupal_to_js(array('status' => true, 'data' => '<div id="issue_now_news">'.$content.'</div>')));
                exit;
        }
}

Проблема в том, что при обновлении блока (его замене, если быть точнее - ahah элементы не изменяют своих параметров. Можно ли изменить их через callback или необходимо сделать что-нибудь ещё магическое?