mirror of
https://github.com/SuiteCRM/SuiteCRM-Core.git
synced 2025-08-29 07:50:08 +08:00
Squashed 'public/legacy/' content from commit 817a12dc0
git-subtree-dir: public/legacy git-subtree-split: 817a12dc0c30c189f56d5cb1f7dc37a9631bdbe3
This commit is contained in:
commit
8e4cc94994
9769 changed files with 1617695 additions and 0 deletions
370
modules/Administration/AOPAdmin.php
Normal file
370
modules/Administration/AOPAdmin.php
Normal file
|
@ -0,0 +1,370 @@
|
|||
<?php
|
||||
/**
|
||||
*
|
||||
* SugarCRM Community Edition is a customer relationship management program developed by
|
||||
* SugarCRM, Inc. Copyright (C) 2004-2013 SugarCRM Inc.
|
||||
*
|
||||
* SuiteCRM is an extension to SugarCRM Community Edition developed by SalesAgility Ltd.
|
||||
* Copyright (C) 2011 - 2018 SalesAgility Ltd.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it under
|
||||
* the terms of the GNU Affero General Public License version 3 as published by the
|
||||
* Free Software Foundation with the addition of the following permission added
|
||||
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
|
||||
* IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
|
||||
* OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
||||
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License along with
|
||||
* this program; if not, see http://www.gnu.org/licenses or write to the Free
|
||||
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA.
|
||||
*
|
||||
* You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
|
||||
* SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of this program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU Affero General Public License version 3.
|
||||
*
|
||||
* In accordance with Section 7(b) of the GNU Affero General Public License version 3,
|
||||
* these Appropriate Legal Notices must retain the display of the "Powered by
|
||||
* SugarCRM" logo and "Supercharged by SuiteCRM" logo. If the display of the logos is not
|
||||
* reasonably feasible for technical reasons, the Appropriate Legal Notices must
|
||||
* display the words "Powered by SugarCRM" and "Supercharged by SuiteCRM".
|
||||
*/
|
||||
|
||||
if (!defined('sugarEntry') || !sugarEntry) {
|
||||
die('Not A Valid Entry Point');
|
||||
}
|
||||
|
||||
require_once 'modules/AOP_Case_Updates/util.php';
|
||||
|
||||
global $current_user, $sugar_config;
|
||||
global $mod_strings;
|
||||
global $app_list_strings;
|
||||
global $app_strings;
|
||||
global $theme;
|
||||
|
||||
if (!is_admin($current_user)) {
|
||||
sugar_die("Unauthorized access to administration.");
|
||||
}
|
||||
|
||||
require_once('modules/Configurator/Configurator.php');
|
||||
|
||||
echo getClassicModuleTitle(
|
||||
"Administration",
|
||||
array(
|
||||
"<a href='index.php?module=Administration&action=index'>" .
|
||||
translate('LBL_MODULE_NAME', 'Administration') .
|
||||
"</a>",
|
||||
$mod_strings['LBL_AOP_ADMIN_MANAGE_AOP'],
|
||||
),
|
||||
false
|
||||
);
|
||||
|
||||
$cfg = new Configurator();
|
||||
$sugar_smarty = new Sugar_Smarty();
|
||||
$errors = array();
|
||||
|
||||
if (!array_key_exists('aop', $cfg->config)) {
|
||||
$cfg->config['aop'] = array(
|
||||
'enable_aop' => 1,
|
||||
'enable_portal' => '',
|
||||
'joomla_url' => '',
|
||||
'joomla_access_key' => '',
|
||||
'distribution_method' => '',
|
||||
'distribution_options' => '',
|
||||
'distribution_user_id' => '',
|
||||
'user_email_template_id' => '',
|
||||
'contact_email_template_id' => '',
|
||||
'case_creation_email_template_id' => '',
|
||||
'case_closure_email_template_id' => '',
|
||||
'joomla_account_creation_email_template_id' => '',
|
||||
'support_from_address' => '',
|
||||
'support_from_name' => '',
|
||||
'case_status_changes' => json_encode(array()),
|
||||
);
|
||||
}
|
||||
if (!array_key_exists('enable_aop', $cfg->config['aop'])) {
|
||||
$cfg->config['aop']['enable_aop'] = 1;
|
||||
}
|
||||
if (isset($_REQUEST['do']) && $_REQUEST['do'] == 'save') {
|
||||
$joomlaUrl = strtolower(trim($_REQUEST['joomla_url']));
|
||||
if (!empty($joomlaUrl)) {
|
||||
$cfg->config['aop']['joomla_url'] =
|
||||
preg_match("@^https?://@", $joomlaUrl) ? $joomlaUrl : 'http://' . $joomlaUrl;
|
||||
} else {
|
||||
$cfg->config['aop']['joomla_url'] = '';
|
||||
}
|
||||
$cfg->config['aop']['enable_aop'] = !empty($_REQUEST['enable_aop']);
|
||||
$cfg->config['aop']['enable_portal'] = !empty($_REQUEST['enable_portal']);
|
||||
$cfg->config['aop']['joomla_access_key'] = $_REQUEST['joomla_access_key'];
|
||||
$cfg->config['aop']['distribution_method'] = $_REQUEST['distribution_method'];
|
||||
$cfg->config['aop']['distribution_user_id'] = $_REQUEST['distribution_user_id'];
|
||||
$cfg->config['aop']['distribution_options'] = $_REQUEST['distribution_options'];
|
||||
$cfg->config['aop']['user_email_template_id'] = $_REQUEST['user_email_template_id'];
|
||||
$cfg->config['aop']['contact_email_template_id'] = $_REQUEST['contact_email_template_id'];
|
||||
$cfg->config['aop']['case_creation_email_template_id'] = $_REQUEST['case_creation_email_template_id'];
|
||||
$cfg->config['aop']['case_closure_email_template_id'] = $_REQUEST['case_closure_email_template_id'];
|
||||
$cfg->config['aop']['joomla_account_creation_email_template_id'] =
|
||||
$_REQUEST['joomla_account_creation_email_template_id'];
|
||||
$cfg->config['aop']['support_from_address'] = $_REQUEST['support_from_address'];
|
||||
$cfg->config['aop']['support_from_name'] = $_REQUEST['support_from_name'];
|
||||
/*
|
||||
* We save the case_status_changes array as json since the way config changes are persisted to config.php
|
||||
* means that removing entries is tricky. json simplifies this.
|
||||
*/
|
||||
$cfg->config['aop']['case_status_changes'] = json_encode(array_combine($_POST['if_status'], $_POST['then_status']));
|
||||
$cfg->saveConfig();
|
||||
header('Location: index.php?module=Administration&action=index');
|
||||
exit();
|
||||
}
|
||||
$distribStrings = $app_list_strings['dom_email_distribution_for_auto_create'];
|
||||
unset($distribStrings['AOPDefault']);
|
||||
$distributionMethod = get_select_options_with_id($distribStrings, $cfg->config['aop']['distribution_method']);
|
||||
$distributionOptions = getAOPAssignField('distribution_options', $cfg->config['aop']['distribution_options']);
|
||||
|
||||
if (!empty($cfg->config['aop']['distribution_user_id'])) {
|
||||
$distributionUserName = BeanFactory::getBean("Users", $cfg->config['aop']['distribution_user_id'])->name;
|
||||
} else {
|
||||
$distributionUserName = '';
|
||||
}
|
||||
|
||||
$sugar_smarty->assign('distribution_user_name', $distributionUserName);
|
||||
|
||||
$emailTemplateList = get_bean_select_array(true, 'EmailTemplate', 'name', '', 'name');
|
||||
|
||||
$userEmailTemplateDropdown =
|
||||
get_select_options_with_id($emailTemplateList, $cfg->config['aop']['user_email_template_id']);
|
||||
$contactEmailTemplateDropdown =
|
||||
get_select_options_with_id($emailTemplateList, $cfg->config['aop']['contact_email_template_id']);
|
||||
$creationEmailTemplateDropdown =
|
||||
get_select_options_with_id($emailTemplateList, $cfg->config['aop']['case_creation_email_template_id']);
|
||||
$closureEmailTemplateDropdown =
|
||||
get_select_options_with_id($emailTemplateList, $cfg->config['aop']['case_closure_email_template_id']);
|
||||
$joomlaEmailTemplateDropdown =
|
||||
get_select_options_with_id($emailTemplateList, $cfg->config['aop']['joomla_account_creation_email_template_id']);
|
||||
|
||||
$sugar_smarty->assign('USER_EMAIL_TEMPLATES', $userEmailTemplateDropdown);
|
||||
$sugar_smarty->assign('CONTACT_EMAIL_TEMPLATES', $contactEmailTemplateDropdown);
|
||||
$sugar_smarty->assign('CREATION_EMAIL_TEMPLATES', $creationEmailTemplateDropdown);
|
||||
$sugar_smarty->assign('CLOSURE_EMAIL_TEMPLATES', $closureEmailTemplateDropdown);
|
||||
$sugar_smarty->assign('JOOMLA_EMAIL_TEMPLATES', $joomlaEmailTemplateDropdown);
|
||||
|
||||
$sugar_smarty->assign('DISTRIBUTION_METHOD', $distributionMethod);
|
||||
$sugar_smarty->assign('DISTRIBUTION_OPTIONS', $distributionOptions);
|
||||
$sugar_smarty->assign('MOD', $mod_strings);
|
||||
$sugar_smarty->assign('APP', $app_strings);
|
||||
$sugar_smarty->assign('APP_LIST', $app_list_strings);
|
||||
$sugar_smarty->assign('LANGUAGES', get_languages());
|
||||
$sugar_smarty->assign("JAVASCRIPT", get_set_focus_js());
|
||||
$sugar_smarty->assign('config', $cfg->config['aop']);
|
||||
$sugar_smarty->assign('error', $errors);
|
||||
|
||||
$cBean = BeanFactory::getBean('Cases');
|
||||
$statusDropdown = get_select_options($app_list_strings[$cBean->field_name_map['status']['options']], '');
|
||||
$currentStatuses = '';
|
||||
|
||||
if ($cfg->config['aop']['case_status_changes']) {
|
||||
foreach (json_decode($cfg->config['aop']['case_status_changes'], true) as $if => $then) {
|
||||
$ifDropdown = get_select_options($app_list_strings[$cBean->field_name_map['status']['options']], $if);
|
||||
$thenDropdown = get_select_options($app_list_strings[$cBean->field_name_map['status']['options']], $then);
|
||||
$currentStatuses .= getStatusRowTemplate($mod_strings, $ifDropdown, $thenDropdown) . "\n";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$sugar_smarty->assign('currentStatuses', $currentStatuses);
|
||||
|
||||
$buttons = <<<EOQ
|
||||
<input title="{$app_strings['LBL_SAVE_BUTTON_TITLE']}"
|
||||
accessKey="{$app_strings['LBL_SAVE_BUTTON_KEY']}"
|
||||
class="button primary"
|
||||
type="submit"
|
||||
name="save"
|
||||
onclick="return check_form('ConfigureSettings');"
|
||||
value=" {$app_strings['LBL_SAVE_BUTTON_LABEL']} " >
|
||||
<input title="{$mod_strings['LBL_CANCEL_BUTTON_TITLE']}" onclick="document.location.href='index.php?module=Administration&action=index'" class="button" type="button" name="cancel" value=" {$app_strings['LBL_CANCEL_BUTTON_LABEL']} " >
|
||||
EOQ;
|
||||
|
||||
$sugar_smarty->assign("BUTTONS", $buttons);
|
||||
|
||||
$sugar_smarty->display('modules/Administration/AOPAdmin.tpl');
|
||||
|
||||
$javascript = new javascript();
|
||||
$javascript->setFormName('ConfigureSettings');
|
||||
echo $javascript->getScript();
|
||||
?>
|
||||
<script type="text/template" id="statusRowTemplate">
|
||||
<?= getStatusRowTemplate($mod_strings, $statusDropdown, $statusDropdown) ?>
|
||||
</script>
|
||||
<script language="Javascript" type="text/javascript">
|
||||
|
||||
var selectElement = document.getElementById('distribution_method_select');
|
||||
selectElement.onchange = function (event) {
|
||||
var distribRow = document.getElementById('distribution_user_row');
|
||||
var distribOptionsRow = document.getElementById('distribution_options_row');
|
||||
if (selectElement.value == 'singleUser') {
|
||||
showElem('distribution_user_row');
|
||||
hideElem('distribution_options_row');
|
||||
addToValidate('ConfigureSettings', 'distribution_user_id', 'relate', true, "Please choose a user to assign cases to.");
|
||||
} else {
|
||||
SUGAR.clearRelateField(this.form, 'distribution_user_name', 'distribution_user_id');
|
||||
hideElem('distribution_user_row');
|
||||
showElem('distribution_options_row');
|
||||
removeFromValidate('ConfigureSettings', 'distribution_user_id');
|
||||
}
|
||||
};
|
||||
selectElement.onchange();
|
||||
function hideElem(id) {
|
||||
if (document.getElementById(id)) {
|
||||
document.getElementById(id).style.display = "none";
|
||||
document.getElementById(id).value = "";
|
||||
}
|
||||
}
|
||||
|
||||
function showElem(id) {
|
||||
if (document.getElementById(id)) {
|
||||
document.getElementById(id).style.display = "";
|
||||
}
|
||||
}
|
||||
|
||||
function assign_field_change(field) {
|
||||
hideElem(field + '[1]');
|
||||
hideElem(field + '[2]');
|
||||
|
||||
if (document.getElementById(field + '[0]').value == 'role') {
|
||||
showElem(field + '[2]');
|
||||
}
|
||||
else if (document.getElementById(field + '[0]').value == 'security_group') {
|
||||
showElem(field + '[1]');
|
||||
showElem(field + '[2]');
|
||||
}
|
||||
}
|
||||
var currentEmailSelect;
|
||||
|
||||
function open_email_template_form(id) {
|
||||
currentEmailSelect = id + "_select";
|
||||
URL = "index.php?module=EmailTemplates&action=EditView&inboundEmail=1&return_module=AOW_WorkFlow&base_module=AOW_WorkFlow";
|
||||
URL += "&show_js=1";
|
||||
|
||||
windowName = 'email_template';
|
||||
windowFeatures = 'width=800' + ',height=600' + ',resizable=1,scrollbars=1';
|
||||
|
||||
win = window.open(URL, windowName, windowFeatures);
|
||||
if (window.focus) {
|
||||
// put the focus on the popup if the browser supports the focus() method
|
||||
win.focus();
|
||||
}
|
||||
}
|
||||
|
||||
function edit_email_template_form(id) {
|
||||
currentEmailSelect = id + "_select";
|
||||
var field = document.getElementById(id + "_select");
|
||||
URL = "index.php?module=EmailTemplates&action=EditView&inboundEmail=1&return_module=AOW_WorkFlow&base_module=AOW_WorkFlow";
|
||||
if (field.options[field.selectedIndex].value != 'undefined') {
|
||||
URL += "&record=" + field.options[field.selectedIndex].value;
|
||||
}
|
||||
URL += "&show_js=1";
|
||||
|
||||
windowName = 'email_template';
|
||||
windowFeatures = 'width=800' + ',height=600' + ',resizable=1,scrollbars=1';
|
||||
|
||||
win = window.open(URL, windowName, windowFeatures);
|
||||
if (window.focus) {
|
||||
// put the focus on the popup if the browser supports the focus() method
|
||||
win.focus();
|
||||
}
|
||||
}
|
||||
|
||||
function refresh_email_template_list(template_id, template_name) {
|
||||
refresh_template_list(template_id, template_name, currentEmailSelect);
|
||||
}
|
||||
|
||||
var templateFields = ['user_email_template_id_select', 'contact_email_template_id_select', 'case_creation_email_template_id_select', 'case_closure_email_template_id_select', 'joomla_account_creation_email_template_id_select'];
|
||||
|
||||
function refreshEditVisibility() {
|
||||
for (var x = 0; x < templateFields.length; x++) {
|
||||
var fieldId = templateFields[x];
|
||||
var field = document.getElementById(fieldId);
|
||||
field.onchange();
|
||||
}
|
||||
}
|
||||
|
||||
function refresh_template_list(template_id, template_name, select) {
|
||||
var bfound = 0;
|
||||
for (var x = 0; x < templateFields.length; x++) {
|
||||
var fieldId = templateFields[x];
|
||||
var field = document.getElementById(fieldId);
|
||||
for (var i = 0; i < field.options.length; i++) {
|
||||
if (field.options[i].value == template_id) {
|
||||
if (field.options[i].selected == false && fieldId == select) {
|
||||
field.options[i].selected = true;
|
||||
}
|
||||
field.options[i].text = template_name;
|
||||
bfound = 1;
|
||||
}
|
||||
}
|
||||
//add item to selection list.
|
||||
if (bfound == 0) {
|
||||
var newElement = document.createElement('option');
|
||||
newElement.text = template_name;
|
||||
newElement.value = template_id;
|
||||
field.options.add(newElement);
|
||||
if (fieldId == select) {
|
||||
newElement.selected = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
refreshEditVisibility();
|
||||
}
|
||||
function show_edit_template_link(field) {
|
||||
var field1 = document.getElementById(field.name + "_edit_template_link");
|
||||
if (field.selectedIndex == 0) {
|
||||
field1.style.visibility = "hidden";
|
||||
} else {
|
||||
field1.style.visibility = "visible";
|
||||
}
|
||||
}
|
||||
|
||||
refreshEditVisibility();
|
||||
$(document).ready(function () {
|
||||
$('#addStatusButton').click(function (e) {
|
||||
var template = $('#statusRowTemplate').html();
|
||||
$(e.target).closest('tr').before(template);
|
||||
});
|
||||
$(document).on('click', '.removeStatusButton', function (e) {
|
||||
$(e.target).closest('tr').remove();
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<?php
|
||||
/**
|
||||
* @param $mod_strings
|
||||
* @param $ifDropdown
|
||||
* @param $thenDropdown
|
||||
* @return string
|
||||
*/
|
||||
function getStatusRowTemplate($mod_strings, $ifDropdown, $thenDropdown)
|
||||
{
|
||||
$html = <<<EOF
|
||||
<tr>
|
||||
<td scope="row" width="100">{$mod_strings['LBL_AOP_IF_STATUS']}: </td>
|
||||
<td width="100">
|
||||
<select id='if_status_select[]' name='if_status[]'>{$ifDropdown}</select>
|
||||
</td>
|
||||
<td scope="row" width="100">{$mod_strings['LBL_AOP_THEN_STATUS']}: </td>
|
||||
<td width="100">
|
||||
<select id='then_status_select[]' name='then_status[]'>{$thenDropdown}</select>
|
||||
</td>
|
||||
<td><button class="removeStatusButton" type="button">{$mod_strings['LBL_AOP_REMOVE_STATUS']}</button></td>
|
||||
</tr>
|
||||
EOF;
|
||||
|
||||
return $html;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue