mirror of
https://github.com/SuiteCRM/SuiteCRM-Core.git
synced 2025-08-29 08:17:18 +08:00
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:
parent
41c2374a54
commit
588534d022
160 changed files with 2854 additions and 6446 deletions
|
@ -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>";
|
||||
}
|
||||
|
||||
|
|
|
@ -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') {
|
||||
|
|
153
modules/Administration/RepairUtfEncoding.php
Normal file
153
modules/Administration/RepairUtfEncoding.php
Normal 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');
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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']); ?> <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']); ?> <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>
|
||||
|
|
|
@ -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'
|
||||
);
|
||||
|
|
|
@ -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'];
|
||||
|
||||
|
|
75
modules/Spots/metadata/detailviewdefs.php → modules/Administration/templates/RepairUtfEncoding.tpl
Executable file → Normal file
75
modules/Spots/metadata/detailviewdefs.php → modules/Administration/templates/RepairUtfEncoding.tpl
Executable file → Normal 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>
|
70
modules/Spots/metadata/editviewdefs.php → modules/Administration/templates/RepairUtfEncodingStatus.tpl
Executable file → Normal file
70
modules/Spots/metadata/editviewdefs.php → modules/Administration/templates/RepairUtfEncodingStatus.tpl
Executable file → Normal 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>
|
46
modules/Spots/SpotsListViewSmarty.php → modules/Administration/templates/RepairUtfEncodingSyncStatus.tpl
Executable file → Normal file
46
modules/Spots/SpotsListViewSmarty.php → modules/Administration/templates/RepairUtfEncodingSyncStatus.tpl
Executable file → Normal 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>
|
||||
|
||||
}
|
|
@ -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']
|
||||
]
|
||||
],
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -535,6 +535,7 @@ div#content {
|
|||
|
||||
.emailSettings tr td:first-child {
|
||||
padding-right: 10px;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
.emailSettings tr td:nth-child(2) {
|
||||
|
|
|
@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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') {
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 />
|
||||
|
||||
|
|
|
@ -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}
|
||||
|
||||
|
|
|
@ -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} </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"> </div></td>
|
||||
|
|
|
@ -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} {sugar_help text=$MOD.LBL_SAMPLE_URL_HELP}</td>
|
||||
</tr>
|
||||
<td align="left" scope="row" colspan="4" style="padding-top: 0.5em;">{$SAMPLE_URL} {sugar_help text=$MOD.LBL_SAMPLE_URL_HELP}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td scope="row" colspan="4"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td scope="row" colspan="4"> </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"> </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}
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -553,8 +553,7 @@ class ImportViewStep3 extends ImportView
|
|||
|
||||
#importNotes ul{
|
||||
margin: 0px;
|
||||
margin-top: 10px;
|
||||
padding-left: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
</style>
|
||||
|
|
|
@ -137,6 +137,10 @@ $viewdefs ['Leads'] =
|
|||
),
|
||||
),
|
||||
),
|
||||
'summaryTemplates' => [
|
||||
'edit' => 'LBL_SUMMARY_PERSON',
|
||||
'detail' => 'LBL_SUMMARY_PERSON',
|
||||
],
|
||||
'topWidget' => [
|
||||
'type' => 'statistics',
|
||||
'options' => [
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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']
|
||||
]
|
||||
],
|
||||
],
|
||||
|
|
|
@ -62,7 +62,7 @@ $viewdefs['Opportunities'] = [
|
|||
]
|
||||
],
|
||||
'acls' => [
|
||||
'Opportunity' => ['view', 'list']
|
||||
'Opportunities' => ['view', 'list']
|
||||
]
|
||||
]
|
||||
]
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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">';
|
||||
|
|
|
@ -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'
|
||||
);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -127,6 +127,10 @@ array(
|
|||
),
|
||||
),
|
||||
),
|
||||
'summaryTemplates' => [
|
||||
'edit' => 'LBL_SUMMARY_PERSON',
|
||||
'detail' => 'LBL_SUMMARY_PERSON',
|
||||
],
|
||||
'panels' =>
|
||||
array(
|
||||
'lbl_prospect_information' =>
|
||||
|
|
|
@ -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';
|
||||
|
|
|
@ -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 (
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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%',
|
||||
|
|
|
@ -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',
|
||||
);
|
|
@ -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', );
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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>
|
||||
|
||||
|
|
@ -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>
|
|
@ -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');
|
||||
}
|
||||
|
||||
;
|
|
@ -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');
|
||||
}
|
|
@ -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
|
@ -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',
|
||||
);
|
|
@ -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
|
||||
);
|
|
@ -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', ),
|
||||
);
|
|
@ -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, ),
|
||||
);
|
|
@ -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',
|
||||
);
|
|
@ -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'),
|
||||
|
||||
);
|
|
@ -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',
|
||||
),
|
||||
),
|
||||
|
||||
),
|
||||
|
||||
);
|
|
@ -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
|
||||
)
|
||||
)
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
|
@ -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".
|
||||
*/;
|
|
@ -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%',
|
||||
),
|
||||
),
|
||||
);
|
|
@ -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>
|
|
@ -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'));
|
|
@ -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
|
||||
|
||||
<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;
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
}
|
|
@ -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';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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> </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>
|
||||
</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>
|
||||
|
|
|
@ -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} </span></td>
|
||||
<td colspan='2' style='text-align: center; padding-bottom: 0.5em;'>
|
||||
<span id='post_error' class="error">{$EXPIRATION_TYPE} </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> </td>
|
||||
<td>
|
||||
{$SUBMIT_BUTTON}
|
||||
<td style="padding-top: 1em;" class='login-btn'>
|
||||
{$SUBMIT_BUTTON}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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'];
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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').'">"');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue