КАК: Как изменить значение раскрывающегося списка в SugarCRM

Я пытаюсь изменить значение раскрывающегося списка одним нажатием кнопки, я использую SugarCRM CE 6.5, и вот проблема, с которой я столкнулся:

А вот мой код ниже:

- detailviewdefs.php

<?php
$module_name = 'UA_Quotes';
$viewdefs [$module_name] = 
array (
'DetailView' => 
array (
 'templateMeta' => 
array (
  'include' => 
   array (
    0 =>
    array (
      'file' => 
      'custom/modules/UA_Quotes/JS/clickPayment.js',
      ),
    ),
  'form' => 
  array (
    'closeFormBeforeCustomButtons' => true,
    'buttons' => 
    array (
      0 => 'EDIT',  
      1 => 'DELETE',
      2 => 
      array (
        'customCode' => '{$Monthly_Payment}',
      ),
    ),
    'footerTpl' => 'modules/UA_Quotes/tpls/DetailViewFooter.tpl',
  ),
  'maxColumns' => '2',
  'widths' => 
  array (
    0 => 
    array (
      'label' => '10',
      'field' => '30',
    ),
    1 => 
    array (
      'label' => '10',
      'field' => '30',
    ),
  ),
  'useTabs' => false,
  'tabDefs' => 
  array (
    'LBL_EDITVIEW_PANEL2' => 
    array (
      'newTab' => false,
      'panelDefault' => 'expanded',
    ),
  ),
),
'panels' => 
array (
  'lbl_editview_panel2' => 
  array (
    0 => 
    array (
      0 => 'name',
      1 => 
      array (
        'name' => 'ua_contracts_ua_quotes_1_name',
      ),
    ),
    1 => 
    array (
      0 => 
      array (
        'name' => 'monthlystart_c',
        'label' => 'LBL_MONTHLYSTART',
      ),
      1 => 
      array (
        'name' => 'quote_stage',
        'studio' => 'visible',
        'label' => 'LBL_QUOTE_STAGE',
      ),
    ),
    2 => 
    array (
      0 => 
      array (
        'name' => 'monthlydeadline_c',
        'label' => 'LBL_MONTHLYDEADLINE',
      ),
    ),
  ),
),
),
);
?>

- view.detail.php

<?php


require_once('include/MVC/View/views/view.detail.php');

class UA_QuotesViewDetail extends ViewDetail
{
public function __construct()
{
    parent::ViewDetail();
}

public function display()
{
    echo '<script type="text/javascript"    src="custom/modules/UA_Quotes/js/clickPayment.js"></script>';
    $groups = $this->bean->Get_Products($this->bean->id, true);
    $this->ss->assign('GROUPS', $groups);

    $this->ss->assign('NET_TOTAL', currency_format_number($this->bean->net_total_amount));
    $this->ss->assign('TOTAL', currency_format_number($this->bean->total_amount));
    $this->ss->assign('Monthly_Payment', '<input type="button" onclick="GetPayment();" value="Monthly Payment"/>');
    /*
    $this->dv->ss->assign('Monthly_Payment', '<input type="button" 
    onclick="alert(\'How to change status :(\')" value="Monthly Payment"/>');*/

    parent::display();
}
}

- clickPayment.js

function GetPayment(){

var record = $("#record").val();
// var pathArray = window.location.href.split("=");
var fdata = { 'record':record };   
// console.log(pathArray[3]," - your Record ID");
$.ajax({
                    type: 'POST',                 
                    url: "custom/modules/UA_Quotes/js/changestatus.php?&fdata="+fdata+"",
                    data: fdata, //{recordID: pathArray[3]},
                    dataType: 'html',
                    async: false,
                    error: function(resp){},
                    success: function(resp){
                        location.reload(true);
                    }                     
                    /*  success:function(fdata){                     
                        console.log("Customer Status Change"); 
                         location.reload(true);        
                    },
                    error: function(fdata) {
                        // if error occured
                        console.log(" NA ");                     
                    }   */
                });
}

- и, наконец, мой changetatus.php

<?php

$myrecordID = $_POST['record'];
$focus = new UA_Quotes();
$focus->retrieve($myrecordID);
$focus->quote_stage_dom = 'Paid';

?>

Мне очень жаль за длинный пост кодов, я занимаюсь с ними уже пару дней и, похоже, не повезло.:(Любая помощь может быть оценена! Спасибо!

2 ответа

Решение

Похоже, ошибка, о которой вы сообщаете, связана с неправильным использованием точки входа.

Пожалуйста, попробуйте зарегистрировать пользовательскую точку входа в custom/include/MVC/Controller/entry_point_registry.php как это:

$entry_point_registry['ChangeStatus'] = array('file' => 'modules/UA_Quotes/entrypoint/changestatus.php' , 'auth' => '1');

Просто добавьте строку в реестр точек входа и, если файл еще не существует, добавьте файл с именем на месте.

Часть файла в массиве указывает на местоположение вашего кода, а часть аутентификации позволяет вам указать, требуется ли пользователю проходить проверку подлинности или нет для доступа к точке входа.

Затем позвоните через: index.php?entryPoint=ChangeStatus&id=...(&to_pdf=true)

Последний параметр &to_pdf=true может понадобиться, если вы хотите, чтобы ответ был json или text. Без этого вы получите всю HTML-страницу в своем ответе.

Вы можете сделать это без точки входа, добавив контроллер и затем вызвав его из скрипта с помощью: index.php? Module=UA_Quotes&action=changestatus

Кстати, вы загружаете файл JavaScript в метаданных и просмотра. В подробном обзоре должно хватить.

Согласен с первым ответом. может быть, вы можете попробовать использовать контроллер для своей конечной точки, чтобы изменить файл на файле changestatus.php, например:

http://techs.studyhorror.com/sugarcrm-how-add-custom-actions-i-46

Другие вопросы по тегам