From af0ee39634a51f32f9a123dcd7e8f0df928d6a57 Mon Sep 17 00:00:00 2001 From: satish <satish.dvnk@vtiger.com> Date: Wed, 14 Dec 2016 18:31:34 +0530 Subject: [PATCH] Fixed Issues: Purchase Order creation failed from Products Task creation fails from Task management page --- LICENSE.txt | 2 +- include/fields/DateTimeField.php | 6 - languages/en_us/Vtiger.php | 1495 ++++++++++------- .../Calendar/resources/TaskManagement.js | 1 + layouts/v7/modules/Emails/SendEmailResult.tpl | 37 +- .../Inventory/uitypes/MultiPicklist.tpl | 50 - .../v7/modules/Inventory/uitypes/Picklist.tpl | 52 - .../Settings/Vtiger/OutgoingServerEdit.tpl | 6 +- modules/Emails/models/Record.php | 320 ++-- modules/Emails/views/MassSaveAjax.php | 3 +- modules/Migration/schema/660_to_700.php | 224 +-- modules/Vtiger/helpers/Util.php | 4 + modules/Vtiger/uitypes/Time.php | 14 +- .../modules/Services/models/ModuleMeta.php | 12 - 14 files changed, 1111 insertions(+), 1115 deletions(-) delete mode 100644 layouts/v7/modules/Inventory/uitypes/MultiPicklist.tpl delete mode 100644 layouts/v7/modules/Inventory/uitypes/Picklist.tpl delete mode 100644 pkg/vtiger/modules/Services/modules/Services/models/ModuleMeta.php diff --git a/LICENSE.txt b/LICENSE.txt index 4c35715d2..26bbfc721 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -4,7 +4,7 @@ The vtiger Public License Version 1.2 is based on the Mozilla Public License Ver Vtiger Public License Version 1.2 -Copyright (c) 2004-2013 www.vtiger.com All rights reserved. +Copyright (c) 2004-2017 www.vtiger.com All rights reserved. PLEASE READ THE FOLLOWING LICENSE AGREEMENT CAREFULLY. ANY USE OF SOFTWARE DOWNLOADED OR ORDERED FROM VTIGER IS PERMITTED ONLY UNDER LICENSE WITH VTIGER. BY DOWNLOADING THIS SOFTWARE YOU AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE AGREEMENT. diff --git a/include/fields/DateTimeField.php b/include/fields/DateTimeField.php index 10de24363..de2d15fcf 100644 --- a/include/fields/DateTimeField.php +++ b/include/fields/DateTimeField.php @@ -268,12 +268,6 @@ class DateTimeField { $date = self::convertToUserTimeZone($this->datetime, $user); $time = $date->format("H:i:s"); $log->debug("Exiting getDisplayTime method ..."); - - //Convert time to user preferred value - $userModel = Users_Privileges_Model::getCurrentUserModel(); - if($userModel->get('hour_format') == '12'){ - $time = Vtiger_Time_UIType::getTimeValueInAMorPM($time); - } return $time; } diff --git a/languages/en_us/Vtiger.php b/languages/en_us/Vtiger.php index 7c783885d..e5a8f52a6 100644 --- a/languages/en_us/Vtiger.php +++ b/languages/en_us/Vtiger.php @@ -16,11 +16,12 @@ $languageStrings = array( 'LBL_PRIVACY_POLICY' => 'Privacy Policy', // Common Actions - 'LBL_LINKED' => 'Linked', + 'LBL_NEW' => 'New', + 'LBL_LINKED' => 'Linked', 'LBL_SELECT_ALL' => 'Select all', 'LBL_SELECT_TO_LOAD_LIST' => 'Select to Load List', 'LBL_CREATING_NEW' => 'Creating New', - 'LBL_ADDING_NEW' => 'Adding new', + 'LBL_ADDING_NEW' => 'Adding new', 'LBL_EDITING' => 'Editing', 'LBL_SAVE' => 'Save', 'LBL_CANCEL' => 'Cancel', @@ -29,16 +30,16 @@ $languageStrings = array( 'LBL_EXPORT' => 'Export', 'LBL_FIND_DUPLICATES' => 'Find Duplicates', 'LBL_MORE' => 'More', - 'LBL_LESS' => 'Less', + 'LBL_LESS' => 'Less', 'LBL_ACTIONS' => 'Actions', - 'LBL_ADD' => 'Add', + 'LBL_ADD' => 'Add', 'LBL_EDIT' => 'Edit', 'LBL_DELETE' => 'Delete', - 'LBL_COMMENT' => 'Comment', - 'LBL_STARRED' => 'Unfollow', - 'LBL_NOT_STARRED' => 'Follow', - 'LBL_QUICK_VIEW' => 'Quick View', - 'LBL_NOTIFICATION_CENTER' => 'Notification Center', + 'LBL_COMMENT' => 'Comment', + 'LBL_STARRED' => 'Unfollow', + 'LBL_NOT_STARRED' => 'Click to follow', + 'LBL_QUICK_VIEW' => 'Quick View', + 'LBL_NOTIFICATION_CENTER' => 'Notification Center', 'LBL_SETTINGS'=> 'Settings', 'LBL_ADD_COMMENT' => 'Add Comment', 'LBL_EDIT_FIELDS' => '%s Fields & Layout', @@ -55,9 +56,11 @@ $languageStrings = array( 'LBL_YES' => 'Yes', 'LBL_NO' => 'No', 'LBL_SHOW_COMPLETE_DETAILS' => 'Complete Details', - 'LBL_MASS_EDITING' => 'Mass Editing', - 'LBL_DESELECT_ALL_RECORDS' => 'Deselect all', + 'LBL_MINILIST_FIELDS_ARE_NOT_AVAILABLE_FOR_YOU' => 'Sorry! Minilist fields are not available for you.', + 'LBL_MASS_EDITING' => 'Mass Editing', + 'LBL_DESELECT_ALL_RECORDS' => 'Deselect Records in all Pages', 'LBL_QUICK_CREATE' => 'Quick Create', + 'LBL_QUICK_EDIT' => 'Quick Edit', 'LBL_SEND_EMAIL' => 'Send Email', //SEND EMAIL translations 'LBL_ALL_EMAILS' => 'All email accounts', @@ -70,8 +73,8 @@ $languageStrings = array( 'LBL_ADD_MORE_FIELDS' => 'Add more fields', 'LBL_ADD_NOTE' => 'Add Document', 'LBL_CREATE_NEW' => 'Create New', - 'LBL_ADD_EVENT' => 'Add Event', - 'LBL_ADD_TASK' => 'Add Task', + 'LBL_ADD_EVENT' => 'Add Event', + 'LBL_ADD_TASK' => 'Add Task', 'LBL_MARKETING_AND_SALES' => 'MARKETING & SALES', 'LBL_TOOLS_HEADER' => 'TOOLS', 'LBL_SUPPORT' => 'SUPPORT', @@ -79,15 +82,15 @@ $languageStrings = array( 'LBL_ANALYTICS' => 'ANALYTICS', 'LBL_CONTACT' => 'CONTACT MANAGEMENT', 'LBL_HOME' => 'Home', - 'LBL_NO_ATTACHMENTS' => 'No Attachments', - + 'LBL_NO_ATTACHMENTS' => 'No Attachments', + 'LBL_COMPOSE_EMAIL_WARNING' => ' Warning : Your email might land in spam. Add Vtiger as an authorized sender for your domain. Learn more', // Common Link Labels - 'LBL_REARRANGE_DASHBOARD_TABS' => 'Rearrange Tabs', - 'LBL_DONE' => 'Done', - 'LBL_DELETE_DASHBOARD_TAB' =>'Delete Tab', - 'LBL_DASHBOARD_TAB_ALREADY_EXIST' => 'Tab Name Already Exist', - 'LBL_TABS_LIMIT_EXCEEDED' => 'Sorry! Can\'t add more than 10 tabs', - 'LBL_TODOS' => 'Tasks', + 'LBL_REARRANGE_DASHBOARD_TABS' => 'Rearrange Tabs', + 'LBL_DONE' => 'Done', + 'LBL_DELETE_DASHBOARD_TAB' =>'Delete Tab', + 'LBL_DASHBOARD_TAB_ALREADY_EXIST' => 'Tab Name Already Exist', + 'LBL_TABS_LIMIT_EXCEEDED' => 'Sorry! Can\'t add more than 10 tabs', + 'LBL_TODOS' => 'Tasks', 'LBL_LAST_VIEWED_RECORDS' => 'Last Viewed Records', 'LBL_DASHBOARD' => 'Dashboard', 'LBL_USER_SETTINGS' => 'User Settings', @@ -104,21 +107,23 @@ $languageStrings = array( 'LBL_CALENDAR' => 'Calendar', 'LBL_POST' => 'Post', 'LBL_GUIDER' => 'Guider', - 'LBL_VIDEOS' => 'Videos', + 'LBL_VIDEOS' => 'Videos', 'LBL_DISPLAY_TYPE' => 'Display Type', 'LBL_DISPLAY_WIDETYPE' => 'Wide', 'LBL_DISPLAY_MEDIUMTYPE' => 'Medium', 'LBL_DISPLAY_NARROWTYPE' => 'Narrow', 'LBL_TAG_THIS_RECORD' => 'Tag this Record', - 'LBL_SAME_TAG_EXISTS' => 'Duplicate tag exist', - 'LBL_MAKE_PUBLIC' => 'Make Public', + 'LBL_SAME_TAG_EXISTS' => 'Duplicate tag exist', + 'LBL_MAKE_PUBLIC' => 'Make Public', 'LBL_PAGE' => 'Page', 'LBL_LISTVIEW_PAGE_JUMP' => 'Page Jump', 'LBL_PROFILE_PASSWORD' => 'Profile / Password', - 'LBL_CANT_MOVE_FROM_PUBLIC_TO_PRIVATE' => 'Cannot able to move from Public tag to Private tag.', - 'LBL_EDIT_TAG'=>'Edit Tag', - 'LBL_NO_TAG_EXISTS' => 'No Tag Exists' , - + 'LBL_INFO' => 'Info', + 'LBL_CANT_MOVE_FROM_PUBLIC_TO_PRIVATE' => 'Cannot able to move from Public tag to Private tag.', + 'LBL_EDIT_TAG'=>'Edit Tag', + 'LBL_NO_TAG_EXISTS' => 'No Tag Exists' , + 'LBL_RELATED_USERS' => 'Related Users', + // Common Fields 'LBL_USER' => 'User', 'LBL_GROUP' => 'Group', @@ -134,7 +139,7 @@ $languageStrings = array( 'LBL_LOADING_LISTVIEW_CONTENTS' => 'Loading, Please wait.', // Detail View - 'LBL_HISTORY' => 'History', + 'LBL_HISTORY' => 'History', 'LBL_UPDATES' => 'Updates', 'LBL_SHOW_FULL_DETAILS' => 'Show Full Details', 'LBL_SUMMARY_DETAILS' => 'Summary Details', @@ -143,10 +148,10 @@ $languageStrings = array( 'LBL_ACTIVITIES' => 'Activities', 'LBL_NO_PENDING_ACTIVITIES' => 'No pending activities', 'LBL_SUMMARY' => 'Summary', - 'LBL_KEY_FIELD' => 'Key Field', + 'LBL_KEY_FIELD' => 'Key Field', 'LBL_DETAILS' => 'Details', - 'LBL_NAME_EMAIL' => 'Name and Email', - + 'LBL_NAME_EMAIL' => 'Name and Email', + // Popup window 'LBL_SEARCH_FOR' => 'Search For', 'LBL_IN' => 'in', @@ -165,7 +170,7 @@ $languageStrings = array( 'LBL_SIMPLE_FORM' => 'Simple Form', //Recent Comments - 'LBL_IS_REMOVED' => 'is Removed', + 'LBL_IS_REMOVED' => 'is Removed', 'LBL_ADD_YOUR_COMMENT_HERE' => 'Add your comment here...', 'LBL_REASON_FOR_CHANGING_COMMENT' => 'Reason for changing comment', 'LBL_REPLY' => 'Reply', @@ -194,16 +199,14 @@ $languageStrings = array( 'Vendors' => 'Vendors', 'Rss' => 'RSS', 'Quotes'=>'Quotes', - 'PurchaseOrder'=>'Purchase Orders', - 'SalesOrder'=>'Sales Orders', - 'Invoice'=>'Invoices', + 'PurchaseOrder'=>'Purchase Order', + 'SalesOrder'=>'Sales Order', + 'Invoice'=>'Invoice', 'MailManager' => 'Mail Manager', 'Activities' => 'Activities', - 'Portal' => 'Our Sites', - 'Email Templates' => 'Email Templates', - 'Print Templates'=>'Print Templates', - 'Recycle Bin' => 'Recycle Bin', - + 'Portal' => 'Our Sites', + 'Email Templates' => 'Email Templates', + 'Recycle Bin' => 'Recycle Bin', //Basic String Translation 'LBL_ADD_RECORD' => 'Add Record', @@ -230,7 +233,7 @@ $languageStrings = array( 'LBL_STARTS_WITH' => 'starts with', 'LBL_ENDS_WITH' => 'ends with', 'LBL_CONTAINS' => 'contains', - 'LBL_DOES_NOT_CONTAIN' => 'does not contains', + 'LBL_DOES_NOT_CONTAIN' => 'does not contain', 'LBL_LESS_THAN' => 'less than', 'LBL_GREATER_THAN' => 'greater than', 'LBL_LESS_THAN_OR_EQUAL' => 'less or equal', @@ -257,7 +260,7 @@ $languageStrings = array( //Advance Search 'LBL_SAVE_FILTER' => 'Save List', - 'LBL_SAVE_MODIFY_FILTER' => 'Save/Modify List', + 'LBL_SAVE_MODIFY_FILTER' => 'Save/Modify Search', 'LBL_SEARCH_RESULTS' => 'Search Results', 'LBL_SAVE_AS_FILTER' => 'Save As List', @@ -282,6 +285,8 @@ $languageStrings = array( 'LBL_TAX' => 'Tax', 'LBL_ADD_PRODUCT' => 'Add Product', 'LBL_ADD_SERVICE' => 'Add Service', + 'LBL_LI_ADD_PRODUCT' => 'Product', + 'LBL_LI_ADD_SERVICE' => 'Service', 'LBL_ITEMS_TOTAL' => 'Items Total', 'LBL_SHIPPING_AND_HANDLING_CHARGES' => 'Shipping & Handling Charges', 'LBL_PRE_TAX_TOTAL' => 'Pre Tax Total', @@ -315,11 +320,12 @@ $languageStrings = array( 'LBL_DEDUCTED_TAXES_TOTAL' => 'Deducted Taxes Total', 'LBL_DEFAULT' => 'Default', 'LBL_ITEM' => 'Item', + 'LBL_ADD_DASHBOARD' =>'Add dashboard', //DetailView Actions 'LBL_CREATE' => 'Create', 'LBL_GENERATE' => 'Generate', - 'LBL_DUPLICATE' => 'Duplicate', + 'LBL_DUPLICATE' => 'Duplicate', 'Add Note' => 'Add Document', //Dashboard String @@ -329,8 +335,9 @@ $languageStrings = array( 'LBL_CLOSE' => 'Close', 'LBL_ALL' => 'All', 'LBL_UPDATED' => 'updated', + 'LBL_VIA_TASK' => 'via task', 'LBL_form' => 'from', - 'LBL_FROM' => 'From', + 'LBL_FROM' => 'From', 'LBL_TO' => 'To', 'LBL_to' => 'to', 'LBL_ON' => 'on', @@ -346,6 +353,7 @@ $languageStrings = array( 'LBL_REMOVE' => 'Remove', 'LBL_AT' => 'at', 'LBL_MINE' => 'Mine', + 'LBL_ME' => 'Me', 'History' => 'History', 'Upcoming Tasks' => 'Upcoming Tasks', 'LBL_YEAR' => 'year', @@ -354,10 +362,10 @@ $languageStrings = array( 'LBL_MONTHS' => 'months', 'LBL_DAY' => 'day', 'LBL_DAYS' => 'days', - 'LBL_DAY(S)' => 'day(s)', + 'LBL_DAY(S)' => 'day(s)', 'LBL_HOUR' => 'hour', 'LBL_HOURS' => 'hours', - 'LBL_HOUR(S)' => 'hour(s)', + 'LBL_HOUR(S)' => 'hour(s)', 'LBL_MINUTE' => 'minute', 'LBL_MINUTES' => 'minutes', 'LBL_SECOND' => 'second', @@ -387,10 +395,10 @@ $languageStrings = array( 'Mini List' => 'Mini List', 'Notebook' => 'Notepad', 'LBL_RESULT_FOR_THE_TAG' => 'Results for the tag', - 'LBL_ALL_USERS' => 'All Users', - 'LBL_BOTH' => 'Both', - 'LBL_SHOW' => 'Show', - 'LBL_MY' => 'My', + 'LBL_ALL_USERS' => 'All Users', + 'LBL_BOTH' => 'Both', + 'LBL_SHOW' => 'Show', + 'LBL_MY' => 'My', 'LBL_SELECT_DATE_RANGE' => 'Select Date Range', // Basic Strings- custom view @@ -410,7 +418,6 @@ $languageStrings = array( 'LBL_ADD_MORE_COLUMNS' => 'Click to select fields', 'LBL_ADD_GROUP' => 'Add Group', - //DateFilter Conditions 'LBL_CUSTOM' => 'Custom', 'LBL_PREVIOUS_FY' => 'Previous FY', @@ -429,7 +436,7 @@ $languageStrings = array( 'LBL_CURRENT_MONTH' => 'Current Month', 'LBL_NEXT_MONTH' => 'Next Month', 'LBL_LAST_7_DAYS' => 'Last 7 Days', - 'LBL_LAST_14_DAYS' => 'Last 14 Days', + 'LBL_LAST_14_DAYS' => 'Last 14 Days', 'LBL_LAST_30_DAYS' => 'Last 30 Days', 'LBL_LAST_60_DAYS' => 'Last 60 Days', 'LBL_LAST_90_DAYS' => 'Last 90 Days', @@ -446,7 +453,7 @@ $languageStrings = array( 'LBL_STARTS_WITH' => 'starts with', 'LBL_ENDS_WITH' => 'ends with', 'LBL_CONTAINS' => 'contains', - 'LBL_DOES_NOT_CONTAIN' => 'does not contains', + 'LBL_DOES_NOT_CONTAIN' => 'does not contain', 'LBL_LESS_THAN' => 'less than', 'LBL_GREATER_THAN' => 'greater than', 'LBL_LESS_THAN_OR_EQUAL' => 'less or equal', @@ -455,8 +462,8 @@ $languageStrings = array( 'LBL_AFTER' => 'after', 'LBL_BETWEEN' => 'between', 'LBL_IS_EMPTY'=> 'is empty', - 'LBL_IS_NOT_EMPTY' => 'is not empty', - 'LBL_APPROVE' => 'Approve' , + 'LBL_IS_NOT_EMPTY' => 'is not empty', + 'LBL_APPROVE' => 'Approve', //Detail view summary widgets 'LBL_OWNER' => 'Owner', @@ -465,8 +472,8 @@ $languageStrings = array( 'LBL_MODIFIED' => 'Modified', 'LBL_COMMENTED' => 'Commented', - //calender set-reminder - 'LBL_BEFORE_EVENT' => ' Before Event', + //calender set-reminder + 'LBL_BEFORE_EVENT' => ' Before Event', //Dashboard widgets 'History' => 'History', @@ -485,6 +492,10 @@ $languageStrings = array( 'Tickets by Status' => 'Tickets by Status', 'Open Tickets' => 'Open Tickets', 'Funnel Amount' => 'Total Amount by Sales stage', + 'Key Metrics' => 'Key Metrics', + 'Mini List' => 'Mini List', + 'Tag Cloud' => 'Tag Cloud', + 'Notebook' => 'Notebook', //Exports strings 'LBL_EXPORT_ALL_DATA' => 'Export all data', @@ -494,17 +505,17 @@ $languageStrings = array( 'LBL_NO_RECORD_SELECTED' => 'No record selected.', 'LBL_CAN_NOT_REMOVE_DEFAULT_WIDGET' => 'Cannot remove default widget', 'LBL_CUSTOM_VIEW_NAME_DUPLICATES_EXIST' => 'List already exists', - 'LBL_TYPE_AND_SEARCH' => 'Type and Search', - 'LBL_EXPORT_CURRENCY_TOOLTIP_TEXT'=>'For exporting Currency values in Line items, Vtiger will use this setting to export as this currency. Any currency values outside the line items tables, will be exported as in User\'s preferred currency (selected in \'My Preferences\')', - 'LBL_EXPORT_LINEITEM_CURRENCY'=>'Choose Currency (For Line Item Values)', - 'LBL_EXPORT_USER_CURRENCY' =>'My preferred Currency', - 'LBL_EXPORT_RECORD_CURRENCY'=>'Currency specified in Record', + 'LBL_TYPE_AND_SEARCH' => 'Type and Search', + 'LBL_EXPORT_CURRENCY_TOOLTIP_TEXT'=>'For exporting Currency values in Line items, Vtiger will use this setting to export as this currency. Any currency values outside the line items tables, will be exported as in User\'s preferred currency (selected in \'My Preferences\')', + 'LBL_EXPORT_LINEITEM_CURRENCY'=>'Choose Currency (For Line Item Values)', + 'LBL_EXPORT_USER_CURRENCY' =>'My preferred Currency', + 'LBL_EXPORT_RECORD_CURRENCY'=>'Currency specified in Record', 'LBL_EXPORT_FORMAT' => 'Export format', 'LBL_EXPORT_DATA' => 'Export Data', - 'LBL_CUSTOMIZE' => 'Customize:', + 'LBL_CUSTOMIZE' => 'Customize', 'LBL_ADD_MANAGE_MODULES' => 'Modules', - 'LBL_CUSTOMIZE_MAIN_MENU' => 'Main Menu', + 'LBL_CUSTOMIZE_MAIN_MENU' => 'Left Menus', 'LBL_LABELS' => 'Labels', 'LBL_WORKFLOWS' => 'Workflows', 'LBL_PICKLIST' => 'Picklists', @@ -609,6 +620,7 @@ $languageStrings = array( 'Discount Percent' => 'Discount Percent', 'Discount Amount' => 'Discount Amount', 'Item Discount Amount' => 'Item Discount Amount', + 'Net Price' => 'Net Price', 'Item Discount Percent' => 'Item Discount Percent', 'Due Date' => 'Due Date', @@ -617,10 +629,8 @@ $languageStrings = array( 'Secondary Email' => 'Secondary Email', 'Other Email' => 'Other Email', 'Email Opt Out' => 'Email Opt Out', - 'Is Converted From Lead' => 'Is Converted From Lead', - + 'Is Converted From Lead' => 'Is Converted From Lead', 'Expected Close Date' => 'Expected Close Date', - 'Fax' => 'Fax', 'Last Name' => 'Last Name', @@ -628,10 +638,8 @@ $languageStrings = array( 'High' => 'High', 'Low' => 'Low', - 'In Progress' => 'In Progress', - 'Subject' => 'Subject', 'Shipping Address'=>'Shipping Address', 'Shipping Po Box'=>'Shipping PO Box', @@ -676,7 +684,7 @@ $languageStrings = array( 'Other Phone' => 'Secondary Phone', 'Phone' => 'Primary Phone', - 'State' => 'State', + 'State' => 'State', 'Po Box' => 'PO Box', 'Postal Code' => 'Postal Code', @@ -733,7 +741,7 @@ $languageStrings = array( 'LBL_Dec' => 'Dec', 'LBL_CALENDAR_SETTINGS' => 'Calendar Settings', - 'Reminder Interval' => 'Popup Reminder Interval', + 'Reminder Interval' => 'Popup Reminder Interval', //Translations used in inventory modules for address 'SINGLE_Accounts' => 'Organization', @@ -769,14 +777,14 @@ $languageStrings = array( 'LBL_GO_TO_PREVIEW' => 'Go to Preview', 'LBL_SELECT_EMAIL_TEMPLATE' => 'Select Email Template', 'LBL_COMPOSE_EMAIL' => 'Compose Email', - 'LBL_CC' => 'Cc', - 'LBL_BCC' => 'Bcc', - 'LBL_ADD_CC' => 'Add Cc', - 'LBL_ADD_BCC' => 'Add Bcc', + 'LBL_CC' => 'Cc', + 'LBL_BCC' => 'Bcc', + 'LBL_ADD_CC' => 'Add Cc', + 'LBL_ADD_BCC' => 'Add Bcc', 'LBL_MAX_UPLOAD_SIZE' => 'Maximum upload size is', 'LBL_EXCEEDED' => 'Exceeded', 'LBL_OPERATION_NOT_PERMITTED' => 'Operation not permitted', - 'LBL_MERGE' => 'Merge', + 'LBL_MERGE' => 'Merge', 'LBL_FIND_DUPLICATES' => 'Find Duplicates', 'LBL_MERGING_CRITERIA_SELECTION' => 'Merging Criteria Selection', 'LBL_AVAILABLE_FIELDS' => 'Available Fields', @@ -834,9 +842,6 @@ $languageStrings = array( 'LBL_TRANSFER_OWNERSHIP' => 'Transfer Ownership', 'LBL_SELECT_RELATED_MODULES' => 'Select Related Modules', 'LBL_ASSIGNED_TO' => 'Assigned To', - //For Print Templates - 'Print' => 'Print / Export PDF', - 'Print Templates' => 'Print Templates', //Comments Field Labels for Workflow 'Comment' => 'Comment', 'Last Comment' => 'Last Comment', @@ -847,80 +852,83 @@ $languageStrings = array( 'LBL_OLD_VERSION_REMOVED_SOON' => 'Important Note on Old look', 'LBL_FEEDBACK_ON_REMOVING_OLD_VERSION' => 'We are happy to share that old look will be available until February, 2014 . We added the following features to the new look recently<br><br>1. Pivot Reports<br>2. Custom Charts<br>3. Quick Search in Lists<br><br>If you have suggestions on new look, please share with us below.', 'LBL_FEEDBACK_PLACEHOLDER' => 'Share your suggestions here..', - 'LBL_SUBMIT_FEEDBACK' => 'Submit Feedback', + 'LBL_SUBMIT_FEEDBACK' => 'Submit feedback', 'LBL_DONT_SHOW_AGAIN' => 'Do not show this again', 'LBL_CONTINUE_TO_OLD_LOOK' => 'Continue to Old Look', 'LBL_LEFT_PANEL_SHOW_HIDE' => 'Left Panel Show/Hide', - //Products Popup View - 'NOT_A_BUNDLE' => 'Not a bundle', - 'LBL_SUB_PRODUCTS' => 'Sub Products', - 'LBL_MARK_AS_HELD' => 'Mark As Held', - 'LBL_SMS_MAX_CHARACTERS_ALLOWED' => 'Maximum 160 characters are allowed for text message', - 'LBL_HIDE_COMPLETED_EVENTS' => 'Hide Completed Calendar Events', - 'LBL_SETUP_WEBFORMS' => 'Setup Webforms', - 'LBL_SPECIAL_OPTIONS' => 'Special Options', - 'LBL_PARENT_OWNER' => 'Parent Record Owner', + //Products Popup View + 'NOT_A_BUNDLE' => 'Not a bundle', + 'LBL_SUB_PRODUCTS' => 'Sub Products', + 'LBL_MARK_AS_HELD' => 'Mark As Held', + 'LBL_MARK_AS_COMPLETED' => 'Mark As Completed', + 'LBL_SMS_MAX_CHARACTERS_ALLOWED' => 'Maximum 160 characters are allowed for text message', + 'LBL_HIDE_COMPLETED_EVENTS' => 'Hide Completed Calendar Events', + 'LBL_SETUP_WEBFORMS' => 'Setup Webforms', + 'LBL_SPECIAL_OPTIONS' => 'Special Options', + 'LBL_PARENT_OWNER' => 'Parent Record Owner', 'LBL_PASSWORD_LINK_EXPIRED_OR_INVALID_PASSWORD' => 'Password link has expired or you have entered invalid password', - // Recurring Invoice - 'Half-Yearly' => 'Half-Yearly', - 'LBL_FULLSCREEN' => 'Full Screen', - 'LBL_SETUP_WEBFORMS' => 'Setup Webforms', - 'LBL_MODULE_DISABLED' => ' Module is disabled', - 'Organization Name' => 'Organization Name', - 'LBL_SOCIAL_TWITTER_WIDGET' => 'Twitter Activity', - 'LBL_WEEK' => 'Week', - //Convert Lead and Potential - 'CANNOT_CONVERT' => 'Cannot Convert', - 'LBL_CONVERT_ERROR_TITLE' => 'Modules Disabled', - 'LBL_FOLLOWING_ARE_POSSIBLE_REASONS' => 'Possible reasons include:', - 'LBL_MANDATORY_FIELDS_ARE_EMPTY' => 'Mandatory fields are empty', - - // SMSNotifier Phone Format Warning - 'LBL_PHONE_FORMAT_WARNING' => 'Please ensure that phone number is in international E.164 format', - 'LBL_PHONEFORMAT_WARNING_CONTENT' => 'The E.164 number formatting can have a maximum of fifteen digits and are usually written as follows: [+][country code][subscriber number including area code] - For example, to convert a US phone number (415 599 2671) to E.164 format, one would need to add the \'+\' prefix and the country code (which is 1) in front of the number (+1 415 599 2671). In the UK and many other countries internationally, local dialing requires the addition of a 0 in front of the subscriber number. However, to use E.164 formatting, this 0 must be removed. A number such as 020 7183 8750 in the UK would be formatted as +44 20 7183 8750.', - 'LBL_WARNING' => 'Warning', - - 'LBL_ORIGIN' => 'Origin', - 'SENT' => 'CRM', - 'SAVED' => 'Draft', - 'MailManager' => 'Mail Manager', - 'MAILSCANNER' => 'Mail Converter', + // Recurring Invoice + 'Half-Yearly' => 'Half-Yearly', + 'LBL_FULLSCREEN' => 'Full Screen', + 'LBL_SETUP_WEBFORMS' => 'Setup Webforms', + 'LBL_MODULE_DISABLED' => ' Module is disabled', + 'Organization Name' => 'Organization Name', + 'LBL_SOCIAL_TWITTER_WIDGET' => 'Twitter Activity', + 'LBL_WEEK' => 'Week', + //Convert Lead and Potential + 'CANNOT_CONVERT' => 'Cannot Convert', + 'LBL_CONVERT_ERROR_TITLE' => 'Modules Disabled', + 'LBL_FOLLOWING_ARE_POSSIBLE_REASONS' => 'Possible reasons include:', + 'LBL_MANDATORY_FIELDS_ARE_EMPTY' => 'Mandatory fields are empty', + + // SMSNotifier Phone Format Warning + 'LBL_PHONE_FORMAT_WARNING' => 'Please ensure that phone number is in international E.164 format', + 'LBL_PHONEFORMAT_WARNING_CONTENT' => 'The E.164 number formatting can have a maximum of fifteen digits and are usually written as follows: [+][country code][subscriber number including area code] + For example, to convert a US phone number (415 599 2671) to E.164 format, one would need to add the \'+\' prefix and the country code (which is 1) in front of the number (+1 415 599 2671). In the UK and many other countries internationally, local dialing requires the addition of a 0 in front of the subscriber number. However, to use E.164 formatting, this 0 must be removed. A number such as 020 7183 8750 in the UK would be formatted as +44 20 7183 8750.', + 'LBL_WARNING' => 'Warning', + 'LBL_ORIGIN' => 'Origin', + 'SENT' => 'Sent', + 'RECEIVED' => 'Received', + 'QUEUED'=> 'Queued', + 'FAILED'=> 'Failed', + 'SAVED' => 'Draft', + 'MailManager' => 'Mail Manager', + 'MAILSCANNER' => 'Mail Converter', 'LBL_SENDER_NAME' => 'Sender Name', - 'SMSNotifier'=>'SMS Notifier', + 'SMSNotifier'=>'SMS Notifier', - 'Mobile Call' => 'Mobile Call', - 'LBL_NO_MORE_RESULTS' => 'No more results!', + 'Mobile Call' => 'Mobile Call', + 'LBL_NO_MORE_RESULTS' => 'No more results!', 'Related To' => 'Related To', - // Date Conditions - 'LBL_LESS_THAN_DAYS_AGO' => 'Less than days ago', - 'LBL_MORE_THAN_DAYS_AGO' => 'More than days ago', - 'LBL_IN_LESS_THAN' => 'In less than', - 'LBL_IN_MORE_THAN' => 'In More than', - 'LBL_DAYS_AGO' => 'Days ago', - 'LBL_DAYS_LATER' => 'Days Later', - 'LBL_LESS_THAN_HOURS_BEFORE' => 'Less than hours before', - 'LBL_LESS_THAN_HOURS_LATER' => 'Less than hours later', - 'LBL_MORE_THAN_HOURS_BEFORE' => 'More than hours before', - 'LBL_MORE_THAN_HOURS_LATER' => 'More than Hours Later', - 'LBL_INTERNAL_COMMENT' => 'Internal Comment', + // Date Conditions + 'LBL_LESS_THAN_DAYS_AGO' => 'Less than days ago', + 'LBL_MORE_THAN_DAYS_AGO' => 'More than days ago', + 'LBL_IN_LESS_THAN' => 'In less than', + 'LBL_IN_MORE_THAN' => 'In More than', + 'LBL_DAYS_AGO' => 'Days ago', + 'LBL_DAYS_LATER' => 'Days Later', + 'LBL_LESS_THAN_HOURS_BEFORE' => 'Less than hours before', + 'LBL_LESS_THAN_HOURS_LATER' => 'Less than hours later', + 'LBL_MORE_THAN_HOURS_BEFORE' => 'More than hours before', + 'LBL_MORE_THAN_HOURS_LATER' => 'More than Hours Later', + 'LBL_INTERNAL_COMMENT' => 'Internal Comment', 'LBL_NOTE_EXISTING_ATTACHMENTS_WILL_BE_REPLACED' => 'Note : Existing attachments(images/files) will be replaced', - //common standard fields - 'Created By' => 'Created By', + //common standard fields + 'Created By' => 'Created By', 'LBL_SEND_PDF_FOR_SIGNING' => 'Send PDF for signing', 'LBL_CLICK_TO_EDIT' => 'Click to edit', 'LBL_SIGNATURE_BLOCK' => 'Signature', 'LBL_INCLUDE_SIGNATURE_INFO' => 'Signature set in My Preferences will be appended to the bottom of the email', 'LBL_INCLUDE_SIGNATURE' => 'Include Signature', - - // module builder created module first block label - 'LBL_BASIC_INFORMATION' => 'Basic Information', - 'LBL_CLICK_HERE'=>'click here', - + + // module builder created module first block label + 'LBL_BASIC_INFORMATION' => 'Basic Information', + 'LBL_CLICK_HERE'=>'click here', + //Recipient preferences labels 'LBL_SELCT_EMAIL_RECIPIENTS' => 'Select Email Recipients', 'LBL_REMEMBER_MY_PREF' => 'Remember my preference', @@ -931,102 +939,103 @@ $languageStrings = array( 'LBL_PLEASE_ADD_EMAIL_FIELDS' => 'Please add email fields and try again', 'LBL_RECIPIENT_SAVE_MESSAGE'=>'Save successful.These preferences will be treated as recipient email addresses when you send email from this module.', 'LBL_PREF_RESET_MESSAGE' => 'Your recipient email preferences has been reset!', - // Social Module Strings - //OnBoard screens - 'LBL_COMPANY_DETAILS' => 'Company Details', - 'COMPANY_LOGO_HELP_TEXT' => 'Please upload your lovely company logo. <br>Besides showing your company logo on your CRM,<br> - your company name and address details are used in <br>Email Campaigns (required to meet span regulations)<br> - and in Quotes.', - 'COMPANY_LOGO_HELP_TEXT_2' =>"You can edit company details later from <br> - 'CRM Settings > Templates > Company Details' page", - 'LBL_CHOOSE_PREFERENCES' => 'Choose your Preferences', - 'PREFERENCES_HELP_TEXT' => 'Base Currency - Choose your primary currency. If you use multiple<br> - currencies, all the values are converted to base currency and stored,<br> - using the conversion rate configured in CRM.', - 'PREFERENCES_HELP_TEXT_2' => 'Personal preferences can be configured by each user in your team.<br> - These include Timezone, Language, Date Format, Number Format.<br> - Number Format references are used for Currencies and other <br> - number fields in the CRM<br> - You can edit your preferences later from \'User Name > My Preferences \'', - 'LBL_CANNOT_BE_CHANGED_LATER' => 'Cannot be changed later', - 'IMPORT_CONTACTS_GOOGLE_HELP_TEXT' => 'We can bring contacts from Google and <br> you can also enable bi-direction sync to keep our<br> - Vtiger contacts and Google contacts(in selected group) updated.<br> - Click the button to authorize and get Contacts from Google.', - 'IMPORT_CONTACTS_CSV_HELP_TEXT' => 'You can import Contacts from CSV file.', - 'IMPORT_CONTACTS_CSV_HELP_TEXT2' => 'To Import Opportunities, Leads, Tickets, please look for Actions > Import button on any of the - list views.', - 'LBL_DOEST_FIRST_ROW_HEADER' => 'Does first row in your file contains column headers?', - 'LBL_SELECT_CSV_FILE' => 'Select CSV file', - 'LBL_START_IMPORTING' => 'Start Importing', - 'LBL_PRIMARY' => 'Primary', - 'LBL_GOOGLE_SYNC_INTIATED_MSG' => 'Your import is scheduled, Your contacts will be imported shortly.<br> Proceeding to Next step will not interrupt the import.', - 'LBL_IMPORT_SYNC_INTIATED_MSG' => 'Your import is in progress. You will receive an email when import is completed.<br> Proceeding to Next step will not interrupt the import.', - 'LBL_TELL_US_ABOUT_YOU' => 'Help us by telling us about your Company', - 'TELL_US_ABOUT_YOU_HELP_TEXT' => 'We continue to make improvements to the CRM, and <br> - knowing our users better will help us prioritize enhancements.', - 'TELL_US_ABOUT_YOU_HELP_TEXT_2' => 'The data you submitted here will not be revealed to anyone <Br> - outside Vtiger.', - 'LBL_INVALID_IMAGE' => 'Invalid Image', - 'LBL_IMPORT_CONTACTS' => 'Import Contacts', - 'LBL_FROM_GOOGLE' => 'From Google', - 'LBL_FROM_CSV' => 'From CSV File', - 'LBL_NEXT' => 'Next', - 'LBL_FINISH' => 'Finish', - 'LBL_GET_CONTACTS_FROM_GOOGLE' => 'Get Contacts From Google', - 'LBL_PHONE_NUMBER' => 'Phone Number', - 'LBL_NUMBER_OF_EMPLOYEES' => 'Number of Employees', - 'LBL_INDUSTRY' => 'Industry', - 'LBL_HELP_DESK_EMAIL_HELP_TEXT' => 'Ticket related notifications will be sent from this Email address', + 'LBL_COMPANY_DETAILS' => 'Company Details', + 'COMPANY_LOGO_HELP_TEXT' => 'Please upload your lovely company logo. <br>Besides showing your company logo on your CRM,<br> + your company name and address details are used in <br>Email Campaigns (required to meet span regulations)<br> + and in Quotes.', + 'COMPANY_LOGO_HELP_TEXT_2' =>"You can edit company details later from <br> + 'CRM Settings > Templates > Company Details' page", + 'LBL_CHOOSE_PREFERENCES' => 'Choose your Preferences', + 'PREFERENCES_HELP_TEXT' => 'Base Currency - Choose your primary currency. If you use multiple<br> + currencies, all the values are converted to base currency and stored,<br> + using the conversion rate configured in CRM.', + 'PREFERENCES_HELP_TEXT_2' => 'Personal preferences can be configured by each user in your team.<br> + These include Timezone, Language, Date Format, Number Format.<br> + Number Format references are used for Currencies and other <br> + number fields in the CRM<br> + You can edit your preferences later from \'User Name > My Preferences \'', + 'LBL_CANNOT_BE_CHANGED_LATER' => 'Cannot be changed later', + 'IMPORT_CONTACTS_GOOGLE_HELP_TEXT' => 'We can bring contacts from Google and <br> you can also enable bi-direction sync to keep our<br> + Vtiger contacts and Google contacts(in selected group) updated.<br> + Click the button to authorize and get Contacts from Google.', + 'IMPORT_CONTACTS_CSV_HELP_TEXT' => 'You can import Contacts from CSV file.', + 'IMPORT_CONTACTS_CSV_HELP_TEXT2' => 'To Import Opportunities, Leads, Tickets, please look for Actions > Import button on any of the + list views.', + 'LBL_DOEST_FIRST_ROW_HEADER' => 'Does first row in your file contains column headers?', + 'LBL_SELECT_CSV_FILE' => 'Select CSV file', + 'LBL_START_IMPORTING' => 'Start Importing', + 'LBL_PRIMARY' => 'Primary', + 'LBL_GOOGLE_SYNC_INTIATED_MSG' => 'Your import is scheduled, Your contacts will be imported shortly.<br> Proceeding to Next step will not interrupt the import.', + 'LBL_IMPORT_SYNC_INTIATED_MSG' => 'Your import is in progress. You will receive an email when import is completed.<br> Proceeding to Next step will not interrupt the import.', + 'LBL_TELL_US_ABOUT_YOU' => 'Help us by telling us about your Company', + 'TELL_US_ABOUT_YOU_HELP_TEXT' => 'We continue to make improvements to the CRM, and <br> + knowing our users better will help us prioritize enhancements.', + 'TELL_US_ABOUT_YOU_HELP_TEXT_2' => 'The data you submitted here will not be revealed to anyone <Br> + outside Vtiger.', + 'LBL_INVALID_IMAGE' => 'Invalid Image', + 'LBL_IMPORT_CONTACTS' => 'Import Contacts', + 'LBL_FROM_GOOGLE' => 'From Google', + 'LBL_FROM_CSV' => 'From CSV File', + 'LBL_NEXT' => 'Next', + 'LBL_FINISH' => 'Finish', + 'LBL_GET_CONTACTS_FROM_GOOGLE' => 'Get Contacts From Google', + 'LBL_PHONE_NUMBER' => 'Phone Number', + 'LBL_NUMBER_OF_EMPLOYEES' => 'Number of Employees', + 'LBL_INDUSTRY' => 'Industry', + 'LBL_HELP_DESK_EMAIL_HELP_TEXT' => 'Ticket related notifications will be sent from this Email address', 'LBL_SOCIAL_DETAILS' => 'Link to social networks to find new customers, and respond to queries', 'LBL_SOCIAL_AUTHORIZE_HELP'=>'Connect with your companys twitter account to post your messages and track engagement', 'LBL_SOCIAL_AUTHORIZE' => 'Connect with Twitter', 'LBL_SOCIAL_LINKED' => 'Your Vtiger is now linked to', 'LBL_ENTER_KEYWORDS_HELP'=>'Vtiger will scan twitter and find messages with these words', 'LBL_ENTER_KEYWORDS' => 'Enter Keywords', - - // Social Module Strings - 'LBL_TWEETS' => 'Tweets', - 'LBL_FAVOURITES' => 'Favourites', - 'LBL_FOLLOWING' => 'Following', - 'LBL_FOLLOWERS' => 'Followers', - 'LBL_VIEW_FULL_PROFILE' => 'View Full Profile', - 'LBL_LOCATION' => 'Location', - 'LBL_DESCRIPTION' => 'Description', - 'LBL_JOINED' => 'Joined', - 'LBL_SEARCH_PROFILES_IN_TWITTER' => 'Search Profiles In Twitter', - 'LBL_CHOOSE_ANOTHER_PROFILE' => 'Choose Another Profile', - 'LBL_ADD_TICKET' => 'Add Ticket', - 'LBL_ADD_OPPORTUNITY' => 'Add Opportunity', - 'LBL_RETWEET' => 'Retweet', - 'LBL_RETWEETS' => 'Retweets', - 'LBL_UNDO_RETWEET' => 'Undo Retweet', - 'LBL_FAVOURITE' => 'Favourite', - 'LBL_UNDO_FAVOURITE' => 'Undo Favourite', - 'LBL_TWITTER_HANDLER_MSG' => 'To see this contact\'s profile summary and history add their Twitter Username or search profiles using the link below.', - 'LBL_ADD_EVENT_OR_TODO' => 'Add Event/Task', - 'LBL_ADD_TICKET_CONTACT' => 'Add Ticket + Contact', + + // Social Module Strings + 'LBL_TWEETS' => 'Tweets', + 'LBL_FAVOURITES' => 'Favourites', + 'LBL_FOLLOWING' => 'Following', + 'LBL_FOLLOWERS' => 'Followers', + 'LBL_VIEW_FULL_PROFILE' => 'View Full Profile', + 'LBL_LOCATION' => 'Location', + 'LBL_DESCRIPTION' => 'Description', + 'LBL_JOINED' => 'Joined', + 'LBL_SEARCH_PROFILES_IN_TWITTER' => 'Search Profiles In Twitter', + 'LBL_CHOOSE_ANOTHER_PROFILE' => 'Choose Another Profile', + 'LBL_ADD_TICKET' => 'Add Ticket', + 'LBL_ADD_OPPORTUNITY' => 'Add Opportunity', + 'LBL_RETWEET' => 'Retweet', + 'LBL_RETWEETS' => 'Retweets', + 'LBL_UNDO_RETWEET' => 'Undo Retweet', + 'LBL_FAVOURITE' => 'Favourite', + 'LBL_UNDO_FAVOURITE' => 'Undo Favourite', + 'LBL_TWITTER_HANDLER_MSG' => 'To see this contact\'s profile summary and history add their Twitter Username or search profiles using the link below.', + 'LBL_ADD_EVENT_OR_TODO' => 'Add Event/Task', + 'LBL_ADD_TICKET_CONTACT' => 'Add Ticket + Contact', 'LBL_ADD_CASE_CONTACT' => 'Add Case + Contact', - 'LBL_ADD_OPPORTUNITY_CONTACT' => 'Add Opportunity + Contact', - 'LBL_TWITTER_HANDLER_DETAILS' => 'Twitter Username Details', - 'LBL_PRIMARY_TWITTER' => 'Twitter Username', - 'LBL_ADD_TWITTER_HANDLER' => 'Add Twitter Username', - 'LBL_VIEW_TICKET' => 'View Ticket', + 'LBL_ADD_OPPORTUNITY_CONTACT' => 'Add Opportunity + Contact', + 'LBL_TWITTER_HANDLER_DETAILS' => 'Twitter Username Details', + 'LBL_PRIMARY_TWITTER' => 'Twitter Username', + 'LBL_ADD_TWITTER_HANDLER' => 'Add Twitter Username', + 'LBL_VIEW_TICKET' => 'View Ticket', 'LBL_VIEW_CASE' => 'View Case', - 'LBL_VIEW_OPPORTUNITY' => 'View Opportunity', - 'LBL_CLICK_TO_SELECT_PROFILE' => 'Click to select profile', - 'LBL_INVALID_IMAGE' => 'Invalid Image', - 'LBL_NEXT' => 'Next', - 'LBL_FINISH' => 'Finish', - // Module field to store Source of Record - 'Source' => 'Source', - - 'LBL_DEFAULT_REPLY_TO' => 'Default Reply To for Emails', - 'outgoing_server_from_email' => 'Outgoing Server From Email', - 'hepldesk_support_email' => 'Helpdesk Support Email-Id', - 'user_primary_email' => 'User Primary Email', - 'LBL_DEFAULT_REPLY_TO_INFO' => 'This setting is applicable only for direct emails from CRM. It doesn\'t affect emails sent from workflows, email campaigns, etc.', - + 'LBL_VIEW_OPPORTUNITY' => 'View Opportunity', + 'LBL_CLICK_TO_SELECT_PROFILE' => 'Click to select profile', + 'LBL_INVALID_IMAGE' => 'Invalid Image', + 'LBL_NEXT' => 'Next', + 'LBL_FINISH' => 'Finish', + // Module field to store Source of Record + 'Source' => 'Source', + + 'LBL_DEFAULT_REPLY_TO' => 'Default Reply To for Emails', + 'outgoing_server_from_email' => 'Outgoing Server From Email', + 'hepldesk_support_email' => 'Helpdesk Support Email-Id', + 'user_primary_email' => 'User Primary Email', + 'LBL_DEFAULT_REPLY_TO_INFO' => 'This setting is applicable only for direct emails from CRM. It doesn\'t affect emails sent from workflows, email campaigns, etc.', + 'search_in_all_fields'=>'Search in All fields', + 'search_in_name_field'=>'Search in Name field', + 'LBL_LOOKUP_SEARCH_MODE_INFO'=>'Ex: In Contact creation form, when you enter text in the organization name box this setting will control what fields in Organization are to be searched', + 'VAT' => 'VAT', 'Sales' => 'Sales', 'Service' => 'Service', @@ -1035,239 +1044,357 @@ $languageStrings = array( 'Balance' => 'Balance', 'S&H Percent' => 'S&H Percent', 'Tax Region' => 'Tax Region', - - //Singular Modulenames - 'SINGLE_Potentials' => 'Opportunity', - 'SINGLE_HelpDesk' => 'Ticket', - 'SINGLE_Accounts' => 'Organization', - 'SINGLE_Contacts' => 'Contact', - 'SINGLE_Project' => 'Project', - 'LBL_ROLLUP_COMMENTS_INFO' => "If Roll up is set to 'On' comments on related records will be shown. - For example, if you are viewing comments on an Organization record, comments added to related Contacts, Opportunities, Tickets, ..etc would also be displayed.", - 'LBL_ROLLUP_COMMENTS' => "Rollup Comments", - + + //Singular Modulenames + 'SINGLE_Potentials' => 'Opportunity', + 'SINGLE_HelpDesk' => 'Ticket', + 'SINGLE_Accounts' => 'Organization', + 'SINGLE_Contacts' => 'Contact', + 'SINGLE_Project' => 'Project', + 'LBL_ROLLUP_COMMENTS_INFO' => "If Roll up is set to 'On' comments on related records will be shown. + For example, if you are viewing comments on an Organization record, comments added to related Contacts, Opportunities, Tickets, ..etc would also be displayed.", + 'LBL_ROLLUP_COMMENTS' => "Rollup Comments", + //others 'Engagement Score' => 'Engagement Score', 'group' => 'Group', 'individual' => 'Individual', - 'LBL_VIEW_FILE'=>'View file', - 'LBL_DOWNLOAD_FILE' => 'Download file', - 'LBL_PREVIEW_NOT_AVAILABLE' => 'Preview Not Available', - 'LBL_PREVIEW_SUPPORTED_FILES' => '<b><strong>Supported File Types : </strong></b><br><br><b>Pdf files</b><br><b>Text files - </b>txt,csv,ics<br><b>Open Document Files - </b>open document text(odt),open document spreadsheet(ods) and open document presentation(odp)<br><b>Multimedia files - </b>image, audio & video files<br>', - 'Mailing Address' => 'Mailing Address', - 'Other Address' => 'Other Address', - 'LBL_PREVIOUS' => 'Previous', - 'LBL_NEXT' => 'Next', - 'Workflows' => 'Workflows', - 'Primary Twitter' => 'Twitter Username', + 'LBL_VIEW_FILE'=>'View file', + 'LBL_DOWNLOAD_FILE' => 'Download file', + 'LBL_PREVIEW_NOT_AVAILABLE' => 'Preview Not Available', + 'LBL_PREVIEW_SUPPORTED_FILES' => '<b><strong>Supported File Types : </strong></b><br><br><b>Pdf files</b><br><b>Text files - </b>txt,csv,ics<br><b>Open Document Files - </b>open document text(odt),open document spreadsheet(ods) and open document presentation(odp)<br><b>Multimedia files - </b>image, audio & video files<br>', + 'Mailing Address' => 'Mailing Address', + 'Other Address' => 'Other Address', + 'LBL_PREVIOUS' => 'Previous', + 'LBL_NEXT' => 'Next', + 'Workflows' => 'Workflows', + 'Primary Twitter' => 'Twitter Username', /* Vtiger7 Language Strings */ - 'LBL_CLICK_HERE_TO_SELECT_ALL_RECORDS'=>'Select all records in this page', - 'LBL_CLICK_HERE_TO_MANAGE_LIST_COLUMNS'=>'Click here to manage List columns', - 'LBL_SHOW_MORE' =>'Show more', - 'LBL_DISPLAYING_RESULTS' => 'Displaying Results', + 'LBL_CLICK_HERE_TO_SELECT_ALL_RECORDS'=>'Select all records in this page', + 'LBL_CLICK_HERE_TO_MANAGE_LIST_COLUMNS'=>'Click here to manage List columns', + 'LBL_SHOW_MORE' =>'Show more', + 'LBL_DISPLAYING_RESULTS' => 'Displaying Results', 'LBL_ADD_STAR' => 'Add Star', - 'LBL_REMOVE_STAR' => 'Remove Star', - 'LBL_UPDATE_LIST' => 'Update List', + 'LBL_REMOVE_STAR' => 'Remove Star', + 'LBL_UPDATE_LIST' => 'Update List', 'LBL_SHARE_THIS_LIST' => 'Share this list', - 'LBL_ADD_USERS_ROLES' => 'Add users and roles', - 'LBL_LISTS' => 'Lists', - 'LBL_SEARCH_FOR_LIST' => 'Search for List', - 'LBL_MY_LIST' => 'My List', - 'LBL_SHARED_LIST' => 'Shared List', - 'LBL_MERGE_SELECTED_RECORDS' => 'Merge selected records', - 'LBL_MATCH_CRITERIA' => 'Duplicate Search Criteria', - 'LBL_MATCH_FIELDS' => 'Match Fields', - 'LBL_EDIT_CUSTOM'=>'Edit List', - 'LBL_SHOW_MAP'=>'Show Map', - 'LBL_ADD_TAB'=>'Add Tab', - 'LBL_TAB_NAME'=>'Tab Name', - 'LBL_SHARED_TAGS_ACCESS'=>'Shared tags are accessible by all users in Vtiger', - 'LBL_GOTO_TAGS'=>'Go to Settings > My preferences > My Tags to Edit or Delete your private tags', - 'LBL_UNLINK'=>'Unlink', - 'LBL_SWITCH_TO_OLD'=>'Switch to old version', - 'LBL_SLA_INFORMATION' => 'SLA Information', - - //configure columns - 'LBL_UPDATE_LIST' => 'Update List', - 'LBL_CONFIG_COLUMNS' => 'Configure Columns', - 'LBL_SELECTED_FIELDS' => 'Selected Fields', - 'LBL_AVAILABLE_FIELDS' => 'Available Fields', - 'LBL_SEARCH_FIELDS' => 'Search Fields', - - // Extensions - 'ExtensionStore' =>'Extensions Store', - 'LBL_EXTENSIONS' => 'Extensions', - 'LBL_SYNC_LOG' => 'Sync Log', - 'LBL_SYNC_SETTINGS' => 'Sync Settings', - 'LBL_SYNC_NOW' => 'Sync Now', - 'LBL_DATE' => 'Date', - 'LBL_TIME' => 'Time', - 'LBL_SKIPPED' => 'Skipped', - 'vt_create' => 'Records Created in Vtiger', - 'vt_update' => 'Records Updated in Vtiger', - 'vt_delete' => 'Records Deleted in Vtiger', - 'vt_skip' => 'Records skipped in Vtiger', - 'app_create' => 'Records Created in %s', - 'app_update' => 'Records Updated in %s', - 'app_delete' => 'Records Deleted in %s', - 'app_skip' => 'Records skipped in %s', - 'LBL_DOWNLOAD_AS_CSV' => 'Download As CSV', - 'LBL_SOURCE_MODULE' => 'Source Module', - 'LBL_RECORD_NAME' => 'Record Name', - 'LBL_REASON' => 'Reason', - 'LBL_SELECT_MODULES_TO_SYNC' => 'Select modules to sync', - 'LBL_DATA' => 'Data', - 'LBL_ENABLE_SYNC' => 'Enable Sync', - 'LBL_FIELD_MAPPING' => 'Field Mapping', - 'LBL_SYNC_DIRECTION' => 'Sync Direction', - 'LBL_SYNC_BOTH_WAYS' => 'Sync Both Ways', - 'LBL_SAVE_SETTINGS' => 'Save Settings', - 'LBL_CONFIGURE' => 'Configure', - 'LBL_VIEW' => 'View', - 'LBL_CHANGE_USER' => 'Change User', - - 'LBL_CREATE_LIST' => 'Create a New List', - 'sent' => 'Sent', - 'accepted' => 'Accepted', - 'SINGLE_Users' => 'User', - 'LBL_RECENT_COMMENTS' => 'Recent Comments', - 'LBL_ENGAGEMENT_HISTORY' => 'Engagement History', - 'LBL_NO_ENGAGEMENTS_FOUND' => 'No related Touchpoints', - 'LBL_MARKETING' => 'MARKETING', - 'LBL_SALES' => 'SALES', - 'LBL_PROJECT' => 'PROJECTS', - 'LBL_TAGS' => 'Tags', - 'LBL_SHARE_TAGS' => 'Public Tags', - 'LBL_SHARE_TAG' => 'Share Tag', - 'LBL_TAG_FOR' => 'Tag For %s', - 'LBL_CURRENT_TAGS' => 'Current Tags', - 'LBL_CREATE_NEW_TAG'=> 'Create New Tag', - 'LBL_ADD_TAG' => 'Add Tag', - 'LBL_REMOVE_TAG' => 'Remove Tag', - 'LBL_TAG_SEPERATOR_DESC' => 'Use comma to separate multiple tags', - 'LBL_ENTER_TAG_NAME'=> 'Enter tag name', - - 'LBL_SELECT_COLOR' => 'Select Color', - 'LBL_NO_TAG_EXISTS' => 'No Tag Exists', - 'LBL_ADD_NEW_TAG' => 'Add Tag', - 'LBL_SELECT_EXISTING_TAG' => 'Type here to select an existing tag', - 'LBL_CREATE_NEW_TAG' => 'Create new tag', - 'LBL_ADD_OR_SELECT_TAG' => 'Add/Select Tag', - 'LBL_SELECT_FROM_AVAIL_TAG' => 'Select from available tags', - 'LBL_MARKET_PLACE' => 'Market Place', - - 'LBL_SHARE_THIS_LIST' => 'Share the list', - 'LBL_ADD_USERS_ROLES' => 'Add Users, Roles...', - 'EmailTemplates' => 'Email Templates', - 'LBL_BILLING' => 'Billing', - 'LBL_ENABLED' => 'Enabled', - - //Title added for buttons - 'LBL_CREATE_FILTER' => 'Create Filter', - 'LBL_IS' => 'is', - 'LBL_CREATION' => 'creation', - 'LBL_UPLOAD' => 'Upload', - 'LBL_ATTACH_FILES' => 'Attach Files', - 'LBL_KEY_FIELDS' => "Key Fields", + 'LBL_ADD_USERS_ROLES' => 'Add users and roles', + 'LBL_LISTS' => 'Lists', + 'LBL_SEARCH_FOR_LIST' => 'Search for List', + 'LBL_MY_LIST' => 'My List', + 'LBL_SHARED_LIST' => 'Shared List', + 'LBL_MERGE_SELECTED_RECORDS' => 'Merge selected records', + 'LBL_MATCH_CRITERIA' => 'Duplicate Search Criteria', + 'LBL_MATCH_FIELDS' => 'Match Fields', + 'LBL_EDIT_CUSTOM'=>'Edit List', + 'LBL_SHOW_MAP'=>'Show Map', + 'LBL_ADD_TAB'=>'Add Tab', + 'LBL_TAB_NAME'=>'Dashboard Name', + 'LBL_SHARED_TAGS_ACCESS'=>'Shared tags are accessible by all users in Vtiger', + 'LBL_GOTO_TAGS'=>'Go to Settings > My preferences > My Tags to Edit or Delete your private tags', + 'LBL_UNLINK'=>'Unlink', + 'LBL_SWITCH_TO_OLD'=>'Switch to old version', + 'LBL_SLA_INFORMATION' => 'SLA Information', + + //configure columns + 'LBL_UPDATE_LIST' => 'Update List', + 'LBL_CONFIG_COLUMNS' => 'Configure Columns', + 'LBL_SELECTED_FIELDS' => 'Selected Fields', + 'LBL_AVAILABLE_FIELDS' => 'Available Fields', + 'LBL_SEARCH_FIELDS' => 'Search Fields', + + // Extensions + 'ExtensionStore' =>'Extension Store', + 'LBL_EXTENSIONS' => 'Extensions', + 'LBL_SYNC_LOG' => 'Sync Log', + 'LBL_SYNC_SETTINGS' => 'Sync Settings', + 'LBL_SYNC_NOW' => 'Sync Now', + 'LBL_DATE' => 'Date', + 'LBL_TIME' => 'Time', + 'LBL_SKIPPED' => 'Skipped', + 'vt_create' => 'Records Created in Vtiger', + 'vt_update' => 'Records Updated in Vtiger', + 'vt_delete' => 'Records Deleted in Vtiger', + 'vt_skip' => 'Records skipped in Vtiger', + 'app_create' => 'Records Created in %s', + 'app_update' => 'Records Updated in %s', + 'app_delete' => 'Records Deleted in %s', + 'app_skip' => 'Records skipped in %s', + 'LBL_DOWNLOAD_AS_CSV' => 'Download As CSV', + 'LBL_SOURCE_MODULE' => 'Source Module', + 'LBL_RECORD_NAME' => 'Record Name', + 'LBL_REASON' => 'Reason', + 'LBL_SELECT_MODULES_TO_SYNC' => 'Select modules to sync', + 'LBL_DATA' => 'Data', + 'LBL_ENABLE_SYNC' => 'Enable Sync', + 'LBL_FIELD_MAPPING' => 'Field Mapping', + 'LBL_SYNC_DIRECTION' => 'Sync Direction', + 'LBL_SYNC_BOTH_WAYS' => 'Sync Both Ways', + 'LBL_SAVE_SETTINGS' => 'Save Settings', + 'LBL_CONFIGURE' => 'Configure', + 'LBL_VIEW' => 'View', + 'LBL_CHANGE_USER' => 'Change User', + + 'LBL_CREATE_LIST' => 'Create a New List', + 'sent' => 'Sent', + 'accepted' => 'Accepted', + 'SINGLE_Users' => 'User', + 'LBL_RECENT_COMMENTS' => 'Recent Comments', + 'LBL_ENGAGEMENT_HISTORY' => 'Engagement History', + 'LBL_NO_ENGAGEMENTS_FOUND' => 'No related Touchpoints', + 'LBL_MARKETING' => 'MARKETING', + 'LBL_SALES' => 'SALES', + 'LBL_PROJECT' => 'PROJECTS', + 'LBL_TAGS' => 'Tags', + 'LBL_SHARE_TAGS' => 'Public Tags', + 'LBL_SHARE_TAG' => 'Shared Tag(s)', + 'private' => 'private', + 'Tags' => 'Tags', + 'public' => 'shared', + 'Private/Shared' => 'Private/Shared', + 'LBL_TAG_FOR' => 'Tags For %s', + 'LBL_CURRENT_TAGS' => 'Current Tags', + 'LBL_CREATE_NEW_TAG'=> 'Create New Tag', + 'LBL_ADD_TAG' => 'Add Tag', + 'LBL_REMOVE_TAG' => 'Remove Tag', + 'LBL_TAG_SEPERATOR_DESC' => 'Use comma to separate multiple tags', + 'LBL_ENTER_TAG_NAME'=> 'Enter tag name', + + 'LBL_SELECT_COLOR' => 'Select Color', + 'LBL_NO_TAG_EXISTS' => 'No Tag Exists', + 'LBL_ADD_NEW_TAG' => 'Add Tag', + 'LBL_SELECT_EXISTING_TAG' => 'Type here to select an existing tag', + 'LBL_CREATE_NEW_TAG' => 'Create new tag', + 'LBL_ADD_OR_SELECT_TAG' => 'Add/Select Tag', + 'LBL_SELECT_FROM_AVAIL_TAG' => 'Select from available tags', + 'LBL_MARKET_PLACE' => 'Market Place', + + 'LBL_SHARE_THIS_LIST' => 'Share the list', + 'LBL_ADD_USERS_ROLES' => 'Add Users, Roles...', + 'EmailTemplates' => 'Email Templates', + 'LBL_BILLING' => 'Billing', + 'LBL_ENABLED' => 'Enabled', + + //Title added for buttons + 'LBL_CREATE_FILTER' => 'Create Filter', + 'LBL_IS' => 'is', + 'LBL_CREATION' => 'creation', + 'LBL_UPLOAD' => 'Upload', + 'LBL_ATTACH_FILES' => 'Attach Files', + 'LBL_KEY_FIELDS' => "Key Fields", 'LBL_ADD_TODO' => 'Add Task', - - "LBL_VIEW_DETAILS" => "View Details", - - //Engagements History - "LBL_HAPPENED_ON" => "Happened On", - "LBL_HAPPENED" => 'Happened', - "LBL_TYPE" => "Type", - "LBL_STATUS" => "Status", - "LBL_CUSTOMER" => "Related To", - "LBL_SUMMARY" => "Summary", - "LBL_ENGAGEMENTS" => "Touchpoints", - - 'LBL_PLEASE_SELECT_ATLEAST_ONE_OPTION' => 'Please select at least one option', - 'LBL_STARRED' => ' Unfollow', + + "LBL_VIEW_DETAILS" => "View Details", + + //Engagements History + "LBL_HAPPENED_ON" => "Happened On", + "LBL_HAPPENED" => 'Happened', + "LBL_TYPE" => "Type", + "LBL_STATUS" => "Status", + "LBL_CUSTOMER" => "Related To", + "LBL_SUMMARY" => "Summary", + "LBL_ENGAGEMENTS" => "Touchpoints", + + 'LBL_PLEASE_SELECT_ATLEAST_ONE_OPTION' => 'Please select at least one option', + 'LBL_STARRED' => 'Click to unfollow', 'LBL_UNSTARRED' => 'Follow', - 'LBL_EDIT_EMAIL_PREFERENCE_TOOLTIP' => 'Edit these preferences from Settings dropdown in modules detail or list view', + 'LBL_EDIT_EMAIL_PREFERENCE_TOOLTIP' => 'Edit these preferences from Settings dropdown in modules detail or list view', 'LBL_SYSTEM' =>'System', - 'LBL_SHOW_MAP' => 'Show Map', - 'LBL_GOOGLE_MAP' => 'Google Map', - 'LBL_CREATION' => 'creation', + 'LBL_SHOW_MAP' => 'Show Map', + 'LBL_GOOGLE_MAP' => 'Google Map', + 'LBL_CREATION' => 'creation', 'LBL_ADD_TODO' => 'Add Task', - - 'LBL_KEY_METRICS' => 'Key Metrics', - - //Print template strings - 'LBL_TEMPLATE_NAME' => 'Template Name', - 'LBL_MODULE' => 'Module', - 'LBL_IS_DEFAULT' => 'Default Template', - 'LBL_SELECT_RECORD_FIELD' => 'Select Record Field', + + 'LBL_KEY_METRICS' => 'Key Metrics', + + //Print template strings + 'LBL_TEMPLATE_NAME' => 'Template Name', + 'LBL_MODULE' => 'Module', + 'LBL_IS_DEFAULT' => 'Default Template', + 'LBL_SELECT_RECORD_FIELD' => 'Select Record Field', 'LBL_PREVIEW' => 'Preview', 'LBL_UNLINKED' => 'Unlinked', - - 'LBL_FOLLOW' => 'Follow', - 'LBL_UNFOLLOW' => 'Unfollow', + + 'LBL_FOLLOW' => 'Follow', + 'LBL_UNFOLLOW' => 'Unfollow', 'Any' => 'Any', 'LBL_NA' => '-NA-', 'LBL_DISABLED' => 'Disabled', - - //help - 'LBL_HELP_ANSWERS' => 'Answers', - 'LBL_HELP_ARTICLES' => 'Articles', - 'LBL_HELP_TOUR' => 'Tour', - 'LBL_NO_HELP_ARTICLE_FOUND' => 'Sorry, no Article found', - 'LBL_HELP_SEARCH' => 'Search Help', - 'LBL_HELP_BROWSE_ALL' => 'Browse all', - - 'LBL_EXPORT_FILE_NAME' => 'Export Filename', - 'LBL_EXTENSION_NOT_ALLOWED_FOR_NONADMIN' => '%s Sync is allowed only for admin users', - 'SINGLE_Invoice' => 'Invoice', - 'SINGLE_SalesOrder' => 'Sales Order', - 'SINGLE_PurchaseOrder' => 'Purchase Order', - 'SINGLE_Quotes' => 'Quote', - 'LBL_POST_YOUR_COMMENT_HERE' => 'Post a comment', + + //help + 'LBL_HELP_ANSWERS' => 'Answers', + 'LBL_HELP_ARTICLES' => 'Articles', + 'LBL_HELP_TOUR' => 'Tour', + 'LBL_NO_HELP_ARTICLE_FOUND' => 'Sorry, no Article found', + 'LBL_HELP_SEARCH' => 'Search Help', + 'LBL_HELP_BROWSE_ALL' => 'Browse all', + + 'LBL_EXPORT_FILE_NAME' => 'Export Filename', + 'LBL_EXTENSION_NOT_ALLOWED_FOR_NONADMIN' => '%s Sync is allowed only for admin users', + 'SINGLE_Invoice' => 'Invoice', + 'SINGLE_SalesOrder' => 'Sales Order', + 'SINGLE_PurchaseOrder' => 'Purchase Order', + 'SINGLE_Quotes' => 'Quote', + 'LBL_POST_YOUR_COMMENT_HERE' => 'Post a comment and mention @user / @group / @All to notify', // Phone Calls - 'LBL_CLICK_TO_CALL' => 'Click-to-Call', - 'LBL_SHOW_TOTAL_NUMBER_OF_RECORDS' => 'Click to get total record counts', - + 'LBL_CLICK_TO_CALL' => 'Click-to-Call', + 'LBL_SHOW_TOTAL_NUMBER_OF_RECORDS' => 'Click for this list size', + 'LBL_GENERAL_FIELDS' => 'General Fields', - 'LBL_ROLL_UP' => 'Roll up', - - 'LBL_TOUCH_POINTS' => 'Touchpoints', - 'LBL_HISTORY' => 'Touchpoints', - 'LBL_ENGAGEMENT_HISTORY' => 'Touchpoint History', - 'LBL_SETTINGS' => 'Settings', - - //List View and thumbnail view button labels - 'LBL_LIST_VIEW'=>'List View', - 'LBL_THUMBNAIL_VIEW'=>'Thumbnail View', - 'LBL_CHART_VIEW'=>'Chart View', - 'LBL_EMAIL_SUPPORT' => 'Email Support', - 'LBL_NO_ENTITIES_FOUND' => 'No %s found', - - 'LBL_TRANSFER_ALL_CASES_TO' => 'Transfer All Cases To', - 'LBL_SLA_TO_BE_DELETED' => 'SLA To Be Deleted', - 'LBL_TO_USE_SWITCH_TO_NEW_LOOK' => 'To use <b>%s</b>, we recommend you to Switch to new look.', + 'LBL_ROLL_UP' => 'Roll up', + + 'LBL_TOUCH_POINTS' => 'Touchpoints', + 'LBL_HISTORY' => 'Touchpoints', + 'LBL_ENGAGEMENT_HISTORY' => 'Touchpoint History', + 'LBL_SETTINGS' => 'Settings', + + //List View and thumbnail view button labels + 'LBL_LIST_VIEW'=>'List View', + 'LBL_THUMBNAIL_VIEW'=>'Thumbnail View', + 'LBL_CHART_VIEW'=>'Chart View', + 'LBL_EMAIL_SUPPORT' => 'Email Support', + 'LBL_NO_ENTITIES_FOUND' => 'No %s found', + + 'LBL_TRANSFER_ALL_CASES_TO' => 'Transfer All Cases To', + 'LBL_SLA_TO_BE_DELETED' => 'SLA To Be Deleted', + 'LBL_TO_USE_SWITCH_TO_NEW_LOOK' => 'To use <b>%s</b>, we recommend you to Switch to new look.', + 'LBL_INTERNAL_COMMENT_INFO' => 'The comment will only be seen by CRM users, if the internal comment checkbox is enabled. To notify customers (through configurable workflows or customer portal) leave this checkbox disabled', + 'LBL_CHANGE' => 'Change', + 'LBL_REVOKE_ACCESS' => 'Revoke Access', + 'GOOGLE_REVOKE_ACCESS_MESSAGE' => 'Clicking on this will remove existing Google authentication for Contacts and Calendar. It will not delete any records which are already synchronized.', + 'OFFICE_REVOKE_ACCESS_MESSAGE' => 'Clicking on this will remove existing Office365 authentication for Contacts, Calendar and Emails. It will not delete any records which are already synchronized.', + 'LBL_EMAIL_DOMAIN_HELPTEXT' => 'Email Domain field will be used to match Cases and Contacts created from Emails. For example, if a new support email comes from john@apple.com, it would be linked to Organization that has apple.com in the Email domain field. Multiple domains should be separated by commas', + 'LBL_START_GUIDED_TOUR' => 'Start Guided Tour', + 'LBL_MENU' => 'Menu', + 'LBL_EMAIL_DOMAIN_HELPTEXT'=>'Email Domain field will be used to match Cases and Contacts created from Emails. ' + . 'For example, if a new support email comes from john@apple.com, it would be linked to Organization that has ' + . 'apple.com in the Email domain field. Multiple domains should be separated by commas', + + 'LBL_SHARED_LIST_NON_ADMIN_MESSAGE' => 'This is a Shared list. Please contact your CRM Administrator to configure columns for All list', + 'LBL_SHARED_LIST_OWNER_MESSAGE' => 'This is a shared list. Please contact %s to change the columns of this list', + + 'Mr.' => 'Mr.', + 'Ms.' => 'Ms.', + 'Mrs.' => 'Mrs.', + 'Dr.' => 'Dr.', + 'Prof.' => 'Prof.', + 'SINGLE_Cases'=>'Case', + 'LBL_TAX_MODE_INFO' =>'If Individual, Taxes will be picked from Product record. If Group, Taxes will be picked from Global settings.', + 'LBL_CURRENCY_INFO' =>'Values will be changed to the selected currency based on the configured conversion rate.', + 'LBL_TAX_REGION_INFO' =>'For Variable taxes, tax percentage will be based on selected Tax Region.', + 'LBL_TAX_CONFIGURE' =>'Configure tax region', + 'LBL_SEND_MSG_TO_SUPPORT' => 'Send email to support', + 'LBL_CHAT_WITH_SUPPORT' => 'Live chat with CRM expert', + + 'LBL_ROLES' => 'Roles', + 'LBL_ROLEANDSUBORDINATE' => 'Role and Subordinates', + 'LBL_YOUR_LEARNING_SCORE' => 'Your CRM learning score', + 'LBL_SWITCH_TO_VTIGER7_NOW' => 'Switch to Vtiger7 by Feb 15th', + 'LBL_VTIGER6_RETIREMENT_NOTICE' => 'This version will be retired on Feb 15th 2016', + 'ModTracker' => 'Updates', + 'LBL_MAIL_SENT_SUCCESSFULLY' => 'Mail Sent Successfully', + 'LBL_FAILED_TO_SEND' => 'Failed to Send', + + 'LBL_ESSENTIALS' => 'Essentials', + 'LBL_ALL_SETTINGS' => 'All Settings', + 'On' => 'On', + 'LBL_OPEN_IN_NEW_TAB' => 'Open in new tab', + 'LBL_DELETE_FOREVER'=>'Delete forever', + 'LBL_PLEASE_CLICK_ON_EDIT_TO_ADD_NOTE' =>'Please click on edit to add notes here..', + 'LBL_PLEASE_ENTER_YOUR_NOTE' => 'Please enter your notes here..', + 'LBL_PORTAL' => 'Portal', + 'LBL_SESSION' =>'Session', + 'LBL_SESSIONS' => 'Sessions', + 'week days later' => 'week days later', + 'more than week days later' => 'more than week days later', + 'less than week days later' => 'less than week days later', + 'week days ago' => 'week days ago', + 'more than week days ago' => 'more than week days ago', + 'less than week days ago' => 'less than week days ago', + + 'LBL_DUPLICATES' => 'Duplicates', + 'LBL_DUPLICATES_DETECTED' => 'Duplicate(s) detected!', + 'LBL_DUPLICATES_FOUND_MESSAGE' => 'This %s cannot be saved since duplicate %s exists in Vtiger with matching values for %s.', + 'LBL_VTIGER_NOTIFICATION' => 'Message from : Vtiger System Notifications', + 'LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS' => 'The following %s could not be saved from "%s" workflow, as another %s exists with the same values.', + 'LBL_DUPLICATION_FAILURE_FROM_WEBFORMS' => 'The following %s could not be saved from "%s" webform, as another %s exists with the same values.', + 'LBL_DUPLICATION_FAILURE_FOR_ADMIN' => 'You can %s to modify duplicate prevention rules.', + 'LBL_DUPLICATION_FAILURE_FOR_NON_ADMIN' => 'Contact your administrator for revising the duplicate rules', + 'LBL_DUPLICATE_RECORD_LISTS' =>'Duplicate %s :', + 'LBL_COLUMNS_ADDED'=>'of %s columns added', + 'LBL_SHOW_ALL'=>'Show all', + 'LBL_LanguageEditor_WEBTITLE' => 'Labels Editor', + 'LBL_TAX_CALCULATIONS_WEBTITLE' => 'Tax Management', + 'LBL_Tags_WEBTITLE' => 'My Tags', + 'LBL_HIDE' => 'Hide', + 'LBL_PRINT' => 'Print', + 'LBL_FORWARD' => 'Forward', + 'LBL_NO_DEDUCTED_TAX'=>'No deducted taxes', + 'LBL_CLICK_TO_CONFIGURE'=>'Click here to configure', + 'LBL_KANBAN_VIEW_INFO' => 'Kanban view shows only the opportunities that match conditions of this list', + 'LBL_CUSTOM_FIELDS_MAX_LIMIT' => 'You can add only maximum of %s custom fields', + 'LBL_EXCEEDED_MODULE_RECORD_LIMIT' => '%s records limit (%s) exceeded', + 'LBL_EXCEEDED_MODULE_RECORD_LIMIT_TEXT' =>'We found that you have more than %s records in %s. <br> Exceed maximum limit of this edition. <br>Please remove the excess records and try again', + 'LBL_TEMPLATE_INFO_PART1'=>'To see all templates or templates of other modules, enter the module name or "All" in the Module Name search box.', + 'LBL_TEMPLATE_INFO_PART2'=>'If recipients in TO field are not of the same module as the template, tracking will not be enabled for those recipients, and merge fields will not be merged.', + 'LBL_HIDDEN_BECAUSE_OF_DEPENDENCY' => 'Field is hidden because of dependency rule', + 'MAILCHIMP_REVOKE_ACCESS_MESSAGE' => 'Clicking on this will remove existing MailChimp authentication. It will not delete any records which are already synchronized.', + // Added for Event Forms + 'LBL_VIEW_ANSWERS' => 'View answers', + 'LBL_ANSWERS' => 'Answers', + + //Default sort order translations + 'LBL_DEFAULT_SORT_ORDER' => 'Default sort column and sort order', + 'LBL_SELECT_COLUMN' => 'Select Column', + 'LBL_SELECT_SORT_ORDER' => 'Select Sort Order', + 'LBL_ASCENDING' => 'Ascending', + 'LBL_DESCENDING' => 'Descending', + 'LBL_DEFAULT_SORT_MESSAGE' => 'List is always sorted on this column by default for every new user session.', + 'LBL_QUEUED' => 'Queued', + // End + //Added for Inbox + 'LBL_EMAILS'=>'Emails', + 'LBL_CONVERSATIONS'=>'Conversations', + 'LBL_FROM_DISABLED_MESSAGE'=>'The mail server selected in Outgoing server settings page does not allow From address to be changed.', + // End + 'LBL_MODULE_MANDATORY' => 'Module is mandatory', + 'Online' => 'Online', + 'Busy' => 'Busy', + 'LBL_BETA'=>'BETA', + 'JS_SHARED_WITH'=>'Shared with', + 'LBL_REPLY_TO' =>'Reply to', + 'LBL_MODULE_ASSIGNMENT_RULES' => '%s Assignment Rules', + + 'LBL_RECENT_UPDATES' => 'Recent Updates', + 'LBL_VIEW_UPDATES_IN_DETAIL' => 'Read More ...', + 'LBL_DEFAULT_DASHBOARD_TOOLTIP'=>'Make this dashboard as default by reordering it as the first tab!', ); $jsLanguageStrings = array( 'JS_EMAIL_SERVER_CONFIGURATION' => 'Please configure your outgoing server settings from the settings page', 'JS_SMS_SERVER_CONFIGURATION' => 'Please configure your SMS notifier from the SMS notifier settings page', 'JS_PLEASE_SELECT_ONE_RECORD' => 'Please select at least one record', - + //dropdown categary + 'JS_USERS' => 'Users', + 'JS_GROUPS' => 'Groups', + 'JS_ALL' => 'All', //Validation Error Message - 'JS_PLEASE_ENTER_VALID_VALUE' => 'Please enter a valid value', - 'JS_PLEASE_ENTER_VALID_TAG_NAME' => 'Please enter valid tag name', + 'JS_PLEASE_ENTER_VALID_VALUE' => 'Please enter a valid value', + 'JS_PLEASE_ENTER_VALID_TAG_NAME' => 'Please enter valid tag name', 'JS_TAG_SAVED_SUCCESSFULLY' => 'Tag Saved Successfully', 'JS_PLEASE_ENTER_VALID_EMAIL_ADDRESS' => 'Please enter a valid email address', 'JS_CONTAINS_ILLEGAL_CHARACTERS' => 'Contains illegal characters', 'JS_PHONE_NUMBER_LENGTH_EXCEEDED' => 'Phone number length exceeded limit', 'JS_ACCEPT_POSITIVE_NUMBER' => 'Accepts only positive numbers', + 'JS_ACCEPT_WHOLE_NUMBERS' => 'Accepts only whole numbers', 'JS_VALUE_SHOULD_BE_GREATER_THAN_ZERO' => 'Value should be greater than zero', 'JS_NUMBER_SHOULD_BE_LESS_THAN_32' => 'Number should be less than 32', 'JS_PLEASE_ENTER_VALID_DATE' => 'Please Enter Valid Date', 'JS_PLEASE_ENTER_VALID_TIME' => 'Please Enter Valid Time', 'JS_INVALID_PAGE_NUMBER' => 'Invalid Page Number', - 'JS_SUBJECT_VALUE_CANT_BE_EMPTY' => 'Subject value cannot be empty', - 'JS_PERCENTAGE_SHOULD_BE_LESS_THAN_100' => 'Percentage should be less than 100', + 'JS_SUBJECT_VALUE_CANT_BE_EMPTY' => 'Subject value cannot be empty', + 'JS_PERCENTAGE_SHOULD_BE_LESS_THAN_100' => 'Percentage should be less than 100', 'INVALID_NUMBER_OF' => 'Invalid number of', @@ -1278,13 +1405,17 @@ $jsLanguageStrings = array( 'OVERWRITE_EXISTING_MSG2' => 'address details?', 'SINGLE_Accounts' => 'Organization', 'SINGLE_Contacts' => 'Contact', + 'SINGLE_Project' => 'Project', + 'SINGLE_ProjectMilestone' => 'Project Milestone', 'LBL_DELETE_CONFIRMATION' => 'Are you sure you want to delete?', // This is added as duplicate as we need to show different message for different modules. Ex:Accounts has different message - 'LBL_DELETE_USER_CONFIRMATION' => 'When a User is deleted, the user will be marked as "Inactive" and no new records can be assigned to the User, and the user will not be able to login. Billing will stop for this user.If you need to reactivate a deleted user, you will need to send email to support@vtiger.com.Are you sure you want to delete?', + 'LBL_UNLINK_CONFIRMATION' => 'Are you sure you want to unlink?', + 'LBL_DELETE_USER_CONFIRMATION' => 'When user is suspended, user will be marked as Inactive and no new records can be assigned to the user, and the user will not be able to login. Billing will stop for the user. Any records assigned to the suspended user will remain as they are. These records can be transferred at a later time.', + 'LBL_DELETE_CONFIRMATION_NOTE' => 'Note : Deleted records will be kept in recycle bin and cleared after %s days', 'LBL_MASS_DELETE_CONFIRMATION' => 'Are you sure you want to delete the selected Records?', 'JS_LBL_SAVE' => 'Save', 'JS_LBL_CANCEL' => 'Cancel', - 'JS_DUPLICATE_CREATION_CONFIRMATION' => 'Organization Name already Exists.Do you want to create a duplicate record?', + 'JS_DUPLICTAE_CREATION_CONFIRMATION' => 'Organization Name already Exists.Do you want to create a duplicate record?', 'SHOULD_BE_LESS_THAN_TODAY' => 'Must occur before today', 'JS_PLEASE_SELECT_ATLEAST_ONE_OPTION' => 'Please select at least one option', @@ -1295,17 +1426,19 @@ $jsLanguageStrings = array( 'JS_PLEASE_ENTER_DECIMAL_VALUE' => 'Please enter decimal value', 'JS_PLEASE_ENTER_POSITIVE_DECIMAL_VALUE' => 'Please enter positive decimal value', + 'JS_START_TIME_SHOULD_BE_GREATER_THAN_CURRENT_TIME' => 'Start Time should be greater than Current Time', 'JS_SHOULD_BE_LESS_THAN_CURRENT_DATE' => 'should be less than Current Date', 'JS_SHOULD_BE_GREATER_THAN_CURRENT_DATE' => 'should be greater than Current Date', 'JS_SHOULD_BE_GREATER_THAN_OR_EQUAL_TO' => 'should be greater than or equal to', - 'JS_SHOULD_BE_LESS_THAN_OR_EQUAL_TO' => 'should be less than or equal to', - 'JS_SHOULD_BE_GREATER_THAN_OR_EQUAL_TO' => 'should be greater than or equal to', - 'JS_CURRENT_DATE' => 'Current Date', + 'JS_SHOULD_BE_LESS_THAN_OR_EQUAL_TO' => 'should be less than or equal to', + 'JS_SHOULD_BE_GREATER_THAN_OR_EQUAL_TO' => 'should be greater than or equal to', + 'JS_CURRENT_DATE' => 'Current Date', 'JS_PERCENTAGE_VALUE_SHOULD_BE_LESS_THAN_100' => 'Percentage value should be less than 100', 'JS_ACCEPT_ONLY_NUMBER' => 'Accepts only numbers', 'JS_THIS_FILE_HAS_ALREADY_BEEN_SELECTED' => 'This File has already been selected', 'JS_MAX_FILE_UPLOAD_EXCEEDS' => 'max file Upload exceeds', 'JS_THIS_DOCUMENT_HAS_ALREADY_BEEN_SELECTED' => 'This Document has already been attached', + 'JS_LIST_EXIST' => 'List already exists', //Roles @@ -1313,7 +1446,7 @@ $jsLanguageStrings = array( //Import Translations 'JS_IMPORT_FILE_CAN_NOT_BE_EMPTY' => 'Import File cannot be Empty', - 'JS_PLEASE_SELECT_ONE_FIELD_FOR_MERGE' => 'Select at least one field for merge criteria', + 'JS_PLEASE_SELECT_ONE_FIELD_FOR_MERGE' => 'Select at least one matching field', 'JS_MAP_NAME_CAN_NOT_BE_EMPTY' => 'Map Name cannot be empty', 'JS_MAP_NAME_ALREADY_EXISTS' => 'Map Name already exists', 'JS_SELECT_FILE_EXTENSION' => 'Please select a file with the following extension:', @@ -1322,8 +1455,10 @@ $jsLanguageStrings = array( 'JS_PLEASE_SPLIT_FILE_AND_IMPORT_AGAIN' => 'Please split the file into smaller files and import again.', 'JS_FIELD_MAPPED_MORE_THAN_ONCE' => 'Field mapped more than once', 'JS_MAP_MANDATORY_FIELDS' => 'Please map mandatory fields', + 'JS_MAP_MERGE_CRITERIA_FIELDS' => 'Please map matching fields', 'JS_PLEASE_ENTER_SOME_VALUE' => 'Please enter some value to search', - + 'JS_VCF_FILE_IMPORT_WARNING' => 'You have selected a VCF file. Only Contacts can be imported from VCF file. To import this file, please initiate import from Contact module', + 'JS_ICS_FILE_IMPORT_WARNING' => 'You have selected a ICS file. Only Calendar can be imported from ICS file. To import this file, please initiate import from Calendar module', //Select2 elements validation message 'JS_YOU_CAN_SELECT_ONLY'=> 'You can select only', 'JS_ITEMS' => 'items', @@ -1350,7 +1485,7 @@ $jsLanguageStrings = array( 'LBL_NO' => 'No', 'AM' => 'AM', 'PM' => 'PM', - 'JS_ERROR' => 'Error', + 'JS_ERROR' => 'Error', 'JS_INFORMATION' => 'Information', 'JS_DO_NOT_HAVE_AN_EMAIL_ID' => 'does not have an email address', 'NONE_OF_THE_FIELD_VALUES_ARE_CHANGED_IN_MASS_EDIT' => 'None of the field values are changed in Mass Edit', @@ -1405,9 +1540,9 @@ $jsLanguageStrings = array( 'JS_SELECT_ATLEAST_TWO_RECORD_FOR_MERGING' => 'Select atleast two records for merging', 'JS_ALLOWED_TO_SELECT_MAX_OF_THREE_RECORDS' => 'You are allowed to select a maximum of three records', //Notification message for dashboard widget delete - 'JS_ARE_YOU_SURE_TO_DELETE_WIDGET' => 'Are you sure to delete widget', - 'JS_ARE_YOU_SURE_TO_DELETE_DASHBOARDTAB' => 'Are you sure to delete tab', - 'JS_TABS_LIMIT_EXCEEDED' => 'Sorry! Can\'t add more than 10 tabs', + 'JS_ARE_YOU_SURE_TO_DELETE_WIDGET' => 'Are you sure you want to delete widget - %s?', + 'JS_ARE_YOU_SURE_TO_DELETE_DASHBOARDTAB' => 'Are you sure you want to delete this dashboard tab - %s?', + 'JS_TABS_LIMIT_EXCEEDED' => 'Sorry! Can\'t add more than 10 tabs', 'JS_DUPLICATE_ENTRIES_FOUND_FOR_THE_VALUE' => 'Duplicate entries found for the value', 'JS_SELECT_RECORDS_TO_MERGE_FROM_SAME_GROUP' => 'You have to select the records in the same groups for merging', 'JS_SELECT_ATLEAST_TWO_RECORD_FOR_MERGING' => 'Select atleast two records for merging', @@ -1428,18 +1563,17 @@ $jsLanguageStrings = array( 'JS_RECORDS TRANSFERRED SUCCESSFULLY' => 'Records ownership has been tranferred successfully', - //TextSearch Language String - 'LBL_SEARCHING' => 'Searching in ', + //TextSearch Language String + 'LBL_SEARCHING' => 'Searching in ', 'JS_RECORDS_TRANSFERRED_SUCCESSFULLY' => 'Records ownership transferred successfully.', 'JS_USER_DELETED_SUCCESSFULLY' => 'User deleted successfully.', - //For Print Templates Module - 'JS_MAX_RECORDS_LIMIT' => 'Maximum Records for Print is :', + 'JS_MAX_RECORDS_LIMIT' => 'Maximum Records for Print is :', 'JS_USER_EXISTS' => 'User Already Exists', 'JS_REENTER_PASSWORDS' => 'Renter Passwords', 'LBL_SIGN_IN_AS_USER'=>'Logging in as another user will terminate the current session. Are you sure want to continue?', 'JS_REENTER_PASSWORDS' => 'Renter Passwords', - 'SINGLE_Vendors' => 'Vendor', + 'SINGLE_Vendors' => 'Vendor', //Feedback on removing old version 'JS_PLEASE_GIVE_YOUR_FEEDBACK' => 'Please Fill your Feedback', @@ -1448,66 +1582,69 @@ $jsLanguageStrings = array( 'JS_PBX_OUTGOING_SUCCESS'=>'Pick up the extension receiver to dial the number', 'JS_PBX_OUTGOING_FAILURE'=>'Call Failed', 'JS_PBX_FILL_ALL_FIELDS'=>'Please fill all the fields', - 'JS_PBX_CAMPAIGN_NAME' => 'Campaign Name', - 'JS_PBX_CAMPAIGN_NUMBER' => 'Campaign Number', - 'JS_MIN_SEARCH_KEY_LENGTH' => 'Search Key should have aleast 3 characters', - 'JS_NO_MATCH' => 'No Matching Records Found', - 'JS_PBX_OUTGOING_CALL' => 'Outgoing Call', - 'JS_PBX_CALL_TO' => 'Call To', - 'JS_REQUIRED' => 'Required', - 'JS_PHONE_NUMBER' => 'Phone Number', - 'JS_NO_CREATE_PERMISSION' => 'Call need to be answered before creating record', - 'HelpDesk' => 'Tickets', - 'Potentials' => 'Opportunities', + 'JS_PBX_CAMPAIGN_NAME' => 'Campaign Name', + 'JS_PBX_CAMPAIGN_NUMBER' => 'Campaign Number', + 'JS_MIN_SEARCH_KEY_LENGTH' => 'Search Key should have aleast 3 characters', + 'JS_NO_MATCH' => 'No Matching Records Found', + 'JS_PBX_OUTGOING_CALL' => 'Outgoing Call', + 'JS_PBX_CALL_TO' => 'Call To', + 'JS_REQUIRED' => 'Required', + 'JS_PHONE_NUMBER' => 'Phone Number', + 'JS_NO_CREATE_PERMISSION' => 'Call need to be answered before creating record', + 'HelpDesk' => 'Tickets', + 'Potentials' => 'Opportunities', + 'JS_CALL_NOT_ANSWERED_UPDATE_PERMISSION' => "Call need to be answered before linking record", + 'JS_CALL_NOT_ANSWERED' => "Call need to be answered before performing the action", // ends - 'JS_NO_EDIT_PERMISSION' => 'You don\'t have the permission to edit this event', - - //Google Synchronization - 'SYNC_REMOVED_SUCCESSFULLY' => 'Google synchronization removed successfully.', - 'REMOVE_SYNCHRONIZATION_MESSAGE' => 'Clicking on this will remove existing Gmail authentication. It will not delete any records which are already synchronized.', - 'REMOVE_SYNCHRONIZATION' => 'Remove Synchronization', - 'FIELD_MAPPING' => 'Field Mapping', - 'LBL_SYNC_BUTTON' => 'Synchronize Now', - 'LBL_SYNCRONIZING' => 'Synchronizing....', - 'LBL_NOT_SYNCRONIZED' => 'You have not synchronized yet', - 'LBL_FIELD_MAPPING' => 'Field Mapping', - - 'LBL_RESTORE_CONFIRMATION' => 'Records previously assigned to this user will not be restored. Are you sure you want to restore this user?', - 'LBL_DELETE_USER_PERMANENT_CONFIRMATION' => 'Once deleted this user cannot be restored back. Are you sure you want to delete this user permanently?', - - 'LBL_LANGUAGE_LABEL_VALIDATION' => 'Label value cannot be empty. You must enter some value.', - 'JS_CHANGES_WILL_BE_LOST' => 'Your Changes Will Be Lost!', - 'JS_RECORD_DELETED' => 'Record deleted', - 'JS_NO_DELETE_PERMISSION' => 'No delete permission', - 'JS_CONFIRM_MARK_AS_HELD' => 'Are you sure you want to mark Event/Task as Held?', - 'JS_TODO_MARKED_AS_COMPLETED' => 'Task marked as Completed', - 'JS_EVENT_MARKED_AS_HELD' => 'Event marked as Held', - 'JS_FUTURE_EVENT_CANNOT_BE_MARKED_AS_HELD' => 'Future event cannot be marked as Held', - 'JS_PERMISSION_DENIED' => 'Permission denied', - 'LBL_SMS_MAX_CHARACTERS_ALLOWED' => 'Maximum 160 characters are allowed for text message', - 'JS_VIEWNAME_ALERT' => 'Maximum 40 characters are allowed for list name', - 'JS_EXCEEDS_MAX_UPLOAD_SIZE' => 'Exceeded maximum upload size', - 'JS_FUTURE_EVENT_CANNOT_BE_HELD' => 'Cannot Be Held For Future', - 'LBL_WARNING' => 'Warning', - 'DELETE_USER_PERMANENT_WARNING' => 'Deleting a user permanently will transfer all records including comments and history to new user.', - 'JS_CLOSE' => 'Close', - 'JS_DECIMAL_SEPERATOR_AND_GROUPING_SEPERATOR_CANT_BE_SAME' => 'Decimal separator and Grouping separator cant be same', + 'JS_NO_EDIT_PERMISSION' => 'You don\'t have the permission to edit this event', + + //Google Synchronization + 'SYNC_REMOVED_SUCCESSFULLY' => 'Google synchronization removed successfully.', + 'REMOVE_SYNCHRONIZATION_MESSAGE' => 'Clicking on this will remove existing Gmail authentication. It will not delete any records which are already synchronized.', + 'REMOVE_SYNCHRONIZATION' => 'Remove Synchronization', + 'FIELD_MAPPING' => 'Field Mapping', + 'LBL_SYNC_BUTTON' => 'Synchronize Now', + 'LBL_SYNCRONIZING' => 'Synchronizing....', + 'LBL_NOT_SYNCRONIZED' => 'You have not synchronized yet', + 'LBL_FIELD_MAPPING' => 'Field Mapping', + + 'LBL_RESTORE_CONFIRMATION' => 'Are you sure you want to restore this user?', + 'LBL_DELETE_USER_PERMANENT_CONFIRMATION' => 'Once deleted this user cannot be restored back. Are you sure you want to delete this user permanently?', + + 'LBL_LANGUAGE_LABEL_VALIDATION' => 'Label value cannot be empty. You must enter some value.', + 'JS_CHANGES_WILL_BE_LOST' => 'Your changes will be lost!', + 'JS_RECORD_DELETED' => 'Record deleted', + 'JS_NO_DELETE_PERMISSION' => 'No delete permission', + 'JS_CONFIRM_MARK_AS_HELD' => 'Are you sure you want to mark Event as Held?', + 'JS_CONFIRM_MARK_AS_COMPLETED' => 'Are you sure you want to mark Task as Completed?', + 'JS_TODO_MARKED_AS_COMPLETED' => 'Task marked as Completed', + 'JS_EVENT_MARKED_AS_HELD' => 'Event marked as Held', + 'JS_FUTURE_EVENT_CANNOT_BE_MARKED_AS_HELD' => 'Future event cannot be marked as Held', + 'JS_PERMISSION_DENIED' => 'Permission denied', + 'LBL_SMS_MAX_CHARACTERS_ALLOWED' => 'Maximum 160 characters are allowed for text message', + 'JS_VIEWNAME_ALERT' => 'Maximum 40 characters are allowed for list name', + 'JS_EXCEEDS_MAX_UPLOAD_SIZE' => 'Exceeded maximum upload size', + 'JS_FUTURE_EVENT_CANNOT_BE_HELD' => 'Cannot Be Held For Future', + 'LBL_WARNING' => 'Warning', + 'DELETE_USER_PERMANENT_WARNING' => 'Deleting a user permanently will transfer all records including comments and history to new user.', + 'JS_CLOSE' => 'Close', + 'JS_DECIMAL_SEPERATOR_AND_GROUPING_SEPERATOR_CANT_BE_SAME' => 'Decimal separator and Grouping separator cant be same', 'JS_FUTURE_EVENT_CANNOT_BE_HELD' => 'Cannot Be Held For Future', - 'JS_CLOSE' => 'Close', + 'JS_CLOSE' => 'Close', - // For Line Iteam Currency Symbol select while Import - 'JS_CURRENCY_TOOLTIP_CONTENT_TITLE' => 'Line Items Currency', - 'JS_CURRENCY_TOOLTIP_CONTENT_MESSAGE' => 'For importing Currency values in Line items, Vtiger will use this setting to identify the currency. Any currency values outside the line items tables, are assumed to be in User\'s preferred currency (selected in \'My Preferences\')', + // For Line Iteam Currency Symbol select while Import + 'JS_CURRENCY_TOOLTIP_CONTENT_TITLE' => 'Line Items Currency', + 'JS_CURRENCY_TOOLTIP_CONTENT_MESSAGE' => 'For importing Currency values in Line items, Vtiger will use this setting to identify the currency. Any currency values outside the line items tables, are assumed to be in User\'s preferred currency (selected in \'My Preferences\')', 'LBL_CANT_SELECT_CONTACT_FROM_LEADS' => 'Cannot select related Contacts for Leads', - 'JS_TRY_LATER' => 'Please try later!', - 'JS_FILE_NAME' => 'File Name', - 'JS_EXTERNAL_FILE_URL' => 'File Url', - 'JS_PLEASE_SELECT_A_FILE' => 'Please select a file', - // SMSNotifier Phone Format Warning - 'JS_PHONEFORMAT_ERROR' => 'Please check the phone number is in internatonal E.164 format with \'+\' prefix and the country code Ex +1 415 599 2671', - - // Leads and Potentials Field Mapping - 'JS_NONE' => 'None', + 'JS_TRY_LATER' => 'Please try later!', + 'JS_FILE_NAME' => 'File Name', + 'JS_EXTERNAL_FILE_URL' => 'File Url', + 'JS_PLEASE_SELECT_A_FILE' => 'Please select a file', + // SMSNotifier Phone Format Warning + 'JS_PHONEFORMAT_ERROR' => 'Please check the phone number is in internatonal E.164 format with \'+\' prefix and the country code Ex +1 415 599 2671', + + // Leads and Potentials Field Mapping + 'JS_NONE' => 'None', 'JS_IS_ALREADY_BEEN_MAPPED' => 'is already been mapped', 'JS_CANT_MAP' => 'Cant map', 'JS_WITH' => 'with', @@ -1531,172 +1668,252 @@ $jsLanguageStrings = array( 'JS_skype' => 'Skype', 'JS_None' => 'None', 'JS_integer' => 'Integer', - 'JS_double' => 'Decimal', - 'JS_reference' => 'reference', + 'JS_double' => 'Decimal', + 'JS_reference' => 'reference', 'JS_image' => 'Image', - // AutoFill Overwriting message - 'JS_OVERWRITE_AUTOFILL_MSG1' => 'Would you like to overwrite existing', - 'JS_OVERWRITE_AUTOFILL_MSG2' => 'with selected', - - //Demo Data Module Translatios - 'JS_ADD_DEMO_DATA_CONFIRMATION'=> 'Are you sure you want to add demo records to all modules?', - 'JS_ADD_DEMO_DATA_INFO'=> 'Demo records can be deleted by clicking the "Clear Demo Data" button.', - 'JS_CLEAR_DEMO_DATA_CONFIRMATION'=> 'Are you sure you want to clear demo data in all modules?', - 'JS_CLEAR_DEMO_DATA_INFO'=> 'Demo records can be added by clicking the "Add Demo Data" button.', - 'JS_DEMO_DATA_GETTING_POPULATED'=> 'Demo Data is being added, please wait...', - 'JS_DEMO_DATA_GETTING_CLEARED'=> 'Demo data is being cleared, please wait...', - 'JS_DEMO_DATA_ADDED' => 'Demo data added to all modules.', - 'JS_DEMO_DATA_CLEARED' => 'Demo data cleared from all modules.', - 'JS_HOME_DASH_BOARD_CLEAR_INFO'=>'Note: You can re-enable demo data from', - 'JS_SETTINGS_PATH'=>'Settings > Other Settings > Configuration Editor.', - 'JS_PRINT' => 'Print', - 'JS_SAVE_AS_IMAGE' => 'Save As Image', - 'JS_DIRECTORY_IS_EMPTY' => 'Directory is empty', + // AutoFill Overwriting message + 'JS_OVERWRITE_AUTOFILL_MSG1' => 'Would you like to overwrite existing', + 'JS_OVERWRITE_AUTOFILL_MSG2' => 'with selected', + + //Demo Data Module Translatios + 'JS_ADD_DEMO_DATA_CONFIRMATION'=> 'Are you sure you want to add demo records to all modules?', + 'JS_ADD_DEMO_DATA_INFO'=> 'Demo records can be deleted by clicking the "Clear Demo Data" button.', + 'JS_CLEAR_DEMO_DATA_CONFIRMATION'=> 'Are you sure you want to clear demo data in all modules?', + 'JS_CLEAR_DEMO_DATA_INFO'=> 'Demo records can be added by clicking the "Add Demo Data" button.', + 'JS_DEMO_DATA_GETTING_POPULATED'=> 'Demo Data is being added, please wait...', + 'JS_DEMO_DATA_GETTING_CLEARED'=> 'Demo data is being cleared, please wait...', + 'JS_DEMO_DATA_ADDED' => 'Demo data added to all modules.', + 'JS_DEMO_DATA_CLEARED' => 'Demo data cleared from all modules.', + 'JS_HOME_DASH_BOARD_CLEAR_INFO'=>'Note: You can re-enable demo data from', + 'JS_SETTINGS_PATH'=>'Settings > Configuration > Configuration Editor.', + 'JS_PRINT' => 'Print', + 'JS_SAVE_AS_IMAGE' => 'Save As Image', + 'JS_DIRECTORY_IS_EMPTY' => 'Directory is empty', 'JS_PLEASE_SELECT_AN_RELATED_TO_COPY_ADDRESS' => 'Please select a Lead / Contact Module to copy address', 'SINGLE_Leads' => 'Lead', 'JS_SELECTED_LEAD_DOES_NOT_HAVE_AN_ADDRESS' => 'Selected Lead does not contain address to copy', - 'JS_INVALID_EMAILS' => 'Invalid Emails', - 'JS_DIRECTORY_IS_EMPTY' => 'Directory is empty', - 'JS_INTERNAL_COMMENT' => 'Internal Comment', - 'JS_INTERNAL_COMMENT_INFO' => 'The comment will only be seen by CRM users, if the internal comment checkbox is enabled. To notify customers (through configurable workflows or customer portal) leave this checkbox disabled', - 'JS_NO_LINE_ITEM' =>'Line items cannot be empty.', + 'JS_INVALID_EMAILS' => 'Invalid Emails', + 'JS_DIRECTORY_IS_EMPTY' => 'Directory is empty', 'JS_INTERNAL_COMMENT' => 'Internal Comment', - 'JS_INTERNAL_COMMENT_INFO' => 'The comment will only be seen by CRM users, if the internal comment checkbox is enabled. To notify customers (through configurable workflows or customer portal) leave this checkbox disabled', + 'JS_INTERNAL_COMMENT_INFO' => 'The comment will only be seen by CRM users, if the internal comment checkbox is enabled. To notify customers (through configurable workflows or customer portal) leave this checkbox disabled', + 'JS_NO_LINE_ITEM' =>'Line items cannot be empty.', + 'JS_INTERNAL_COMMENT' => 'Internal Comment', + 'JS_INTERNAL_COMMENT_INFO' => 'The comment will only be seen by CRM users, if the internal comment checkbox is enabled. To notify customers (through configurable workflows or customer portal) leave this checkbox disabled', 'JS_NO_TAXES_EXISTS' => 'No taxes exist', 'JS_CONFIRM_TAXES_AND_CHARGES_REPLACE' => 'Do you want to update tax & charge values corresponding to selected region?', - 'JS_PRINTTEMPLATEMODULE_DISABLED' => 'PrintTemplates module is disabled. Cannot perform the operation', - 'JS_SENT_FOR_SIGNATURE' => 'Sent for signature', - 'JS_FAILED_TO_SEND_FOR_SIGNATURE' => 'Failed to send for signing', - 'JS_SUITABLE_VTIGER_FIELD_NOT_AVAILABLE_FOR_MAPPING' => 'Suitable vtiger field not available for mapping', - 'JS_SAVED_SUCCESSFULLY' => 'Settings saved successfully', - 'phone' => 'Phone', - 'email' => 'Email', - 'url' => 'Url', - 'home' => 'Home', - 'work' => 'Work', - 'custom' => 'Custom', - 'mobile' => 'Mobile', - 'main' => 'Main', - 'work_fax' => 'Fax', - 'home_fax' => 'Home Fax', - 'pager' => 'Pager', - 'profile' => 'Profile', - 'blog' => 'Blog', - 'home-page' => 'Homepage', - 'address' => 'Address', - - // Cron - 'JS_NONE_OF_THE_VALUES_ARE_CHANGED' => 'None of the values are changed', - 'JS_REMOVE_SYNC_CONFIRMATION' => 'Remove synchronization will only remove existing authentication, it will not delete synchronized records. If you synchronize with same Google account again, duplicate records will be created. Are you sure you want to remove synchronization?', - + 'JS_PRINTTEMPLATEMODULE_DISABLED' => 'PrintTemplates module is disabled. Cannot perform the operation', + 'JS_SENT_FOR_SIGNATURE' => 'Sent for signature', + 'JS_FAILED_TO_SEND_FOR_SIGNATURE' => 'Failed to send for signing', + 'JS_SUITABLE_VTIGER_FIELD_NOT_AVAILABLE_FOR_MAPPING' => 'Suitable vtiger field not available for mapping', + 'JS_SAVED_SUCCESSFULLY' => 'Settings saved successfully', + 'phone' => 'Phone', + 'email' => 'Email', + 'url' => 'Url', + 'home' => 'Home', + 'work' => 'Work', + 'custom' => 'Custom', + 'mobile' => 'Mobile', + 'main' => 'Main', + 'work_fax' => 'Fax', + 'home_fax' => 'Home Fax', + 'pager' => 'Pager', + 'profile' => 'Profile', + 'blog' => 'Blog', + 'home-page' => 'Homepage', + 'address' => 'Address', + + // Cron + 'JS_NONE_OF_THE_VALUES_ARE_CHANGED' => 'None of the values are changed', + 'JS_REMOVE_SYNC_CONFIRMATION' => 'Remove synchronization will only remove existing authentication, it will not delete synchronized records. If you synchronize with same Google account again, duplicate records will be created. Are you sure you want to remove synchronization?', + //Recipient preferences labels 'JS_LBL_GETTING_RECIPIENT_PREFS' => 'Getting recipient preferences..', 'JS_LBL_SAVING_PREFERENCES' => 'Saving preferences..', // Social Module Strings - 'JS_PLEASE_WAIT' => 'Please Wait...', - 'JS_SOCIAL_FIELD_ERROR' => 'field is required', - // Twitter Specific - 'JS_ADD_FAVOURITE_SUCCESS_MSG' => 'Added Tweet to favourite list successfully', - 'JS_UNDO_FAVOURITE_SUCCESS_MSG' => 'Removed Tweet from favourite list successfully', - 'JS_UNDO_RETWEET_SUCCESS_MSG' => 'UndoRetweet successfully', - 'JS_STATUS_UPDATE_SUCCESS_MSG' => 'Updated successfully', - 'JS_TWEET_DELETE_MSG' => 'Status Deleted successfully', - 'JS_INVALID_TWITTER_HANDLER_NAME' => 'Invalid Twitter Username', - 'JS_RELATION_ADDED_SUCESSFULLY' => 'Relation Added Successfully', - 'JS_FAILED_TO_ADD_RELATION' => 'Failed To Add Relation', - 'JS_SOCIAL_POST_DELETE_CONFIRMATION' => 'Are you sure you want to delete?', - 'JS_EVENT_OR_TODO_ADDED_SUCCESS_MSG' => 'Event/Task added sucessfully', - 'JS_LEAD_ADDED_SUCCESS_MSG' => 'Lead added successfully', - 'JS_OPPORTUNITY_ADDED_SUCESS_MSG' => 'Opportunity added successfully', - 'JS_TICKET_ADDED_SUCESS_MSG' => 'Ticket added successfully', + 'JS_PLEASE_WAIT' => 'Please Wait...', + 'JS_SOCIAL_FIELD_ERROR' => 'field is required', + // Twitter Specific + 'JS_ADD_FAVOURITE_SUCCESS_MSG' => 'Added Tweet to favourite list successfully', + 'JS_UNDO_FAVOURITE_SUCCESS_MSG' => 'Removed Tweet from favourite list successfully', + 'JS_UNDO_RETWEET_SUCCESS_MSG' => 'UndoRetweet successfully', + 'JS_STATUS_UPDATE_SUCCESS_MSG' => 'Updated successfully', + 'JS_TWEET_DELETE_MSG' => 'Status Deleted successfully', + 'JS_INVALID_TWITTER_HANDLER_NAME' => 'Invalid Twitter Username', + 'JS_RELATION_ADDED_SUCESSFULLY' => 'Relation Added Successfully', + 'JS_FAILED_TO_ADD_RELATION' => 'Failed To Add Relation', + 'JS_SOCIAL_POST_DELETE_CONFIRMATION' => 'Are you sure you want to delete?', + 'JS_EVENT_OR_TODO_ADDED_SUCCESS_MSG' => 'Event/Task added sucessfully', + 'JS_LEAD_ADDED_SUCCESS_MSG' => 'Lead added successfully', + 'JS_OPPORTUNITY_ADDED_SUCESS_MSG' => 'Opportunity added successfully', + 'JS_TICKET_ADDED_SUCESS_MSG' => 'Ticket added successfully', 'JS_CASE_ADDED_SUCESS_MSG' => 'Case added successfully', - 'JS_SELECT_OPTION' => 'Select an Option', - - //Office365 - 'LBL_REMOVE_SYNC_CONFIRMATION' => 'Removes Authorization for Contacts, Calendars and Emails. Are you sure you want to remove sync?', - 'OFFICE365_SYNC_REMOVED_SUCCESSFULLY' => 'Office365 sync removed successfully', - 'OFFICE365_REMOVE_SYNCHRONIZATION_MESSAGE' => 'Clicking on this will remove existing Office365 authentication. It will not delete any records which are already synchronized. It will not unregister the Vtiger app from you office365 account, to unregister visit http://myapps.microsoft.com/', - - 'JS_LOADING_COMMENTS' => 'Fetching Comments ...', - 'JS_PASSWORD_MISMATCH_ERROR' => 'Please re-enter passwords. The "new password" and "confirm password" values do not match.', - 'JS_COMMA_NOT_ALLOWED_USERS' => 'Special characters like ,"<> are not allowed in First Name and Last Name.', - 'Payment Failure!' => 'Payment Failure!', - 'We could not process the payment for your last invoice. Please update payment info to continue using the service without disruption.' => 'We could not process the payment for your last invoice. Please update payment info to continue using the service without disruption.', - 'For assistance, please send email to' => 'For assistance, please send email to', - 'JS_ENTERED_CURRENT_USERNAME_MSG' => 'You entered the current username. Please enter new username.', - - //onboard common js - 'JS_LOADING_PLEASE_WAIT' => 'Loading... Please wait..', + 'JS_SELECT_OPTION' => 'Select an Option', + + 'JS_LOADING_PLEASE_WAIT' => 'Loading... Please wait..', 'JS_SAVING_PLEASE_WAIT' => 'Saving.. Please wait..', 'JS_DUPLICATE_EMAILS_PLEASE_CHECK' => 'Duplicate email addresses. Please check', 'JS_USER_EXISTS' => 'User already exists', 'JS_ALERT' => 'Alert', - 'JS_SUCCESS' => 'Success', - 'JS_REMOVE_MASS_TAG_WARNING' => 'Are you sure you want to remove %s tag for selected records', - 'JS_VIEW_ALREADY_EXISTS' => 'View already exists', - 'JS_PLEASE_ENTER_NUMBER_IN_RANGE' => 'Please enter value in the range', - 'JS_UPLOAD' => 'Upload', + 'JS_SUCCESS' => 'Success', + 'JS_REMOVE_MASS_TAG_WARNING' => 'Are you sure you want to remove %s tag for selected records', + 'JS_VIEW_ALREADY_EXISTS' => 'View already exists', + 'JS_PLEASE_ENTER_NUMBER_IN_RANGE' => 'Please enter value in the range', + 'JS_UPLOAD' => 'Upload', 'JS_TODO_ADDED_SUCCESS_MSG' => 'Task added successfully', - 'JS_EVENT_ADDED_SUCCESS_MSG' => 'Event added successfully', - 'JS_ACTIVE' => 'Active', - 'JS_SNOOZED' => 'Snoozed', - 'JS_INVALID_URL' => 'Invalid URL', - 'JS_MAX_ALLOWED_CHARACTERS' => 'Maximum allowed characters is', - 'JS_ARE_YOU_SURE_YOU_WANT_TO_DELETE' => 'Are you sure you want to delete?', - 'JS_TAB_LABEL_EXCEEDS_CHARS' => 'Tab label length should be less than %s characters', - 'JS_STARRED' => 'Starred', - 'JS_NOT_STARRED' => 'Not Starred', - //Tags - 'JS_NO_TAG_EXISTS' => 'No Tag Exists' , - //help wizard - 'JS_HELP_AND_SUPPORT' => 'Help & Support', - 'JS_WHAT_DO_YOU_NEED_HELP_WITH' => 'What do you need help with?', - 'JS_SUBMIT' => 'Submit', - - /** Vtiger7 translations **/ - 'JS_ADD_MAX_15_ITEMS' => 'You can only add 15 items', - 'SINGLE_SLA' => 'SLA', - + 'JS_EVENT_ADDED_SUCCESS_MSG' => 'Event added successfully', + 'JS_ACTIVE' => 'Active', + 'JS_SNOOZED' => 'Snoozed', + 'JS_INVALID_URL' => 'Invalid URL', + 'JS_MAX_ALLOWED_CHARACTERS' => 'Maximum allowed characters is', + 'JS_ARE_YOU_SURE_YOU_WANT_TO_DELETE' => 'Are you sure you want to delete?', + 'JS_TAB_LABEL_EXCEEDS_CHARS' => 'Tab label length should be less than %s characters', + 'JS_STARRED' => 'Unfollow', + 'JS_NOT_STARRED' => 'Follow', + //Tags + 'JS_NO_TAG_EXISTS' => 'No Tag Exists' , + //help wizard + 'JS_HELP_AND_SUPPORT' => 'Help & Support', + 'JS_WHAT_DO_YOU_NEED_HELP_WITH' => 'What do you need help with?', + 'JS_SUBMIT' => 'Submit', + + /** Vtiger7 translations **/ + 'JS_ADD_MAX_15_ITEMS' => 'You can only add 15 items', + 'SINGLE_SLA' => 'SLA', + 'JS_DEFAULT_ENABLED' => 'Default enabled', 'JS_DEFAULT_DISABLED' => 'Default disabled', - 'JS_EDIT_FIELDS' => '%s Fields & Layout', - 'JS_MORE_VTIGER' => 'There are more records to be synchronized in vtiger', - 'JS_MORE_GOOGLE' => 'There are more records to be synchronized in Google', - 'JS_MORE_OFFICE365' => 'There are more records to be synchronized in Office365', - 'JS_TOKEN_EXPIRED' => 'Office365 Authentication has expired. Click on Sign in with Office365 button to re-authorize.', - 'JS_EDIT_FIELDS' => '%s Fields & Layout', - 'JS_WISH_TO_PROCEED' =>"Are you sure you want to proceed?", - 'JS_SWITCH_TO_OLD_LOOK_CONFIRMATION_MESSAGE' => 'Some features, including notifications, picklist colors, follow record, are not available in old version. You may switch back to new version by choosing new version from top right menu.', - 'JS_PROCEED_OLD_VERSION' => 'Proceed to old version', - 'JS_STAY_WITH_NEW_VERSION' => 'Stay with new version', - - //TimeAgo plugin Strings - 'JS_AGO' => 'ago', - 'JS_FROM_NOW' => 'from now', - 'JS_LESSTHAN_A_MINUTE' => 'less than a minute', - 'JS_A_MINUTE' =>'a minute', - 'JS_MINUTES' => 'minutes', - 'JS_AN_HOUR' => 'an hour', - 'JS_HOURS' => 'hours', - 'JS_A_DAY' => 'a day', - 'JS_DAYS' => 'days', - 'JS_A_MONTH' => 'a month', - 'JS_MONTHS' => 'months', - 'JS_A_YEAR' => 'a year', - 'JS_YEARS' => 'years', - 'JS_TODAY' => 'today', - 'JS_TOMORROW' => 'tomorrow', - 'JS_YESTERDAY' => 'yesterday', - - 'JS_CREATE_TASK' => 'Create Task', - - //Notifications - 'JS_MENTION_ATLEAST_ONE_USER' => 'Mention atleast one user', - 'JS_LOADING' => 'Loading...', - 'JS_CASE_ACCEPTED_SUCCESSFULLY' => 'Case accepted successfully', - + 'JS_EDIT_FIELDS' => '%s Fields & Layout', + 'JS_MORE_VTIGER' => 'There are more records to be synchronized in vtiger', + 'JS_MORE_GOOGLE' => 'There are more records to be synchronized in Google', + 'JS_MORE_OFFICE365' => 'There are more records to be synchronized in Office365', + 'JS_TOKEN_EXPIRED' => 'Office365 Authentication has expired. Click on Sign in with Office365 button to re-authorize.', + 'JS_EDIT_FIELDS' => '%s Fields & Layout', + 'JS_WISH_TO_PROCEED' =>"Are you sure you want to proceed?", + 'JS_SWITCH_TO_OLD_LOOK_CONFIRMATION_MESSAGE' => 'Some features, including notifications, picklist colors, follow record, are not available in old version. You may switch back to new version by choosing new version from top right menu.', + 'JS_PROCEED_OLD_VERSION' => 'Proceed to old version', + 'JS_STAY_WITH_NEW_VERSION' => 'Stay with new version', + + //TimeAgo plugin Strings + 'JS_AGO' => 'ago', + 'JS_FROM_NOW' => 'from now', + 'JS_LESSTHAN_A_MINUTE' => 'less than a minute', + 'JS_A_MINUTE' =>'a minute', + 'JS_MINUTES' => 'minutes', + 'JS_AN_HOUR' => 'an hour', + 'JS_HOURS' => 'hours', + 'JS_A_DAY' => 'a day', + 'JS_DAYS' => 'days', + 'JS_A_MONTH' => 'a month', + 'JS_MONTHS' => 'months', + 'JS_A_YEAR' => 'a year', + 'JS_YEARS' => 'years', + 'JS_TODAY' => 'today', + 'JS_TOMORROW' => 'tomorrow', + 'JS_YESTERDAY' => 'yesterday', + + 'JS_CREATE_TASK' => 'Create Task', + + //Notifications + 'JS_MENTION_ATLEAST_ONE_USER' => 'Mention atleast one user', + 'JS_LOADING' => 'Loading...', + 'JS_CASE_ACCEPTED_SUCCESSFULLY' => 'Case accepted successfully', + 'JS_UPLOAD_SUCCESSFUL' => 'File Uploaded Successfuly', - 'JS_UPLOAD_FAILED' => 'File Upload Failed', + 'JS_UPLOAD_FAILED' => 'File Upload Failed', + 'JS_FAILED_TO_UPLOAD_FILE' => 'Failed to upload file', + 'JS_DOCUMENT_CREATED' => 'Document created', + 'JS_DOCUMENT_CREATION_FAILED' => 'Document creation failed', + + 'JS_TEMPLATE_TEXT_EXCEEDS_LIMIT' => 'The size of the template exceeds the maximum allowed size of 100 KB. Please remove some text in the template and retry', + 'JS_PLEASE_SELECT_IMAGE' => 'Please select an image', + + 'JS_LBL_MY_PREFERENCES' => 'My Preferences', + 'JS_LBL_MY_PREFERENCES_TEXT' => 'Configure your personal preferences including Timezone, Currency, Date Format. You can also upload profile picture from My Preferences.', + 'JS_LBL_HELP' => 'Help', + 'JS_LBL_HELP_TEXT' => 'Click on Help button to find Guides and FAQs, and use the Help menu dropdown to get assistance from Vtiger support team', + 'JS_LBL_RESTART_TOUR' => 'Restart Guided Tour', + 'JS_LBL_RESTART_TOUR_TEXT' => 'Click here to start this tour again', + 'JS_GOOGLE_REMOVE_SYNC_CONFIRMATION' => 'Revoke access will only remove existing Google authentication for Contacts and Calendar, it will not delete synchronized records. If you synchronize with same Google account again, duplicate records will be created. Are you sure you want to revoke access?', + 'JS_OFFICE_REMOVE_SYNC_CONFIRMATION' => 'Revoke access will only remove existing Office365 authentication for Contacts, Calendar and Emails, it will not delete synchronized records. If you synchronize with same Office365 account again, duplicate records will be created. Are you sure you want to revoke access?', + 'JS_FOLLOW_RECORD' => 'Following the record', + 'JS_FOLLOWING' => 'Following', + 'JS_UNFOLLOW_RECORD' => 'Unfollowing the record', + 'JS_UNFOLLOWING' => 'Unfollowing', + 'JS_RECORD_CREATED' => 'Record created', + 'JS_RECORD_UPDATED' => 'Record updated', + 'JS_LIST_SAVED' => 'List saved', + 'JS_TAB_DELETED' => 'deleted', + 'JS_TAB_RENAMED' => 'Renamed', + 'JS_TAB_REORDERED' => 'Reordered', + 'JS_RECIPIENT_PREFERENCES_SAVED' => 'Recipient preferences saved', + 'JS_TASK_ADDED' => 'Task added', + 'JS_MARKED_COMPLETED' => 'Marked as completed', + 'JS_TASK_PRIORITY_CHANGED' => 'Task priority changed', + 'JS_NO_PERMISSION_TO_MARK_AS_HELD' => 'You do not have permission to mark this event as held', + 'JS_TAG_ADDED' => 'Tag added', + 'JS_TAB_DELETED' => 'deleted', + 'JS_TAB_RENAMED' => 'Renamed', + 'JS_TAB_REORDERED' =>'Reordered', + //Convert Lead + 'JS_CONVERT_LEAD_ERROR' => 'You have to enable either Organizations or Contacts module to convert the Lead.', + + 'JS_CHECK_START_AND_END_DATE'=>'End Date & Time should be greater than or equal to Start Date & Time', + 'JS_CHECK_START_AND_END_DATE_SHOULD_BE_GREATER'=> 'End Date & Time should be greater than Start Date & Time', + 'JS_HOLD_FOLLOW_UP_SHOULD_BE_LESS_THAN_CURRENT_DATE'=> 'Hold Followup on should be greater than or equal to Start Date & Time', + 'JS_DUPLICATES_DETECTED' => 'Duplicate(s) detected!', + + 'JS_IS' => 'is', + 'JS_IS_NOT' => 'is not', + 'JS_EQUALS' => 'equals', + 'JS_NOT_EQUALS_TO' => 'not equal to', + 'JS_ONLY_LETTERS_AND_NUMBERS_ALLOWED' => 'Only letters (a-z), numbers (0-9), and spaces are allowed', + 'JS_WIDGET_RESIZING_WAIT_MSG' => 'Widget contents will load after resizing.', + 'JS_SLA_FULFILLMENT_RATE' => 'SLA FULFILLMENT RATE', + 'JS_TICKET_COUNT' => 'CASE COUNT', + 'JS_CASES_AGE_HOURS'=>'CASE AGE (Hours)', + 'JS_BACKLOG'=> 'Backlog', + 'JS_AND' => 'and', + 'JS_SEQUENCE_UPDATED_SUCCESSFULLY'=>'Sequence updated successfully', + 'JS_VIEW_RECORD' => 'View Record', + 'JS_HIDE'=>'Hide', + 'JS_SHOW_ALL'=>'Show all', + 'JS_SHOW_LESS' => 'Show less', + 'JS_SHOW_MORE' => 'Show more', + + 'JS_KANBAN_ANCHORS_LIMIT_MESSAGE' => 'You can select upto 10 stages only', + 'JS_KANBAN_NO_MORE_RECORDS' => 'No more records found', + 'JS_DELETED' => 'deleted', + 'JS_CLEAR_TEMPLATE_CONTENT_RECIPIENTS'=>'Changing the module will clear the template selected and recipients from TO field. Do you want to proceed?', + 'JS_WORKFLOW_ACTIONS_LIMIT_EXCEEDED' => 'Exceeded maximum limit of actions in this edition.', + 'JS_RECORD_CREATION_LIMIT_EXCEEDED' => 'Create Record - Exceeded maximum limit of this edition.', + 'JS_KANBAN_NO_ANCHORS_CONFIGURED' => "You do not have any sales stages defined for your Sales pipeline.", + 'JS_KANBAN_NO_ANCHORS_CONFIGURED_NON_ADMIN' => "You do not have any sales stages defined for your Sales pipeline. Please contact your Administrator to define sale stages as per your sales process.", + 'JS_UPDATE_MAPPING_CONFIRMATION' => 'There are some matching columns in CSV file which are not saved in this mapping. Do you want to update this mapping with new columns?', + 'JS_MAPPING_UPDATED' => 'New mapping updated.', + 'JS_MAILCHIMP_REMOVE_SYNC_CONFIRMATION' => 'Revoke access will remove existing MailChimp authentication, it will not delete synchronized records. Are you sure you want to revoke access?', + 'JS_WARNING' => 'Warning', + 'JS_CANT_SELECT_LEAD' => 'Cannot select related Lead', + 'JS_CANT_SELECT_CONTACT' => 'Cannot select related Contact', + 'JS_MSG_EMPTY_RB_CONFIRMATION' => 'Are you sure you want to permanently remove all the deleted records from your database?', + 'JS_LBL_RESTORE_RECORDS_CONFIRMATION' => 'Are you sure you want to restore the records?', + 'JS_COMMENT_POSTED_SUCCESSFULLY'=>'Comment posted successfully', + 'JS_SHARED_PUBLICLY_WITH'=>'Shared publicly with', + 'JS_SHARED_PRIVATELY_WITH'=>'Shared privately with', + 'JS_MAIL_SENT_SUCCESSFULLY'=>'Mail sent successfully', + 'JS_SHARED_PUBLICLY_TITLE'=>'Public Conversation can also be viewed by users outside the linked mailboxes, if they have access to the related Contact ,Opportunity ..etc', + 'JS_SHARED_PRIVATELY_TITLE'=>'Private Conversation can only be viewed by members of the mailboxes it is linked to.', + 'JS_LINKED_RECORDS_SUCCESS'=>'Linked records are successfully updated', + 'JS_MAIL_DRAFTED_SUCCESSFULLY'=>'Mail drafted successfully', + + //Custom view default sort translations. + 'JS_PLEASE_REMOVE_ONE_FIELD_FROM_CHOOSE_COLUMNS_LIST_TO_ADD_DEFAULT_SORT_FIELD' => 'Only 16 columns are allowed in a list view including sort columns.', + 'JS_DEFAULT_SORT_NOTIFY' => 'List is now sorted on default sort column ', + 'JS_ENABLED' => 'Enabled', + 'JS_DISABLED' => 'Disabled', + 'JS_ONLY_ALLOWED_USERS_ARE_ALLOWED_TO_DO_ACTION'=>'We could not mark the conversation(s) as unread/read/delete/done/private/public since you do not own it.', + 'JS_SHARED_WITH'=>'Shared with', + 'JS_DEFAULT_DASHBOARD_TOOLTIP' => 'Make this dashboard as default by reordering it as the first tab!', + 'JS_SET_DEFAULT_TAB' => 'is set as your default dashboard', ); diff --git a/layouts/v7/modules/Calendar/resources/TaskManagement.js b/layouts/v7/modules/Calendar/resources/TaskManagement.js index 50c44fd74..5a67d614f 100644 --- a/layouts/v7/modules/Calendar/resources/TaskManagement.js +++ b/layouts/v7/modules/Calendar/resources/TaskManagement.js @@ -343,6 +343,7 @@ Vtiger_Index_Js("Vtiger_TaskManagement_Js",{},{ fieldNameValueMap["taskpriority"] = priority; fieldNameValueMap["subject"] = subject; fieldNameValueMap["taskstatus"] = 'Not Started'; + fieldNameValueMap["assigned_user_id"] = app.getUserId(); app.helper.showProgress(); thisInstance.saveNewTask(fieldNameValueMap).then(function(e){ diff --git a/layouts/v7/modules/Emails/SendEmailResult.tpl b/layouts/v7/modules/Emails/SendEmailResult.tpl index 7597da32f..7f8e0a20b 100644 --- a/layouts/v7/modules/Emails/SendEmailResult.tpl +++ b/layouts/v7/modules/Emails/SendEmailResult.tpl @@ -7,24 +7,27 @@ * All Rights Reserved. ************************************************************************************} {* modules/Emails/views/MassSaveAjax.php *} - + {* START YOUR IMPLEMENTATION FROM BELOW. Use {debug} for information *} <div class="modal-dialog"> - <div class="modal-content"> - {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE="Result"} - <div class="modal-body"> - {if $SUCCESS} - <div class="mailSentSuccessfully" data-relatedload="{$RELATED_LOAD}"> - Mail Sent Successfully - </div> - {else} - <div class="failedToSend" data-relatedload="false"> - Failed to Send - <br> - {$MESSAGE} - </div> - {/if} - </div> - </div> + <div class="modal-content"> + {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE="Result"} + <div class="modal-body"> + {if $SUCCESS} + <div class="mailSentSuccessfully" data-relatedload="{$RELATED_LOAD}"> + {vtranslate('LBL_MAIL_SENT_SUCCESSFULLY')} + </div> + {if $FLAG} + <input type="hidden" id="flag" value="{$FLAG}"> + {/if} + {else} + <div class="failedToSend" data-relatedload="false"> + {vtranslate('LBL_FAILED_TO_SEND')} + <br> + {$MESSAGE} + </div> + {/if} + </div> + </div> </div> diff --git a/layouts/v7/modules/Inventory/uitypes/MultiPicklist.tpl b/layouts/v7/modules/Inventory/uitypes/MultiPicklist.tpl deleted file mode 100644 index 8a1571cc4..000000000 --- a/layouts/v7/modules/Inventory/uitypes/MultiPicklist.tpl +++ /dev/null @@ -1,50 +0,0 @@ -{*<!-- -/*+**************************************************************************** -* The contents of this file are subject to the vtiger CRM Commercial License -* ("License"); You may not use this file except in compliance with the License -* The Initial Developer of the Code is vtiger. -* All Rights Reserved. Copyright (C) vtiger. -*******************************************************************************/ --->*} - -{strip} - {assign var="FIELD_INFO" value=Vtiger_Util_Helper::toSafeHTML(Zend_Json::encode($FIELD_MODEL->getFieldInfo()))} - {assign var=PICKLIST_VALUES value=$FIELD_MODEL->getPicklistValues($REF_ENTITY_TYPE, $REFERENCE_FIELD_ID)} - {assign var="SPECIAL_VALIDATOR" value=$FIELD_MODEL->getValidator()} - {if !is_array($FIELD_MODEL->get('fieldvalue'))} - {assign var="FIELD_VALUE_LIST" value=explode(' |##| ', $FIELD_MODEL->get('fieldvalue'))} - {/if} - {if (!$FIELD_NAME)} - {assign var="FIELD_NAME" value=$FIELD_MODEL->getFieldName()} - {/if} - {if $IS_CLONE_COPY_ROW} - {assign var=PRODUCT_PICKLISTS value=$FIELD_MODEL->getPicklistValues('Products', $REFERENCE_FIELD_ID)} - {assign var="PRODUCT_PICKLIST_VALUES" value=array()} - {foreach key=PICKLIST_NAME item=PICKLIST_VALUE from=$PRODUCT_PICKLISTS} - {append var="PRODUCT_PICKLIST_VALUES" value=$PICKLIST_VALUE index=Vtiger_Util_Helper::toSafeHTML($PICKLIST_NAME)} - {/foreach} - - {assign var=SERVICE_PICKLISTS value=$FIELD_MODEL->getPicklistValues('Services', $REFERENCE_FIELD_ID)} - {assign var="SERVICE_PICKLIST_VALUES" value=array()} - {foreach key=PICKLIST_NAME item=PICKLIST_VALUE from=$SERVICE_PICKLISTS} - {append var="SERVICE_PICKLIST_VALUES" value=$PICKLIST_VALUE index=Vtiger_Util_Helper::toSafeHTML($PICKLIST_NAME)} - {/foreach} - {/if} - - <input type="hidden" name="{$FIELD_NAME}" value="" data-fieldtype="multipicklist"/> - <select class="{if !($IS_CLONE_COPY_ROW)}select2{/if}" multiple name="{$FIELD_NAME}[]" - data-fieldinfo='{$FIELD_INFO}' data-fieldtype="multipicklist" id="{$MODULE}_{$smarty.request.view}_fieldName_{$FIELD_NAME}" - {if $IS_CLONE_COPY_ROW} data-product-picklist-values='{Zend_Json::encode($PRODUCT_PICKLIST_VALUES)}'{/if} - {if $IS_CLONE_COPY_ROW} data-service-picklist-values='{Zend_Json::encode($SERVICE_PICKLIST_VALUES)}'{/if} - {if $FIELD_MODEL->isMandatory() eq true} - data-validation-engine="validate[required,funcCall[Vtiger_Base_Validator_Js.invokeValidation]]" - {if !empty($SPECIAL_VALIDATOR)} - data-validator='{Zend_Json::encode($SPECIAL_VALIDATOR)}' - {/if} - {/if}> - - {foreach item=PICKLIST_VALUE from=$PICKLIST_VALUES} - <option value="{Vtiger_Util_Helper::toSafeHTML($PICKLIST_VALUE)}" {if in_array(Vtiger_Util_Helper::toSafeHTML($PICKLIST_VALUE), $FIELD_VALUE_LIST)} selected {/if}>{vtranslate($PICKLIST_VALUE, $MODULE)}</option> - {/foreach} - </select> -{/strip} diff --git a/layouts/v7/modules/Inventory/uitypes/Picklist.tpl b/layouts/v7/modules/Inventory/uitypes/Picklist.tpl deleted file mode 100644 index 64290369d..000000000 --- a/layouts/v7/modules/Inventory/uitypes/Picklist.tpl +++ /dev/null @@ -1,52 +0,0 @@ -{*<!-- -/*+**************************************************************************** -* The contents of this file are subject to the vtiger CRM Commercial License -* ("License"); You may not use this file except in compliance with the License -* The Initial Developer of the Code is vtiger. -* All Rights Reserved. Copyright (C) vtiger. -*******************************************************************************/ --->*} - -{strip} - {assign var="FIELD_INFO" value=Vtiger_Util_Helper::toSafeHTML(Zend_Json::encode($FIELD_MODEL->getFieldInfo()))} - {assign var=PICKLIST_VALUES value=$FIELD_MODEL->getPicklistValues($REF_ENTITY_TYPE, $REFERENCE_FIELD_ID)} - {assign var="SPECIAL_VALIDATOR" value=$FIELD_MODEL->getValidator()} - {if (!$FIELD_NAME)} - {assign var="FIELD_NAME" value=$FIELD_MODEL->getFieldName()} - {/if} - {assign var="FIELD_VALUE" value=$FIELD_MODEL->get('fieldvalue')} - - {if $IS_CLONE_COPY_ROW} - {assign var=PRODUCT_PICKLISTS value=$FIELD_MODEL->getPicklistValues('Products', $REFERENCE_FIELD_ID)} - {assign var="PRODUCT_PICKLIST_VALUES" value=array()} - {foreach key=PICKLIST_NAME item=PICKLIST_VALUE from=$PRODUCT_PICKLISTS} - {append var="PRODUCT_PICKLIST_VALUES" value=$PICKLIST_VALUE index=Vtiger_Util_Helper::toSafeHTML($PICKLIST_NAME)} - {/foreach} - - {assign var=SERVICE_PICKLISTS value=$FIELD_MODEL->getPicklistValues('Services', $REFERENCE_FIELD_ID)} - {assign var="SERVICE_PICKLIST_VALUES" value=array()} - {foreach key=PICKLIST_NAME item=PICKLIST_VALUE from=$SERVICE_PICKLISTS} - {append var="SERVICE_PICKLIST_VALUES" value=$PICKLIST_VALUE index=Vtiger_Util_Helper::toSafeHTML($PICKLIST_NAME)} - {/foreach} - {/if} - - <select class="{if !($IS_CLONE_COPY_ROW)}select2{/if}{if $OCCUPY_COMPLETE_WIDTH} row-fluid {/if}" name="{$FIELD_NAME}" data-fieldinfo='{$FIELD_INFO}' - id="{$MODULE}_{$smarty.request.view}_fieldName_{$FIELD_NAME}" data-selected-value='{Zend_Json::encode($FIELD_MODEL->get('fieldvalue'))}' - data-validation-engine="validate[{if $FIELD_MODEL->isMandatory() eq true} required,{/if}funcCall[Vtiger_Base_Validator_Js.invokeValidation]]" - {if !empty($SPECIAL_VALIDATOR)} data-validator='{Zend_Json::encode($SPECIAL_VALIDATOR)}'{/if} - {if $IS_CLONE_COPY_ROW} data-product-picklist-values='{Zend_Json::encode($PRODUCT_PICKLIST_VALUES)}'{/if} - {if $IS_CLONE_COPY_ROW} data-service-picklist-values='{Zend_Json::encode($SERVICE_PICKLIST_VALUES)}'{/if}> - - {if $FIELD_MODEL->isEmptyPicklistOptionAllowed()}<option value="">{vtranslate('LBL_SELECT_OPTION','Vtiger')}</option>{/if} - {foreach item=PICKLIST_VALUE key=PICKLIST_NAME from=$PICKLIST_VALUES} - <option value="{Vtiger_Util_Helper::toSafeHTML($PICKLIST_NAME)}" - {if is_array($FIELD_VALUE)} - {if in_array(trim($PICKLIST_NAME), $FIELD_VALUE)} - selected - {/if} - {else if trim(decode_html($FIELD_VALUE)) eq trim($PICKLIST_NAME)} - selected - {/if}>{$PICKLIST_VALUE}</option> - {/foreach} - </select> -{/strip} diff --git a/layouts/v7/modules/Settings/Vtiger/OutgoingServerEdit.tpl b/layouts/v7/modules/Settings/Vtiger/OutgoingServerEdit.tpl index 4bdcae2e4..a830c8d74 100644 --- a/layouts/v7/modules/Settings/Vtiger/OutgoingServerEdit.tpl +++ b/layouts/v7/modules/Settings/Vtiger/OutgoingServerEdit.tpl @@ -38,14 +38,14 @@ <tbody> <tr> <td class="{$WIDTHTYPE} fieldLabel"><label>{vtranslate('LBL_SERVER_TYPE', $QUALIFIED_MODULE)}</label></td> - <td class="fieldValue {$WIDTHTYPE}" > + <td class="fieldValue {$WIDTHTYPE}"> <div class=" col-lg-6 col-md-6 col-sm-12"> <select class="select2 inputElement col-lg-12 col-md-12 col-lg-12" name="serverType"> - <option value="{"ssl://smtp.gmail.com:465"}" {if {$MODEL->get('server')} eq "ssl://smtp.gmail.com:465"} selected {/if}>{vtranslate('LBL_GMAIL', $QUALIFIED_MODULE)} </option> + <option value="">{vtranslate('LBL_SELECT_OPTION','Vtiger')}</option> + <option value="{"ssl://smtp.gmail.com:465"}" {if {$MODEL->get('server')} eq "ssl://smtp.gmail.com:465;"} selected {/if}>{vtranslate('LBL_GMAIL', $QUALIFIED_MODULE)} </option> <option value="{"smtp.live.com"}" {if {$MODEL->get('server')} eq "smtp.live.com"} selected {/if}>{vtranslate('LBL_HOTMAIL', $QUALIFIED_MODULE)}</option> <option value="{"smtp-mail.outlook.com"}" {if {$MODEL->get('server')} eq "smtp.live.com"} selected {/if}>{vtranslate('LBL_OFFICE365', $QUALIFIED_MODULE)}</option> <option value="{"smtp.mail.yahoo.com"}" {if {$MODEL->get('server')} eq "smtp.mail.yahoo.com"} selected {/if}>{vtranslate('LBL_YAHOO', $QUALIFIED_MODULE)}</option> - <option name="vtigerServer" data-username="mailrelay" data-password="k7M22lta" data-email="noreply@mail.od1.vtiger.com" value="{"mail.od1.vtiger.com"}" {if {$MODEL->get('server')} eq "mail.od1.vtiger.com"} selected {/if} >{vtranslate('LBL_VTIGER', $QUALIFIED_MODULE)}</option> <option value="">{vtranslate('LBL_OTHERS', $QUALIFIED_MODULE)}</option> </select> </div> diff --git a/modules/Emails/models/Record.php b/modules/Emails/models/Record.php index e9fc61a65..f3ec099bc 100644 --- a/modules/Emails/models/Record.php +++ b/modules/Emails/models/Record.php @@ -15,9 +15,9 @@ class Emails_Record_Model extends Vtiger_Record_Model { * @return <String> - Record Detail View Url */ public function getDetailViewUrl($parentId = false) { - if(!$parentId) { - list($parentId, $status) = explode('@', reset(array_filter(explode('|', $this->get('parent_id'))))); - } + if(!$parentId) { + list($parentId, $status) = explode('@', reset(array_filter(explode('|', $this->get('parent_id'))))); + } return 'Javascript:Vtiger_Index_Js.showEmailPreview("'.$this->getId().'","'.$parentId.'")'; } @@ -26,10 +26,10 @@ class Emails_Record_Model extends Vtiger_Record_Model { */ public function save() { //Opensource fix for MailManager data mail attachment - if($this->get('email_flag')!='MailManager'){ - $this->set('date_start', date('Y-m-d')); - $this->set('time_start', date('H:i')); - } + if($this->get('email_flag')!='MailManager'){ + $this->set('date_start', date('Y-m-d')); + $this->set('time_start', date('H:i')); + } $this->set('activitytype', 'Emails'); //$currentUserModel = Users_Record_Model::getCurrentUserModel(); @@ -37,7 +37,7 @@ class Emails_Record_Model extends Vtiger_Record_Model { $this->getModule()->saveRecord($this); $documentIds = $this->get('documentids'); if (!empty ($documentIds)) { - $this->deleteDocumentLink(); + $this->deleteDocumentLink(); $this->saveDocumentDetails(); } } @@ -50,23 +50,23 @@ class Emails_Record_Model extends Vtiger_Record_Model { $rootDirectory = vglobal('root_directory'); $mailer = Emails_Mailer_Model::getInstance(); - $mailer->IsHTML(true); + $mailer->IsHTML(true); - $fromEmail = $this->getFromEmailAddress(); + $fromEmail = $this->getFromEmailAddress(); $replyTo = $this->getReplyToEmail(); $userName = $currentUserModel->getName(); // To eliminate the empty value of an array $toEmailInfo = array_filter($this->get('toemailinfo')); - $emailsInfo = array(); + $emailsInfo = array(); foreach ($toEmailInfo as $id => $emails) { - foreach($emails as $key => $value){ - array_push($emailsInfo, $value); - } + foreach($emails as $key => $value){ + array_push($emailsInfo, $value); + } } - $toEmailInfo = array_map("unserialize", array_unique(array_map("serialize", array_map("array_unique", $toEmailInfo)))); - $toFieldData = array_diff(explode(',', $this->get('saved_toid')), $emailsInfo); + $toEmailInfo = array_map("unserialize", array_unique(array_map("serialize", array_map("array_unique", $toEmailInfo)))); + $toFieldData = array_diff(explode(',', $this->get('saved_toid')), $emailsInfo); $toEmailsData = array(); $i = 1; foreach ($toFieldData as $value) { @@ -74,13 +74,13 @@ class Emails_Record_Model extends Vtiger_Record_Model { } $attachments = $this->getAttachmentDetails(); $status = false; - + // Merge Users module merge tags based on current user. $mergedDescription = getMergedDescription($this->get('description'), $currentUserModel->getId(), 'Users'); $mergedSubject = getMergedDescription($this->get('subject'),$currentUserModel->getId(), 'Users'); foreach($toEmailInfo as $id => $emails) { - $inReplyToMessageId = ''; - $generatedMessageId = ''; + $inReplyToMessageId = ''; + $generatedMessageId = ''; $mailer->reinitialize(); $mailer->ConfigSenderInfo($fromEmail, $userName, $replyTo); $old_mod_strings = vglobal('mod_strings'); @@ -93,15 +93,15 @@ class Emails_Record_Model extends Vtiger_Record_Model { vglobal('mod_strings', $moduleLanguageStrings['languageStrings']); $mergedDescriptionWithHyperLinkConversion = $this->replaceBrowserMergeTagWithValue($mergedDescription,$parentModule,$id); if ($parentModule != 'Users') { - //Retrieve MessageID from Mailroom table only if module is not users - $inReplyToMessageId = $mailer->retrieveMessageIdFromMailroom($id); - - $generatedMessageId = $mailer->generateMessageID(); - //If there is no reference id exist in crm. - //Generate messageId for sending email and attach to mailer header - if(empty($inReplyToMessageId)){ - $inReplyToMessageId = $generatedMessageId; - } + //Retrieve MessageID from Mailroom table only if module is not users + $inReplyToMessageId = $mailer->retrieveMessageIdFromMailroom($id); + + $generatedMessageId = $mailer->generateMessageID(); + //If there is no reference id exist in crm. + //Generate messageId for sending email and attach to mailer header + if(empty($inReplyToMessageId)){ + $inReplyToMessageId = $generatedMessageId; + } // Apply merge for non-Users module merge tags. $description = getMergedDescription($mergedDescriptionWithHyperLinkConversion, $id, $parentModule); $subject = getMergedDescription($mergedSubject, $id, $parentModule); @@ -113,15 +113,15 @@ class Emails_Record_Model extends Vtiger_Record_Model { } } - //If variable is not empty then add custom header - if(!empty($inReplyToMessageId)){ - $mailer->AddCustomHeader("In-Reply-To", $inReplyToMessageId); - } - - if(!empty($generatedMessageId)){ - $mailer->MessageID = $generatedMessageId; - } - + //If variable is not empty then add custom header + if(!empty($inReplyToMessageId)){ + $mailer->AddCustomHeader("In-Reply-To", $inReplyToMessageId); + } + + if(!empty($generatedMessageId)){ + $mailer->MessageID = $generatedMessageId; + } + if (strpos($description, '$logo$')) { $description = str_replace('$logo$',"<img src='cid:logo' />", $description); $logo = true; @@ -129,7 +129,7 @@ class Emails_Record_Model extends Vtiger_Record_Model { foreach($emails as $email) { $mailer->Body = $description; - if ($parentModule) { + if ($parentModule) { $mailer->Body = $this->convertUrlsToTrackUrls($mailer->Body, $id);; $mailer->Body .= $this->getTrackImageDetails($id, $this->isEmailTrackEnabled($parentModule)); } @@ -141,14 +141,14 @@ class Emails_Record_Model extends Vtiger_Record_Model { } } $mailer->Subject = decode_html(strip_tags($subject)); - - $plainBody = decode_emptyspace_html($description); - $plainBody = preg_replace(array("/<p>/i","/<br>/i","/<br \/>/i"),array("\n","\n","\n"),$plainBody); - $plainBody .= "\n\n".$currentUserModel->get('signature'); - $plainBody = strip_tags($plainBody); - $plainBody = Emails_Mailer_Model::convertToAscii($plainBody); + + $plainBody = decode_emptyspace_html($description); + $plainBody = preg_replace(array("/<p>/i","/<br>/i","/<br \/>/i"),array("\n","\n","\n"),$plainBody); + $plainBody .= "\n\n".$currentUserModel->get('signature'); + $plainBody = strip_tags($plainBody); + $plainBody = Emails_Mailer_Model::convertToAscii($plainBody); $plainBody = $this->convertUrlsToTrackUrls($plainBody, $id,'plain'); - $mailer->AltBody = $plainBody; + $mailer->AltBody = $plainBody; $mailer->AddAddress($email); //Adding attachments to mail @@ -175,10 +175,10 @@ class Emails_Record_Model extends Vtiger_Record_Model { foreach($bccs as $bcc) $mailer->AddBCC($bcc); } } - // to convert external css to inline css - $mailer->Body = Emails_Mailer_Model::convertCssToInline($mailer->Body); - //To convert image url to valid - $mailer->Body = Emails_Mailer_Model::makeImageURLValid($mailer->Body); + // to convert external css to inline css + $mailer->Body = Emails_Mailer_Model::convertCssToInline($mailer->Body); + //To convert image url to valid + $mailer->Body = Emails_Mailer_Model::makeImageURLValid($mailer->Body); if ($addToQueue) { $status = $mailer->Send(false, $this->get('parent_id')); } else { @@ -186,28 +186,28 @@ class Emails_Record_Model extends Vtiger_Record_Model { } if(!$status) { $status = $mailer->getError(); - //If mailer error, then update emailflag as saved - if($status){ - $this->updateEmailFlag(); - } + //If mailer error, then update emailflag as saved + if($status){ + $this->updateEmailFlag(); + } } else { - //If mail sending is success store message Id for given crmId - if($generatedMessageId && $id){ - $mailer->updateMessageIdByCrmId($generatedMessageId,$id); - } - - $mailString=$mailer->getMailString(); - $mailBoxModel = MailManager_Mailbox_Model::activeInstance(); - $folderName = $mailBoxModel->folder(); - if(!empty($folderName) && !empty($mailString)) { - $connector = MailManager_Connector_Connector::connectorWithModel($mailBoxModel, ''); - $message = str_replace("\n", "\r\n", $mailString); + //If mail sending is success store message Id for given crmId + if($generatedMessageId && $id){ + $mailer->updateMessageIdByCrmId($generatedMessageId,$id); + } + + $mailString=$mailer->getMailString(); + $mailBoxModel = MailManager_Mailbox_Model::activeInstance(); + $folderName = $mailBoxModel->folder(); + if(!empty($folderName) && !empty($mailString)) { + $connector = MailManager_Connector_Connector::connectorWithModel($mailBoxModel, ''); + $message = str_replace("\n", "\r\n", $mailString); if (function_exists('mb_convert_encoding')) { $folderName = mb_convert_encoding($folderName, "UTF7-IMAP", "UTF-8"); } - imap_append($connector->mBox, $connector->mBoxUrl.$folderName, $message, "\\Seen"); - } - } + imap_append($connector->mBox, $connector->mBoxUrl.$folderName, $message, "\\Seen"); + } + } } return $status; } @@ -228,7 +228,7 @@ class Emails_Record_Model extends Vtiger_Record_Model { if (empty($fromEmail)) $fromEmail = $currentUserModel->get('email1'); return $fromEmail; } - + /** * Function returns the attachment details for a email * @return <Array> List of attachments @@ -240,22 +240,22 @@ class Emails_Record_Model extends Vtiger_Record_Model { INNER JOIN vtiger_seattachmentsrel ON vtiger_attachments.attachmentsid = vtiger_seattachmentsrel.attachmentsid WHERE vtiger_seattachmentsrel.crmid = ?", array($this->getId())); $numOfRows = $db->num_rows($attachmentRes); - $attachmentsList = array(); + $attachmentsList = array(); if($numOfRows) { for($i=0; $i<$numOfRows; $i++) { $attachmentsList[$i]['fileid'] = $db->query_result($attachmentRes, $i, 'attachmentsid'); $attachmentsList[$i]['attachment'] = decode_html($db->query_result($attachmentRes, $i, 'name')); - $path = $db->query_result($attachmentRes, $i, 'path'); + $path = $db->query_result($attachmentRes, $i, 'path'); $attachmentsList[$i]['path'] = $path; - $attachmentsList[$i]['size'] = filesize($path.$attachmentsList[$i]['fileid'].'_'.$attachmentsList[$i]['attachment']); - $attachmentsList[$i]['type'] = $db->query_result($attachmentRes, $i, 'type'); + $attachmentsList[$i]['size'] = filesize($path.$attachmentsList[$i]['fileid'].'_'.$attachmentsList[$i]['attachment']); + $attachmentsList[$i]['type'] = $db->query_result($attachmentRes, $i, 'type'); $attachmentsList[$i]['cid'] = $db->query_result($attachmentRes, $i, 'cid'); } } $documentsList = $this->getRelatedDocuments(); - //Attachments are getting duplicated when forwarding a mail in Mail Manager. + //Attachments are getting duplicated when forwarding a mail in Mail Manager. if($documentsList) { foreach ($documentsList as $document) { $flag = false; @@ -286,7 +286,7 @@ class Emails_Record_Model extends Vtiger_Record_Model { INNER JOIN vtiger_attachments ON vtiger_attachments.attachmentsid = vtiger_seattachmentsrel.attachmentsid WHERE vtiger_crmentity.deleted = 0", array($this->getId())); $numOfRows = $db->num_rows($documentRes); - + $documentsList = array(); if($numOfRows) { for($i=0; $i<$numOfRows; $i++) { @@ -297,7 +297,7 @@ class Emails_Record_Model extends Vtiger_Record_Model { $documentsList[$i]['path'] = $db->query_result($documentRes, $i, 'path'); $documentsList[$i]['fileid'] = $db->query_result($documentRes, $i, 'attachmentsid'); $documentsList[$i]['attachment'] = decode_html($db->query_result($documentRes, $i, 'name')); - $documentsList[$i]['type'] = $db->query_result($documentRes, $i, 'type'); + $documentsList[$i]['type'] = $db->query_result($documentRes, $i, 'type'); } } return $documentsList; @@ -334,42 +334,42 @@ class Emails_Record_Model extends Vtiger_Record_Model { } } - /** - * Function which will remove all the exising document links with email - * @param <Array> $idList - array of ids - */ - public function deleteDocumentLink($idList = array()){ - $db = PearDatabase::getInstance(); - $query = 'DELETE FROM vtiger_senotesrel where crmid=?'; - $params = array($this->getId()); - if(count($idList) > 0) { - $query .= 'AND notesid IN ('.generateQuestionMarks($idList).')'; - $params = array_merge($params,$idList); - } - $db->pquery($query,$params); - } - - /** - * Function which will delete the existing attachments for the emails - * @param <Array> $emailAttachmentDetails - array of value which will be having fileid key as attachement id which need to be deleted - */ - public function deleteAttachment($emailAttachmentDetails = array()) { - $db = PearDatabase::getInstance(); - - if(count($emailAttachmentDetails) <= 0) { - return; - } - $attachmentIdList = array(); - foreach($emailAttachmentDetails as $index => $attachInfo){ - $attachmentIdList[] = $attachInfo['fileid']; - } - - $db->pquery('UPDATE vtiger_crmentity SET deleted=0 WHERE crmid IN('.generateQuestionMarks($attachmentIdList).')',$attachmentIdList); - $db->pquery('DELETE FROM vtiger_attachments WHERE attachmentsid IN('.generateQuestionMarks($attachmentIdList).')',$attachmentIdList); - $db->pquery('DELETE FROM vtiger_seattachmentsrel WHERE crmid=? and attachmentsid IN('.generateQuestionMarks($attachmentIdList).')', - array_merge(array($this->getId()),$attachmentIdList)); - - } + /** + * Function which will remove all the exising document links with email + * @param <Array> $idList - array of ids + */ + public function deleteDocumentLink($idList = array()){ + $db = PearDatabase::getInstance(); + $query = 'DELETE FROM vtiger_senotesrel where crmid=?'; + $params = array($this->getId()); + if(count($idList) > 0) { + $query .= 'AND notesid IN ('.generateQuestionMarks($idList).')'; + $params = array_merge($params,$idList); + } + $db->pquery($query,$params); + } + + /** + * Function which will delete the existing attachments for the emails + * @param <Array> $emailAttachmentDetails - array of value which will be having fileid key as attachement id which need to be deleted + */ + public function deleteAttachment($emailAttachmentDetails = array()) { + $db = PearDatabase::getInstance(); + + if(count($emailAttachmentDetails) <= 0) { + return; + } + $attachmentIdList = array(); + foreach($emailAttachmentDetails as $index => $attachInfo){ + $attachmentIdList[] = $attachInfo['fileid']; + } + + $db->pquery('UPDATE vtiger_crmentity SET deleted=0 WHERE crmid IN('.generateQuestionMarks($attachmentIdList).')',$attachmentIdList); + $db->pquery('DELETE FROM vtiger_attachments WHERE attachmentsid IN('.generateQuestionMarks($attachmentIdList).')',$attachmentIdList); + $db->pquery('DELETE FROM vtiger_seattachmentsrel WHERE crmid=? and attachmentsid IN('.generateQuestionMarks($attachmentIdList).')', + array_merge(array($this->getId()),$attachmentIdList)); + + } /** * Function to check the total size of files is morethan max upload size or not @@ -411,7 +411,7 @@ class Emails_Record_Model extends Vtiger_Record_Model { // return open tracking shorturl only if email tracking is enabled in configuration editor if($emailTrack){ $emailId = $this->getId(); - $imageDetails = Vtiger_Functions::getTrackImageContent($emailId, $crmId); + $imageDetails = Vtiger_Functions::getTrackImageContent($emailId, $crmId); return $imageDetails; } else { return null; @@ -449,7 +449,7 @@ class Emails_Record_Model extends Vtiger_Record_Model { $db->pquery("INSERT INTO vtiger_email_track(crmid, mailid, access_count) values(?, ?, ?)", array($parentId, $recordId, 1)); } } - + /** * Function to set Access count value by default as 0 */ @@ -504,7 +504,7 @@ class Emails_Record_Model extends Vtiger_Record_Model { } public function getEmailFlag() { - if(!array_key_exists('email_flag', $this->getData())) { + if(!array_key_exists('email_flag', $this->getData())) { $db = PearDatabase::getInstance(); $result = $db->pquery("SELECT email_flag FROM vtiger_emaildetails WHERE emailid = ?", array($this->getId())); if($db->num_rows($result) > 0) { @@ -513,9 +513,9 @@ class Emails_Record_Model extends Vtiger_Record_Model { return false; } } - return $this->get('email_flag'); - } - + return $this->get('email_flag'); + } + function getEntityType($id) { $db = PearDatabase::getInstance(); $moduleModel = $this->getModule(); @@ -630,8 +630,8 @@ class Emails_Record_Model extends Vtiger_Record_Model { } else { return false; } - } - + } + public function convertUrlsToTrackUrls($content, $crmid, $type = 'html') { if ($this->isEmailTrackEnabled()) { $extractedUrls = Vtiger_Functions::getUrlsFromHtml($content); @@ -671,64 +671,64 @@ class Emails_Record_Model extends Vtiger_Record_Model { return $trackURL; } - /** - * Function to save email lookup value for searching - * @param type $fieldName - * @param type $values - */ + /** + * Function to save email lookup value for searching + * @param type $fieldName + * @param type $values + */ function recieveEmailLookup($fieldId, $values) { - $db = PearDatabase::getInstance(); + $db = PearDatabase::getInstance(); $params = array($values['crmid'], $values['setype'], $values[$fieldId], $fieldId); - $db->pquery('INSERT INTO vtiger_emailslookup - (crmid, setype, value, fieldid) - VALUES(?,?,?,?) - ON DUPLICATE KEY + $db->pquery('INSERT INTO vtiger_emailslookup + (crmid, setype, value, fieldid) + VALUES(?,?,?,?) + ON DUPLICATE KEY UPDATE value=VALUES(value)', $params); - } + } - /** - * Function to delete email lookup value for searching - * @param type $crmid - * @param type $fieldid - */ + /** + * Function to delete email lookup value for searching + * @param type $crmid + * @param type $fieldid + */ function deleteEmailLookup($crmid, $fieldid = false) { - $db = PearDatabase::getInstance(); + $db = PearDatabase::getInstance(); if ($fieldid) { - $params = array($crmid, $fieldid); - $db->pquery('DELETE FROM vtiger_emailslookup WHERE crmid=? AND fieldid=?', $params); + $params = array($crmid, $fieldid); + $db->pquery('DELETE FROM vtiger_emailslookup WHERE crmid=? AND fieldid=?', $params); } else { $params = array($crmid); $db->pquery('DELETE FROM vtiger_emailslookup WHERE crmid=?', $params); - } - } + } + } - /** - * Function to update Email flag if SMTP fails - */ + /** + * Function to update Email flag if SMTP fails + */ public function updateEmailFlag() { - $db = PearDatabase::getInstance(); + $db = PearDatabase::getInstance(); $query = 'UPDATE vtiger_emaildetails SET email_flag="SAVED" WHERE emailid=?'; $db->pquery($query, array($this->get('id'))); - } - - function replaceMergeTags($id) { - $currentUserModel = Users_Record_Model::getCurrentUserModel(); - $entityType = $this->getEntityType($id); - - $description = getMergedDescription($this->get('description'), $currentUserModel->getId(), 'Users'); - $subject = getMergedDescription($this->get('subject'), $currentUserModel->getId(), 'Users'); - - $description = getMergedDescription($description, $id, $entityType); - $subject = getMergedDescription($subject, $id, $entityType); - - if (strpos($description, '$logo$')) { + } + + function replaceMergeTags($id) { + $currentUserModel = Users_Record_Model::getCurrentUserModel(); + $entityType = $this->getEntityType($id); + + $description = getMergedDescription($this->get('description'), $currentUserModel->getId(), 'Users'); + $subject = getMergedDescription($this->get('subject'), $currentUserModel->getId(), 'Users'); + + $description = getMergedDescription($description, $id, $entityType); + $subject = getMergedDescription($subject, $id, $entityType); + + if (strpos($description, '$logo$')) { $description = str_replace('$logo$', "<img src='cid:logo' />", $description); } - $this->set('description', $description); - $this->set('subject', strip_tags($subject)); - } + $this->set('description', $description); + $this->set('subject', strip_tags($subject)); + } function getReplyToEmail() { $db = PearDatabase::getInstance(); diff --git a/modules/Emails/views/MassSaveAjax.php b/modules/Emails/views/MassSaveAjax.php index 8a5666c41..e5b431571 100644 --- a/modules/Emails/views/MassSaveAjax.php +++ b/modules/Emails/views/MassSaveAjax.php @@ -129,7 +129,7 @@ class Emails_MassSaveAjax_View extends Vtiger_Footer_View { $content = $request->getRaw('description'); $processedContent = Emails_Mailer_Model::getProcessedContent($content); // To remove script tags $mailerInstance = Emails_Mailer_Model::getInstance(); - $processedContentWithURLS = $mailerInstance->convertToValidURL($processedContent); + $processedContentWithURLS = decode_html($mailerInstance->convertToValidURL($processedContent)); $recordModel->set('description', $processedContentWithURLS); $recordModel->set('subject', $request->get('subject')); $recordModel->set('toMailNamesList',$request->get('toMailNamesList')); @@ -233,6 +233,7 @@ class Emails_MassSaveAjax_View extends Vtiger_Footer_View { } $viewer->assign('SUCCESS', $success); $viewer->assign('MESSAGE', $message); + $viewer->assign('FLAG', $flag); $viewer->assign('MODULE',$moduleName); $loadRelatedList = $request->get('related_load'); if(!empty($loadRelatedList)){ diff --git a/modules/Migration/schema/660_to_700.php b/modules/Migration/schema/660_to_700.php index fc5eba243..54b4be280 100644 --- a/modules/Migration/schema/660_to_700.php +++ b/modules/Migration/schema/660_to_700.php @@ -85,7 +85,7 @@ if(defined('VTIGER_UPGRADE')) { $itemFieldsDisplayType = array('56', '71', '71'); $itemFieldsDataType = array('VARCHAR(2)', 'decimal(27,8)', 'decimal(27,8)'); - $fieldIdsList = $moduleIdsList = array(); + $fieldIdsList = array(); foreach ($inventoryModules as $moduleName) { $moduleInstance = Vtiger_Module::getInstance($moduleName); $blockInstance = Vtiger_Block::getInstance('LBL_ITEM_DETAILS', $moduleInstance); @@ -117,7 +117,6 @@ if(defined('VTIGER_UPGRADE')) { $fieldIdsList[] = $fieldInstance->id; } } - $moduleIdsList[] = $moduleInstance->id; } $columns = $db->getColumnNames('vtiger_products'); @@ -136,7 +135,9 @@ if(defined('VTIGER_UPGRADE')) { $columns = $db->getColumnNames('vtiger_calendar_default_activitytypes'); if (!in_array('isdefault', $columns)) { $db->pquery('ALTER TABLE vtiger_calendar_default_activitytypes ADD COLUMN isdefault INT(11) DEFAULT 1', array()); - echo 'added isdefault column to vtiger_calendar_default_activitytypes'; + } + if (!in_array('conditions', $columns)) { + $db->pquery('ALTER TABLE vtiger_calendar_default_activitytypes ADD COLUMN conditions VARCHAR(255) DEFAULT ""', array()); } $updateList = array(); @@ -151,7 +152,6 @@ if(defined('VTIGER_UPGRADE')) { foreach ($updateList as $list) { $db->pquery('UPDATE vtiger_calendar_default_activitytypes SET fieldname=? WHERE module=? AND fieldname=? AND isdefault=?', array(Zend_Json::encode($list['newfieldname']), $list['module'], $list['fieldname'], '1')); - echo '<br/> Updating Default Activity Types with proper field names'; } $model = Settings_Vtiger_TermsAndConditions_Model::getInstance('Inventory'); @@ -165,46 +165,43 @@ if(defined('VTIGER_UPGRADE')) { $model->setType($moduleName); $model->save(); } - echo '<br>Successfully Done : Different terms and conditions for all inventory modules<br>'; $columns = $db->getColumnNames('vtiger_import_queue'); if (!in_array('lineitem_currency_id', $columns)) { $db->pquery('ALTER TABLE vtiger_import_queue ADD COLUMN lineitem_currency_id INT(5)', array()); - echo '<br> Added lineitem_currency_id column in vtiger_import_queue table'; } if (!in_array('paging', $columns)) { $db->pquery('ALTER TABLE vtiger_import_queue ADD COLUMN paging INT(1) DEFAULT 0', array()); } - $moduleName = 'Documents'; - $moduleInstance = Vtiger_Module::getInstance($moduleName); - if ($moduleInstance) { - $moduleInstance->setRelatedList(Vtiger_Module::getInstance('Contacts'), 'Contacts', true); - $moduleInstance->setRelatedList(Vtiger_Module::getInstance('Accounts'), 'Accounts', true); - $moduleInstance->setRelatedList(Vtiger_Module::getInstance('Potentials'), 'Potentials', true); - $moduleInstance->setRelatedList(Vtiger_Module::getInstance('Leads'), 'Leads', true); - $moduleInstance->setRelatedList(Vtiger_Module::getInstance('Products'), 'Products', true); - $moduleInstance->setRelatedList(Vtiger_Module::getInstance('Services'), 'Services', true); - $moduleInstance->setRelatedList(Vtiger_Module::getInstance('Project'), 'Project', true); - $moduleInstance->setRelatedList(Vtiger_Module::getInstance('Assets'), 'Assets', true); - $moduleInstance->setRelatedList(Vtiger_Module::getInstance('ServiceContracts'), 'ServiceContracts', true); - $moduleInstance->setRelatedList(Vtiger_Module::getInstance('Quotes'), 'Quotes', true); - $moduleInstance->setRelatedList(Vtiger_Module::getInstance('Invoice'), 'Invoice', true); - $moduleInstance->setRelatedList(Vtiger_Module::getInstance('SalesOrder'), 'SalesOrder', true); - $moduleInstance->setRelatedList(Vtiger_Module::getInstance('PurchaseOrder'), 'PurchaseOrder', true); - $moduleInstance->setRelatedList(Vtiger_Module::getInstance('HelpDesk'), 'HelpDesk', true); - $moduleInstance->setRelatedList(Vtiger_Module::getInstance('Faq'), 'Faq', true); - echo "<br> Related Lists created for Documents module"; + $documentsInstance = Vtiger_Module::getInstance('Documents'); + if ($documentsInstance) { + $documentsInstance->setRelatedList(Vtiger_Module::getInstance('Contacts'), 'Contacts', true); + $documentsInstance->setRelatedList(Vtiger_Module::getInstance('Accounts'), 'Accounts', true); + $documentsInstance->setRelatedList(Vtiger_Module::getInstance('Potentials'), 'Potentials', true); + $documentsInstance->setRelatedList(Vtiger_Module::getInstance('Leads'), 'Leads', true); + $documentsInstance->setRelatedList(Vtiger_Module::getInstance('Products'), 'Products', true); + $documentsInstance->setRelatedList(Vtiger_Module::getInstance('Services'), 'Services', true); + $documentsInstance->setRelatedList(Vtiger_Module::getInstance('Project'), 'Project', true); + $documentsInstance->setRelatedList(Vtiger_Module::getInstance('Assets'), 'Assets', true); + $documentsInstance->setRelatedList(Vtiger_Module::getInstance('ServiceContracts'), 'ServiceContracts', true); + $documentsInstance->setRelatedList(Vtiger_Module::getInstance('Quotes'), 'Quotes', true); + $documentsInstance->setRelatedList(Vtiger_Module::getInstance('Invoice'), 'Invoice', true); + $documentsInstance->setRelatedList(Vtiger_Module::getInstance('SalesOrder'), 'SalesOrder', true); + $documentsInstance->setRelatedList(Vtiger_Module::getInstance('PurchaseOrder'), 'PurchaseOrder', true); + $documentsInstance->setRelatedList(Vtiger_Module::getInstance('HelpDesk'), 'HelpDesk', true); + $documentsInstance->setRelatedList(Vtiger_Module::getInstance('Faq'), 'Faq', true); } $columns = $db->getColumnNames('vtiger_relatedlists'); if (!in_array('relationfieldid', $columns)) { $db->pquery('ALTER TABLE vtiger_relatedlists ADD COLUMN relationfieldid INT(18)', array()); - echo '<br> Added field id column in relation ships table'; } if (!in_array('source', $columns)) { $db->pquery('ALTER TABLE vtiger_relatedlists ADD COLUMN source varchar(25)', array()); - echo '<br> Added field id column in relation ships table'; + } + if (!in_array('relationtype', $columns)) { + $db->pquery('ALTER TABLE vtiger_relatedlists ADD COLUMN relationtype varchar(10)', array()); } $accountsTabId = getTabId('Accounts'); @@ -212,7 +209,7 @@ if(defined('VTIGER_UPGRADE')) { //Update relation field for existing relation ships $ignoreRelationFieldMapping = array('Emails'); - $query = 'SELECT * FROM vtiger_relatedlists order by tabid '; + $query = 'SELECT * FROM vtiger_relatedlists ORDER BY tabid '; $result = $db->pquery($query, array()); $num_rows = $db->num_rows($result); $relationShipMapping = array(); @@ -250,12 +247,6 @@ if(defined('VTIGER_UPGRADE')) { } } - $columns = $db->getColumnNames('vtiger_emailtemplates'); - if (!in_array('systemtemplate', $columns)) { - $db->pquery('ALTER TABLE vtiger_emailtemplates ADD COLUMN systemtemplate INT(1) NOT NULL DEFAULT 0', array()); - echo '</br></br>Systemtemplate column added successfully for vtiger_emailtemplates </br>'; - } - $moduleName = 'Calendar'; $inviteUsersTemplate = $db->pquery('SELECT * FROM vtiger_emailtemplates WHERE subject=?', array('Invitation')); $rows = $db->num_rows($inviteUsersTemplate); @@ -276,17 +267,15 @@ if(defined('VTIGER_UPGRADE')) { $current_user_name$ <p/>'; $db->pquery('INSERT INTO vtiger_emailtemplates(foldername,templatename,subject,description,body,systemtemplate) values(?,?,?,?,?,?)', array('Public', 'Invite Users', 'Invitation', 'Invite Users', $body, '1')); - echo '</br> Invite users email template added successfully </br>'; } - if(!Vtiger_Utils::CheckTable('vtiger_emailslookup')) { + if (!Vtiger_Utils::CheckTable('vtiger_emailslookup')) { $query = 'CREATE TABLE vtiger_emailslookup(crmid int(20) DEFAULT NULL, setype varchar(30) DEFAULT NULL, value varchar(100) DEFAULT NULL, fieldid int(20) DEFAULT NULL, UNIQUE KEY emailslookup_crmid_setype_fieldname_uk (crmid,setype,fieldid), KEY emailslookup_fieldid_setype_idx (fieldid, setype), CONSTRAINT emailslookup_crmid_fk FOREIGN KEY (crmid) REFERENCES vtiger_crmentity (crmid) ON DELETE CASCADE)'; $db->pquery($query, array()); - echo 'Emails Lookup Table Created<br>'; } $EventManager = new VTEventsManager($db); @@ -294,20 +283,15 @@ if(defined('VTIGER_UPGRADE')) { $handler_path = 'modules/Vtiger/handlers/EmailLookupHandler.php'; $className = 'EmailLookupHandler'; $EventManager->registerHandler($createEvent, $handler_path, $className, '', '["VTEntityDelta"]'); - echo 'After Save Event Added<br>'; $deleteEvent = 'vtiger.entity.afterdelete'; $EventManager->registerHandler($deleteEvent, $handler_path, $className, ''); - echo 'After delete Event Added<br>'; $restoreEvent = 'vtiger.entity.afterrestore'; $EventManager->registerHandler($restoreEvent, $handler_path, $className, ''); - echo 'After restore Event Added<br>'; $createBatchEvent = 'vtiger.batchevent.save'; - $batchEventClassName = 'EmailLookupBatchHandler'; - $EventManager->registerHandler($createBatchEvent, $handler_path, $batchEventClassName, ''); - echo 'Batch Event Added</br>'; + $EventManager->registerHandler($createBatchEvent, $handler_path, 'EmailLookupBatchHandler', ''); $EmailsModuleModel = Vtiger_Module_Model::getInstance('Emails'); $emailSupportedModulesList = $EmailsModuleModel->getEmailRelatedModules(); @@ -339,23 +323,19 @@ if(defined('VTIGER_UPGRADE')) { } } } - echo 'All the missing entries added in Email Lookup table'; $massEditSql = 'UPDATE vtiger_field SET masseditable=0 WHERE fieldname IN(?,?,?,?)'; $db->pquery($massEditSql, array('created_user_id', 'createdtime', 'modifiedtime', 'modifiedby')); - echo '<br>Layout Editor Mass Editable option Issue fixed!<br>'; $db->pquery('UPDATE vtiger_eventhandlers SET is_active = 1 WHERE handler_class=?', array('ModTrackerHandler')); Vtiger_Link_Model::deleteLink('0', 'DETAILVIEWBASIC', 'Print'); $db->pquery('ALTER TABLE vtiger_emailtemplates MODIFY COLUMN subject VARCHAR(255)', array()); $db->pquery('ALTER TABLE vtiger_activity MODIFY COLUMN subject VARCHAR(255)', array()); - echo '<br>subject length from email templates and emails increased from varchar(100) to varchar(255)'; //Start: Update Currency symbol for Egypt $db->pquery('UPDATE vtiger_currencies SET currency_symbol=? WHERE currency_name=?', array('E£', 'Egypt, Pounds')); $db->pquery('UPDATE vtiger_currency_info SET currency_symbol=? WHERE currency_name=?', array('E£', 'Egypt, Pounds')); - echo '<br>Currency symbol updated for Egypt<br>'; //setting is_private value of comments to 0 if internal comments is not supported for that module $commentIds = array(); @@ -370,7 +350,6 @@ if(defined('VTIGER_UPGRADE')) { } if (count($commentIds) > 0) { $db->pquery('UPDATE vtiger_modcomments SET is_private = 0 WHERE modcommentsid IN ('.generateQuestionMarks($commentIds).')', $commentIds); - echo 'internal comment updated from non-supported modules.<br>'; } //Start - Add Contact Name to Default filter of project $cvidQuery = $db->pquery('SELECT cvid FROM vtiger_customview where viewname=? AND entitytype=?', array('All', 'Project')); @@ -381,7 +360,6 @@ if(defined('VTIGER_UPGRADE')) { $columnIndexQuery = $db->pquery('SELECT MAX(columnindex) AS columnindex FROM vtiger_cvcolumnlist WHERE cvid=?', array($row['cvid'])); $colIndex = $db->fetch_array($columnIndexQuery); $db->pquery('INSERT INTO vtiger_cvcolumnlist(cvid,columnindex,columnname) VALUES(?,?,?)', array($row['cvid'], $colIndex['columnindex']+11, 'vtiger_project:contactid:contactid:Project_Contact_Name:V')); - echo 'Contact Name is added to default filter of project'; } } //End @@ -401,7 +379,6 @@ if(defined('VTIGER_UPGRADE')) { if ($db->num_rows($result) == 0) { $inventoryModuleInstance = Vtiger_Module::getInstance($inventoryModule); $inventoryModuleInstance->setRelatedList($modcommentsInstance, 'ModComments', array(), 'get_comments', $modcommentFieldId); - echo "<br> Comments related Tab added Successfully for $inventoryModule <br>"; $commentSequence = 1; $query = 'UPDATE vtiger_relatedlists SET sequence=? WHERE tabid=? AND related_tabid=?'; @@ -418,7 +395,6 @@ if(defined('VTIGER_UPGRADE')) { $query = 'UPDATE vtiger_relatedlists SET sequence=? WHERE tabid=? AND relation_id=?'; $db->pquery($query, array($sequence, $tabid, $relationId)); } - echo "Rearranged Related tab sequence for $inventoryModule <br>"; } } @@ -444,12 +420,10 @@ if(defined('VTIGER_UPGRADE')) { $db->pquery($sql, array_merge(array(1, 0, $tabid), $headerFields)); } } - echo '<br>Header fields set</br>'; //Update Calendar time_start as mandatory. $updateQuery = 'UPDATE vtiger_field SET typeofdata=? WHERE fieldname=? AND tabid=?'; $db->pquery($updateQuery, array('T~M', 'time_start', getTabid('Calendar'))); - echo '<br>time_start field for Calendar module is updated.'; $result = $db->pquery('SELECT name FROM vtiger_tab WHERE isentitytype=?', array(1)); while ($row = $db->fetchByAssoc($result)) { @@ -484,25 +458,19 @@ if(defined('VTIGER_UPGRADE')) { $field->quickcreate = 3; $field->masseditable = 0; $blockInstance->addField($field); - echo "Record Source field added for $module<br>"; } - } else { - echo "Unable to find $module instance<br>"; } } $projectModule = Vtiger_Module_Model::getInstance('Project'); $emailModule = Vtiger_Module_Model::getInstance('Emails'); $projectModule->setRelatedList($emailModule, 'Emails', 'ADD', 'get_emails'); - echo '<br>Emails Tab added for Projects module!<br>'; $projectTaskModule = Vtiger_Module_Model::getInstance('ProjectTask'); $projectTaskModule->setRelatedList($emailModule, 'Emails', 'ADD', 'get_emails'); - echo '<br>Emails Tab added for ProjectTaks module!<br>'; $sql = "CREATE TABLE IF NOT EXISTS vtiger_emails_recipientprefs(`id` INT(11) NOT NULL AUTO_INCREMENT,`tabid` INT(11) NOT NULL, `prefs` VARCHAR(255) NULL DEFAULT NULL, `userid` INT(11), PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8"; $db->pquery($sql, array()); - echo '<br>Recipient Preferences table added!<br>'; //To change the convert lead webserice operation parameters which was wrong earliear require_once 'include/Webservices/Utils.php'; @@ -511,7 +479,6 @@ if(defined('VTIGER_UPGRADE')) { $operationId = $db->query_result($convertLeadOperationQueryRes, '0', 'operationid'); $deleteParameterQuery = $db->pquery('DELETE FROM vtiger_ws_operation_parameters WHERE operationid=?', array($operationId)); vtws_addWebserviceOperationParam($operationId, 'element', 'encoded', 1); - echo '<br> Changed the parameters for convert lead'; } //Start : Change fieldLabel of description field to Description - Project module. @@ -519,10 +486,8 @@ if(defined('VTIGER_UPGRADE')) { $fieldModel = Vtiger_Field_Model::getInstance($fieldId); $fieldModel->set('label', 'Description'); $fieldModel->__update(); - echo '<br>fieldLabel of description field changed to Description</br>'; $db->pquery('ALTER TABLE vtiger_mail_accounts MODIFY mail_password TEXT', array()); - echo 'Mail Manager password column type changed to TEXT.<br>'; //making priority as mandatory field in Tickets. $module = 'HelpDesk'; @@ -619,7 +584,6 @@ if(defined('VTIGER_UPGRADE')) { $encodedWidgets = json_encode($availableWidgets); $encodedCharts = json_encode($availableCharts); $db->pquery('INSERT INTO vtiger_customerportal_settings(id,default_assignee,shortcuts,widgets,charts) VALUES(?,?,?,?,?)', array(1, 1, $encodedShortcuts, $encodedWidgets, $encodedCharts)); - echo 'Portal default shortcusts added<br>'; } $query = 'ALTER TABLE vtiger_portalinfo MODIFY user_password VARCHAR(255)'; @@ -677,7 +641,6 @@ if(defined('VTIGER_UPGRADE')) { foreach ($operation['params'] as $param) { vtws_addWebserviceOperationParam($operationId, $param['name'], $param['type'], $sequence++); } - echo 'Enable operation '.$operation['name']."\n"; } //Change to modify shipping tax percent column type $db->pquery('ALTER TABLE vtiger_invoice MODIFY s_h_percent DECIMAL(25,8)', array()); @@ -703,18 +666,16 @@ if(defined('VTIGER_UPGRADE')) { //Increasing Lead Status column size to 200 for Leads module $db->pquery('ALTER TABLE vtiger_leaddetails MODIFY leadstatus VARCHAR(200)', array()); - echo '<br>Lead Status column size changed to 200 for Leads module.'; //Start : Increase tablabel and setype size $db->pquery('ALTER TABLE vtiger_tab MODIFY tablabel VARCHAR(100)', array()); $db->pquery('ALTER TABLE vtiger_crmentity MODIFY setype VARCHAR(100)', array()); - echo '<br>tablabel and setype size increased to varchar(100)'; //Changing type of data for Used Units and Total Units fields of Service Contracts module to Decimal $fields = array('total_units', 'used_units'); - $moduleModel = Vtiger_Module_Model::getInstance('ServiceContracts'); + $serviceContractsModuleModel = Vtiger_Module_Model::getInstance('ServiceContracts'); foreach ($fields as $field) { - $fieldInstance = $moduleModel->getField($field); + $fieldInstance = $serviceContractsModuleModel->getField($field); $typeOfData = 'NN~O'; if ($fieldInstance->isMandatory()) { $typeOfData = 'NN~M'; @@ -722,29 +683,25 @@ if(defined('VTIGER_UPGRADE')) { $fieldInstance->set('typeofdata', $typeOfData); $fieldInstance->save(); } - echo 'Total Units and Used Units field type changed to Double for ServiceContracts module.<br>'; //Creating new reminder block in calendar todo $moduleName = 'Calendar'; - $moduleInstance = Vtiger_Module_Model::getInstance($moduleName); - $tabId = $moduleInstance->getId(); + $calendarInstance = Vtiger_Module_Model::getInstance($moduleName); + $tabId = $calendarInstance->getId(); //Updates sequence of blocks available in users module. Vtiger_Block_Model::pushDown('1', $tabId); - echo '<br> Block sequences updated for calendar module'; if (!Vtiger_Block_Model::checkDuplicate('LBL_REMINDER_INFORMATION', $tabId)) { $reminderBlock = new Vtiger_Block(); $reminderBlock->label = 'LBL_REMINDER_INFORMATION'; $reminderBlock->sequence = 2; - $moduleInstance->addBlock($reminderBlock); - echo '<br> Reminder block added'; + $calendarInstance->addBlock($reminderBlock); } //updating block and displaytype for send reminder field - $reminderBlockInstance = Vtiger_Block_Model::getInstance('LBL_REMINDER_INFORMATION', $moduleInstance); + $reminderBlockInstance = Vtiger_Block_Model::getInstance('LBL_REMINDER_INFORMATION', $calendarInstance); $db->pquery('UPDATE vtiger_field SET block=?, displaytype=? WHERE tabid=? AND fieldname=?', array($reminderBlockInstance->id, '1', $tabId, 'reminder_time')); - echo '<br> updated displaytype and block for Reminder field'; //adding new reminder template for todo $reminderTemplate = $db->pquery('SELECT * FROM vtiger_emailtemplates WHERE subject=? AND systemtemplate=?', array('Activity Reminder', '1')); @@ -760,11 +717,9 @@ if(defined('VTIGER_UPGRADE')) { '.vtranslate('LBL_APP_DESCRIPTION', $moduleName).' : $calendar-description$<br/><br/> <p/>'; $db->pquery('INSERT INTO vtiger_emailtemplates(foldername,templatename,subject,description,body,systemtemplate,templateid) values(?,?,?,?,?,?,?)', array('Public', 'ToDo Reminder', 'Activity Reminder', 'Reminder', $body, '1', $db->getUniqueID('vtiger_emailtemplates'))); - echo '</br> Activity Reminder email template added successfully </br>'; } $db->pquery('ALTER TABLE vtiger_webforms_field MODIFY COLUMN defaultvalue TEXT', array()); - echo 'webforms default column changed to text.'; $integrationBlock = $db->pquery('SELECT * FROM vtiger_settings_blocks WHERE label=?', array('LBL_OTHER_SETTINGS')); $integrationBlockCount = $db->num_rows($integrationBlock); @@ -774,7 +729,6 @@ if(defined('VTIGER_UPGRADE')) { //To add a Field $fieldid = $db->getUniqueID('vtiger_settings_field'); $db->pquery('INSERT INTO vtiger_settings_field(fieldid, blockid, name, iconpath, description, linkto, sequence, active) VALUES(?,?,?,?,?,?,?,?)', array($fieldid, $blockid, 'LBL_MAILROOM', '', 'Mailroom', 'index.php?module=Mailroom&parent=Settings&view=List', 12, 0)); - echo 'Link Added'; } //Rollup Comments Settings table @@ -795,12 +749,10 @@ if(defined('VTIGER_UPGRADE')) { $taxFieldModel->set('quickcreate', 2); $taxFieldModel->save(); } - echo '<br>Products supporting mass edit and quick create<br>'; $columns = $db->getColumnNames('com_vtiger_workflowtask_queue'); if (!in_array('relatedinfo', $columns)) { $db->pquery('ALTER TABLE com_vtiger_workflowtask_queue ADD COLUMN relatedinfo VARCHAR(255)', array()); - echo 'RelatedInfo column added <br>'; } $db->pquery('ALTER TABLE vtiger_freetagged_objects MODIFY module VARCHAR(100)', array()); @@ -808,7 +760,6 @@ if(defined('VTIGER_UPGRADE')) { $db->pquery('ALTER TABLE vtiger_entityname MODIFY modulename VARCHAR(100)', array()); $db->pquery('ALTER TABLE vtiger_modentity_num MODIFY semodule VARCHAR(100)', array()); $db->pquery('ALTER TABLE vtiger_reportmodules MODIFY primarymodule VARCHAR(100)', array()); - echo '<br>Modulename related column size in all tables increased to VARCHAR(100)'; $calendarModuleModel = Vtiger_Module_Model::getInstance('Calendar'); $ProjectModuleModel = Vtiger_Module_Model::getInstance('Project'); @@ -828,13 +779,11 @@ if(defined('VTIGER_UPGRADE')) { if ($db->num_rows($result) <= 0) { $insertQuery = 'INSERT INTO vtiger_ws_referencetype(fieldtypeid,type) values(?,?)'; $db->pquery($insertQuery, array($fieldType, 'Project')); - echo 'Added Project to reference module list of "Related To" field of Calendar Successfully'; } if ($relationModel->get('relationfieldid') == null) { $query = 'UPDATE vtiger_relatedlists SET relationfieldid=? ,name=?, relationtype=? WHERE tabid=? AND related_tabid=?'; $db->pquery($query, array($fieldId, 'get_activities', '1:N', $projectTabId, $calendarTabId)); - echo 'Updated relation field id to "Related To" field ID od Calendar Successfully'; } //Migrate data from vtiger_crmentityrel to vtiger_seactivityrel @@ -859,7 +808,6 @@ if(defined('VTIGER_UPGRADE')) { if ($fieldModel) { $fieldModel->set('presence', 1); $fieldModel->__update(); - echo '<br>update_log field inactivated from Ticket module</br>'; } //Start : Project added as related tab for Potentials module. @@ -872,7 +820,6 @@ if(defined('VTIGER_UPGRADE')) { $potentialModuleModel = Vtiger_Module_Model::getInstance('Potentials'); $potentialModuleModel->setRelatedList($projectModuleModel, 'Projects', array('ADD', 'SELECT'), 'get_dependents_list', $fieldModel->id); } - echo 'Project added as related tab for Potentials module.<br>'; } //End @@ -882,7 +829,6 @@ if(defined('VTIGER_UPGRADE')) { if ($fieldModel) { $fieldModel->set('label', 'Description'); $fieldModel->__update(); - echo '<br>fieldLabel of description field changed to Description</br>'; } //End @@ -906,11 +852,10 @@ if(defined('VTIGER_UPGRADE')) { $criteria = ' MODIFY COLUMN click_count INT NOT NULL default 0'; Vtiger_Utils::AlterTable('vtiger_email_track', $criteria); - echo '<br>New field click_count added for vtiger_email_track table<br>'; $em = new VTEventsManager($db); $em->registerHandler('vtiger.lead.convertlead', 'modules/Leads/handlers/LeadHandler.php', 'LeadHandler'); - echo '<br>LeadHandler registered for vtiger.lead.convertlead<br>'; + Vtiger_Cache::flushModuleCache('Contacts'); Vtiger_Cache::flushModuleCache('Leads'); Vtiger_Cache::flushModuleCache('Emails'); @@ -923,7 +868,6 @@ if(defined('VTIGER_UPGRADE')) { if (!in_array('editrecord', $columns)) { $db->pquery('ALTER TABLE vtiger_customerportal_tabs ADD editrecord BOOLEAN NOT NULL DEFAULT FALSE', array()); } - echo '<br> Added two columns in customerportal tabs table.'; //Update create and edit status for HelpDesk and Assets. $updateCreateEditStatusQuery = 'UPDATE vtiger_customerportal_tabs SET createrecord=?,editrecord=? WHERE tabid IN (?)'; @@ -932,7 +876,6 @@ if(defined('VTIGER_UPGRADE')) { $db->pquery($updateCreateEditStatusQuery, array(0, 1, getTabid('Accounts'))); $db->pquery($updateCreateEditStatusQuery, array(1, 0, getTabid('Documents'))); $db->pquery($updateCreateEditStatusQuery, array(0, 1, getTabid('Assets'))); - echo '<br>Update createrecord and edit record values in customer portal tabs table for HelpDesk, Documents,Assets,Contacts,Organization'; $accessCountFieldId = getFieldid(getTabid('Emails'), 'access_count'); $accessCountFieldModel = Vtiger_Field_Model::getInstance($accessCountFieldId); @@ -940,7 +883,6 @@ if(defined('VTIGER_UPGRADE')) { $accessCountFieldModel->set('typeofdata', 'I~O'); $accessCountFieldModel->__update(); Vtiger_Cache::flushModuleCache('Emails'); - echo 'Access Count typeofdata changed to Integer(I~O).<br>'; } //Adding Create Event and Create Todo workflow tasks for Project module. @@ -953,7 +895,6 @@ if(defined('VTIGER_UPGRADE')) { $modulesJson = Zend_Json::encode($modules); $db->pquery('UPDATE com_vtiger_workflow_tasktypes SET modules=? WHERE id=?', array($modulesJson, $taskId)); } - echo 'VTCreateTodoTask and VTCreateEventTask added for Project module.<br>'; //End //Multiple attachment support for comments @@ -1048,14 +989,12 @@ if(defined('VTIGER_UPGRADE')) { '(fieldname VARCHAR(255) NOT NULL PRIMARY KEY, module VARCHAR(100) NOT NULL, transition_data VARCHAR(1000) NOT NULL)', true); - echo 'Creating table $transition_table_name ... DONE <br>'; } - $moduleName = 'ModComments'; - $moduleInstance = Vtiger_Module::getInstance($moduleName); - $blockInstance = Vtiger_Block::getInstance('LBL_MODCOMMENTS_INFORMATION', $moduleInstance); + $modCommentsInstance = Vtiger_Module::getInstance('ModComments'); + $blockInstance = Vtiger_Block::getInstance('LBL_MODCOMMENTS_INFORMATION', $modCommentsInstance); if ($blockInstance) { - $fieldInstance = Vtiger_Field::getInstance('filename', $moduleInstance); + $fieldInstance = Vtiger_Field::getInstance('filename', $modCommentsInstance); if (!$fieldInstance) { $fieldInstance = new Vtiger_Field(); $fieldInstance->name = 'filename'; @@ -1067,11 +1006,10 @@ if(defined('VTIGER_UPGRADE')) { $fieldInstance->uitype = '61'; $fieldInstance->presence = '0'; $blockInstance->addField($fieldInstance); - echo '<br>filename Field added'; } unset($fieldInstance); - $fieldInstance = Vtiger_Field::getInstance('related_email_id', $moduleInstance); + $fieldInstance = Vtiger_Field::getInstance('related_email_id', $modCommentsInstance); if (!$fieldInstance) { $fieldInstance = new Vtiger_Field(); $fieldInstance->name = 'related_email_id'; @@ -1082,7 +1020,6 @@ if(defined('VTIGER_UPGRADE')) { $fieldInstance->typeofdata = 'I~O'; $fieldInstance->defaultvalue = 0; $blockInstance->addField($fieldInstance); - echo '<br>filename Field added'; } unset($fieldInstance); } @@ -1144,11 +1081,8 @@ if(defined('VTIGER_UPGRADE')) { $field->quickcreate = 3; $field->masseditable = 0; $blockInstance->addField($field); - echo "Starred field added for $module<br>"; } } - } else { - echo "Unable to find $module instance<br>"; } } //User specific field - star feature @@ -1186,21 +1120,17 @@ if(defined('VTIGER_UPGRADE')) { $field->quickcreate = 3; $field->masseditable = 0; $blockInstance->addField($field); - echo "Tags field added for $module<br>"; } } - } else { - echo "Unable to find $module instance<br>"; } } - //Add column to track public and private for tags - if (!in_array('visibility', $db->getColumnNames('vtiger_freetags'))) { + //Add column to track public and private for tags + $columns = $db->getColumnNames('vtiger_freetags'); + if (!in_array('visibility', $columns)) { $db->pquery("ALTER TABLE vtiger_freetags ADD column visibility VARCHAR(100) NOT NULL DEFAULT 'PRIVATE'", array()); } - - $tagOwnerColumn = 'owner'; - if (!in_array('owner', $db->getColumnNames('vtiger_freetags'))) { + if (!in_array('owner', $columns)) { $db->pquery('ALTER TABLE vtiger_freetags ADD column owner INT(19) NOT NULL', array()); } @@ -1255,7 +1185,6 @@ if(defined('VTIGER_UPGRADE')) { $columns = $db->getColumnNames("vtiger_$fieldName"); if (!in_array('color', $columns)) { $db->pquery("ALTER TABLE vtiger_$fieldName ADD COLUMN color VARCHAR(10)", array()); - echo "added color column for vtiger_$fieldName table <br>"; } } @@ -1287,10 +1216,6 @@ if(defined('VTIGER_UPGRADE')) { userid int(11), UNIQUE KEY(tabname,userid), FOREIGN KEY (userid) REFERENCES vtiger_users(id) ON DELETE CASCADE)', true); - - echo 'vtiger_dashboard_tabs Created!<br>'; - } else { - echo 'vtiger_dashboard_tabs already exist!<br>'; } $users = Users_Record_Model::getAll(); @@ -1299,7 +1224,6 @@ if(defined('VTIGER_UPGRADE')) { foreach ($userIds as $userId) { $db->pquery($defaultTabQuery, array('Default', $userId, 'Default', $userId)); } - echo 'Default Tab added for all users!<br>'; $columns = $db->getColumnNames('vtiger_module_dashboard_widgets'); if (!in_array('reportid', $columns)) { @@ -1335,7 +1259,6 @@ if(defined('VTIGER_UPGRADE')) { } $db->pquery('UPDATE com_vtiger_workflows SET status=? WHERE status IS NULL', array(1)); - $columns = $db->getColumnNames('com_vtiger_workflows'); if (!in_array('workflowname', $columns)) { $db->pquery('ALTER TABLE com_vtiger_workflows ADD COLUMN workflowname VARCHAR(100)', array()); } @@ -1356,7 +1279,6 @@ if(defined('VTIGER_UPGRADE')) { $columns = $db->getColumnNames("vtiger_$fieldName"); if (!in_array('color', $columns)) { $db->pquery("ALTER TABLE vtiger_$fieldName ADD COLUMN color VARCHAR(10)", array()); - echo "added color column for vtiger_$fieldName table <br>"; } } @@ -1368,7 +1290,6 @@ if(defined('VTIGER_UPGRADE')) { $newActivityView = 'Agenda'; if (!in_array($newActivityView, $existingActivityViewTypes)) { $activityViewFieldModel->setPicklistValues(array($newActivityView)); - echo "<br>$newActivityView activity view added! <br>"; } //deleting orphan picklist fields that were delete from vtiger_field table but not from vtiger_role2picklist table @@ -1386,7 +1307,6 @@ if(defined('VTIGER_UPGRADE')) { //table name exceeds more than 50 characters. $db->pquery('ALTER TABLE vtiger_field MODIFY COLUMN tablename VARCHAR(100)', array()); - echo '<br> Successfully modified "tablename" column size to VARCHAR(100)'; if (!Vtiger_Utils::CheckTable('vtiger_report_shareusers')) { Vtiger_Utils::CreateTable('vtiger_report_shareusers', @@ -1395,7 +1315,6 @@ if(defined('VTIGER_UPGRADE')) { KEY `vtiger_report_shareusers_ibfk_1` (`reportid`), CONSTRAINT `vtiger_reports_reportid_ibfk_1` FOREIGN KEY (`reportid`) REFERENCES `vtiger_report` (`reportid`) ON DELETE CASCADE, CONSTRAINT `vtiger_users_userid_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `vtiger_users` (`id`) ON DELETE CASCADE)', true); - echo '<br> vtiger_report_shareusers Created'; } if (!Vtiger_Utils::CheckTable('vtiger_report_sharegroups')) { @@ -1405,7 +1324,6 @@ if(defined('VTIGER_UPGRADE')) { KEY `vtiger_report_sharegroups_ibfk_1` (`reportid`), CONSTRAINT `vtiger_report_reportid_ibfk_2` FOREIGN KEY (`reportid`) REFERENCES `vtiger_report` (`reportid`) ON DELETE CASCADE, CONSTRAINT `vtiger_groups_groupid_ibfk_1` FOREIGN KEY (`groupid`) REFERENCES `vtiger_groups` (`groupid`) ON DELETE CASCADE)', true); - echo '<br> vtiger_report_sharegroups Created'; } if (!Vtiger_Utils::CheckTable('vtiger_report_sharerole')) { @@ -1415,7 +1333,6 @@ if(defined('VTIGER_UPGRADE')) { KEY `vtiger_report_sharerole_ibfk_1` (`reportid`), CONSTRAINT `vtiger_report_reportid_ibfk_3` FOREIGN KEY (`reportid`) REFERENCES `vtiger_report` (`reportid`) ON DELETE CASCADE, CONSTRAINT `vtiger_role_roleid_ibfk_1` FOREIGN KEY (`roleid`) REFERENCES `vtiger_role` (`roleid`) ON DELETE CASCADE)', true); - echo '<br> vtiger_report_sharerole Created'; } if (!Vtiger_Utils::CheckTable('vtiger_report_sharers')) { @@ -1425,15 +1342,6 @@ if(defined('VTIGER_UPGRADE')) { KEY `vtiger_report_sharers_ibfk_1` (`reportid`), CONSTRAINT `vtiger_report_reportid_ibfk_4` FOREIGN KEY (`reportid`) REFERENCES `vtiger_report` (`reportid`) ON DELETE CASCADE, CONSTRAINT `vtiger_rolesd_rsid_ibfk_1` FOREIGN KEY (`rsid`) REFERENCES `vtiger_role` (`roleid`) ON DELETE CASCADE)', true); - echo '<br> vtiger_report_sharers Created'; - } - - $relationTypeFieldName = 'relationtype'; - $columns = $db->getColumnNames('vtiger_relatedlists'); - if (!in_array($relationTypeFieldName, $columns)) { - $query = "ALTER TABLE vtiger_relatedlists ADD COLUMN $relationTypeFieldName varchar(10)"; - $db->pquery($query, array()); - echo 'New field "relationtype" added successfully<br>'; } //Migrating existing relations to N:N or 1:N based on relation fieldid @@ -1442,7 +1350,6 @@ if(defined('VTIGER_UPGRADE')) { $query = "UPDATE vtiger_relatedlists SET relationtype='1:N' WHERE relationfieldid IS NOT NULL"; $result = $db->pquery($query, array()); - echo 'Migrating Relation Type for all existing relations Successfull'; // For Google Synchronization Vtiger_Link::addLink(getTabid('Contacts'), 'EXTENSIONLINK', 'Google', 'index.php?module=Contacts&view=Extension&extensionModule=Google&extensionView=Index'); @@ -1567,7 +1474,6 @@ if(defined('VTIGER_UPGRADE')) { $blockInstance->addField($fieldInstance); } } - echo '<br>Tax Calculations Feature Done<br>'; //End: Tax Enhancements - Compound Taxes, Regional Taxes, Deducted Taxes, Other Charges if (!Vtiger_Utils::CheckTable('vtiger_app2tab')) { @@ -1673,18 +1579,11 @@ if(defined('VTIGER_UPGRADE')) { $params = array($moduleTabId, $app, $seq+1); $db->pquery('UPDATE vtiger_app2tab SET sequence=? WHERE appname =? AND tabid=?', $params); } - echo "$app module sequence updated</br>"; - } - - $columns = $db->getColumnNames('vtiger_calendar_default_activitytypes'); - if (!in_array('conditions', $columns)) { - $db->pquery('ALTER TABLE vtiger_calendar_default_activitytypes ADD COLUMN conditions VARCHAR(255) DEFAULT ""', array()); } $leadsModuleInstance = Vtiger_Module::getInstance('Leads'); $quotesModuleInstance = Vtiger_Module::getInstance('Quotes'); $leadsModuleInstance->unsetRelatedList($quotesModuleInstance, 'Quotes', 'get_quotes'); - echo '<br/> Removed Quotes Related list from Leads for Vtiger 7<br/>'; $leadsTabId = getTabid('Leads'); $quotesTabId = getTabid('Quotes'); @@ -1694,7 +1593,6 @@ if(defined('VTIGER_UPGRADE')) { if ($db->num_rows($result)) { $menuEditorModuleModel = new Settings_MenuEditor_Module_Model(); $menuEditorModuleModel->addModuleToApp('Quotes', 'MARKETING'); - echo '<br/> Quotes Module added in Marketing App <br/>'; } $db->pquery('ALTER TABLE vtiger_cvstdfilter DROP FOREIGN KEY fk_1_vtiger_cvstdfilter', array()); @@ -1718,7 +1616,6 @@ if(defined('VTIGER_UPGRADE')) { `editable` int(11) DEFAULT '1', PRIMARY KEY (`cfmid`) )", true); - echo '<br> created vtiger_convertpotentialmapping table'; $fieldMap = array( array('potentialname', 'projectname', 0), array('description', 'description', 1), @@ -1734,11 +1631,9 @@ if(defined('VTIGER_UPGRADE')) { $editable = $values[4]; $db->pquery($mapSql, array($potentialfid, $projectfid, $editable)); } - echo '<br> added default values to vtiger_convertpotentialmapping table'; } $db->pquery('ALTER TABLE vtiger_potential ADD converted INT(1) NOT NULL DEFAULT 0', array()); - echo "<br> added converted column to vtiger_potential"; $Vtiger_Utils_Log = true; $moduleArray = array('Project' => 'LBL_PROJECT_INFORMATION'); @@ -1757,23 +1652,16 @@ if(defined('VTIGER_UPGRADE')) { $field->columntype = 'int(1) NOT NULL DEFAULT 0'; $field->typeofdata = 'C~O'; $blockInstance->addField($field); - echo "Converted From field added to $module<br/>"; } } - echo "<br> added isconvertedfrompotential field to projects"; - $moduleInstance = Vtiger_Module::getInstance('Project'); - $accountsModule = Vtiger_Module::getInstance('Calendar'); - $relationLabel = 'Activities'; - $moduleInstance->setRelatedList($accountsModule, $relationLabel, Array('ADD')); + $projectInstance = Vtiger_Module::getInstance('Project'); + $calendarModule = Vtiger_Module::getInstance('Calendar'); + $projectInstance->setRelatedList($calendarModule, 'Activities', Array('ADD')); - $moduleInstance = Vtiger_Module::getInstance('Project'); - $accountsModule = Vtiger_Module::getInstance('Quotes'); - $relationLabel = 'Quotes'; - $moduleInstance->setRelatedList($accountsModule, $relationLabel, Array('SELECT')); - echo "<br> Linked Calendar and quotes to Project"; + $quotesModule = Vtiger_Module::getInstance('Quotes'); + $projectInstance->setRelatedList($quotesModule, 'Quotes', Array('SELECT')); - $projectInstance = Vtiger_Module::getInstance('Project'); if (!Vtiger_Field::getInstance('potentialid', $projectInstance)) { $blockInstance = Vtiger_Block_Model::getInstance('LBL_PROJECT_INFORMATION', $projectInstance); $potentialField = new Vtiger_Field(); @@ -1783,9 +1671,12 @@ if(defined('VTIGER_UPGRADE')) { $potentialField->typeofdata = 'I~O'; $blockInstance->addField($potentialField); $potentialField->setRelatedModules(Array('Potentials')); - echo '<br>Opportunity related field created for Projects.'; } + $productsInstance = Vtiger_Module_Model::getInstance('Products'); + $poInstance = Vtiger_Module_Model::getInstance('PurchaseOrder'); + $productsInstance->setRelatedList($poInstance, 'PurchaseOrder', false, 'get_purchaseorder'); + $modules = array('Potentials', 'Contacts', 'Accounts', 'Project'); foreach ($modules as $moduleName) { $tabId = getTabid($moduleName); @@ -1794,25 +1685,24 @@ if(defined('VTIGER_UPGRADE')) { } else { $db->pquery('UPDATE vtiger_field SET displaytype=? WHERE fieldname=? AND tabid=?', array(1, 'isconvertedfromlead', $tabId)); } - echo "<br>In $moduleName updated"; Vtiger_Cache::flushModuleCache($moduleName); } $db->pquery('DELETE FROM vtiger_links WHERE linktype=? AND handler_class=?', array('DETAILVIEWBASIC', 'Documents')); $columns = $db->getColumnNames('vtiger_emailtemplates'); + if (!in_array('systemtemplate', $columns)) { + $db->pquery('ALTER TABLE vtiger_emailtemplates ADD COLUMN systemtemplate INT(1) NOT NULL DEFAULT 0', array()); + } + if (!in_array('templatepath', $columns)) { + $db->pquery('ALTER TABLE vtiger_emailtemplates ADD COLUMN templatepath VARCHAR(100) AFTER templatename', array()); + } if (!in_array('module', $columns)) { $db->pquery('ALTER TABLE vtiger_emailtemplates ADD COLUMN module VARCHAR(100)', array()); } $db->pquery('UPDATE vtiger_emailtemplates SET module=? WHERE templatename IN (?,?,?) AND module IS NULL', array('Events', 'ToDo Reminder', 'Activity Reminder', 'Invite Users')); $db->pquery('UPDATE vtiger_emailtemplates SET module=? WHERE module IS NULL', array('Contacts')); - $columns = $db->getColumnNames('vtiger_emailtemplates'); - if (!in_array('templatepath', $columns)) { - $db->pquery('ALTER TABLE vtiger_emailtemplates ADD COLUMN templatepath VARCHAR(100) AFTER templatename', array()); - } - echo "Updated emailtemplates seq table <br>"; - //Update existing package modules Install_Utils_Model::installModules(); diff --git a/modules/Vtiger/helpers/Util.php b/modules/Vtiger/helpers/Util.php index 7155e0ecd..5aad64d29 100644 --- a/modules/Vtiger/helpers/Util.php +++ b/modules/Vtiger/helpers/Util.php @@ -511,6 +511,10 @@ class Vtiger_Util_Helper { $date = $dateTimeField->getDisplayDate($userModel); $time = $dateTimeField->getDisplayTime($userModel); + if ($userModel->get('hour_format') == '12') { + $time = Vtiger_Time_UIType::getTimeValueInAMorPM($time); + } + return $date.' ' .$time; } diff --git a/modules/Vtiger/uitypes/Time.php b/modules/Vtiger/uitypes/Time.php index d2c6f5b3b..801e65f9c 100644 --- a/modules/Vtiger/uitypes/Time.php +++ b/modules/Vtiger/uitypes/Time.php @@ -84,7 +84,7 @@ class Vtiger_Time_UIType extends Vtiger_Base_UIType { return ''; } } - + /** * Function to get the Display Value, for the current field type with given DB Insert Value * @param <Object> $value @@ -97,7 +97,7 @@ class Vtiger_Time_UIType extends Vtiger_Base_UIType { } return $value; } - + /** * Function to get the display value in edit view * @param $value @@ -106,9 +106,9 @@ class Vtiger_Time_UIType extends Vtiger_Base_UIType { public function getEditViewDisplayValue($value) { return self::getTimeValueInAMorPM($value); } - - public function getListSearchTemplateName() { - return 'uitypes/TimeFieldSearchView.tpl'; - } - + + public function getListSearchTemplateName() { + return 'uitypes/TimeFieldSearchView.tpl'; + } + } diff --git a/pkg/vtiger/modules/Services/modules/Services/models/ModuleMeta.php b/pkg/vtiger/modules/Services/modules/Services/models/ModuleMeta.php deleted file mode 100644 index 267c731b0..000000000 --- a/pkg/vtiger/modules/Services/modules/Services/models/ModuleMeta.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.1 - * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source - * The Initial Developer of the Original Code is vtiger. - * Portions created by vtiger are Copyright (C) vtiger. - * All Rights Reserved. - ************************************************************************************/ - -class Services_ModuleMeta_Model extends Products_ModuleMeta_Model { -} -- GitLab