Squashed 'public/legacy/' changes from 4f401678fd..5a66316965

5a66316965 SuiteCRM 7.12.3 Release
1cfaf51831 Fix #9454 - Avoid duplicate results in basic search
7eb52791f1 Fix #9455 - Popup metadata override removed when filtered
a21463bee1 Fix #8155 - Removed Unused PDF Settings
7f3c59f382 Fix #8948 - Make Project Tasks Importable
ac4a1e79a7 Fix #9191 - Add utf normalization repair command
bcb784eef7 Fix #9434 - Cron notion unit test fails
2e4aa8f594 Fix #8309 - Delete button showing for users with no delete access
bf5fe39148 Fix #8525 - Bulk Action label not showing for users without delete access
1a45a93b5c Fix #9398 - Consistently store dropdowns in $app_list_strings rather than $GLOBALS
664b2d5c74 Fix #9406 - Validation displayed static message isn't correct
de192fa845 Fix #9271 - Primary Email property is kept after ading an extra Email address
206db24eaa Fix #9378 - Filter by Email1 Field Through the API
6c39d73580 Fix #9312 - Declaring object within StudioClass to remove Strict Warnings
be2044b341 Fix #9387 - Correct Variable Names
7e3c96d5b4 Fix #9387 - Clean Cron Historic and Failed Jobs
b3e0556482 Fix #9387 - Display Actual Job Result in Subpanel
90b4e0423a Fix issue #9380 where date action in workflow fails to save Add check on if value is array, if is array don't attempt date formatting
864d614945 Fix #9408 - adding fix for deleting emails
7b442f10ca Merge next into suite 8
b522a5acf3 [Legacy] Meeting Module Styling Fixes
4e4d4e7d86 [Legacy] Admin Import Styling Fixes
e320acd63c [Legacy] Popup Selector Styling Fixes
60acfc36f5 [Legacy] Backup Modules Styling Fixes
73cc52ce14 [Legacy] Jotpad Dashlet Styling Fixes
0128df2e63 [Legacy] User Name Longtext styling fixes
f12c72e8f6 [Legacy] Diagnostic Tool Whitespace Styling Fixes
841b16e033 [Legacy] Dashboard Dashlet Styling Fixes
e274de5a58 [Legacy] Scheduler Styling Fixes
0c330bc280 [Legacy] Reports Subpanels Styling Fixes
0730d433b2 [Legacy] Meeting Popup Selector Styling Fixes
a22626df09 [Legacy] Bump version to 8.0.0
ebde6fb8cc [Legacy] Apply set-timezone styling ot the the users set-timezone page
55f1e360df [Legacy] Add name mapping for SetTimezone action
44fa660c65 [Legacy] Define summary templates for contacts, leads, prospects
f363b741f9 [Legacy] Change Contacts detailviewdefs to use full name
8afde55218 [Legacy] Fix .htaccess build to take the full CRM url into account
8373995c26 [Legacy] Admin diagnostic tool styling fixes
03593b259c [Legacy] Disable upgrade wizard in admin
66c9fe4d8f [Legacy] Remove lucene and AOD_index
21f9844286 [Legacy] Fix event invite mod_strings handling
04bdfd8975 [Legacy] Forgot Password Page Styling Fixes
ba459af407 [Legacy] fix redirect from projects subpanel
0f19a141d1 [Legacy] Add Default Link Item Mapper - add relate module injection on backend bean field_defs
efc2083eaf [Legacy] Email Body Styling Fixes
648a1d9350 Merge next into suite 8
a0cfd72ab3 [Legacy] Remove deprecated spots module
103fd1076f [Legacy] Fix capitalized url on user profile calendar options
97fca254bd [Legacy] Re-add user module reset password modal
864c35c4ad [Legacy] Remove echo on user save
169a15a6c9 [Legacy] Close user action dropdown on password reset
e8c400ab24 [Legacy] Fix user triggered password reset
e38f48c6d4 [Legacy] Fix password recovery templates setup on install
927969c9a3 [Legacy] Bump version to 8.0.0-rc.2
b27584577d [Legacy] UserProfile Settings Modal Styling Fixes
2aba88dfe8 [Legacy] Meetings Styling Fixes
13d743e598 [Legacy] Password & System Settings Action Button Fixes
cfb0bcc86d [Legacy] User Setup Modal Styling Fixes
d05f3aa4f5 [Legacy] Fix legacy widget acl definitions
e469e337f8 [Legacy] Suite 8 extensions to legacy plugins
41e84b1d17 [Legacy] Override server variables when doing kernel bypass
7f5d03f280 Merge commit '75ea167930' into suite7merge
c5f43d6c88 [Legacy] Popup Selector Styling Fixes
0445c1c0ab [Legacy] update install language label
eb3fe0472b [Legacy] Dashlet Settings Modal Styling Fixes
6f0918b73d [Legacy] User Profile Mobile Styling Fixes
5af790f7fa [Legacy] Add acls calculation on legacy list data calls
096a59a7cf [Legacy] Get list of visible modules from module name mapper
c2d618e631 Fix valid module check
aa79de3a31 [Legacy] add widget acl metadata - update acl config for top widget
315b554b7e [Legacy] Subpanels Action Button Styling Fixes
c87e66a262 remove photo widgets for contacts and leads
433940a72f [Legacy] Admin Release Styling Fixes
c0a1378873 Suite8 ChangeLog ModalPopup Styling Fixes
aa484f3f9e [Legacy] Add close menu label
8f81b47c65 [Legacy] Add not module selected label
36a0b05eb2 [Legacy] Add parent type ApiBeanMapper
7e02d1d23c [Legacy] Fix username display for unauthorized users
2ea8f210a1 [Legacy] DetailView Header Title Overlaps fixes
2a25edd6c4 [Legacy] Fix htaccess generation
34500ba791 Fix Date Filed for Targets
211ce6bfbb [Legacy] Remove Button Hover Fixes
223adf26bc [Legacy] Reports footer button removed fixes
c567777afe [Legacy] Reports Styling Fixes
6f71ed31c2 [Legacy] Maps Button Position Fixes
c5d5936c22 [Legacy] Add Tab Dashlet Sapcing Fixes
018c11c562 [Legacy] Dashlet Setting Modal Label Fix & Button Fixes
9645c68ca6 [Legacy] Activity Stream Post Button Hover color fixes
445ab52dae [Legacy] Bump version to 8.0.0-rc
e10b872b21 [Legacy] Remove license from install app strings
e5c21ca68c Merge commit 'dd455a1c2d' into legacy_update_2
3886e3cfa6 Fix ignore system checks valitation
415cdd57b0 [Legacy] Add install labels
70ae186de5 [Legacy] add new install labels
7e05e69580 [Legacy] add install validator class
4c4ed83f3d [Legacy] Add Label for Subpanel Edit Line Action
17d8f4e7e9 [Legacy] Dashboard Mobile Styling Fixes
abd914702a [Legacy] History Subpanel Button Styling Fixes
34a0dac449 [Legacy] Workflow Stying Fixes
32c4827895 [Legacy] Convert Lead Styling Fixes
f1ca14c009 [Legacy] Roles Styling Fixes
3dbdce8055 [Legacy] Admin Modules label font fixes
36a38a1c44 [Legacy] HomePage Mobile Fixes
a5b451ab12 update legacy handlers to apply new logic considering - base actions - action resolvers - fix url navigation issue in classic view
87e6e239ce [Legacy] Module framework - move suite 8 module config to legacy
ee973e74f6 [Legacy] Add support for more metadata on listviewdefs
ad312c45fd [Legacy] Add Support for all modules with parent css classes
a409d81e2b [Legacy] Security Group Styling Fixes
5171ae319f [Legacy] Password Management Mobile Fixes
d0eca8193d [Leagcy] Email Settings Fixes
766af5f4e6 [Legacy] Products Modules Buttons fixes
99ec9e30f9 [Legacy] OAUTH2 Clients and tokens fixes
54c962a532 [Legacy] adapt legacy install scripts to work with Suite8 install
d6f20e38e6 [Legacy] add labels for S8 Installer
83b00b6a94 [Legacy] Add widget not found label
3ac807db61 Merge commit '114b895b6d' into merge_develop
1feeb409f8 [Legacy] Email Action DropDown Styling Fixes

git-subtree-dir: public/legacy
git-subtree-split: 5a663169652b57bb561de74a7e3a8051c9330a83
This commit is contained in:
Clemente Raposo 2022-01-26 12:07:37 +00:00
parent 41c2374a54
commit 588534d022
160 changed files with 2854 additions and 6446 deletions

View file

@ -736,17 +736,17 @@ class AOR_Report extends Basic
$html .= '<td nowrap="nowrap" align="right" class="paginationChangeButtons" width="1%">';
if ($offset == 0) {
$html .= "<button type='button' id='listViewStartButton_top' name='listViewStartButton' title='Start' class='list-view-pagination-button' disabled='disabled'>
<span class='suitepicon suitepicon-action-first'></span>
".SugarThemeRegistry::current()->getImage('paginate_first')."
</button>
<button type='button' id='listViewPrevButton_top' name='listViewPrevButton' class='list-view-pagination-button' title='Previous' disabled='disabled'>
<span class='suitepicon suitepicon-action-left'></span>
".SugarThemeRegistry::current()->getImage('paginate_previous')."
</button>";
} else {
$html .= "<button type='button' id='listViewStartButton_top' name='listViewStartButton' title='Start' class='list-view-pagination-button' onclick='changeReportPage(\"" . $this->id . '",0,"' . $group_value . '","' . $tableIdentifier . "\")'>
<span class='suitepicon suitepicon-action-first'></span>
".SugarThemeRegistry::current()->getImage('paginate_first')."
</button>
<button type='button' id='listViewPrevButton_top' name='listViewPrevButton' class='list-view-pagination-button' title='Previous' onclick='changeReportPage(\"" . $this->id . '",' . $previous_offset . ',"' . $group_value . '","' . $tableIdentifier . "\")'>
<span class='suitepicon suitepicon-action-left'></span>
".SugarThemeRegistry::current()->getImage('paginate_previous')."
</button>";
}
$html .= '</td><td style="vertical-align:middle" nowrap="nowrap" width="1%" class="paginationActionButtons">';
@ -754,17 +754,17 @@ class AOR_Report extends Basic
$html .= '</td><td nowrap="nowrap" align="right" class="paginationActionButtons" width="1%">';
if ($next_offset < $total_rows) {
$html .= "<button type='button' id='listViewNextButton_top' name='listViewNextButton' title='Next' class='list-view-pagination-button' onclick='changeReportPage(\"" . $this->id . '",' . $next_offset . ',"' . $group_value . '","' . $tableIdentifier . "\")'>
<span class='suitepicon suitepicon-action-right'></span>
".SugarThemeRegistry::current()->getImage('paginate_next')."
</button>
<button type='button' id='listViewEndButton_top' name='listViewEndButton' title='End' class='list-view-pagination-button' onclick='changeReportPage(\"" . $this->id . '",' . $last_offset . ',"' . $group_value . '","' . $tableIdentifier . "\")'>
<span class='suitepicon suitepicon-action-last'></span>
".SugarThemeRegistry::current()->getImage('paginate_last')."
</button>";
} else {
$html .= "<button type='button' id='listViewNextButton_top' name='listViewNextButton' title='Next' class='list-view-pagination-button' disabled='disabled'>
<span class='suitepicon suitepicon-action-right'></span>
".SugarThemeRegistry::current()->getImage('paginate_next')."
</button>
<button type='button' id='listViewEndButton_top' name='listViewEndButton' title='End' class='list-view-pagination-button' disabled='disabled'>
<span class='suitepicon suitepicon-action-last'></span>
".SugarThemeRegistry::current()->getImage('paginate_last')."
</button>";
}

View file

@ -946,7 +946,8 @@ function fixUpFormatting($module, $field, $value)
switch ($bean->field_defs[$field]['type']) {
case 'datetime':
case 'datetimecombo':
if (empty($value)) {
// If value is array, don't attempt to convert to DB format
if (empty($value) || is_array($value)) {
break;
}
if ($value == 'NULL') {
@ -959,7 +960,8 @@ function fixUpFormatting($module, $field, $value)
}
break;
case 'date':
if (empty($value)) {
// If value is array, don't attempt to convert to DB format
if (empty($value) || is_array($value)) {
break;
}
if ($value == 'NULL') {

View file

@ -0,0 +1,153 @@
<?php
if (!defined('sugarEntry') || !sugarEntry) {
die('Not A Valid Entry Point');
}
/**
*
* 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".
*/
global $current_user, $mod_strings, $app_strings, $log;
if (!is_admin($current_user)) {
echo $app_strings['ERR_NOT_ADMIN'];
return;
}
require_once __DIR__ . '/../../include/Services/NormalizeRecords/NormalizeRecords.php';
$repairStatus = NormalizeRecords::getRepairStatus();
if ($repairStatus === NormalizeRecords::REPAIR_STATUS_REPAIRED || $repairStatus === NormalizeRecords::REPAIR_STATUS_IN_PROGRESS) {
$mode = NormalizeRecords::getExecutionMode();
$smarty = new Sugar_Smarty();
$smarty->assign('MOD', $mod_strings);
$smarty->assign('status', $repairStatus);
$smarty->assign('mode', $mode);
$smarty->display('modules/Administration/templates/RepairUtfEncodingStatus.tpl');
return;
}
// the initial settings for the template variables to fill
$wasRepaired = '';
$config_file_ready = false;
$lbl_rebuild_config = $mod_strings['LBL_REBUILD_CONFIG'];
$btn_rebuild_config = $mod_strings['BTN_REBUILD_CONFIG'];
$disable_config_rebuild = 'disabled="disabled"';
// only do the rebuild if config file checks out and user has posted back
if (!empty($_POST['perform_rebuild_utf_encoding'])) {
$data = [];
$syncRun = !empty($_POST['syncRun']);
$keepTrackingTables = !empty($_POST['keepTrackingTables']);
$repairFrom = $_POST['repairFrom'] ?? null;
if ($repairFrom === null) {
$repairFrom = NormalizeRecords::UTF_REPAIR_FROM;
} elseif (NormalizeRecords::isValidRepairFrom($repairFrom)) {
$repairFrom .= ' 00:00:01';
} elseif (!NormalizeRecords::isValidRepairFrom($repairFrom)) {
$smarty = new Sugar_Smarty();
$smarty->assign('MOD', $mod_strings);
$smarty->assign('invalid_repair_from', true);
$smarty->display('modules/Administration/templates/RepairUtfEncoding.tpl');
return;
}
$data['repair_from'] = $repairFrom;
if ($syncRun === true) {
$smarty = new Sugar_Smarty();
$smarty->assign('MOD', $mod_strings);
$smarty->assign('status', 'in_progress');
$smarty->assign('mode', NormalizeRecords::EXECUTION_MODE_SYNC);
$smarty->display('modules/Administration/templates/RepairUtfEncodingSyncStatus.tpl');
ob_flush();
flush();
$normalize = new NormalizeRecords();
$result = $normalize->runAll($data, true);
echo '<h3 class="pt-0">' . $mod_strings['LBL_RESULT'] . '</h3>';
if ($result['success'] === true) {
echo '<div>' . $mod_strings['LBL_NORMALIZE_SUCCESS']. '</div>';
} else {
echo '<div>' . $mod_strings['LBL_NORMALIZE_FAILURE']. '</div>';
}
if (empty($result['messages'])) {
return;
}
foreach ($result['messages'] as $message) {
echo '<div>' . $message . '</div>';
}
return;
}
if (!empty($keepTrackingTables)){
$data['keepTracking'] = true;
}
require_once __DIR__ . '/../../include/Services/NormalizeRecords/NormalizeRecordsSchedulerJob.php';
NormalizeRecordsSchedulerJob::scheduleJob($data);
NormalizeRecords::setRepairStatus(NormalizeRecords::REPAIR_STATUS_IN_PROGRESS);
NormalizeRecords::setExecutionMode(NormalizeRecords::EXECUTION_MODE_SYNC);
$smarty = new Sugar_Smarty();
$smarty->assign('MOD', $mod_strings);
$smarty->assign('status', 'in_progress');
$smarty->assign('mode', NormalizeRecords::EXECUTION_MODE_ASYNC);
$smarty->display('modules/Administration/templates/RepairUtfEncodingStatus.tpl');
return;
}
if (!isset($_REQUEST['perform_rebuild_utf_encoding'])) {
$smarty = new Sugar_Smarty();
$smarty->assign('MOD', $mod_strings);
$smarty->assign('invalid_repair_from', false);
$smarty->display('modules/Administration/templates/RepairUtfEncoding.tpl');
}

View file

@ -67,14 +67,12 @@ class Controller extends AbstractController
public function doSave(): void
{
$searchEngine = filter_input(INPUT_POST, 'search-engine', FILTER_SANITIZE_STRING);
$aod = $searchEngine === 'BasicAndAodEngine';
SearchConfigurator::make()
->setEngine($searchEngine)
->save();
SearchModules::saveGlobalSearchSettings();
$this->doSaveAODConfig($aod);
if ($this->isAjax()) {
$this->yieldJson(['status' => 'success']);
@ -82,23 +80,4 @@ class Controller extends AbstractController
$this->redirect('index.php?module=Administration&action=index');
}
/**
* Saves the configuration getting data from POST.
* @param bool $enabled
*/
public function doSaveAODConfig(bool $enabled): void
{
$cfg = new Configurator();
if (!array_key_exists('aod', $cfg->config)) {
$cfg->config['aod'] = [
'enable_aod' => '',
];
}
$cfg->config['aod']['enable_aod'] = $enabled;
$cfg->saveConfig();
}
}

View file

@ -65,13 +65,11 @@ class View extends AbstractView
$this->smarty->assign('selectedEngine', SearchWrapper::getDefaultEngine());
$legacyEngines = [
'BasicSearchEngine' => translate('LBL_BASIC_SEARCH_ENGINE'),
'BasicAndAodEngine' => translate('LBL_BASIC_AND_AOD_ENGINE'),
'BasicSearchEngine' => translate('LBL_BASIC_SEARCH_ENGINE')
];
$engines = $this->getEngines();
$engines = array_merge($legacyEngines, $engines);
unset($engines['LuceneSearchEngine']);
$this->smarty->assign('engines', [
translate('LBL_SEARCH_WRAPPER_ENGINES') => $engines

View file

@ -162,4 +162,8 @@ if (strpos($server_software, 'Microsoft-IIS') === false) {
<td scope="row"><?php echo SugarThemeRegistry::current()->getImage('Repair', 'align="absmiddle" border="0"', null, null, '.gif', $mod_strings['LBL_REPAIR_UPLOAD_FOLDER']); ?>&nbsp;<a href="./index.php?module=Administration&action=RepairUploadFolder"><?php echo $mod_strings['LBL_REPAIR_UPLOAD_FOLDER']; ?></a></td>
<td> <?php echo $mod_strings['LBL_REPAIR_UPLOAD_FOLDER_DESC'] ; ?> </td>
</tr>
<tr>
<td scope="row"><?php echo SugarThemeRegistry::current()->getImage('Repair', 'align="absmiddle" border="0"', null, null, '.gif', $mod_strings['LBL_REPAIR_UPLOAD_FOLDER']); ?>&nbsp;<a href="./index.php?module=Administration&action=RepairUtfEncoding"><?php echo $mod_strings['LBL_REPAIR_UTF_ENCODING']; ?></a></td>
<td> <?php echo $mod_strings['LBL_REPAIR_UTF_ENCODING_DESC'] ; ?> </td>
</tr>
</table></p>

View file

@ -874,7 +874,6 @@ $mod_strings = array(
'LBL_AOS_SETTINGS' => 'Sales Module Settings',
'LBL_AOS_DAYS' => 'days',
'LBL_CHANGE_SETTINGS' => 'Change settings for Quotes, Contracts and Invoices',
'LBL_CHANGE_SETTINGS_AOD' => 'Change settings for Advanced OpenDiscovery',
'LBL_CHANGE_SETTINGS_AOP' => 'Change settings for Cases and the Cases Portal',
'LBL_MANAGE_SECURITYGROUPS_TITLE' => 'Security Suite Group Management',
@ -965,7 +964,6 @@ $mod_strings = array(
// Search Engines Translations
'LBL_SEARCH_WRAPPER_ENGINES' => 'Search Engines',
'LBL_BASIC_SEARCH_ENGINE' => 'Basic Search',
'LBL_BASIC_AND_AOD_ENGINE' => 'Basic + Advanced Search',
'LBL_ELASTIC_SEARCH_ENGINE' => 'Elasticsearch Engine',
'LBL_SIMPLE_SQL_SEARCH_ENGINE' => 'Simple SQL Search Engine',
@ -985,8 +983,39 @@ $mod_strings = array(
'LBL_AJAX_SUBMIT_FAIL' => 'An error has occurred while saving the settings.',
'LBL_ADMIN_TOOLS_TITLE' => 'Admin Tools',
'LBL_ADMIN_TOOLS_HEADER_DESC' => 'Repair, upgrade and run diagnosis on your SuiteCRM instance',
'LBL_ADMIN_TOOLS_HEADER_DESC' => 'Repair, backup and run diagnosis on your SuiteCRM instance',
'LBL_WORKFLOW_MANAGER' => 'Workflow Manager',
'LBL_WORKFLOW_MANAGER_DESC' => 'Manage, Add, delete or change Workflow processes',
'LBL_WARNING' => 'Warning',
'LBL_ERROR' => 'Error',
'LBL_SUBMIT' => 'Submit',
'LBL_REPAIR_UTF_ENCODING' => 'Repair utf encoding',
'LBL_REPAIR_UTF_ENCODING_DESC' => 'Repair records with wrongly encoded utf characters',
'LBL_REPAIR_UTF_ENCODING_DATA_WARNING' => 'The data on your tables is going to be updated.',
'LBL_REPAIR_UTF_ENCODING_BACKUP_WARNING' => 'Please make sure to backup your database before you run this action.',
'LBL_REPAIR_UTF_ENCODING_SYNC_WARNING' => 'By default this action will add a job to the job queue. It will normalize records in batches. This requires cron to be configured.',
'LBL_REPAIR_UTF_ENCODING_ASYNC_WARNING' => 'Running in asynchronous mode. A job should have been added to the job queue. It will normalize records in batches. This requires cron to be configured.',
'LBL_REPAIR_UTF_ENCODING_ASYNC_PROGRESS_CHECK' => "For progress information, please check the data on the job_queue table entry with name 'repair utf encoding' ",
'LBL_REPAIR_UTF_ENCODING_SYNC_PROGRESS_CHECK' => "Running in synchronous mode. This action will take a while. For progress information, please check SuiteCRM logs. Check logs with '[utf-normalize]'",
'LBL_KEEP_TRACKING_TABLES' => 'Keep Tracking tables',
'LBL_REPAIR_FROM_DATE' => 'Repair from',
'LBL_REPAIR_UTF_ENCODING_REPAIR_FROM_INVALID' => 'Provided \'Repair from\' value is not valid',
'LBL_SYNC_RUN' => 'Run Repair Synchronously?',
'LBL_SYNC_RUNNING' => 'Running in sync mode',
'LBL_SYNC_RUNNING_INFORMATION_OUTPUT' => 'Do not move away from this page/view. Result information will be displayed.',
'LBL_SYNC_RUNNING_INFORMATION_LOGS' => "You can also check SuiteCRM logs for more information. Check logs with '[utf-normalize]'",
'LBL_SYNC_LONG_EXECUTION_WARNING' => 'This action will take a while.',
'LBL_SYNC_RUN_DESC' => 'Check to run action in synchronous mode. This action will take a while. Please check SuiteCRM logs for progress information. Check logs with \'[utf-normalize]\'',
'LBL_NORMALIZE_SUCCESS' => 'Normalize records successfully executed',
'LBL_NORMALIZE_FAILURE' => 'Error while running normalize records',
'LBL_EXECUTION_STATUS' => 'Execution Status',
'LBL_EXECUTION_MODE' => 'Execution Mode',
'LBL_IN_PROGRESS' => 'In Progress',
'LBL_REPAIRED' => 'Repaired',
'LBL_SYNCHRONOUS' => 'Synchronous',
'LBL_ASYNCHRONOUS' => 'Asynchronous',
'LBL_OUTPUT' => 'OUTPUT',
'LBL_RESULT' => 'Result'
);

View file

@ -319,15 +319,6 @@ $admin_option_defs['Administration']['module_loader'] = [
'./index.php?module=Administration&action=UpgradeWizard&view=module',
'module-loader'
];
if (!defined('TEMPLATE_URL')) {
$admin_option_defs['Administration']['upgrade_wizard'] = [
'Upgrade',
'LBL_UPGRADE_WIZARD_TITLE',
'LBL_UPGRADE_WIZARD',
'./index.php?module=UpgradeWizard&action=index',
'upgrade-wizard'
];
}
$admin_group_header[] = ['LBL_ADMIN_TOOLS_TITLE', '', false, $admin_option_defs, 'LBL_ADMIN_TOOLS_HEADER_DESC'];

View file

@ -1,4 +1,4 @@
<?php
{*
/**
*
* SugarCRM Community Edition is a customer relationship management program developed by
@ -37,39 +37,46 @@
* reasonably feasible for technical reasons, the Appropriate Legal Notices must
* display the words "Powered by SugarCRM" and "Supercharged by SuiteCRM".
*/
$module_name = 'Spots';
$viewdefs[$module_name]['DetailView'] = array(
'templateMeta' => array('form' => array('buttons' => array('EDIT', 'DUPLICATE', 'DELETE', 'FIND_DUPLICATES',
)),
'maxColumns' => '2',
'widths' => array(
array('label' => '10', 'field' => '30'),
array('label' => '10', 'field' => '30'),
),
),
*}
'panels' => array(
<div class="view" style="min-height: calc(100vh - 200px)">
<h2 class="pt-0">{$MOD.LBL_REPAIR_UTF_ENCODING}</h2>
<div class="alert alert-warning sm" role="alert">
<h4 class="alert-heading">{$MOD.LBL_WARNING}</h4>
<p>{$MOD.LBL_REPAIR_UTF_ENCODING_DATA_WARNING}</p>
<p>{$MOD.LBL_REPAIR_UTF_ENCODING_BACKUP_WARNING}</p>
<p>{$MOD.LBL_REPAIR_UTF_ENCODING_SYNC_WARNING}</p>
</div>
array(
'name',
'assigned_user_name',
),
{if $invalid_repair_from eq true}
<div class="alert alert-danger sm" role="alert">
<h4 class="alert-heading">{$MOD.LBL_ERROR}</h4>
<p>{$MOD.LBL_REPAIR_UTF_ENCODING_REPAIR_FROM_INVALID}</p>
</div>
{/if}
array(
array(
'name' => 'date_entered',
'customCode' => '{$fields.date_entered.value} {$APP.LBL_BY} {$fields.created_by_name.value}',
'label' => 'LBL_DATE_ENTERED',
),
array(
'name' => 'date_modified',
'customCode' => '{$fields.date_modified.value} {$APP.LBL_BY} {$fields.modified_by_name.value}',
'label' => 'LBL_DATE_MODIFIED',
),
),
array(
'description',
),
),
);
<form name="RepairUtfEncoding" method="post" action="index.php">
<input type="hidden" name="module" value="Administration">
<input type="hidden" name="action" value="RepairUtfEncoding">
<input type="hidden" name="return_module" value="Administration">
<input type="hidden" name="return_action" value="RepairUtfEncoding">
<input type="hidden" name="perform_rebuild_utf_encoding" value="true">
<div class="other view container-fluid">
<div class="row">
<div class="col-sm-3" >{$MOD.LBL_SYNC_RUN}</div>
<div class="col-sm-9"><input type="checkbox" name="syncRun" value="true"></div>
</div>
<div class="row">
<div class="col-sm-3" >{$MOD.LBL_KEEP_TRACKING_TABLES}</div>
<div class="col-sm-9"><input type="checkbox" name="keepTrackingTables" value="true"></div>
</div>
<div class="row">
<div class="col-sm-3" >{$MOD.LBL_REPAIR_FROM_DATE}</div>
<div class="col-sm-3"><input type="date" name="repairFrom" class="form-control" value="2021-04-27"></div>
</div>
<div class="row">
<div class="col-sm-3"><input type="submit" name="button" value="{$MOD.LBL_SUBMIT}"></div>
</div>
</div>
</form>
</div>

View file

@ -1,4 +1,4 @@
<?php
{*
/**
*
* SugarCRM Community Edition is a customer relationship management program developed by
@ -37,40 +37,46 @@
* reasonably feasible for technical reasons, the Appropriate Legal Notices must
* display the words "Powered by SugarCRM" and "Supercharged by SuiteCRM".
*/
$module_name = 'Spots';
$viewdefs[$module_name]['EditView'] = array(
'templateMeta' => array(
*}
'form' => array(
'hidden' => array(
0 => '<input type="hidden" name="config" value="{$fields.config.value}">',
),
),
<div class="view" style="min-height: calc(100vh - 200px)">
<h2 class="pt-0">{$MOD.LBL_REPAIR_UTF_ENCODING}</h2>
'maxColumns' => '2',
'widths' => array(
array('label' => '10', 'field' => '30'),
array('label' => '10', 'field' => '30'),
),
'includes' => array(
0 => array(
'file' => 'modules/Favorites/favorites.js'
)
)
),
<div class="container-fluid">
<div class="row">
<div class="col-sm-2">
<strong>{$MOD.LBL_EXECUTION_STATUS}</strong>
</div>
<div class="col-sm-1">
<span class="label label-warning">{if $status eq 'in_progress'} {$MOD.LBL_IN_PROGRESS} {else} {$MOD.LBL_REPAIRED} {/if}</span>
</div>
</div>
<div class="row">
<div class="col-sm-2">
<strong>{$MOD.LBL_EXECUTION_MODE}</strong>
</div>
<div class="col-sm-1">
<span class="label label-warning">{if $mode eq 'sync'} {$MOD.LBL_SYNCHRONOUS} {else} {$MOD.LBL_ASYNCHRONOUS} {/if}</span>
</div>
</div>
</div>
'panels' => array(
'default' => array(
{if $mode eq 'async'}
<hr/>
<div class="alert alert-warning sm" role="alert">
<h4 class="alert-heading">{$MOD.LBL_WARNING}</h4>
{if $status eq 'in_progress'}<p>{$MOD.LBL_REPAIR_UTF_ENCODING_ASYNC_WARNING}</p> {/if}
<p>{$MOD.LBL_REPAIR_UTF_ENCODING_ASYNC_PROGRESS_CHECK}</p>
</div>
array(
'name', 'type',
),
{/if}
array(
'configurationGUI',
),
),
{if $mode eq 'sync' && $status eq 'in_progress' }
<hr/>
<div class="alert alert-warning sm" role="alert">
<h4 class="alert-heading">{$MOD.LBL_WARNING}</h4>
<p>{$MOD.LBL_REPAIR_UTF_ENCODING_SYNC_PROGRESS_CHECK}</p>
</div>
),
);
{/if}
</div>

View file

@ -1,4 +1,4 @@
<?php
{*
/**
*
* SugarCRM Community Edition is a customer relationship management program developed by
@ -37,20 +37,40 @@
* reasonably feasible for technical reasons, the Appropriate Legal Notices must
* display the words "Powered by SugarCRM" and "Supercharged by SuiteCRM".
*/
*}
require_once 'include/ListView/ListViewSmarty.php';
<div class="view" >
<h2 class="pt-0">{$MOD.LBL_REPAIR_UTF_ENCODING}</h2>
class SpotsListViewSmarty extends ListViewSmarty
{
<div class="container-fluid">
<div class="row">
<div class="col-sm-2">
<strong>{$MOD.LBL_EXECUTION_STATUS}</strong>
</div>
<div class="col-sm-1">
<span class="label label-warning">{$MOD.LBL_IN_PROGRESS}</span>
</div>
</div>
<div class="row">
<div class="col-sm-2">
<strong>{$MOD.LBL_EXECUTION_MODE}</strong>
</div>
<div class="col-sm-1">
<span class="label label-warning">{$MOD.LBL_SYNCHRONOUS}</span>
</div>
</div>
</div>
/**
* Constructor
*
*/
public function __construct()
{
parent::__construct();
}
{if $mode eq 'sync'}
<hr/>
<div class="alert alert-warning sm" role="alert">
<h4 class="alert-heading">{$MOD.LBL_WARNING}</h4>
<p>{$MOD.LBL_SYNC_LONG_EXECUTION_WARNING}</p>
<p>{$MOD.LBL_SYNC_RUNNING_INFORMATION_OUTPUT}</p>
<p>{$MOD.LBL_SYNC_RUNNING_INFORMATION_LOGS}</p>
</div>
{/if}
</div>
<h3 class="pt-0">{$MOD.LBL_OUTPUT}</h3>
}

View file

@ -207,7 +207,7 @@ array(
]
],
'acls' => [
'Case' => ['view', 'list']
'Cases' => ['view', 'list']
]
],
[
@ -253,7 +253,7 @@ array(
]
],
'acls' => [
'Case' => ['view', 'list'],
'Cases' => ['view', 'list'],
'Accounts' => ['view', 'list']
]
],

View file

@ -202,143 +202,6 @@ $mod_strings = array(
'LBL_IMPORT_MAX_RECORDS' => 'Import - Maximum Number of Rows:',
'LBL_IMPORT_MAX_RECORDS_HELP' => 'Specify how many rows are allowed within import files.<br>If the number of rows in an import file exceeds this number, the user will be alerted.<br>If no number is entered, an unlimited number of rows are allowed.',
'vCAL_HELP' => 'Use this setting to determine the number of months in advance of the current date that Free/Busy information for calls and meetings is published.<BR>To turn Free/Busy publishing off, enter "0". The minimum is 1 month; the maximum is 12 months.',
'LBL_PDFMODULE_NAME' => 'PDF Settings',
'SUITEPDF_BASIC_SETTINGS' => 'Document Properties',
'SUITEPDF_ADVANCED_SETTINGS' => 'Advanced Settings',
'SUITEPDF_LOGO_SETTINGS' => 'Images',
'PDF_AUTHOR' => 'Author',
'PDF_AUTHOR_INFO' => 'The Author appears in the document properties.',
'PDF_HEADER_LOGO' => 'For Quotes PDF Documents',
'PDF_HEADER_LOGO_INFO' => 'This image appears in the default Header in Quotes PDF Documents.',
'PDF_NEW_HEADER_LOGO' => 'Select New Image for Quotes',
'PDF_NEW_HEADER_LOGO_INFO' => 'The file format can be either .jpg or .png. (Only .jpg for EZPDF)<BR>The recommended size is 867x60 px.',
'PDF_SMALL_HEADER_LOGO' => 'For Reports PDF Documents',
'PDF_SMALL_HEADER_LOGO_INFO' => 'This image appears in the default Header in Reports PDF Documents.<br> This image also appears in the top left-hand corner of the SuiteCRM application.',
'PDF_NEW_SMALL_HEADER_LOGO' => 'Select New Image for Reports',
'PDF_NEW_SMALL_HEADER_LOGO_INFO' => 'The file format can be either .jpg or .png. (Only .jpg for EZPDF)<BR>The recommended size is 212x40 px.',
'PDF_FILENAME' => 'Default Filename',
'PDF_FILENAME_INFO' => 'Default filename for the generated PDF files',
'PDF_TITLE' => 'Title',
'PDF_TITLE_INFO' => 'The Title appears in the document properties.',
'PDF_SUBJECT' => 'Subject',
'PDF_SUBJECT_INFO' => 'The Subject appears in the document properties.',
'PDF_KEYWORDS' => 'Keyword(s)',
'PDF_KEYWORDS_INFO' => 'Associate Keywords with the document, generally in the form "keyword1 keyword2..."',
'PDF_COMPRESSION' => 'Compression',
'PDF_COMPRESSION_INFO' => 'Activates or deactivates page compression. <br>When activated, the internal representation of each page is compressed, which leads to a compression ratio of about 2 for the resulting document.',
'PDF_JPEG_QUALITY' => 'JPEG Quality (1-100)',
'PDF_JPEG_QUALITY_INFO' => 'Set the default JPEG compression quality (1-100)',
'PDF_PDF_VERSION' => 'PDF Version',
'PDF_PDF_VERSION_INFO' => 'Set the PDF version (check PDF reference for valid values).',
'PDF_PROTECTION' => 'Document Protection',
'PDF_PROTECTION_INFO' => 'Set document protection<br>- copy: copy text and images to the clipboard<br>- print: print the document<br>- modify: modify it (except for annotations and forms)<br>- annot-forms: add annotations and forms<br>Note: the protection against modification is for people who have the full Acrobat product.',
'PDF_USER_PASSWORD' => 'User Password',
'PDF_USER_PASSWORD_INFO' => 'If you don\\\'t set any password, the document will open as usual. <br>If you set a user password, the PDF viewer will ask for it before displaying the document. <br>The master password, if different from the user one, can be used to get full access.',
'PDF_OWNER_PASSWORD' => 'Owner Password',
'PDF_OWNER_PASSWORD_INFO' => 'If you don\\\'t set any password, the document will open as usual. <br>If you set a user password, the PDF viewer will ask for it before displaying the document. <br>The master password, if different from the user one, can be used to get full access.',
'PDF_ACL_ACCESS' => 'Access Control',
'PDF_ACL_ACCESS_INFO' => 'Default Access Control for the PDF generation.',
'K_CELL_HEIGHT_RATIO' => 'Cell Height Ratio',
'K_CELL_HEIGHT_RATIO_INFO' => 'If the height of a cell is smaller than (Font Height x Cell Height Ratio), then (Font Height x Cell Height Ratio) is used as the cell height.<br>(Font Height x Cell Height Ratio) is also used as the height of the cell when no height is define.',
'K_SMALL_RATIO' => 'Small Font Factor',
'K_SMALL_RATIO_INFO' => 'Reduction factor for small font.',
'PDF_IMAGE_SCALE_RATIO' => 'Image scale ratio',
'PDF_IMAGE_SCALE_RATIO_INFO' => 'Ratio used to scale the images',
'PDF_UNIT' => 'Unit',
'PDF_UNIT_INFO' => 'document unit of measure',
'PDF_GD_WARNING' => 'You do not have the GD library installed for PHP. Without the GD library installed, only JPEG logos can be displayed in PDF documents.',
'ERR_EZPDF_DISABLE' => 'Warning : The EZPDF class is disabled from the config table and it set as the PDF class. Please "Save" this form to set TCPDF as the PDF Class and return in a stable state.',
'LBL_IMG_RESIZED' => "(resized for display)",
'LBL_FONTMANAGER_BUTTON' => 'PDF Font Manager',
'LBL_FONTMANAGER_TITLE' => 'PDF Font Manager',
'LBL_FONT_BOLD' => 'Bold',
'LBL_FONT_ITALIC' => 'Italic',
'LBL_FONT_BOLDITALIC' => 'Bold/Italic',
'LBL_FONT_REGULAR' => 'Regular',
'LBL_FONT_TYPE_CID0' => 'CID-0',
'LBL_FONT_TYPE_CORE' => 'Core',
'LBL_FONT_TYPE_TRUETYPE' => 'TrueType',
'LBL_FONT_TYPE_TYPE1' => 'Type1',
'LBL_FONT_TYPE_TRUETYPEU' => 'TrueTypeUnicode',
'LBL_FONT_LIST_NAME' => 'Name',
'LBL_FONT_LIST_FILENAME' => 'Filename',
'LBL_FONT_LIST_TYPE' => 'Type',
'LBL_FONT_LIST_STYLE' => 'Style',
'LBL_FONT_LIST_STYLE_INFO' => 'Style of the font',
'LBL_FONT_LIST_ENC' => 'Encoding',
'LBL_FONT_LIST_EMBEDDED' => 'Embedded',
'LBL_FONT_LIST_EMBEDDED_INFO' => 'Check to embed the font into the PDF file',
'LBL_FONT_LIST_CIDINFO' => 'CID Information',
'LBL_FONT_LIST_CIDINFO_INFO' => 'Examples :
<ul><li>.
Chinese Traditional :<br>.
<pre>\$enc=\'UniCNS-UTF16-H\';<br>.
\$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'CNS1\',\'Supplement\'=>0);<br>.
include(\'include/tcpdf/fonts/uni2cid_ac15.php\');</pre>.
</li><li>.
Chinese Simplified :<br>.
<pre>\$enc=\'UniGB-UTF16-H\';<br>.
\$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'GB1\',\'Supplement\'=>2);<br>.
include(\'include/tcpdf/fonts/uni2cid_ag15.php\');</pre>.
</li><li>.
Korean :<br>.
<pre>\$enc=\'UniKS-UTF16-H\';<br>.
\$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'Korea1\',\'Supplement\'=>0);<br>.
include(\'include/tcpdf/fonts/uni2cid_ak12.php\');</pre>.
</li><li>.
Japanese :<br>.
<pre>\$enc=\'UniJIS-UTF16-H\';<br>.
\$cidinfo=array(\'Registry\'=>\'Adobe\', \'Ordering\'=>\'Japan1\',\'Supplement\'=>5);<br>.
include(\'include/tcpdf/fonts/uni2cid_aj16.php\');</pre>.
</li></ul>.
More help : www.tcpdf.org',
'LBL_FONT_LIST_FILESIZE' => 'Font Size (KB)',
'LBL_ADD_FONT' => 'Add a font',
'LBL_BACK' => 'Back',
'LBL_REMOVE' => 'Remove',
'LBL_JS_CONFIRM_DELETE_FONT' => 'Are you sure that you want to delete this font?',
'LBL_ADDFONT_TITLE' => 'Add a PDF Font',
'LBL_PDF_ENCODING_TABLE' => 'Encoding Table',
'LBL_PDF_ENCODING_TABLE_INFO' => 'Name of the encoding table.<br>This option is ignored for TrueType Unicode, OpenType Unicode and symbolic fonts.<br>The encoding defines the association between a code (from 0 to 255) and a character contained in the font.<br>The first 128 are fixed and correspond to ASCII.',
'LBL_PDF_FONT_FILE' => 'Font File',
'LBL_PDF_FONT_FILE_INFO' => '.ttf or .otf or .pfb file',
'LBL_PDF_METRIC_FILE' => 'Metric File',
'LBL_PDF_METRIC_FILE_INFO' => '.afm or .ufm file',
'LBL_ADD_FONT_BUTTON' => 'Add',
'JS_ALERT_PDF_WRONG_EXTENSION' => 'This file do not have a good file extension.',
'ERR_MISSING_CIDINFO' => 'The field CID Information cannot be empty.',
'LBL_ADDFONTRESULT_TITLE' => 'Result of the add font process',
'LBL_STATUS_FONT_SUCCESS' => 'SUCCESS : The font has been added to SuiteCRM.',
'LBL_STATUS_FONT_ERROR' => 'ERROR : The font has not been added. Look at the log below.',
// Font manager
'ERR_PDF_NO_UPLOAD' => 'Error during the upload of the font or metric file.',
// Wizard
//Wizard Scenarios

View file

@ -171,6 +171,10 @@ $viewdefs ['Contacts'] =
),
),
),
'summaryTemplates' => [
'edit' => 'LBL_SUMMARY_PERSON',
'detail' => 'LBL_SUMMARY_PERSON',
],
'topWidget' => [
'type' => 'statistics',
'options' => [
@ -218,16 +222,10 @@ $viewdefs ['Contacts'] =
array(
0 =>
array(
'name' => 'first_name',
'comment' => 'First name of the contact',
'label' => 'LBL_FIRST_NAME',
),
1 =>
array(
'name' => 'last_name',
'comment' => 'Last name of the contact',
'label' => 'LBL_LAST_NAME',
'name' => 'full_name',
'label' => 'LBL_NAME',
),
1 => '',
),
1 =>
array(

View file

@ -905,7 +905,7 @@ class EmailTemplate extends SugarBean
private function repairEntryPointImages()
{
global $sugar_config;
global $sugar_config, $log;
// repair the images url at entry points, change to a public direct link for remote email clients..
@ -914,8 +914,17 @@ class EmailTemplate extends SugarBean
$regex = '#<img[^>]*[\s]+src=[\s]*["\'](' . preg_quote($siteUrl) . '\/index\.php\?entryPoint=download&type=Notes&id=([a-f0-9]{8}\-[a-f0-9]{4}\-[a-f0-9]{4}\-[a-f0-9]{4}\-[a-f0-9]{12})&filename=.+?)["\']#si';
if (preg_match($regex, $html, $match)) {
$splits = explode('.', $match[1]);
$fileExtension = end($splits);
$toFile = $match[2] . '.' . $fileExtension;
if (is_string($toFile) && !has_valid_image_extension('repair-entrypoint-images-fileext', $toFile)){
$log->error("repairEntryPointImages | file with invalid extension '$toFile'");
return;
}
$this->makePublicImage($match[2], $fileExtension);
$newSrc = $sugar_config['site_url'] . '/public/' . $match[2] . '.' . $fileExtension;
$this->body_html = to_html(str_replace($match[1], $newSrc, $html));

View file

@ -535,6 +535,7 @@ div#content {
.emailSettings tr td:first-child {
padding-right: 10px;
padding-bottom: 10px;
}
.emailSettings tr td:nth-child(2) {

View file

@ -3406,17 +3406,17 @@
var dlg = SE.settings.settingsDialog = new YAHOO.widget.Dialog("settingsDialog", {
modal: true,
visible: false,
fixedcenter: false,
fixedcenter: true,
draggable: true,
constraintoviewport: false
constraintoviewport: true
});
dlg.showEvent.subscribe(function () {
var el = this.element;
var viewH = YAHOO.util.Dom.getViewportHeight();
if (this.header && el && viewH - 50 < el.clientHeight) {
if (this.header && el && viewH - 150 < el.clientHeight) {
var body = this.header.nextElementSibling;
body.style.overflow = "auto";
body.style.height = (viewH - 50) + "px";
body.style.height = (viewH - 150) + "px";
}
}, dlg);
dlg.setHeader(app_strings.LBL_EMAIL_SETTINGS);
@ -3452,11 +3452,10 @@
tp.appendTo(dlg.body);
}
SE.settings.settingsDialog.center();
SE.settings.settingsDialog.show();
SE.folders.lazyLoadSettings(user);
SE.accounts.lazyLoad(user);
$(window).scrollLeft(0);
},
@ -3547,3 +3546,5 @@ function setSigEditButtonVisibility() {
deleteButt.style.visibility = "hidden";
}
}

View file

@ -49,7 +49,7 @@
<table border="0" cellspacing="0" cellpadding="0" class="edit view">
<tr>
<td>
<td colspan="2">
<h4>{$mod_strings.LBL_EMAIL_SETTINGS_INBOUND}</h4>
</td>
<td style="vertical-align:bottom;"><a href="javascript:void(0);" id="prefill_gmail_defaults_link"

View file

@ -387,6 +387,10 @@ class FP_eventsController extends SugarController
$invite_count = 0; //used to count the number of emails sent
$error_count = 0; //used to count the number of failed email attempts
$acceptLabel = $mod_strings['LBL_ACCEPT_LINK'];
$declineLabel = $mod_strings['LBL_DECLINE_LINK'];
$event_mod_strings = $mod_strings;
//loop through related contacts
foreach ($event->fp_events_contacts->getBeans() as $contact) {
@ -398,8 +402,8 @@ class FP_eventsController extends SugarController
if ($status == null || $status == '' || $status == 'Not Invited') {
$invite_count ++;
//set email links
$event->link = "<a href='".$sugar_config['site_url']."/index.php?entryPoint=responseEntryPoint&event=".$event->id."&delegate=".$contact->id."&type=c&response=accept'>{$mod_strings['LBL_ACCEPT_LINK']}</a>";
$event->link_declined = "<a href='".$sugar_config['site_url']."/index.php?entryPoint=responseEntryPoint&event=".$event->id."&delegate=".$contact->id."&type=c&response=decline'>{$mod_strings['LBL_DECLINE_LINK']}</a>";
$event->link = "<a href='".$sugar_config['site_url']."/index.php?entryPoint=responseEntryPoint&event=".$event->id."&delegate=".$contact->id."&type=c&response=accept'>{$acceptLabel}</a>";
$event->link_declined = "<a href='".$sugar_config['site_url']."/index.php?entryPoint=responseEntryPoint&event=".$event->id."&delegate=".$contact->id."&type=c&response=decline'>{$declineLabel}</a>";
//Get the TO name and e-mail address for the message
$rcpt_name = $contact->first_name . ' ' . $contact->last_name;
@ -411,7 +415,7 @@ class FP_eventsController extends SugarController
//check email template is set, if not return error
if ($emailTemp->id == '') {
SugarApplication::appendErrorMessage($mod_strings['LBL_ERROR_MSG_5']);
SugarApplication::appendErrorMessage($event_mod_strings['LBL_ERROR_MSG_5']);
SugarApplication::redirect("index.php?module=FP_events&return_module=FP_events&action=DetailView&record=".$event->id);
die();
}
@ -462,8 +466,8 @@ class FP_eventsController extends SugarController
$invite_count ++;
//set email links
$event->link = "<a href='".$sugar_config['site_url']."/index.php?entryPoint=responseEntryPoint&event=".$event->id."&delegate=".$target->id."&type=t&response=accept'>{$mod_strings['LBL_ACCEPT_LINK']}</a>";
$event->link_declined = "<a href='".$sugar_config['site_url']."/index.php?entryPoint=responseEntryPoint&event=".$event->id."&delegate=".$target->id."&type=t&response=decline'>{$mod_strings['LBL_DECLINE_LINK']}</a>";
$event->link = "<a href='".$sugar_config['site_url']."/index.php?entryPoint=responseEntryPoint&event=".$event->id."&delegate=".$target->id."&type=t&response=accept'>{$acceptLabel}</a>";
$event->link_declined = "<a href='".$sugar_config['site_url']."/index.php?entryPoint=responseEntryPoint&event=".$event->id."&delegate=".$target->id."&type=t&response=decline'>{$declineLabel}</a>";
//Get the TO name and e-mail address for the message
$rcpt_name = $target->first_name . ' ' . $target->last_name;
@ -518,8 +522,8 @@ class FP_eventsController extends SugarController
if ($status == null || $status == '' || $status == 'Not Invited') {
$invite_count ++;
//set email links
$event->link = "<a href='".$sugar_config['site_url']."/index.php?entryPoint=responseEntryPoint&event=".$event->id."&delegate=".$lead->id."&type=l&response=accept'>{$mod_strings['LBL_ACCEPT_LINK']}</a>";
$event->link_declined = "<a href='".$sugar_config['site_url']."/index.php?entryPoint=responseEntryPoint&event=".$event->id."&delegate=".$lead->id."&type=l&response=decline'>{$mod_strings['LBL_DECLINE_LINK']}</a>";
$event->link = "<a href='".$sugar_config['site_url']."/index.php?entryPoint=responseEntryPoint&event=".$event->id."&delegate=".$lead->id."&type=l&response=accept'>{$acceptLabel}</a>";
$event->link_declined = "<a href='".$sugar_config['site_url']."/index.php?entryPoint=responseEntryPoint&event=".$event->id."&delegate=".$lead->id."&type=l&response=decline'>{$declineLabel}</a>";
//Get the TO name and e-mail address for the message
$rcpt_name = $lead->first_name . ' ' . $lead->last_name;
@ -565,26 +569,26 @@ class FP_eventsController extends SugarController
}
//Redirect with error message if all linked contacts have already been invited
if ($invite_count == 0) {
SugarApplication::appendErrorMessage($mod_strings['LBL_ERROR_MSG_1']);
SugarApplication::appendErrorMessage($event_mod_strings['LBL_ERROR_MSG_1']);
SugarApplication::redirect("index.php?module=FP_events&return_module=FP_events&action=DetailView&record=".$event->id);
}
//Redirect if all emails fail to send
if ($error_count == $delegate_count) {
$_SESSION['user_error_message'] = array();//clear the error message array
SugarApplication::appendErrorMessage($mod_strings['LBL_ERROR_MSG_2'].$delegate_count);
SugarApplication::appendErrorMessage($event_mod_strings['LBL_ERROR_MSG_2'].$delegate_count);
SugarApplication::redirect("index.php?module=FP_events&return_module=FP_events&action=DetailView&record=".$event->id);
} elseif ($error_count > 0 && $error_count <= 10) {//redirect with failed email count.
$_SESSION['user_error_message'] = array();
SugarApplication::appendErrorMessage($error_count.$mod_strings['LBL_ERROR_MSG_4']);
SugarApplication::appendErrorMessage($error_count.$event_mod_strings['LBL_ERROR_MSG_4']);
SugarApplication::redirect("index.php?module=FP_events&return_module=FP_events&action=DetailView&record=".$event->id);
}
// Redirect with error count if failed email attempts are greater than 10
elseif ($error_count > 10) {
$_SESSION['user_error_message'] = array();
SugarApplication::appendErrorMessage($mod_strings['LBL_ERROR_MSG_3']);
SugarApplication::appendErrorMessage($event_mod_strings['LBL_ERROR_MSG_3']);
SugarApplication::redirect("index.php?module=FP_events&return_module=FP_events&action=DetailView&record=".$event->id);
} else {
SugarApplication::appendErrorMessage($mod_strings['LBL_SUCCESS_MSG']);
SugarApplication::appendErrorMessage($event_mod_strings['LBL_SUCCESS_MSG']);
SugarApplication::redirect("index.php?module=FP_events&return_module=FP_events&action=DetailView&record=".$event->id);
}
}

View file

@ -146,6 +146,16 @@ class ImportController extends SugarController
return;
}
if (isset($fileName) && !hasValidFileName('import_refresh_mapping_file_name', str_replace('upload://', '', $fileName))) {
LoggerManager::getLogger()->fatal('Invalid importFile file name');
return;
}
if (strpos($fileName, 'phar://') !== false) {
LoggerManager::getLogger()->fatal('Invalid importFile file path');
return;
}
$delim = $_REQUEST['delim'];
if ($delim === '\t') {

View file

@ -39,9 +39,6 @@
* display the words "Powered by SugarCRM" and "Supercharged by SuiteCRM".
*/
*}
{$INSTRUCTION}
@ -70,8 +67,6 @@
{include file='modules/Import/tpls/confirm_table.tpl'}
</div>
<table cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="left" colspan="4" style="background: transparent;">
@ -84,8 +79,8 @@
</tr>
<tr>
<td>
<div style="overflow: auto; width: 1056px;">
<table border=0 class="edit view noBorder" style="display: none;" id="importOptions">
<div style="overflow: auto; width: 100%;">
<table border=0 class="edit view noBorder" style="display: none;margin-bottom: 1em;" id="importOptions">
<tr>
<td scope="col">
<span><label for="importlocale_charset">{$MOD.LBL_CHARSET}</label></span>

View file

@ -58,7 +58,6 @@
padding-right:30px;
}
-->
</style>
{/literal}
@ -91,12 +90,12 @@
<div class="hr"></div>
<div>
<table border="0" cellpadding="30" id="importTable" style="width:60% !important;">
<table border="0" cellpadding="30" id="importTable" style="width:100% !important;margin-top:1em;">
<tr>
<td width="40%" colspan="2">
<table id="DupeCheck" class="themeSettings edit view noBorder" style='margin-bottom:0px;' border="0" cellspacing="10" cellpadding="0" width = '100%'>
<table id="DupeCheck" class="themeSettings edit view noBorder" style='margin-bottom:11px;' border="0" cellspacing="10" cellpadding="0" width = '100%'>
<tr>
<td align="right">
<td align="right" width="1%">
<div id="enabled_div" class="enabled_tab_workarea">
</div>
</td>
@ -110,10 +109,14 @@
</tr>
</table>
<div class="hr"></div>
<span><strong><label for="save_map_as">{$MOD.LBL_SAVE_MAPPING_AS}</label></strong> {sugar_help text=$MOD.LBL_SAVE_MAPPING_HELP}</span>
<span >
<input type="text" name="save_map_as" id="save_map_as" value="" style="width: 20em" maxlength="254">
</span>
<span>
<strong>
<label style="margin-top: 2em; "for="save_map_as">{$MOD.LBL_SAVE_MAPPING_AS}</label>
</strong> {sugar_help text=$MOD.LBL_SAVE_MAPPING_HELP}
</span>
<span >
<input type="text" name="save_map_as" id="save_map_as" value="" style="width: 20em" maxlength="254">
</span>
</div>
<br />

View file

@ -45,14 +45,14 @@
<style>
#tabListContainer ul.subpanelTablist li a.current
{
padding-left: 10px;
padding-left: 0px;
}
div.resultsTable {
overflow: auto;
width: 100%;
padding-top: 20px;
position: relative;
}
div.resultsTable {
overflow: auto;
width: 1056px;
padding-top: 20px;
position: relative;
}
</style>
{/literal}

View file

@ -51,8 +51,6 @@
color: #FFFFFF;
text-shadow: none;
}
{/literal}
</style>
{if $ERROR != ''}
@ -80,7 +78,9 @@
<td align="left" scope="row" colspan="3"><h3>{$MOD.LBL_STEP_MODULE}&nbsp;</h3></td>
</tr>
<tr>
<td><select tabindex='4' name='admin_import_module' id='admin_import_module'>{$IMPORTABLE_MODULES_OPTIONS}</select></td>
<td>
<select style='margin-bottom: 1em; 'tabindex='4' name='admin_import_module' id='admin_import_module'>{$IMPORTABLE_MODULES_OPTIONS}</select>
</td>
</tr>
<tr>
<td align="left" scope="row" colspan="3"><div class="hr">&nbsp;</div></td>

View file

@ -73,16 +73,23 @@
<td>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td align="left" scope="row" colspan="4" style="padding-left: 10px;">{$SAMPLE_URL} &nbsp;{sugar_help text=$MOD.LBL_SAMPLE_URL_HELP}</td>
</tr>
<td align="left" scope="row" colspan="4" style="padding-top: 0.5em;">{$SAMPLE_URL} &nbsp;{sugar_help text=$MOD.LBL_SAMPLE_URL_HELP}</td>
</tr>
<tr>
<td scope="row" colspan="4">&nbsp;</td>
</tr>
<tr>
<td scope="row" colspan="4">&nbsp;</td>
</tr>
<tr>
<td align="left" scope="row" colspan="3"><div><label for="userfile">{$MOD.LBL_SELECT_FILE}</label></div> <div><input type="hidden" /><input size="20" id="userfile" name="userfile" type="file"/>{sugar_help text=$MOD.LBL_FILE_UPLOAD_WIDGET_HELP}</div> <div><span class="small">{$APP.LBL_LOGGER_VALID_FILENAME_CHARACTERS}</span></div></td>
<td align="left" scope="row" colspan="3">
<div>
<label for="userfile">{$MOD.LBL_SELECT_FILE}</label>
</div>
<div>
<input type="hidden" /><input size="20" id="userfile" name="userfile" type="file"/>{sugar_help text=$MOD.LBL_FILE_UPLOAD_WIDGET_HELP}
</div>
<div style="margin-bottom: 0.5em;">
<span class="small">{$APP.LBL_LOGGER_VALID_FILENAME_CHARACTERS}</span>
</div>
</td>
</tr>
<tr>
<td scope="row" colspan="4"><div class="hr">&nbsp;</div></td>
@ -107,7 +114,6 @@
</td>
</tr>
</table>
<br>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
{foreach from=$custom_mappings item=item name=custommappings}
{capture assign=mapping_label}{$MOD.LBL_CUSTOM_MAPPING_}{$item|upper}{/capture}

View file

@ -39,16 +39,12 @@
* display the words "Powered by SugarCRM" and "Supercharged by SuiteCRM".
*/
*}
{$CSS}
{$INSTRUCTION}
<form enctype="multipart/form-data" real_id="importstep3" id="importstep3" name="importstep3" method="POST" action="index.php">
<input type="hidden" name="module" value="Import">
<input type="hidden" name="previous_action" value="Confirm">
@ -76,7 +72,6 @@
<input type="hidden" name="importlocale_default_locale_name_format" value="{$smarty.request.importlocale_default_locale_name_format}">
<input type="hidden" name="from_admin_wizard" value="{$smarty.request.from_admin_wizard}">
<br>
{if $NOTETEXT != ''}
<p>
<input title="{$MOD.LBL_SHOW_ADVANCED_OPTIONS}" id="toggleNotes" class="button" type="button"
@ -91,6 +86,7 @@
<div class="hr"></div>
<br>
<table border="0" cellspacing="0" cellpadding="0" width="100%" id="importTable" class="detail view">
{foreach from=$rows key=key item=item name=rows}

View file

@ -553,8 +553,7 @@ class ImportViewStep3 extends ImportView
#importNotes ul{
margin: 0px;
margin-top: 10px;
padding-left: 20px;
margin-bottom: 10px;
}
</style>

View file

@ -137,6 +137,10 @@ $viewdefs ['Leads'] =
),
),
),
'summaryTemplates' => [
'edit' => 'LBL_SUMMARY_PERSON',
'detail' => 'LBL_SUMMARY_PERSON',
],
'topWidget' => [
'type' => 'statistics',
'options' => [

View file

@ -71,7 +71,6 @@
$action_view_map['dcajax'] = 'dcajax';
$action_view_map['quick'] = 'quick';
$action_view_map['quickcreate'] = 'quickcreate';
$action_view_map['spot'] = 'spot';
$action_view_map['inlinefield'] = 'inlinefield';
$action_view_map['inlinefieldsave'] = 'inlinefieldsave';
$action_view_map['pluginlist'] = 'plugins';

View file

@ -118,7 +118,7 @@ require_once('modules/ModuleBuilder/parsers/ModuleBuilderParser.php');
$pattern_match = '/\s*\$app_list_strings\s*\[\s*\''.$dropdown_name.'\'\s*\]\[\s*\''.$key.'\'\s*\]\s*=\s*[\'\"]{1}.*?[\'\"]{1};\s*/ism';
$contents = preg_replace($pattern_match, "\n", $contents);
//add the new ones
$contents .= "\n\$GLOBALS['app_list_strings']['$dropdown_name']['$key']=" . var_export_helper($value) . ";";
$contents .= "\n\$app_list_strings['$dropdown_name']['$key']=" . var_export_helper($value) . ";";
}
}
} else {
@ -206,12 +206,17 @@ require_once('modules/ModuleBuilder/parsers/ModuleBuilderParser.php');
return $sub;
}
public function getPatternMatch($dropdown_name)
public function getPatternMatchGlobal($dropdown_name)
{
return '/\s*\$GLOBALS\s*\[\s*\'app_list_strings\s*\'\s*\]\[\s*\''
. $dropdown_name.'\'\s*\]\s*=\s*array\s*\([^\)]*\)\s*;\s*/ism';
}
public function getPatternMatch($dropdown_name)
{
return '/\s*\$app_list_strings\s*\[\s*\''.$dropdown_name.'\'\s*\]\s*=\s*array\s*\([^\)]*\)\s*;\s*/ism';
}
public function getNewCustomContents($dropdown_name, $dropdown, $lang)
{
$contents = return_custom_app_list_strings_file_contents($lang);
@ -219,8 +224,9 @@ require_once('modules/ModuleBuilder/parsers/ModuleBuilderParser.php');
if (empty($contents)) {
$contents = "<?php";
}
$contents = preg_replace($this->getPatternMatchGlobal($dropdown_name), "\n", $contents);
$contents = preg_replace($this->getPatternMatch($dropdown_name), "\n", $contents);
$contents .= "\n\$GLOBALS['app_list_strings']['$dropdown_name']=" . var_export_helper($dropdown) . ";";
$contents .= "\n\$app_list_strings['$dropdown_name']=" . var_export_helper($dropdown) . ";";
return $contents;
}
}

View file

@ -106,7 +106,6 @@ class ViewModulefields extends SugarView
$customFieldsData[$def['name']] = $def['custom'];
}
}
$studioClass->mbvardefs->vardefs['fields'] = $f;
$smarty->assign('module', $studioClass);
$package = new stdClass;

View file

@ -95,7 +95,7 @@ array(
],
],
'acls' => [
'Opportunity' => ['view', 'list']
'Opportunities' => ['view', 'list']
]
],
'sidebarWidgets' => [
@ -150,7 +150,7 @@ array(
[
'type' => 'history-timeline',
'acls' => [
'Opportunity' => ['view', 'list']
'Opportunities' => ['view', 'list']
]
],
],

View file

@ -62,7 +62,7 @@ $viewdefs['Opportunities'] = [
]
],
'acls' => [
'Opportunity' => ['view', 'list']
'Opportunities' => ['view', 'list']
]
]
]

View file

@ -129,6 +129,17 @@ if (isset($_REQUEST['save_type']) || isset($_REQUEST['duplicateSave']) && $_REQU
}
}
if (!empty($_REQUEST['return_module']) && !empty($_REQUEST['return_action'])) {
$_REQUEST['return_url'] = "index.php?module=" . $_REQUEST['return_module'] . "&action=record";
$returnId = !empty($_REQUEST['return_id']) ? $_REQUEST['return_id'] : $return_id;
if (!empty($returnId)) {
$_REQUEST['return_url'] .= "&record=" . $returnId;
}
handleRedirect($return_id, $_REQUEST['return_module']);
}
if ($sugarbean->is_template) {
header("Location: index.php?action=ProjectTemplatesDetailView&module=Project&record=$return_id&return_module=Project&return_action=ProjectTemplatesEditView");
} else {

View file

@ -40,15 +40,15 @@ class ProjectController extends SugarController
$project = BeanFactory::newBean('Project');
$project->retrieve($_POST["pid"]);
//Get project tasks
$Task = BeanFactory::getBean('ProjectTask');
$tasks = $Task->get_full_list("order_number", "project_task.project_id = '".$project->id."'");
//Get the start and end date of the project in database format
$query = "SELECT min(date_start) FROM project_task WHERE project_id = '{$project->id}'";
$start_date = $db->getOne($query);
$query = "SELECT max(date_finish) FROM project_task WHERE project_id = '{$project->id}'";
$end_date = $db->getOne($query);
@ -347,12 +347,12 @@ class ProjectController extends SugarController
//Get specified dates and users
$start = $_POST['start'];
//$end = $_POST['end'];
$projects = explode(',', $_POST['projects']);
$users = explode(',', $_POST['users']);
$contacts = explode(',', $_POST['contacts']);
$month = $_POST['month'];
$projects = explode(',', $db->quote($_POST['projects']));
$users = explode(',', $db->quote($_POST['users']));
$contacts = explode(',', $db->quote($_POST['contacts']));
$month = is_numeric($_POST['month']) ? $_POST['month'] : '1' ;
$flag = $_POST['flag'];
$chart_type = $_POST['chart_type'];
$chart_type = $db->quote($_POST['chart_type']);
//$type = $_POST['type'];
$start = new DateTime($start);
@ -499,7 +499,7 @@ class ProjectController extends SugarController
}
$Task = BeanFactory::getBean('ProjectTask');
$tasks = $Task->get_full_list("date_start", "project_task.assigned_user_id = '".$resource_id."' AND ( ( project_task.date_start BETWEEN '".$start_date."' AND '".$end_date."' ) OR ( project_task.date_finish BETWEEN '".$start_date."' AND '".$end_date."' ) OR ( '".$start_date."' BETWEEN project_task.date_start AND project_task.date_finish ) OR ( '".$end_date."' BETWEEN project_task.date_start AND project_task.date_finish ) ) AND (project_id is not null AND project_id <> '') " . $project_where);
echo '<table class="qtip_table">';

View file

@ -66,3 +66,11 @@ if (ACLController::checkAccess('ProjectTask', 'list', true)) {
$module_menu[] = array('index.php?module=ProjectTask&action=index',
$mod_strings['LNK_PROJECT_TASK_LIST'], 'View_Project_Tasks');
}
// Import Project Task
if (ACLController::checkAccess('ProjectTask', 'import', true)) {
$module_menu[] = array(
'index.php?module=Import&action=Step1&import_module=ProjectTask&return_module=ProjectTask&return_action=index',
isset($mod_strings['LBL_IMPORT_PROJECT_TASKS']) ? $mod_strings['LBL_IMPORT_PROJECT_TASKS'] : '',
'Import'
);
}

View file

@ -60,6 +60,7 @@ class ProjectTask extends SugarBean
public $parent_task_id;
public $predecessors;
public $priority;
public $importable = true;
// related information
public $assigned_user_name;

View file

@ -79,6 +79,7 @@ $mod_strings = array(
'LBL_ACTUAL_EFFORT' => 'Actual Effort (hrs):',
'LBL_UTILIZATION' => 'Utilization (%):',
'LBL_DELETED' => 'Deleted:',
'LBL_IMPORT_PROJECT_TASKS' => 'Import Project Tasks',
'LBL_LIST_NAME' => 'Name',
'LBL_LIST_PARENT_NAME' => 'Project',

View file

@ -127,6 +127,10 @@ array(
),
),
),
'summaryTemplates' => [
'edit' => 'LBL_SUMMARY_PERSON',
'detail' => 'LBL_SUMMARY_PERSON',
],
'panels' =>
array(
'lbl_prospect_information' =>

View file

@ -904,30 +904,6 @@ class Scheduler extends SugarBean
$sched7->catch_up = '0';
$sched7->save();
$sched8 = BeanFactory::newBean('Schedulers');
$sched8->name = $mod_strings['LBL_OOTB_LUCENE_INDEX'];
$sched8->job = 'function::aodIndexUnindexed';
$sched8->date_time_start = create_date(2015, 1, 1) . ' ' . create_time(0, 0, 1);
$sched8->date_time_end = null;
$sched8->job_interval = "0::0::*::*::*";
$sched8->status = 'Active';
$sched8->created_by = '1';
$sched8->modified_user_id = '1';
$sched8->catch_up = '0';
$sched8->save();
$sched9 = BeanFactory::newBean('Schedulers');
$sched9->name = $mod_strings['LBL_OOTB_OPTIMISE_INDEX'];
$sched9->job = 'function::aodOptimiseIndex';
$sched9->date_time_start = create_date(2015, 1, 1) . ' ' . create_time(0, 0, 1);
$sched9->date_time_end = null;
$sched9->job_interval = "0::*/3::*::*::*";
$sched9->status = 'Active';
$sched9->created_by = '1';
$sched9->modified_user_id = '1';
$sched9->catch_up = '0';
$sched9->save();
$sched12 = BeanFactory::newBean('Schedulers');
$sched12->name = $mod_strings['LBL_OOTB_SEND_EMAIL_REMINDERS'];
$sched12->job = 'function::sendEmailReminders';

View file

@ -45,6 +45,8 @@ if (!defined('sugarEntry') || !sugarEntry) {
die('Not A Valid Entry Point');
}
require_once 'include/Services/NormalizeRecords/NormalizeRecords.php';
/**
* Set up an array of Jobs with the appropriate metadata
* 'jobName' => array (

View file

@ -52,7 +52,6 @@ $mod_strings = array(
'LBL_OOTB_PRUNE' => 'Prune Database on 1st of Month',
'LBL_OOTB_TRACKER' => 'Prune Tracker Tables',
'LBL_OOTB_SUITEFEEDS' => 'Prune SuiteCRM Feed Tables',
'LBL_OOTB_OPTIMISE_INDEX' => 'Optimise AOD Index',
'LBL_OOTB_SEND_EMAIL_REMINDERS' => 'Run Email Reminder Notifications',
'LBL_OOTB_CLEANUP_QUEUE' => 'Clean Jobs Queue',
'LBL_OOTB_REMOVE_DOCUMENTS_FROM_FS' => 'Removal of documents from filesystem',
@ -151,8 +150,6 @@ $mod_strings = array(
'LBL_CLEANJOBQUEUE' => 'Cleanup Job Queue',
'LBL_REMOVEDOCUMENTSFROMFS' => 'Removal of documents from filesystem',
'LBL_AODOPTIMISEINDEX' => 'Optimise Advanced OpenDiscovery Index',
'LBL_AODINDEXUNINDEXED' => 'Index unindexed documents',
'LBL_POLLMONITOREDINBOXESAOP' => 'AOP Poll Monitored Inboxes',
'LBL_AORRUNSCHEDULEDREPORTS' => 'Run scheduled reports',
'LBL_PROCESSAOW_WORKFLOW' => 'Process AOW Workflow',

View file

@ -60,6 +60,11 @@ $subpanel_layout = array(
'width' => '10%',
'sortable' => true,
),
'resolution' => array(
'vname' => 'LBL_RESOLUTION',
'width' => '10%',
'sortable' => true,
),
'execute_time' => array(
'vname' => 'LBL_EXECUTE_TIME',
'width' => '10%',

View file

@ -1,56 +0,0 @@
<?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 - 2019 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');
}
$dashletStrings['SpotsDashlet'] = array(
'LBL_TITLE' => 'Spots',
'LBL_DESCRIPTION' => 'Spots report of your data',
'LBL_SAVING' => 'Saving Spots...',
'LBL_SAVED' => 'Saved',
'LBL_CONFIGURE_TITLE' => 'Title',
'LBL_SPOTS_TO_LOAD' => 'Spots to Load',
'LBL_NO_SPOTS_SELECTED' => 'No spots selected for display',
'LBL_SPOTS_POINTED_DELETED' => 'This spot has been deleted',
'LBL_SHOW_UI' => 'Show UI',
'LBL_NAME' => 'Name',
);

View file

@ -1,50 +0,0 @@
<?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');
}
global $app_strings, $current_language;
$dashletMeta['SpotsDashlet'] = array('title' => 'LBL_TITLE', // array index in language pack
'description' => 'LBL_DESCRIPTION', // array index in language pack
'icon' => 'themes/default/images/icon_SpotsDashlet_32.gif',
'category' => 'Tools', );

View file

@ -1,212 +0,0 @@
<?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 'include/Dashlets/Dashlet.php';
class SpotsDashlet extends Dashlet
{
public $pivotId;
public $showGui;
/**
* Constructor.
*
* @global string current language
*
* @param guid $id id for the current dashlet (assigned from Home module)
* @param array $def options saved for this dashlet
*/
public function __construct($id, $def)
{
$this->loadLanguage('SpotsDashlet', 'modules/Spots/Dashlets/'); // load the language strings here
$this->isRefreshable = false;
if (!empty($def['spotId'])) {
$this->spotId = $def['spotId'];
} else {
$this->spotId = '';
}
if (!empty($def['showGui']) && $def['showGui'] === 'on') {
$this->showGui = 1;
} else {
$this->showGui = 0;
}
parent::__construct($id); // call parent constructor
$this->isConfigurable = true; // dashlet is configurable
$this->hasScript = true; // dashlet has javascript attached to it
// if no custom title, use default
if (empty($def['title'])) {
$this->title = $this->dashletStrings['LBL_TITLE'];
} else {
$this->title = $def['title'];
}
}
public function checkIfSpotHasBeenDeleted($spotId)
{
$spotBean = BeanFactory::getBean('Spots', $spotId);
return $spotBean === false;
}
/**
* Displays the dashlet.
*
* @return string html to display dashlet
*/
public function display()
{
//As the dashlet may point to a pivot that has been marked as deleted, check this here
if (is_null($this->spotId) || $this->spotId === '') {
return parent::display('').'<span style="margin-left:10px;" class="dashletAnalyticMessage">'.$this->dashletStrings['LBL_NO_SPOTS_SELECTED'].'</span><br />'; // return parent::display for title and such
} else {
if ($this->checkIfSpotHasBeenDeleted($this->spotId)) {
return parent::display('').'<span style="margin-left:10px;" class="dashletAnalyticMessage">'.$this->dashletStrings['LBL_SPOTS_POINTED_DELETED'].'</span><br />'; // return parent::display for title and such
}
$ss = new Sugar_Smarty();
$ss->assign('id', $this->id);
$ss->assign('showUI', $this->showGui);
$ss->assign('spotToLoad', $this->spotId);
$spot = BeanFactory::getBean('Spots', $this->spotId);
$ss->assign('config', $spot->config);
$ss->assign('type', $spot->type);
$str = $ss->fetch('modules/Spots/Dashlets/SpotsDashlet/SpotsDashlet.tpl');
return parent::display().$str.'<br />'; // return parent::display for title and such
}
}
/**
* Displays the javascript for the dashlet.
*
* @return string javascript to use with this dashlet
*/
public function displayScript()
{
}
/**
* Displays the configuration form for the dashlet.
*
* @return string html to display form
*/
public function displayOptions()
{
global $app_strings;
$ss = new Sugar_Smarty();
$ss->assign('titleLbl', $this->dashletStrings['LBL_CONFIGURE_TITLE']);
$ss->assign('saveLbl', $app_strings['LBL_SAVE_BUTTON_LABEL']);
$ss->assign('spotToLoadTitleLbl', $this->dashletStrings['LBL_SPOTS_TO_LOAD']);
$ss->assign('showUILbl', $this->dashletStrings['LBL_SHOW_UI']);
$ss->assign('title', $this->title);
$ss->assign('id', $this->id);
$ss->assign('showUI', $this->showGui);
$ss->assign('spotToLoad', $this->spotId);
$ss->assign('spots', $this->getSpotsList());
return parent::displayOptions().$ss->fetch('modules/Spots/Dashlets/SpotsDashlet/SpotsDashletOptions.tpl');
}
/**
* Returns a json_encoded string of the available spots names.
*
*
* @return json_encoded string of the list of available spots names
*/
public function getSpotsList()
{
$spotBean = BeanFactory::getBean('Spots');
$beanList = $spotBean->get_full_list('name');
$returnArray = [];
if (!is_null($beanList)) {
foreach ($beanList as $b) {
$bean = new stdClass();
$bean->type = $b->type;
$bean->config = htmlspecialchars_decode($b->config);
$bean->name = $b->name;
$bean->id = $b->id;
$returnArray[] = $bean;
}
}
return json_encode($returnArray);
}
/**
* called to filter out $_REQUEST object when the user submits the configure dropdown.
*
* @param array $req $_REQUEST
*
* @return array filtered options to save
*/
public function saveOptions($req)
{
$options = array();
$options['title'] = $_REQUEST['title'];
if (isset($_REQUEST['showGui'])) {
$options['showGui'] = $_REQUEST['showGui'];
} else {
$options['showGui'] = '';
}
if (isset($_REQUEST['spots'])) {
$options['spotId'] = $_REQUEST['spots'];
} else {
$options['spotId'] = '';
}
return $options;
}
}

