- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望在某些模块(例如联系人)的编辑 View 中单击“保存”时弹出一些消息(稍后我会在该弹出窗口中获得“确定”和“取消”选项。)
我的函数
YAHOO.SUGAR.MessageBox.show({msg: 'Foo'} );
当我把它放在 editviewdefs.php 的顶部时它正在工作(我还必须包括cache/include/javascript/sugar_grp_yui_widgets.js
) ) 文件,当打开该 View 时,我会弹出该 View 。但我希望它在保存时弹出,而不是在打开 EditView 时弹出(这只是测试显示 YAHOO
功能正在运行)。所以我尝试在 custom/modules/Contacts
中创建单独的 customJavascript.js
文件:
//<script type="text/javascript"
src="cache/include/javascript/sugar_grp_yui_widgets.js"></script>
function check_custom_data()
{
YAHOO.SUGAR.MessageBox.show({msg: 'Foo'} );
}
我修改了custom/modules/Contacts/metadata/editviewdefs.php
<?php
$module_name = 'Contacts';
$viewdefs ['Contacts'] =
array (
'EditView' =>
array (
'templateMeta' =>
array (
'form' =>
array (
'hidden' =>
array (
0 => '<input type="hidden" name="opportunity_id" value="{$smarty.request.opportunity_id}">',
1 => '<input type="hidden" name="case_id" value="{$smarty.request.case_id}">',
2 => '<input type="hidden" name="bug_id" value="{$smarty.request.bug_id}">',
3 => '<input type="hidden" name="email_id" value="{$smarty.request.email_id}">',
4 => '<input type="hidden" name="inbound_email_id" value="{$smarty.request.inbound_email_id}">',
),
),
array(
'buttons' =>
array (
0 =>
array(
'customCode' =>
'<input title="Save [Alt+S]" accessKey="S" onclick="this.form.action.value=\'Save\'; return check_custom_data();" type="submit" name="button" value="'.$GLOBALS['app_strings']['LBL_SAVE_BUTTON_LABEL'].'">',
),
1 =>'Cancel'
)
),
'includes'=> array(
array('file'=>'custom/modules/Contacts/customJavascript.js'),
),
..........
.......
但是当我在 EditView 中单击“保存”时没有任何反应,但我希望在那一刻弹出消息(稍后我将添加“确定”和“取消”选项)。
我做错了什么?谢谢
更新了仅在某些情况下弹出的代码:
....
window.formToCheck = formname;
var contactTypeField = document.getElementById('first_name');
if (contactTypeField.value == 'Tori')
{
if (confirm("This dialog will pop-up whenever the user click on the Save button. "
+ "If you click OK, then you can execute some custom code, and then "
+ "execute the old form check function, which will process and submit "
+ "the form, using SugarCRM's standard behavior.")) {
var customCodeVariable = 5;
customCodeVariable = 55 + (customCodeVariable * 5);
return window.old_check_form(formname);
}
return false;
}
最佳答案
在 SugarCRM 中有很多方法可以做事,这使得它非常强大,但有时很难定制 - 因为有太多不同的选项可供您使用。
要在单击“保存”按钮时生成某种弹出窗口或任何自定义日志,我建议使用以下解决方案而不是更改 editviewdefs
。
以下解决方案不需要您修改任何核心 SugarCRM 文件,因此升级安全并且可以轻松安装到另一个实例上。
您需要做的是创建自定义可安装包,并使用模块加载器将其安装到 SugarCRM 中。
这是您最终需要得到的目录结构布局:
SugarModuelPopUp
->custom
->include
->customPopUps
->custom_popup_js_include.php
->customPopUpContacts.js
->manifest.php
创建 SugarModuelPopUp
文件夹,它将作为此自定义包的根目录。
在 SugarModuelPopUp
中,创建一个名为 manifest.php
的新 PHP 文件。该文件告诉 SugarCRM 如何安装包。
在 manifest.php
中,粘贴以下代码:
<?php
$manifest = array(
array(
'acceptable_sugar_versions' => array()
),
array(
'acceptable_sugar_flavors' => array()
),
'readme' => 'Please consult the operating manual for detailed installation instructions.',
'key' => 'customSugarMod1',
'author' => 'Kyle Lowry',
'description' => 'Adds pop-up dialog on save on Contacts module.',
'icon' => '',
'is_uninstallable' => true,
'name' => 'Pop-Up Dialog On Save',
'published_date' => '2013-03-06 12:00:00',
'type' => 'module',
'version' => 'v1',
'remove_tables' => 'prompt'
);
$installdefs = array(
'id' => 'customSugarMod1',
'copy' => array(
array(
'from' => '<basepath>/custom/',
'to' => 'custom/'
)
),
'logic_hooks' => array(
array(
'module' => 'Contacts',
'hook' => 'after_ui_frame',
'order' => 1,
'description' => 'Creates pop-up dialog on save action.',
'file' => 'custom/include/customPopUps/custom_popup_js_include.php',
'class' => 'CustomPopJs',
'function' => 'getContactJs'
)
)
);
接下来,您需要创建自定义
文件夹。在其中,创建 include
文件夹。在其中,创建 customPopUps
文件夹。
接下来,您需要创建 custom_popup_js_include.php
文件。此文件控制您的自定义 JavaScript 何时何地包含在页面中。粘贴以下代码:
<?php
// prevent people from accessing this file directly
if (! defined('sugarEntry') || ! sugarEntry) {
die('Not a valid entry point.');
}
class CustomPopJs {
function getContactJs($event, $arguments) {
// Prevent this script from being injected anywhere but the EditView.
if ($_REQUEST['action'] != 'EditView') {
// we are not in the EditView, so simply return without injecting
// the Javascript
return;
}
echo '<script type="text/javascript" src="custom/include/customPopUps/customPopUpContacts.js"></script>';
}
}
接下来您需要创建 customPopUpContacts.js
文件,该文件将在单击联系人模块 EditView
中的保存按钮时创建自定义弹出窗口。粘贴以下代码:
function override_check_form() {
// store a reference to the old form checking function
window.old_check_form = window.check_form;
// set the form checking function equal to something custom
window.check_form = function(formname) {
window.formToCheck = formname;
// you can create the dialog however you wish, but for simplicity I am
// just using standard javascript functions
if (confirm("This dialog will pop-up whenever the user click on the Save button. "
+ "If you click OK, then you can execute some custom code, and then "
+ "execute the old form check function, which will process and submit "
+ "the form, using SugarCRM's standard behavior.")) {
// you have clicked OK, so do some custom code here,
// replace this code with whatever you really want to do.
var customCodeVariable = 5;
customCodeVariable = 55 + (customCodeVariable * 5);
// now that your custom code has executed, you can let
// SugarCRM take control, process the form, and submit
return window.old_check_form(formname);
}
// the user clicked on Cancel, so you can either just return false
// and leave the person on the form, or you can execute some custom
// code or do whatever else you want.
return false;
}
}
// call the override function, which will replace the old form checker
// with something custom
override_check_form();
一旦您创建了上述目录结构以及正确文件夹中的文件,您就可以创建项目的 ZIP 文件。请务必注意,对于 SugarCRM 可安装包,您的 ZIP 文件必须包含项目目录中的所有内容。也就是说,您不会压缩 SugarModuelPopUp
文件夹,而是压缩其中的所有内容。
接下来,您需要使用 SugarCRM 的模块加载器安装自定义包。您可以通过以下方式执行此操作:
安装此自定义包后,无论何时单击联系人模块 EditView
中的“保存”按钮,都会弹出一个对话框。您可以将对话框代码替换为您想要的任何内容,以便记录您不修改构成它的代码。
此外,您应该能够使用此项目作为 future 向 SugarCRM EditViews
添加功能的基础。单击“保存”按钮后使用 check_form
方法的任何模块都可以执行这种自定义逻辑。
例如,要为帐户执行此操作,您可以执行以下操作:
在 manifest.php 中为帐户的 logic_hooks
数组元素添加一个条目。
'logic_hooks' => array(
array(
'module' => 'Contacts',
'hook' => 'after_ui_frame',
'order' => 1,
'description' => 'Creates pop-up dialog on save action.',
'file' => 'custom/include/customPopUps/custom_popup_js_include.php',
'class' => 'CustomPopJs',
'function' => 'getContactJs'
),
array(
'module' => 'Accounts',
'hook' => 'after_ui_frame',
'order' => 1,
'description' => 'Creates pop-up dialog on save action.',
'file' => 'custom/include/customPopUps/custom_popup_js_include.php',
'class' => 'CustomPopJs',
'function' => 'getAccountJs'
)
)
在帐户 JavaScript 的 custom_popup_js_include.php
文件中的 CustomPopJs
中添加一个新方法。
function getAccountJs($event, $arguments) {
// Prevent this script from being injected anywhere but the EditView.
if ($_REQUEST['action'] != 'EditView') {
// we are not in the EditView, so simply return without injecting
// the Javascript
return;
}
echo '<script type="text/javascript" src="custom/include/customPopUps/customPopUpAccounts.js"></script>';
}
创建 customPopUpAccounts.js
文件,并使用 customPopUpContacts.js
代码作为所需功能的基础。
还有其他方法可以在 SugarCRM 中实现您的目标,但这是我个人使用的方法,它具有升级安全且易于迁移到其他 SugarCRM 实例的优点。
关于popup - SugarCRM-单击“保存”按钮时如何获取弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15254673/
我连续有 11 个图像,如果鼠标悬停在其中一个图像上,我希望弹出一个弹出窗口。所以每 11 个图像都有不同的弹出窗口。我已经有一些代码可以执行此操作,但它仅适用于第一张图像。 代码:index.htm
是否可以从 NSColorWell 制作一个 NSColorPanel“弹出”,几乎像一个弹出菜单? 我不喜欢它作为调色板的实现方式,因为有时它与哪个 NSColorWell 关联并不明显。 谢谢!
我正在考虑一个想法,基本上我想要一个带有 NSPopoverController 的 NSStatusItem 。我读到了人们遇到的所有问题,但我只是想尝试一下。现在有干净的方法吗?我见过的所有版本都
如何获取 JS 打开的弹出窗口的 url。这是我的代码: var _url = 'someurlhere'; var popupwindow = window.open(_url, "Popu
我正在设计一个网页,我希望当用户单击链接时,弹出窗口(新窗口)将打开一个链接网页。我的代码如下所示 function win(add,w,h) { window.open(add,"","widt
我正在寻找 C 中的简单堆栈实现,并找到了类似的东西: void pop(struct stack **top) { struct stack *temp; temp = malloc(s
我正在尝试使用 paypal 实现登录,我有 2 个不同的主机域 1- www.example.com 2- www.example.de 对于 paypal,我需要为此目的选择一个返回 URL,我选
我正在尝试找出如何复制此处显示的“弹出式” View 动画:https://imgur.com/a/irFqdiP .我正在使用当前代码来显示我的 viewController,但目前只有一个淡入淡出
有谁知道在 Windows 2000 或更高版本上以编程方式关闭 CD 托盘的方法?打开 CD 托盘存在,但我似乎无法关闭它,尤其是在 W2k 下。 如果可能的话,我特别想从批处理文件中寻找一种方法来
当您访问http://www.daniweb.com时你得到一个弹出窗口,这叫什么 + 知道怎么做吗? 感谢您的回复,只有模态加载动画的最简单方法是什么,即页面加载时动画显示以及动画何时完成? ASP
我正在为 Unity 引擎中的音频过滤器创建一个 C# 脚本。 我的问题是,在通过我的过滤器运行后,生成的音频具有一致且频繁的“咔哒声”、“砰砰声”或“跳过声”。听起来有点像旧 radio 。 我不确
我必须隐藏浏览器的地址栏。我正在使用这段代码: var winFeature = 'location=no,toolbar=no,menubar=no,scrollbars=yes,r
推荐一个button 弹起pickerview的源码,也可以作为工具类使用。 利用inputview 做键盘弹起动画。该如何做呢? 1.继承uiview 2.重写属性&方法
我在这里有一个问题,我已经工作了几个小时。 我正在导入一个 Excel 文件,并使用此代码来执行此操作: Dim objExcel As Excel.Application Di
我基本上是从 UITableViewController 推送 UIView,它包含的只是 UIWebView。但是,当我删除 UIView 以返回到 UITableView 时,应用程序崩溃了。 -
我有几个由导航 Controller 控制的 View Controller 。 例如,viewController A 和 viewController B 都可以将 viewController
我使用新的Gmail API为用户创建草稿。 API响应提供了新创建的消息ID。 然后,我可以使用URL https://mail.google.com/mail/#drafts?compose=[m
Redis列表实现了哪种内部数据结构以实现这一目的?链表将需要O(n)索引,而数组将需要O(n)左/右推/弹出。 最佳答案 根据official documentation,它们被实现为linked
我正在使用 WPF Popup 控件,它显示背景为黑色。我在其中放置了一个 StackPanel 并设置了 Background="Transparent",但这没有帮助。
我希望页面内的容器在事件时占据页面的整个宽度并覆盖在其他所有内容上。这是我目前所拥有的,但它没有按我想要的方式工作: $(function() { $('.main a').click( fu
我是一名优秀的程序员,十分优秀!