2013-08-20 33 views
4

我想使用AJAX更新SugarCRM子面板中的记录状态。以下是我正在开发的项目管理模块的图像。使用AJAX更新SugarCRM子面板中的状态

在图片中,您可以更好地了解我想实现的目标。在左栏中,我想添加一个新按钮,以便用户快速将项目任务记录标记为已完成。这可以通过将该记录上的状态字段更改为“完成”来完成。

我可以弄清楚如何添加我的新按钮,但我不知道如何以这种方式更新记录的状态。我可以找出JavaScript进行AJAX调用并更新UI,但我不知道应该在哪里使用我的AJAX POST以及类似的东西来更新记录。

我需要做一个新的控制器,以便我有一个URL发布到?我希望有一个简单的解决方案,但如果不是,那么熟悉SugarCRM的人可能会指出我正确的方向?

我希望在这个问题上的任何帮助让我接近完成。

enter image description here

+0

您是否使用过Google?如果是,那么谷歌搜索结果与你想要的结果有什么区别? – Jonast92

+1

@ Jonast92我当然有。不同之处在于没有固定的解决方案。我希望有一位SugarCRM专家能够指引我走向正确的方向。我通过Google发现的文章只有1篇,这是从2008年以来一直重复发表的文章,它需要使用付费插件,并且更像是一种黑客,然后是我正在尝试做的真正解决方案。我相信答案可能是建立我自己的自定义控制器,然后我可以使用AJAX发出POST请求,但我宁愿在错误的解决方案浪费半天之前从别人那里获得一些输入。 – JasonDavis

+0

够公平,只是真的感觉像即使你有10个重点,有时候我只是觉得“我试过的是什么”和“我知道什么是外面的,为什么它不符合我的需求”,所以问这个“简单”的问题是缺少的: ) – Jonast92

回答

3

您可以在自定义目录中的JS文件创建Ajax ...

定制/模块/项目/ JavaScript的/ ajax.js

function updateStatus(project_task_id) { 
    if (project_task_id) { 
     $.ajax({ 
      url: 'index.php?to_pdf=true&module=Project&action=ChangeProjectTaskStatus&id=' + project_task_id, 
      success: function() { 

      // Reload subpanel 
      showSubPanel('projects_project_tasks', null, true); 
     } 
    }); 
} 

然后用匹配文件名的动作创建一个新的PHP文件...

custo m/modules/Project/ChangeProjectTaskStatus.php

<?php 
    if (!defined('sugarEntry') || !sugarEntry) 
     die('Not A Valid Entry Point'); 

    $project_task = BeanFactory::getBean('ProjectTask'); 
    $project_task->retrieve($_GET['project_task_id']); 

    // Update status logic goes here 

    $project_task->save(); 

    exit(); 
+0

我最终使用这种方法,在从AJAX请求成功回调的过程中,我更新了页面中的几个项目,并且效果很好。我还没有克服的第一个问题是,当我使用quickcreate表单添加一个新项目,重新加载子面板,我失去了所有我从'process_record' Hook中添加的格式。也许你有想法解决这个问题?我要发布一个新问题 – JasonDavis

+1

我给Karl的答案添加了一个编辑,但我想它还没有被批准。您应该可以使用以下方式重新加载子面板: showSubPanel('projects_project_tasks',null,true); 并用任何关系名称是子面板的关系来替换project_project_tasks。它会从服务器重新加载子面板,所以它应该处理你已有的格式。 –

+0

@ChadHutchins感谢分享,我很好奇如何做到这一点。我已经做了一些测试,但看起来这不是我需要的解决方案。不幸的是,当我运行'showSubPanel()'时,它似乎没有触发Hook'$ hook_array ['process_record']',因此它使用我的更新记录重新加载子面板,但是我失去了通过应用于记录的所有格式那个胡克。我到处寻找解决方案,但它似乎是Sugar平台的一个缺陷。如果您有任何关于替代方案的想法,很乐意听到它 – JasonDavis