View file

@ -1,107 +0,0 @@
{*
/**
*
* 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".
*/
*}
<link rel="stylesheet" type="text/css" href="include/javascript/c3/c3.min.css">
<script type="text/javascript" src="include/javascript/touchPunch/jquery.ui.touch-punch.min.js"></script>
<link rel="stylesheet" type="text/css" href="include/javascript/pivottable/pivot.css">
<script type="text/javascript" src="include/javascript/suitespots/suitespots.js"></script>
<script type="text/javascript">
{literal}
$(function () {
$('#bootstrap-container').removeClass('col-sm-9 col-sm-offset-3 col-md-10');
var renderers = $.extend($.pivotUtilities.renderers, $.pivotUtilities.c3_renderers);
var template = {
renderers: renderers
}
function getDataForPivot(element, config, type, showUI)
{
$.getJSON("index.php",
{
'module': 'Spots',
{/literal}
'action': type,
{literal}
'to_pdf':1
},
function (data) {
{/literal}
if("derivedAttributes" in config)
delete config["derivedAttributes"];
$(element)
.pivotUI(data,$.extend(config,template),true);
if(showUI !== "1")
hideUI(element);
{literal}
});
}
function hideUI(element)
{
//This is to ascertain if the pivot ui is laying out the column options horizontally or vertically
//It is vertically for larger data sets. This allows us to hide the pivot ui appropriately
var columnLayout = $(element+" table.pvtUi tr td:nth-child(3)").length;
if(columnLayout > 0)
$(element+" table.pvtUi tbody tr:lt(1),"+element+" table.pvtUi tbody tr:eq(1) td:lt(2)").hide();
else
$(element+" table.pvtUi tbody tr:lt(2),"+element+" table.pvtUi tbody tr:nth-child(3) td:nth-child(1)").hide();
}
{/literal}
getDataForPivot(".output-{$id}",JSON.parse($(".config-{$id}").val()),$(".type-{$id}").val(), $(".showUI-{$id}").val());
{literal}
});
</script>
{/literal}
<input type="hidden" class="config-{$id}" value="{$config}">
<input type="hidden" class="type-{$id}" value="{$type}">
<input type="hidden" class="showUI-{$id}" value="{$showUI}">
<div class="output-{$id}"></div>

View file

@ -1,104 +0,0 @@
{*
/**
*
* 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".
*/
*}
<div style='width: 500px'>
<form name='configure_{$id}' action="index.php" method="post" onSubmit='return SUGAR.dashlets.postForm("configure_{$id}", SUGAR.mySugar.uncoverPage);'>
<input type='hidden' name='id' value='{$id}'>
<input type='hidden' name='module' value='Home'>
<input type='hidden' name='action' value='ConfigureDashlet'>
<input type='hidden' name='to_pdf' value='true'>
<input type='hidden' name='configure' value='true'>
<table width="400" cellpadding="0" cellspacing="0" border="0" class="edit view" align="center">
<tr>
<td valign='top' nowrap class='dataLabel'>{$titleLbl}</td>
<td valign='top' class='dataField'>
<input class="text" name="title" size='20' value='{$title}'>
</td>
</tr>
<tr>
<td scope='row'>{$spotToLoadTitleLbl}</td>
<td>
<select name="spots" id="spots-{$id}">
</select>
<script type="text/javascript">
{literal}
$(function() {
{/literal}
var options = "";
$({$spots}).each(function(i,e)
{literal}
{
{/literal}
if("{$spotToLoad}" !==e.id)
options+="<option value='"+ e.id+"'>"+ e.name+"</option>";
else
options+="<option value='"+ e.id+"' selected>"+ e.name+"</option>";
{literal}
});
{/literal}
$('#spots-{$id}').empty().append(options);
{literal}
});
{/literal}
</script>
</td>
</tr>
<tr>
<td scope='row'>
<label for="showGui{$id}">{$showUILbl}</label>
</td>
<td>
<input type='checkbox' id='showGui{$id}' name='showGui' {if $showUI}checked='checked'{/if}>
</td>
</tr>
<tr>
<td align="right" colspan="2">
<input type='submit' class='button' value='{$saveLbl}'>
</td>
</tr>
</table>
</form>
</div>

View file

@ -1,54 +0,0 @@
<?php
if (!defined('sugarEntry') || !sugarEntry) {
die('Not A Valid Entry Point');
}
/*
*
* 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".
*/
global $mod_strings, $app_strings, $sugar_config;
if (ACLController::checkAccess('Spots', 'edit', true)) {
$module_menu[]=array("index.php?module=Spots&action=EditView", $mod_strings['LNK_SPOT_CREATE'],"Create", 'Spots');
}
if (ACLController::checkAccess('Spots', 'list', true)) {
$module_menu[]=array("index.php?module=Spots&action=index", $mod_strings['LNK_SPOT_LIST'],"List", 'Spots');
}
;

View file

@ -1,48 +0,0 @@
<?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".
*/
function displaySpots()
{
global $mod_strings, $app_strings;
$sugar_smarty = new Sugar_Smarty();
$sugar_smarty->assign('MOD', $mod_strings);
$sugar_smarty->assign('APP', $app_strings);
return $sugar_smarty->fetch('modules/Spots/tpl/ShowSpots.tpl');
}

View file

@ -1,293 +0,0 @@
<?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".
*/
class Spots extends Basic
{
public $new_schema = true;
public $module_dir = 'Spots';
public $object_name = 'Spots';
public $table_name = 'spots';
public $importable = false;
public $disable_row_level_security = true; // to ensure that modules created and deployed under CE will continue to function under team security if the instance is upgraded to PRO
public $id;
public $name;
public $date_entered;
public $date_modified;
public $modified_user_id;
public $modified_by_name;
public $created_by;
public $created_by_name;
public $description;
public $deleted;
public $created_by_link;
public $modified_user_link;
public $assigned_user_id;
public $assigned_user_name;
public $assigned_user_link;
public $SecurityGroups;
public $config;
public $type;
public function bean_implements($interface)
{
switch ($interface) {
case 'ACL': return true;
}
return false;
}
public function fill_in_additional_detail_fields()
{
$this->config = htmlspecialchars(json_encode($this->replaceKeyValueWithLabel(htmlspecialchars_decode($this->config))));
parent::fill_in_additional_detail_fields(); // TODO: Change the autogenerated stub
}
/**
*This replaces the label values in the config with the corresponding keys (to make language agnostic).
*/
public function save($check_notify = false)
{
$type = $_REQUEST['type'];
$name = $_REQUEST['name'];
$config = htmlspecialchars_decode($_REQUEST['config']);
$jsonConfig = json_decode($config, true);
$colsLabels = array();
$rowsLabels = array();
if (isset($jsonConfig['cols']) && count($jsonConfig['cols']) > 0) {
$colsLabels = $this->getKeysForLabels($type, $jsonConfig['cols']);
$jsonConfig['cols'] = $colsLabels;
}
if (isset($jsonConfig['rows']) && count($jsonConfig['rows']) > 0) {
$rowsLabels = $this->getKeysForLabels($type, $jsonConfig['rows']);
$jsonConfig['rows'] = $rowsLabels;
}
//Set the key value for the inclusions / exclusions
if (isset($jsonConfig['exclusions']) && count($jsonConfig['exclusions']) > 0) {
foreach ($jsonConfig['exclusions'] as $key => $value) {
$newKey = $this->getKeyForLabel($type, $key);
$jsonConfig['exclusions'][reset($newKey)] = $jsonConfig['exclusions'][$key];
unset($jsonConfig['exclusions'][$key]);
//Check that this is an array with 1 element
if (count($newKey) !== 1) {
$this->logSpotsErrorWithKeyMatching($type);
}
}
}
if (isset($jsonConfig['inclusions']) && count($jsonConfig['inclusions']) > 0) {
foreach ($jsonConfig['inclusions'] as $key => $value) {
$newKey = $this->getKeyForLabel($type, $key);
$jsonConfig['inclusions'][reset($newKey)] = $jsonConfig['inclusions'][$key];
unset($jsonConfig['inclusions'][$key]);
//Check that this is an array with 1 element
if (count($newKey) !== 1) {
$this->logSpotsErrorWithKeyMatching($type);
}
}
}
if (isset($jsonConfig['inclusionsInfo']) && count($jsonConfig['inclusionsInfo']) > 0) {
foreach ($jsonConfig['inclusionsInfo'] as $key => $value) {
$newKey = $this->getKeyForLabel($type, $key);
$jsonConfig['inclusionsInfo'][reset($newKey)] = $jsonConfig['inclusionsInfo'][$key];
unset($jsonConfig['inclusionsInfo'][$key]);
//Check that this is an array with 1 element
if (count($newKey) !== 1) {
$this->logSpotsErrorWithKeyMatching($type);
}
}
}
$this->config = json_encode($jsonConfig);
return parent::save($check_notify);
}
/**
*This parses the spots config and replaces the key values with the appropriate, language-specific labels.
*
* @param string $config the configuration file for the spot
*
* @return string is the config file with the label values in place of the key names
*/
public function replaceKeyValueWithLabel($config)
{
//Strings are loaded this way as the dashlet mod_strings was set to Home
$spotStrings = return_module_language($GLOBALS['current_language'], 'Spots');
$jsonConfig = json_decode($config, true);
if (isset($jsonConfig['cols']) && count($jsonConfig['cols']) > 0) {
foreach ($jsonConfig['cols'] as $k => $v) {
$jsonConfig['cols'][$k] = $spotStrings[$v];
}
}
if (isset($jsonConfig['rows']) && count($jsonConfig['rows']) > 0) {
foreach ($jsonConfig['rows'] as $k => $v) {
$jsonConfig['rows'][$k] = $spotStrings[$v];
}
}
if (isset($jsonConfig['exclusions']) && count($jsonConfig['exclusions']) > 0) {
foreach ($jsonConfig['exclusions'] as $key => $value) {
$newKey = $spotStrings[$key];
$jsonConfig['exclusions'][$newKey] = $jsonConfig['exclusions'][$key];
unset($jsonConfig['exclusions'][$key]);
}
} elseif (isset($jsonConfig['exclusions']) && count($jsonConfig['exclusions']) == 0) {
$jsonConfig['exclusions'] = new stdClass();
}
if (isset($jsonConfig['inclusions']) && count($jsonConfig['inclusions']) > 0) {
foreach ($jsonConfig['inclusions'] as $key => $value) {
$newKey = $spotStrings[$key];
$jsonConfig['inclusions'][$newKey] = $jsonConfig['inclusions'][$key];
unset($jsonConfig['inclusions'][$key]);
}
} elseif (isset($jsonConfig['inclusions']) && count($jsonConfig['inclusions']) == 0) {
$jsonConfig['inclusions'] = new stdClass();
}
if (isset($jsonConfig['inclusionsInfo']) && count($jsonConfig['inclusionsInfo']) > 0) {
foreach ($jsonConfig['inclusionsInfo'] as $key => $value) {
$newKey = $spotStrings[$key];
$jsonConfig['inclusionsInfo'][$newKey] = $jsonConfig['inclusionsInfo'][$key];
unset($jsonConfig['inclusionsInfo'][$key]);
}
} elseif (isset($jsonConfig['inclusionsInfo']) && count($jsonConfig['inclusionsInfo']) == 0) {
$jsonConfig['inclusionsInfo'] = new stdClass();
}
return $jsonConfig;
}
/**
*This returns the keys for the provided labels (to allow for translation of the saved spots configurations).
*
* @param string $type the type spot, e.g. accounts / leads, etc.
* @param array $items the labels that the key is requested for
*
* @return array $keys is the array of matching key values for the label items
*/
public function getKeysForLabels($type, $items)
{
$keys = array();
foreach ($items as $i) {
$key = $this->getKeyForLabel($type, $i);
//Check that the returned array has only 1 element, else there is a potential error
//Log error and return empty keys
//Error if 0 || >1
$countOfMatches = count($key);
if ($countOfMatches !== 1) {
$this->logSpotsErrorWithKeyMatching($type);
return array();
} else {
$keys[] = reset($key);
}
}
return $keys;
}
/**
*This logs an error when there is <> 1 matching keys for a label.
*
* @param string $type the type spot, e.g. accounts / leads, etc.
*/
public function logSpotsErrorWithKeyMatching($type)
{
global $mod_strings;
$GLOBALS['log']->error($mod_strings['LBL_AN_DUPLICATE_LABEL_FOR_SUBAREA'].' '.$type);
}
/**
*This returns the key for the provided label (to allow for translation of the saved spots configurations).
*
* @param string $type the type spot, e.g. accounts / leads, etc.
* @param string $label the label that the key is requested for
*
* @return array $matches is the array of matching key values (if <> 1, then there is an issue matching this)
*/
public function getKeyForLabel($type, $label)
{
global $mod_strings;
$labelPrefix = '';
switch ($type) {
case 'getAccountsSpotsData':
$labelPrefix = 'LBL_AN_ACCOUNTS_';
break;
case 'getLeadsSpotsData':
$labelPrefix = 'LBL_AN_LEADS_';
break;
case 'getSalesSpotsData':
$labelPrefix = 'LBL_AN_SALES_';
break;
case 'getServiceSpotsData':
$labelPrefix = 'LBL_AN_SERVICE_';
break;
case 'getActivitiesSpotsData':
$labelPrefix = 'LBL_AN_ACTIVITIES_';
break;
case 'getMarketingSpotsData':
$labelPrefix = 'LBL_AN_MARKETING_';
break;
case 'getMarketingActivitySpotsData':
$labelPrefix = 'LBL_AN_MARKETINGACTIVITY';
break;
case 'getQuotesSpotsData':
$labelPrefix = 'LBL_AN_QUOTES_';
break;
}
$allMatchingLabels = array_keys($mod_strings, $label);
$matches = array_filter($allMatchingLabels, function ($e) use ($labelPrefix) {
return strpos($e, $labelPrefix) !== false;
});
return $matches;
}
}

File diff suppressed because it is too large Load diff

View file

@ -1,184 +0,0 @@
<?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 - 2019 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');
}
$mod_strings = array(
'LBL_ASSIGNED_TO_ID' => 'Assigned User Id',
'LBL_ASSIGNED_TO_NAME' => 'Assigned to',
'LBL_SECURITYGROUPS' => 'Security Groups',
'LBL_SECURITYGROUPS_SUBPANEL_TITLE' => 'Security Groups',
'LBL_ID' => 'ID',
'LBL_DATE_ENTERED' => 'Date Created',
'LBL_DATE_MODIFIED' => 'Date Modified',
'LBL_MODIFIED' => 'Modified By',
'LBL_MODIFIED_NAME' => 'Modified By Name',
'LBL_CREATED' => 'Created By',
'LBL_DESCRIPTION' => 'Description',
'LBL_DELETED' => 'Deleted',
'LBL_NAME' => 'Name',
'LBL_CREATED_USER' => 'Created by User',
'LBL_MODIFIED_USER' => 'Modified by User',
'LBL_LIST_NAME' => 'Name',
'LBL_EDIT_BUTTON' => 'Edit',
'LBL_REMOVE' => 'Remove',
'LBL_LIST_FORM_TITLE' => 'Pivot List',
'LBL_MODULE_NAME' => 'Pivot',
'LBL_MODULE_TITLE' => 'Pivot',
'LBL_HOMEPAGE_TITLE' => 'My Pivot',
'LNK_NEW_RECORD' => 'Create Pivot',
'LNK_LIST' => 'View Pivot',
'LBL_SEARCH_FORM_TITLE' => 'Search Pivot',
'LBL_HISTORY_SUBPANEL_TITLE' => 'View History',
'LBL_ACTIVITIES_SUBPANEL_TITLE' => 'Activities',
'LBL_NEW_FORM_TITLE' => 'New Pivot',
'LBL_CONFIG' => 'Config',
'LBL_TYPE' => 'Area for Analysis',
'LNK_SPOT_LIST' => 'View Spots',
'LNK_SPOT_CREATE' => 'Create Spot',
//Analytics
'LBL_AN_CONFIGURATION' => 'Configuration',
'LBL_AN_UNSUPPORTED_DB' => 'Sorry, Suite Spots are currently configured for MySQL and MS SQL only',
//Analytics labels for accounts pivot
'LBL_AN_ACCOUNTS_ACCOUNT_NAME' => 'Name',
'LBL_AN_ACCOUNTS_ACCOUNT_TYPE' => 'Account Type',
'LBL_AN_ACCOUNTS_ACCOUNT_INDUSTRY' => 'Industry',
'LBL_AN_ACCOUNTS_ACCOUNT_BILLING_COUNTRY' => 'Billing Country',
//Analytics labels for leads pivot
'LBL_AN_LEADS_ASSIGNED_USER' => 'Assigned User',
'LBL_AN_LEADS_STATUS' => 'Status',
'LBL_AN_LEADS_LEAD_SOURCE' => 'Lead Source',
'LBL_AN_LEADS_CAMPAIGN_NAME' => 'Campaign Name',
'LBL_AN_LEADS_YEAR' => 'Year',
'LBL_AN_LEADS_QUARTER' => 'Quarter',
'LBL_AN_LEADS_MONTH' => 'Month',
'LBL_AN_LEADS_WEEK' => 'Week',
'LBL_AN_LEADS_DAY' => 'Day',
//Analytics labels for sales pivot
'LBL_AN_SALES_ACCOUNT_NAME' => 'Account Name',
'LBL_AN_SALES_OPPORTUNITY_NAME' => 'Opportunity Name',
'LBL_AN_SALES_ASSIGNED_USER' => 'Assigned User',
'LBL_AN_SALES_OPPORTUNITY_TYPE' => 'OpportunityType',
'LBL_AN_SALES_LEAD_SOURCE' => 'Lead Source',
'LBL_AN_SALES_AMOUNT' => 'Amount',
'LBL_AN_SALES_STAGE' => 'Sales Stage',
'LBL_AN_SALES_PROBABILITY' => 'Probability',
'LBL_AN_SALES_DATE' => 'Sales Date',
'LBL_AN_SALES_QUARTER' => 'Sales Quarter',
'LBL_AN_SALES_MONTH' => 'Sales Month',
'LBL_AN_SALES_WEEK' => 'Sales Week',
'LBL_AN_SALES_DAY' => 'Sales Day',
'LBL_AN_SALES_YEAR' => 'Sales Year',
'LBL_AN_SALES_CAMPAIGN' => 'Campaign',
//Analytics labels for service pivot
'LBL_AN_SERVICE_ACCOUNT_NAME' => 'Account Name',
'LBL_AN_SERVICE_STATE' => 'State',
'LBL_AN_SERVICE_STATUS' => 'Status',
'LBL_AN_SERVICE_PRIORITY' => 'Priority',
'LBL_AN_SERVICE_CREATED_DAY' => 'Created Day',
'LBL_AN_SERVICE_CREATED_WEEK' => 'Created Week',
'LBL_AN_SERVICE_CREATED_MONTH' => 'Created Month',
'LBL_AN_SERVICE_CREATED_QUARTER' => 'Created Quarter',
'LBL_AN_SERVICE_CREATED_YEAR' => 'Created Year',
'LBL_AN_SERVICE_CONTACT_NAME' => 'Contact Name',
'LBL_AN_SERVICE_ASSIGNED_TO' => 'Assigned User',
//Analytics labels for the activities pivot
'LBL_AN_ACTIVITIES_TYPE' => 'Type',
'LBL_AN_ACTIVITIES_NAME' => 'Name',
'LBL_AN_ACTIVITIES_STATUS' => 'Status',
'LBL_AN_ACTIVITIES_ASSIGNED_TO' => 'Assigned User',
//Analytics labels for the marketing pivot
'LBL_AN_MARKETING_STATUS' => 'Status',
'LBL_AN_MARKETING_TYPE' => 'Type',
'LBL_AN_MARKETING_BUDGET' => 'Budget',
'LBL_AN_MARKETING_EXPECTED_COST' => 'Expected Cost',
'LBL_AN_MARKETING_EXPECTED_REVENUE' => 'Expected Revenue',
'LBL_AN_MARKETING_OPPORTUNITY_NAME' => 'Opportunity Name',
'LBL_AN_MARKETING_OPPORTUNITY_AMOUNT' => 'Opportunity Amount',
'LBL_AN_MARKETING_OPPORTUNITY_SALES_STAGE' => 'Opportunity Sales Stage',
'LBL_AN_MARKETING_OPPORTUNITY_ASSIGNED_TO' => 'Opportunity Assigned To',
'LBL_AN_MARKETING_ACCOUNT_NAME' => 'Account Name',
//Analytics labels for the marketing activities pivot
'LBL_AN_MARKETINGACTIVITY_CAMPAIGN_NAME' => 'Campaign Name',
'LBL_AN_MARKETINGACTIVITY_ACTIVITY_DATE' => 'Activity Date',
'LBL_AN_MARKETINGACTIVITY_ACTIVITY_TYPE' => 'Activity Type',
'LBL_AN_MARKETINGACTIVITY_RELATED_TYPE' => 'Related Type',
'LBL_AN_MARKETINGACTIVITY_RELATED_ID' => 'Related ID',
//Analytics labels for the quotes pivot
'LBL_AN_QUOTES_OPPORTUNITY_NAME' => 'Opportunity Name',
'LBL_AN_QUOTES_OPPORTUNITY_TYPE' => 'Opportunity Type',
'LBL_AN_QUOTES_OPPORTUNITY_LEAD_SOURCE' => 'Opportunity Lead Source',
'LBL_AN_QUOTES_OPPORTUNITY_SALES_STAGE' => 'Opportunity Sales Stage',
'LBL_AN_QUOTES_ACCOUNT_NAME' => 'Account Name',
'LBL_AN_QUOTES_CONTACT_NAME' => 'Contact Name',
'LBL_AN_QUOTES_ITEM_NAME' => 'Item Name',
'LBL_AN_QUOTES_ITEM_TYPE' => 'Item Type',
'LBL_AN_QUOTES_ITEM_CATEGORY' => 'Item Category',
'LBL_AN_QUOTES_ITEM_QTY' => 'Item Qty',
'LBL_AN_QUOTES_ITEM_LIST_PRICE' => 'Item List Price',
'LBL_AN_QUOTES_ITEM_SALE_PRICE' => 'Item Sale Price',
'LBL_AN_QUOTES_ITEM_COST_PRICE' => 'Item Cost Price',
'LBL_AN_QUOTES_ITEM_DISCOUNT_PRICE' => 'Item Discount Price',
'LBL_AN_QUOTES_ITEM_DISCOUNT_AMOUNT' => 'Discount Amount',
'LBL_AN_QUOTES_ITEM_TOTAL' => 'Item Total',
'LBL_AN_QUOTES_GRAND_TOTAL' => 'Grand Total',
'LBL_AN_QUOTES_ASSIGNED_TO' => 'Assigned User',
'LBL_AN_QUOTES_DATE_CREATED' => 'Date Created',
'LBL_AN_QUOTES_DAY_CREATED' => 'Day Created',
'LBL_AN_QUOTES_WEEK_CREATED' => 'Week Created',
'LBL_AN_QUOTES_MONTH_CREATED' => 'Month Created',
'LBL_AN_QUOTES_QUARTER_CREATED' => 'Quarter Created',
'LBL_AN_QUOTES_YEAR_CREATED' => 'Year Created',
//Error message when there are multiple values for the label
'LBL_AN_DUPLICATE_LABEL_FOR_SUBAREA' => 'Error ascertaining the label for the pivot sub-area',
);

View file

@ -1,66 +0,0 @@
<?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');
}
$module_name = 'Spots';
$searchFields[$module_name] =
array(
'name' => array('query_type' => 'default'),
'current_user_only' => array('query_type' => 'default', 'db_field' => array('assigned_user_id'), 'my_items' => true, 'vname' => 'LBL_CURRENT_USER_FILTER', 'type' => 'bool'),
'assigned_user_id' => array('query_type' => 'default'),
'favorites_only' => array(
'query_type'=>'format',
'operator' => 'subquery',
'checked_only' => true,
'subquery' => "SELECT favorites.parent_id FROM favorites
WHERE favorites.deleted = 0
and favorites.parent_type = 'Spots'
and favorites.assigned_user_id = '{1}'",
'db_field'=>array('id')),
//Range Search Support
'range_date_entered' => array('query_type' => 'default', 'enable_range_search' => true, 'is_date_field' => true),
'start_range_date_entered' => array('query_type' => 'default', 'enable_range_search' => true, 'is_date_field' => true),
'end_range_date_entered' => array('query_type' => 'default', 'enable_range_search' => true, 'is_date_field' => true),
'range_date_modified' => array('query_type' => 'default', 'enable_range_search' => true, 'is_date_field' => true),
'start_range_date_modified' => array('query_type' => 'default', 'enable_range_search' => true, 'is_date_field' => true),
'end_range_date_modified' => array('query_type' => 'default', 'enable_range_search' => true, 'is_date_field' => true),
//Range Search Support
);

View file

@ -1,64 +0,0 @@
<?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');
}
global $current_user;
$dashletData['SpotsDashlet']['searchFields'] = array('date_entered' => array('default' => ''),
'date_modified' => array('default' => ''),
'assigned_user_id' => array('type' => 'assigned_user_name',
'default' => $current_user->name, ), );
$dashletData['SpotsDashlet']['columns'] = array('name' => array('width' => '40',
'label' => 'LBL_LIST_NAME',
'link' => true,
'default' => true, ),
'date_entered' => array('width' => '15',
'label' => 'LBL_DATE_ENTERED',
'default' => true, ),
'date_modified' => array('width' => '15',
'label' => 'LBL_DATE_MODIFIED', ),
'created_by' => array('width' => '8',
'label' => 'LBL_CREATED', ),
'assigned_user_name' => array('width' => '8',
'label' => 'LBL_LIST_ASSIGNED_USER', ),
);

View file

@ -1,64 +0,0 @@
<?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');
}
$module_name = 'Spots';
$listViewDefs[$module_name] = array(
'NAME' => array(
'width' => '32',
'label' => 'LBL_NAME',
'default' => true,
'link' => true, ),
'TYPE' => array(
'width' => '32',
'label' => 'LBL_TYPE',
'default' => true,
),
'DATE_ENTERED' => array(
'width' => '10',
'label' => 'LBL_DATE_ENTERED',
'default' => true, ),
'CREATED_BY_NAME' => array(
'width' => '10',
'label' => 'LBL_CREATED',
'default' => true, ),
);

View file

@ -1,55 +0,0 @@
<?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".
*/
/*
* Created on August 2 2007
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
$module_name = 'Spots';
$metafiles[$module_name] = array(
'detailviewdefs' => 'modules/'.$module_name.'/metadata/detailviewdefs.php',
'editviewdefs' => 'modules/'.$module_name.'/metadata/editviewdefs.php',
'listviewdefs' => 'modules/'.$module_name.'/metadata/listviewdefs.php',
'searchdefs' => 'modules/'.$module_name.'/metadata/searchdefs.php',
'popupdefs' => 'modules/'.$module_name.'/metadata/popupdefs.php',
'searchfields' => 'modules/'.$module_name.'/metadata/SearchFields.php',
);

View file

@ -1,54 +0,0 @@
<?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');
}
$module_name = 'Spots';
$object_name = 'Spots';
$_module_name = 'Spots';
$popupMeta = array('moduleMain' => $module_name,
'varName' => $object_name,
'orderBy' => $_module_name.'.name',
'whereClauses' => array('name' => $_module_name.'.name',
),
'searchInputs' => array($_module_name.'_number', 'name', 'priority', 'status'),
);

View file

@ -1,60 +0,0 @@
<?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".
*/
$module_name = 'Spots';
$viewdefs[$module_name]['QuickCreate'] = array(
'templateMeta' => array('maxColumns' => '2',
'widths' => array(
array('label' => '10', 'field' => '30'),
array('label' => '10', 'field' => '30'),
),
),
'panels' => array(
'default' => array(
array(
'name',
'assigned_user_name',
),
),
),
);

View file

@ -1,85 +0,0 @@
<?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".
*/
/*
* Created on May 29, 2007
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
*/
$module_name = 'Spots';
$searchdefs[$module_name] = array(
'templateMeta' => array(
'maxColumns' => '3',
'maxColumnsBasic' => '4',
'widths' => array(
'label' => '10',
'field' => '30'
),
),
'layout' => array(
'basic_search' => array(
'name' => array(
'name' => 'current_user_only',
'label' => 'LBL_CURRENT_USER_FILTER',
'type' => 'bool'
),
'favorites_only' => array(
'name' => 'favorites_only',
'label' => 'LBL_FAVORITES_FILTER',
'type' => 'bool',
),
),
'advanced_search' => array(
'name' => array(
'name' => 'assigned_user_id',
'label' => 'LBL_ASSIGNED_TO',
'type' => 'enum',
'function' => array(
'name' => 'get_user_array',
'params' => array(
false
)
)
),
),
),
);

View file

@ -1,39 +0,0 @@
<?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".
*/;

View file

@ -1,76 +0,0 @@
<?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');
}
$module_name = 'Spots';
$subpanel_layout = array(
'top_buttons' => array(
array('widget_class' => 'SubPanelTopCreateButton'),
array('widget_class' => 'SubPanelTopSelectButton', 'popup_module' => $module_name),
),
'where' => '',
'list_fields' => array(
'name' => array(
'vname' => 'LBL_NAME',
'widget_class' => 'SubPanelDetailViewLink',
'width' => '45%',
),
'date_modified' => array(
'vname' => 'LBL_DATE_MODIFIED',
'width' => '45%',
),
'edit_button' => array(
'vname' => 'LBL_EDIT_BUTTON',
'widget_class' => 'SubPanelEditButton',
'module' => $module_name,
'width' => '4%',
),
'remove_button' => array(
'vname' => 'LBL_REMOVE',
'widget_class' => 'SubPanelRemoveButton',
'module' => $module_name,
'width' => '5%',
),
),
);

View file

@ -1,122 +0,0 @@
{*
/**
*
* 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".
*/
*}
<link rel="stylesheet" type="text/css" href="include/javascript/c3/c3.min.css">
<script type="text/javascript" src="include/javascript/touchPunch/jquery.ui.touch-punch.min.js"></script>
<link rel="stylesheet" type="text/css" href="include/javascript/pivottable/pivot.css">
<script type="text/javascript" src="include/javascript/suitespots/suitespots.js"></script>
{literal}
<script>
function snapshotForm(theForm) {
var snapshotTxt = '';
var elemList = theForm.elements;
var elem;
var elemType;
for (var i = 0; i < elemList.length; i++) {
elem = elemList[i];
//The pvtRenderer and pvtAggregator checks are to not add the suite spot items
//I have used $.hasClass as the element.classlist.contains is not implemented in all browsers
if (typeof(elem.type) == 'undefined' || $(elem).hasClass('pvtRenderer') || $(elem).hasClass('pvtAggregator') || $(elem).hasClass('pvtAttrDropdown')) {
continue;
}
elemType = elem.type.toLowerCase();
snapshotTxt = snapshotTxt + elem.name;
if (elemType == 'text' || elemType == 'textarea' || elemType == 'password') {
snapshotTxt = snapshotTxt + elem.value;
}
else if (elemType == 'select' || elemType == 'select-one' || elemType == 'select-multiple') {
var optionList = elem.options;
for (var ii = 0; ii < optionList.length; ii++) {
if (optionList[ii].selected) {
snapshotTxt = snapshotTxt + optionList[ii].value;
}
}
}
else if (elemType == 'radio' || elemType == 'checkbox') {
if (elem.selected) {
snapshotTxt = snapshotTxt + 'checked';
}
}
else if (elemType == 'hidden') {
//Remove the whitespace around elements to facilitate the comparison of changed values
//http://stackoverflow.com/a/31502096
snapshotTxt = snapshotTxt + elem.value.replace(/("[^"]*")|\s/g, "$1");
}
}
return snapshotTxt;
}
var SpotsObj = (function () {
const _this = this;
const buttonIds = ['SAVE_HEADER', 'SAVE_FOOTER', 'save_and_continue'];
this.setEvents = function (buttons) {
for (var i = 0; i < buttons.length; i++) {
var button = document.getElementById(buttons[i]);
if (button) {
button.addEventListener('click', function () {
window.onbeforeunload = sendAndRedirect('EditView', 'Saving Spots...', '?module=Spots');
});
}
}
};
function resetButtons() {
if (document.getElementById('EditView')) {
_this.setEvents(buttonIds);
}
}
var result = {};
result.resetButtons = resetButtons;
return result;
})();
SpotsObj.resetButtons();
</script>
{/literal}
<div id="output" style="overflow: auto"></div>

View file

@ -1,118 +0,0 @@
<?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".
*/
$dictionary['Spots'] = array(
'table' => 'spots',
'audited' => false,
'inline_edit' => true,
'duplicate_merge' => true,
'fields' => array(
'config' => array(
'required' => true,
'name' => 'config',
'vname' => 'LBL_CONFIG',
'type' => 'longtext',
'massupdate' => 0,
'no_default' => false,
'default' => '{"derivedAttributes":[],"hiddenAttributes":[],"menuLimit":200,"cols":[],"rows":[],"vals":[],"exclusions":{},"inclusions":{},"unusedAttrsVertical":85,"autoSortUnusedAttrs":false,"inclusionsInfo":{},"aggregatorName":"Count","rendererName":"Table"}',
'comments' => '',
'help' => '',
'importable' => 'true',
'duplicate_merge' => 'disabled',
'duplicate_merge_dom_value' => '0',
'audited' => false,
'inline_edit' => true,
'reportable' => true,
'unified_search' => false,
'merge_filter' => 'disabled',
),
'type' => array(
'required' => true,
'name' => 'type',
'vname' => 'LBL_TYPE',
'type' => 'enum',
'options' => 'spots_areas',
'massupdate' => 0,
'no_default' => false,
'comments' => '',
'help' => '',
'importable' => 'true',
'duplicate_merge' => 'disabled',
'duplicate_merge_dom_value' => '0',
'audited' => false,
'inline_edit' => true,
'reportable' => true,
'unified_search' => false,
'merge_filter' => 'disabled',
'len' => '255',
'size' => '20',
),
'configurationGUI' => array(
'required' => false,
'name' => 'configurationGUI',
'vname' => 'LBL_AN_CONFIGURATION',
'type' => 'function',
'source' => 'non-db',
'massupdate' => 0,
'studio' => 'visible',
'importable' => 'false',
'duplicate_merge' => 'disabled',
'duplicate_merge_dom_value' => 0,
'audited' => false,
'reportable' => false,
'studio' => array(
'editview' => true,
'listview' => false,
'detailview' => false,
),
'function' => array(
'name' => 'displaySpots',
'returns' => 'html',
'include' => 'modules/Spots/ShowSpots.php',
),
),
),
'relationships' => array(),
'optimistic_locking' => true,
'unified_search' => false,
);
if (!class_exists('VardefManager')) {
require_once 'include/SugarObjects/VardefManager.php';
}
VardefManager::createVardef('Spots', 'Spots', array('basic', 'assignable', 'security_groups'));

View file

@ -1,124 +0,0 @@
<?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');
}
class SpotsViewEdit extends ViewEdit
{
public function __construct()
{
parent::__construct();
}
public function display()
{
parent::display();
}
/**
* Return the "breadcrumbs" to display at the top of the page
*
* @param bool $show_help optional, true if we show the help links
* @return HTML string containing breadcrumb title
*/
public function getModuleTitle(
$show_help = true
) {
global $sugar_version, $sugar_flavor, $server_unique_key, $current_language, $action;
$theTitle = "<div class='moduleTitle'>\n";
$module = preg_replace("/ /", "", $this->module);
$params = $this->_getModuleTitleParams();
$index = 0;
if (SugarThemeRegistry::current()->directionality == "rtl") {
$params = array_reverse($params);
}
if (count($params) > 1) {
array_shift($params);
}
$count = count($params);
$paramString = '';
foreach ($params as $parm) {
$index++;
$paramString .= $parm;
if ($index < $count) {
$paramString .= $this->getBreadCrumbSymbol();
}
}
if (!empty($paramString)) {
$theTitle .= "<h2> $paramString </h2>";
if (!empty($this->bean->id)) {
$theTitle .= "<div class='favorite' record_id='" . $this->bean->id . "' module='" . $this->bean->module_dir . "'><div class='favorite_icon_outline'>" . SugarThemeRegistry::current()->getImage('favorite-star-outline', 'title="' . translate('LBL_DASHLET_EDIT', 'Home') . '" border="0" align="absmiddle"', null, null, '.gif', translate('LBL_DASHLET_EDIT', 'Home')) . "</div>
<div class='favorite_icon_fill'>" . SugarThemeRegistry::current()->getImage('favorite-star', 'title="' . translate('LBL_DASHLET_EDIT', 'Home') . '" border="0" align="absmiddle"', null, null, '.gif', translate('LBL_DASHLET_EDIT', 'Home')) . "</div></div>";
}
}
// bug 56131 - restore conditional so that link doesn't appear where it shouldn't
if ($show_help || $this->type == 'list') {
$theTitle .= "<span class='utils'>";
$createImageURL = SugarThemeRegistry::current()->getImageURL('create-record.gif');
if ($this->type == 'list') {
$theTitle .= '<a href="#" class="btn btn-success showsearch"><span class=" glyphicon glyphicon-search" aria-hidden="true"></span></a>';
}
$url = ajaxLink("index.php?module=$module&action=EditView&return_module=$module&return_action=DetailView");
if ($show_help) {
$theTitle .= <<<EOHTML
&nbsp;
<a id="create_image" href="{$url}" class="utilsLink">
<img src='{$createImageURL}' alt='{$GLOBALS['app_strings']['LNK_CREATE']}'></a>
<a id="create_link" href="{$url}" class="utilsLink">
{$GLOBALS['app_strings']['LNK_CREATE']}
</a>
EOHTML;
}
$theTitle .= "</span>";
}
$theTitle .= "<div class='clear'></div></div>\n";
return $theTitle;
}
}

View file

@ -1,58 +0,0 @@
<?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/Spots/SpotsListViewSmarty.php';
class SpotsViewList extends ViewList
{
public function __construct()
{
parent::__construct();
}
public function preDisplay()
{
$this->lv = new SpotsListViewSmarty();
}
}

View file

@ -148,16 +148,16 @@ class DropDownHelper
//only if the value has changed or does not exist do we want to add it this way
if (!isset($my_list_strings[$dropdown_name][$key]) || strcmp($my_list_strings[$dropdown_name][$key], $value) != 0) {
//clear out the old value
$pattern_match = '/\s*\$app_list_strings\s*\[\s*\''.$dropdown_name.'\'\s*\]\[\s*\''.$key.'\'\s*\]\s*=\s*[\'\"]{1}.*?[\'\"]{1};\s*/ism';
$contents = preg_replace($pattern_match, "\n", $contents);
$contents = preg_replace($this->getPatternMatchGlobal($dropdown_name), "\n", $contents);
$contents = preg_replace($this->getPatternMatch($dropdown_name), "\n", $contents);
//add the new ones
$contents .= "\n\$app_list_strings['$dropdown_name']['$key']=" . var_export_helper($value) . ";";
}
}
} else {
//clear out the old value
$pattern_match = '/\s*\$app_list_strings\s*\[\s*\''.$dropdown_name.'\'\s*\]\s*=\s*array\s*\([^\)]*\)\s*;\s*/ism';
$contents = preg_replace($pattern_match, "\n", $contents);
$contents = preg_replace($this->getPatternMatchGlobal($dropdown_name), "\n", $contents);
$contents = preg_replace($this->getPatternMatch($dropdown_name), "\n", $contents);
//add the new ones
$contents .= "\n\$app_list_strings['$dropdown_name']=" . var_export_helper($dropdown) . ";";
}
@ -174,4 +174,15 @@ class DropDownHelper
$repairAndClear->clearJsLangFiles();
// ~~~~~~~~
}
public function getPatternMatchGlobal($dropdown_name)
{
return '/\s*\$GLOBALS\s*\[\s*\'app_list_strings\s*\'\s*\]\[\s*\''
. $dropdown_name.'\'\s*\]\s*=\s*array\s*\([^\)]*\)\s*;\s*/ism';
}
public function getPatternMatch($dropdown_name)
{
return '/\s*\$app_list_strings\s*\[\s*\''.$dropdown_name.'\'\s*\]\s*=\s*array\s*\([^\)]*\)\s*;\s*/ism';
}
}

View file

@ -46,7 +46,9 @@
<div class="dashletNonTable" style='white-space:nowrap;'>
<table border=0 cellspacing=0 cellpadding=2>
<tr>
<td nowrap="nowrap"><span id='more_img_{$id}'>{$more_img}</span><span id='less_img_{$id}' style="display:none;">{$less_img}</span> <b>{$user_name}</b>&nbsp;</td>
<td nowrap="nowrap"><span id='more_img_{$id}'>{$more_img}</span><span id='less_img_{$id}' style="display:none;">{$less_img}</span>
<div class='post_txt_username'>{$user_name}</div>&nbsp;
</td>
<td style="padding-right: 5px;"><input id="text" name="text" type="text" size='25' maxlength='100' value="" title="{sugar_translate label='LBL_POST_TITLE' module='SugarFeed'} {$user_name} "/></td>
<td nowrap="nowrap">
<input type="submit" value="{$LBL_POST}" class="button" style="vertical-align:top" onclick="SugarFeed.pushUserFeed('{$id}'); return false;"></td>

View file

@ -102,7 +102,7 @@ form
<td>
<table cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
<td style="padding-bottom: 10px;" >
<td style="padding-bottom: 10px;text-align:center;" >
<img src="{$sugar_md}" alt="SuiteCRM" /></td>
</tr>
<tr>
@ -110,10 +110,10 @@ form
<table cellpadding="0" cellspacing="2" border="0" align="center" width="100%" class="edit view">
<tr>
<td colspan="2" width="100%" style="font-size: 12px; padding-bottom: 5px; font-weight: normal;">{$INSTRUCTION}</td>
<td colspan="2" width="100%" style="padding-bottom: 5px; font-size: 14px;text-align: center;">{$INSTRUCTION}</td>
</tr>
<tr>
<td colspan="2" width="100%" style="font-size: 12px; padding-bottom: 5px; font-weight: normal; color: red;">{$ERRORS}</td>
<td colspan="2" width="100%" style="padding-bottom: 5px; font-weight: normal; color: red;">{$ERRORS}</td>
</tr>
<input type="hidden" name="entryPoint" value="{$ENTRY_POINT}" />
<input type='hidden' name='action' value="{$ACTION}" />
@ -132,10 +132,14 @@ form
<input type="hidden" name="record" value="{$ID}" />
<input type="hidden" name="user_name" value="{$USER_NAME}" />
<input type='hidden' name='saveConfig' value='0' />
{if !empty($EXPIRATION_TYPE)}
<tr>
<td colspan='2'><span id='post_error' class="error">{$EXPIRATION_TYPE}&nbsp;</span></td>
<td colspan='2' style='text-align: center; padding-bottom: 0.5em;'>
<span id='post_error' class="error">{$EXPIRATION_TYPE}&nbsp;</span>
</td>
</tr>
{/if}
<tr>
{if $OLD_PASSWORD_FIELD == '' && $USERNAME_FIELD == '' }
<td width="30%"></td><td></td>
@ -158,8 +162,8 @@ form
</tr>
<tr>
<td>&nbsp;</td>
<td>
{$SUBMIT_BUTTON}
<td style="padding-top: 1em;" class='login-btn'>
{$SUBMIT_BUTTON}
</td>
</tr>
</table>

View file

@ -43,9 +43,9 @@
*/
-->
<!-- BEGIN: main -->
<div class="dashletPanelMenu" style="width: 500px; margin: 20px auto;">
<div class="dashletPanelMenu">
<div class="hd"><div class="tl"></div><div class="hd-center"></div><div class="tr"></div></div>
<div class="bd" style="padding-top: 0px; padding-bottom: 0;">
<div class="bd">
<div class="ml"></div>
<div class="bd-center">
<form name="EditView" method="POST" action="index.php?module=Users&action=SaveTimezone&SaveTimezone=True">
@ -54,12 +54,12 @@
<input type="hidden" name="action" value="SaveTimezone">
<input type="hidden" name="SaveTimezone" value="true">
<table class="subMenuTD" style="padding: 8px; border: 2px solid #999; background-color: #fff;" cellpadding="0" cellspacing="2" border="0" align="center" width="440">
<table class="subMenuTD" cellpadding="0" cellspacing="2" border="0" align="center" width="440">
<tr>
<td colspan="2" width="100%"></td>
</tr>
<tr>
<td colspan="2" width="100%" style="font-size: 12px; padding-bottom: 5px;">
<td class="timezone-content" colspan="2" width="100%">
<table width="100%" border="0">
<tr>
<td colspan="2"><span>{$MOD.LBL_PICK_TZ_DESCRIPTION}</span></td>

View file

@ -1473,7 +1473,7 @@ EOQ;
$query = "SELECT reports_to_id FROM users WHERE id='" . $this->db->quote($check_user) . "'";
$result = $this->db->query($query, true, "Error checking for reporting-loop");
$row = $this->db->fetchByAssoc($result);
echo("fetched: " . $row['reports_to_id'] . " from " . $check_user . "<br>");
LoggerManager::getLogger()->info("fetched: " . $row['reports_to_id'] . " from " . $check_user . "<br>");
$check_user = $row['reports_to_id'];
}

View file

@ -214,9 +214,10 @@ class ResetPassword
{
global $timedate;
$guid = create_guid();
$userId = $usr->id ?? '';
$url = $GLOBALS['sugar_config']['site_url'] . "/index.php?entryPoint=Changenewpassword&guid=$guid";
$time_now = TimeDate::getInstance()->nowDb();
$q = "INSERT INTO users_password_link (id, username, date_generated) VALUES('" . $guid . "','" . $username . "','" . $time_now . "') ";
$q = "INSERT INTO users_password_link (id, username, date_generated, user_id) VALUES('" . $guid . "','" . $username . "','" . $time_now . "','" . $userId . "') ";
$usr->db->query($q);
return $url;

View file

@ -125,7 +125,7 @@ class UsersViewDetail extends ViewDetail
if (!$this->bean->portal_only && !$this->bean->is_group && !$this->bean->external_auth_only
&& isset($sugar_config['passwordsetting']['SystemGeneratedPasswordON']) && $sugar_config['passwordsetting']['SystemGeneratedPasswordON']) {
$this->dv->defs['templateMeta']['form']['buttons'][] = array('customCode' => '<input title="'.translate('LBL_GENERATE_PASSWORD_BUTTON_TITLE', 'Users').'" class="button" LANGUAGE=javascript onclick="generatepwd(\'{$fields.id.value}\');" type="button" name="password" value="'.translate('LBL_GENERATE_PASSWORD_BUTTON_LABEL', 'Users').'">"');
$this->dv->defs['templateMeta']['form']['buttons'][] = array('customCode' => '<input title="'.translate('LBL_GENERATE_PASSWORD_BUTTON_TITLE', 'Users').'" class="button" LANGUAGE=javascript data-toggle="dropdown" onclick="generatepwd(\'{$fields.id.value}\');" type="button" name="password" value="'.translate('LBL_GENERATE_PASSWORD_BUTTON_LABEL', 'Users').'">"');
}
}
}