diff --git a/config.performance.php b/config.performance.php index ec70047f217176f18ca994dff765efc7aa46190f..d40db3411886764f9ace4563d09680884e6006cc 100644 --- a/config.performance.php +++ b/config.performance.php @@ -20,9 +20,6 @@ $PERFORMANCE_CONFIG = Array( // This avoids executing the SET NAMES SQL for each query! 'DB_DEFAULT_CHARSET_UTF8' => true, - // Compute record change indication for each record shown on listview - 'LISTVIEW_RECORD_CHANGE_INDICATOR' => false, - // Turn-off default sorting in ListView, could eat up time as data grows 'LISTVIEW_DEFAULT_SORTING' => false, @@ -38,7 +35,5 @@ $PERFORMANCE_CONFIG = Array( // reduce number of ajax requests on home page, reduce this value if home page widget dont // show value. 'HOME_PAGE_WIDGET_GROUP_SIZE' => 12, - //take backup legacy style, whenever an admin user logs out. - 'LOGOUT_BACKUP' => true, ); -?> \ No newline at end of file +?> diff --git a/config.template.php b/config.template.php index 88b4b3848820f131db80298ad98bcb74f7d913c9..41abe8efc1a5b8039d470defa584ebbc138f3e47 100644 --- a/config.template.php +++ b/config.template.php @@ -28,9 +28,6 @@ ini_set('memory_limit','512M'); // show or hide calendar, world clock, calculator, chat and CKEditor // Do NOT remove the quotes if you set these to false! $CALENDAR_DISPLAY = 'true'; -$WORLD_CLOCK_DISPLAY = 'true'; -$CALCULATOR_DISPLAY = 'true'; -$CHAT_DISPLAY = 'true'; $USE_RTE = 'true'; // helpdesk support email id and support name (Example: 'support@vtiger.com' and 'vtiger support') @@ -116,16 +113,9 @@ $allow_exports = 'all'; // upload_badext default value = php, php3, php4, php5, pl, cgi, py, asp, cfm, js, vbs, html, htm $upload_badext = array('php', 'php3', 'php4', 'php5', 'pl', 'cgi', 'py', 'asp', 'cfm', 'js', 'vbs', 'html', 'htm', 'exe', 'bin', 'bat', 'sh', 'dll', 'phps', 'phtml', 'xhtml', 'rb', 'msi', 'jsp', 'shtml', 'sth', 'shtm'); -// full path to include directory including the trailing slash -// includeDirectory default value = $root_directory..'include/ -$includeDirectory = $root_directory.'include/'; - // list_max_entries_per_page default value = 20 $list_max_entries_per_page = '20'; -// limitpage_navigation default value = 5 -$limitpage_navigation = '5'; - // history_max_viewed default value = 5 $history_max_viewed = '5'; @@ -139,10 +129,6 @@ $default_action = 'index'; // default_theme default value = blue $default_theme = 'softed'; -// show or hide time to compose each page -// calculate_response_time default value = true -$calculate_response_time = true; - // default text that is placed initially in the login form for user name // no default_user_name default value $default_user_name = ''; @@ -154,12 +140,6 @@ $default_password = ''; // create user with default username and password // create_default_user default value = false $create_default_user = false; -// default_user_is_admin default value = false -$default_user_is_admin = false; - -// if your MySQL/PHP configuration does not support persistent connections set this to true to avoid a large performance slowdown -// disable_persistent_connections default value = false -$disable_persistent_connections = false; //Master currency name $currency_name = '_MASTER_CURRENCY_'; @@ -172,13 +152,6 @@ $default_charset = '_VT_CHARSET_'; // default_language default value = en_us $default_language = '_VT_DEFAULT_LANGUAGE_'; -// add the language pack name to every translation string in the display. -// translation_string_prefix default value = false -$translation_string_prefix = false; - -//Option to cache tabs permissions for speed. -$cache_tab_perms = true; - //Option to hide empty home blocks if no entries. $display_empty_home_blocks = false; diff --git a/cron/modules/SalesOrder/RecurringInvoice.service b/cron/modules/SalesOrder/RecurringInvoice.service index 62f060492dd656b4102d13368badd2a05ce859cd..422d75d322e205456fe87c025ece3ddf92924b78 100644 --- a/cron/modules/SalesOrder/RecurringInvoice.service +++ b/cron/modules/SalesOrder/RecurringInvoice.service @@ -141,7 +141,11 @@ function createInvoice($salesorder_id, $recurringDate = false) { } $focus->_salesorderid = $salesorder_id; $focus->_recurring_mode = 'recurringinvoice_from_so'; - $focus->save("Invoice"); + try { + $focus->save("Invoice"); + } catch (Exception $e) { + //TODO - Review + } } function getRecurringDate($recurringDate, $recurringFrequency) { diff --git a/data/CRMEntity.php b/data/CRMEntity.php index 735c86749852e01588f7f4258b9d44a1de5ab05f..45f691c26db068a16c6bd2a79f38a91796c28b17 100755 --- a/data/CRMEntity.php +++ b/data/CRMEntity.php @@ -85,7 +85,7 @@ class CRMEntity { return; } - $userSpecificTableIgnoredModules = array("SMSNotifier", "ModComments"); + $userSpecificTableIgnoredModules = array('SMSNotifier', 'PBXManager', 'ModComments'); if(in_array($moduleName, $userSpecificTableIgnoredModules)) return; $userSpecificTable = Vtiger_Functions::getUserSpecificTableName($moduleName); @@ -493,7 +493,7 @@ class CRMEntity { } if (isset($this->column_fields[$fieldname])) { if ($uitype == 56) { - if ($this->column_fields[$fieldname] == 'on' || $this->column_fields[$fieldname] == 1) { + if ($this->column_fields[$fieldname] === 'on' || $this->column_fields[$fieldname] == 1) { $fldvalue = '1'; } else { $fldvalue = '0'; @@ -770,7 +770,7 @@ class CRMEntity { * @param <Integer> $record - crmid of record * @param <String> $module - module name */ - function retrieve_entity_info($record, $module) { + function retrieve_entity_info($record, $module, $allowDeleted = false) { global $adb, $log, $app_strings, $current_user; // INNER JOIN is desirable if all dependent table has entries for the record. @@ -877,8 +877,10 @@ class CRMEntity { throw new Exception($app_strings['LBL_RECORD_NOT_FOUND'], -1); } else { $resultrow = $adb->query_result_rowdata($result); - if (!empty($resultrow['deleted'])) { - throw new Exception($app_strings['LBL_RECORD_DELETE'], 1); + if (!$allowDeleted) { + if (!empty($resultrow['deleted'])) { + throw new Exception($app_strings['LBL_RECORD_DELETE'], 1); + } } if(!empty($resultrow['label'])){ $this->column_fields['label'] = $resultrow['label']; @@ -1369,12 +1371,6 @@ class CRMEntity { $this->db->println("TRANS restore starts $module"); $this->db->startTransaction(); - $date_var = date("Y-m-d H:i:s"); - $query = 'UPDATE vtiger_crmentity SET deleted=0,modifiedtime=?,modifiedby=? WHERE crmid = ?'; - $this->db->pquery($query, array($this->db->formatDate($date_var, true), $current_user->id, $id), true, "Error restoring records :"); - //Restore related entities/records - $this->restoreRelatedRecords($module, $id); - //Event triggering code require_once("include/events/include.inc"); global $adb; @@ -1384,7 +1380,15 @@ class CRMEntity { $em->initTriggerCache(); $this->id = $id; - $entityData = VTEntityData::fromCRMEntity($this); + $entityData = VTEntityData::getInstanceByDeletedEntityId($adb, $id, $module); + $em->triggerEvent("vtiger.entity.beforerestore", $entityData); + + $date_var = date("Y-m-d H:i:s"); + $query = 'UPDATE vtiger_crmentity SET deleted=0,modifiedtime=?,modifiedby=? WHERE crmid = ?'; + $this->db->pquery($query, array($this->db->formatDate($date_var, true), $current_user->id, $id), true, "Error restoring records :"); + //Restore related entities/records + $this->restoreRelatedRecords($module, $id); + //Event triggering code $em->triggerEvent("vtiger.entity.afterrestore", $entityData); //Event triggering code ends @@ -2999,4 +3003,4 @@ class TrackableObject implements ArrayAccess, IteratorAggregate { function getColumnFieldNames(){ return array_keys($this->storage); } -} \ No newline at end of file +} diff --git a/include/QueryGenerator/EnhancedQueryGenerator.php b/include/QueryGenerator/EnhancedQueryGenerator.php index d3d067ee547f2dfc98c786b156878123d43b427f..a9f8c3f9ba065812ef54467403cc216fca2c8499 100644 --- a/include/QueryGenerator/EnhancedQueryGenerator.php +++ b/include/QueryGenerator/EnhancedQueryGenerator.php @@ -829,6 +829,20 @@ class EnhancedQueryGenerator extends QueryGenerator { $fieldSqlList[$index] = $fieldSql; } + $currentUserModel = Users_Record_Model::getCurrentUserModel(); + if(($baseModule == 'Calendar' || $baseModule == 'Events') && !$currentUserModel->isAdminUser()) { + $moduleFocus = CRMEntity::getInstance('Calendar'); + $condition = $moduleFocus->buildWhereClauseConditionForCalendar(); + + if($condition) { + if($this->conditionInstanceCount > 0) { + $sql .= $condition.' AND '; + }else { + $sql .= ' AND '.$condition; + } + } + } + // This is needed as there can be condition in different order and there is an assumption in makeGroupSqlReplacements API // that it expects the array in an order and then replaces the sql with its the corresponding place ksort($fieldSqlList); diff --git a/include/QueryGenerator/QueryGenerator.php b/include/QueryGenerator/QueryGenerator.php index 27fe4d4d9226bdd8314d48e08bb0f7c7aec5b08e..c548e93969e119863fd0b3a9c2d1a6de8d43d219 100644 --- a/include/QueryGenerator/QueryGenerator.php +++ b/include/QueryGenerator/QueryGenerator.php @@ -448,9 +448,12 @@ class QueryGenerator { $baseTable = $field->getTableName(); $tableIndexList = $this->meta->getEntityTableIndexList(); $baseTableIndex = $tableIndexList[$baseTable]; + + $tableList[$field->getTableName()] = $field->getTableName(); + $tableJoinMapping[$field->getTableName()] = $this->meta->getJoinClause($field->getTableName()); + if($field->getFieldDataType() == 'reference') { $moduleList = $this->referenceFieldInfoList[$fieldName]; - $tableJoinMapping[$field->getTableName()] = 'INNER JOIN'; foreach($moduleList as $module) { if($module == 'Users' && $baseModule != 'Users') { if($fieldName == 'created_user_id' || $fieldName == 'modifiedby') { @@ -485,9 +488,6 @@ class QueryGenerator { $tableJoinMapping['vtiger_users'.$fieldName] = 'LEFT JOIN vtiger_users AS'; } } - $tableList[$field->getTableName()] = $field->getTableName(); - $tableJoinMapping[$field->getTableName()] = - $this->meta->getJoinClause($field->getTableName()); } $baseTable = $this->meta->getEntityBaseTable(); $baseTableIndex = $moduleTableIndexList[$baseTable]; @@ -919,6 +919,20 @@ class QueryGenerator { $fieldSqlList[$index] = $fieldSql; } } + + $currentUserModel = Users_Record_Model::getCurrentUserModel(); + if(($baseModule == 'Calendar' || $baseModule == 'Events') && !$currentUserModel->isAdminUser()) { + $moduleFocus = CRMEntity::getInstance('Calendar'); + $condition = $moduleFocus->buildWhereClauseConditionForCalendar(); + if ($condition) { + if ($this->conditionInstanceCount > 0) { + $sql .= $condition . ' AND '; + } else { + $sql .= ' AND ' . $condition; + } + } + } + // This is needed as there can be condition in different order and there is an assumption in makeGroupSqlReplacements API // that it expects the array in an order and then replaces the sql with its the corresponding place ksort($fieldSqlList); diff --git a/include/Webservices/AddRelated.php b/include/Webservices/AddRelated.php new file mode 100644 index 0000000000000000000000000000000000000000..699d4636489bc4b70ea4aa597aa6f71f451cec5f --- /dev/null +++ b/include/Webservices/AddRelated.php @@ -0,0 +1,60 @@ +<?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. + * ***********************************************************************************/ + +/** + * Function to relate CRM records for relationships exists in vtiger_relatedlists table. + * @param $sourceRecordId - Source record webservice id. + * @param $relatedRecordId - Related record webservice id(s). One record id or array of ids for same module. + * @param $relationIdLabel - Relation id or label as in vtiger_relatedlists table. + * @param $user + */ +function vtws_add_related($sourceRecordId, $relatedRecordId, $relationIdLabel = false, $user = false) { + $db = PearDatabase::getInstance(); + if (!is_array($relatedRecordId)) { + $relatedRecordId = array($relatedRecordId); + } + + $sourceRecordIdParts = vtws_getIdComponents($sourceRecordId); + $relatedRecordIdParts = vtws_getIdComponents($relatedRecordId[0]); + if (!isRecordExists($sourceRecordIdParts[1])) { + throw new Exception("Source record $sourceRecordIdParts is deleted"); + } + + try { + $sourceRecordWsObject = VtigerWebserviceObject::fromId($db, $sourceRecordIdParts[0]); + $relatedRecordWsObject = VtigerWebserviceObject::fromId($db, $relatedRecordIdParts[0]); + + $sourceModuleModel = Vtiger_Module_Model::getInstance($sourceRecordWsObject->getEntityName()); + $relatedModuleModel = Vtiger_Module_Model::getInstance($relatedRecordWsObject->getEntityName()); + + $relationLabel = false; + $relationId = false; + if (is_numeric($relationIdLabel)) { + $relationId = $relationIdLabel; + } else if (!empty($relationIdLabel)) { + $relationLabel = $relationIdLabel; + } + + if ($sourceModuleModel && $relatedModuleModel) { + $relationModel = Vtiger_Relation_Model::getInstance($sourceModuleModel, $relatedModuleModel, $relationLabel, $relationId); + if ($relationModel) { + foreach ($relatedRecordId as $id) { + $idParts = vtws_getIdComponents($id); + if ($idParts[0] == $relatedRecordIdParts[0]) { + $relationModel->addRelation($sourceRecordIdParts[1], $idParts[1]); + } + } + } + } + return array('message' => 'successfull'); + } catch (Exception $ex) { + throw new Exception($ex->getMessage()); + } +} diff --git a/include/Webservices/ConvertLead.php b/include/Webservices/ConvertLead.php index 54c55679f5108481c527e4f26be04ba6a1555a3e..74193de8cac934a3e221b44870cfb95546bfb6a5 100644 --- a/include/Webservices/ConvertLead.php +++ b/include/Webservices/ConvertLead.php @@ -134,6 +134,8 @@ function vtws_convertlead($entityvalues, $user) { $adb->pquery('UPDATE vtiger_crmentity SET setype = ? WHERE crmid = ?',array($entityName.' Image',$imageAttachmentId)); } } + } catch (DuplicateException $e) { + throw $e; } catch (Exception $e) { throw new WebServiceException(WebServiceErrorCode::$UNKNOWNOPERATION, $e->getMessage().' : '.$entityvalue['name']); diff --git a/include/Webservices/ConvertPotential.php b/include/Webservices/ConvertPotential.php index fe4728713a9b31cfb1c81560b9eb30b0d2805e40..8dcd53321e2b69e0d59ef2158b51836c3c23934e 100644 --- a/include/Webservices/ConvertPotential.php +++ b/include/Webservices/ConvertPotential.php @@ -70,6 +70,8 @@ function vtws_convertPotential($entityvalues, $user) { $entityObjectValues['isconvertedfrompotential'] = 1; $entityRecord = vtws_create($entityvalue['name'], $entityObjectValues, $user); $entityIds[$entityName] = $entityRecord['id']; + } catch (DuplicateException $e) { + throw $e; } catch (Exception $e) { throw new WebServiceException(WebServiceErrorCode::$FAILED_TO_CREATE, $e->getMessage().' : '.$entityvalue['name']); } diff --git a/include/Webservices/DescribeObject.php b/include/Webservices/DescribeObject.php index 2de2d89fc9ff78c99e22ffe0c58505b00502e078..af69a554b1e0bceb663531ec6c7fdfe943812732 100644 --- a/include/Webservices/DescribeObject.php +++ b/include/Webservices/DescribeObject.php @@ -10,7 +10,15 @@ function vtws_describe($elementType,$user){ - global $log,$adb; + global $log,$adb,$app_strings; + + //setting $app_strings + if (!$app_strings) { + $currentLanguage = Vtiger_Language_Handler::getLanguage(); + $moduleLanguageStrings = Vtiger_Language_Handler::getModuleStringsFromFile($currentLanguage); + $app_strings = $moduleLanguageStrings['languageStrings']; + } + $webserviceObject = VtigerWebserviceObject::fromName($adb,$elementType); $handlerPath = $webserviceObject->getHandlerPath(); $handlerClass = $webserviceObject->getHandlerClass(); diff --git a/include/Webservices/LineItem/VtigerInventoryOperation.php b/include/Webservices/LineItem/VtigerInventoryOperation.php index bd13bb1c2c6558d0ad0069e0747d2173a1776c16..ade2deb304d6c9eac0b8f3e2f5336a192d2ff333 100644 --- a/include/Webservices/LineItem/VtigerInventoryOperation.php +++ b/include/Webservices/LineItem/VtigerInventoryOperation.php @@ -15,20 +15,25 @@ require_once 'include/Webservices/Utils.php'; * Description of VtigerInventoryOperation */ class VtigerInventoryOperation extends VtigerModuleOperation { + public static $CREATE_OPERATI0N; public function create($elementType, $element) { + self::$CREATE_OPERATI0N = true; $element = $this->sanitizeInventoryForInsert($element); $element = $this->sanitizeShippingTaxes($element); $lineItems = $element['LineItems']; if (!empty($lineItems)) { $eventManager = new VTEventsManager(vglobal('adb')); - $this->triggerBeforeSaveEvents($element, $eventManager); + $sanitizedData = DataTransform::sanitizeForInsert($element,$this->meta); + $this->triggerBeforeSaveEvents($sanitizedData, $eventManager); $currentBulkSaveMode = vglobal('VTIGER_BULK_SAVE_MODE'); if ($currentBulkSaveMode === NULL) { $currentBulkSaveMode = false; } vglobal('VTIGER_BULK_SAVE_MODE', true); + global $currentModule; + $currentModule = $elementType; $element = parent::create($elementType, $element); $focus = CRMEntity::getInstance($elementType); @@ -38,20 +43,21 @@ class VtigerInventoryOperation extends VtigerModuleOperation { $handler = vtws_getModuleHandlerFromName('LineItem', $this->user); $handler->setLineItems('LineItem', $lineItems, $element); - $parent = $handler->getParentById($element['id']); + $parent = $handler->getParentById($element['id']); $handler->updateParent($lineItems, $parent); - $updatedParent = $handler->getParentById($element['id']); - //since subtotal and grand total is updated in the update parent api - $parent['hdnSubTotal'] = $updatedParent['hdnSubTotal']; - $parent['hdnGrandTotal'] = $updatedParent['hdnGrandTotal']; - $parent['pre_tax_total'] = $updatedParent['pre_tax_total']; - $components = vtws_getIdComponents($element['id']); - $parentId = $components[1]; - $parent['LineItems'] = $handler->getAllLineItemForParent($parentId); + $updatedParent = $handler->getParentById($element['id']); + //since subtotal and grand total is updated in the update parent api + $parent['hdnSubTotal'] = $updatedParent['hdnSubTotal']; + $parent['hdnGrandTotal'] = $updatedParent['hdnGrandTotal']; + $parent['pre_tax_total'] = $updatedParent['pre_tax_total']; + $components = vtws_getIdComponents($element['id']); + $parentId = $components[1]; + $parent['LineItems'] = $handler->getAllLineItemForParent($parentId); $currentValue = vglobal('updateInventoryProductRel_deduct_stock'); vglobal('updateInventoryProductRel_deduct_stock', false); + $parent['new'] = true; $this->triggerAfterSaveEvents($parent, $eventManager); vglobal('updateInventoryProductRel_deduct_stock', $currentValue); @@ -69,13 +75,18 @@ class VtigerInventoryOperation extends VtigerModuleOperation { $handler = vtws_getModuleHandlerFromName('LineItem', $this->user); if (!empty($lineItemList)) { $eventManager = new VTEventsManager(vglobal('adb')); - $this->triggerBeforeSaveEvents($element, $eventManager); + $sanitizedData = DataTransform::sanitizeForInsert($element,$this->meta); + $sanitizedData['id'] = $element['id']; + $this->triggerBeforeSaveEvents($sanitizedData, $eventManager); + unset($sanitizedData['id']); $currentBulkSaveMode = vglobal('VTIGER_BULK_SAVE_MODE'); if ($currentBulkSaveMode === NULL) { $currentBulkSaveMode = false; } vglobal('VTIGER_BULK_SAVE_MODE', true); + global $currentModule; + $currentModule = getTabname($this->tabId); $updatedElement = parent::update($element); vglobal('VTIGER_BULK_SAVE_MODE', $currentBulkSaveMode); @@ -83,12 +94,12 @@ class VtigerInventoryOperation extends VtigerModuleOperation { $handler->setLineItems('LineItem', $lineItemList, $updatedElement); $parent = $handler->getParentById($element['id']); $handler->updateParent($lineItemList, $parent); - $updatedParent = $handler->getParentById($element['id']); - //since subtotal and grand total is updated in the update parent api - $parent['hdnSubTotal'] = $updatedParent['hdnSubTotal']; - $parent['hdnGrandTotal'] = $updatedParent['hdnGrandTotal']; - $parent['pre_tax_total'] = $updatedParent['pre_tax_total']; - $updatedElement = array_merge($updatedElement,$parent); + $updatedParent = $handler->getParentById($element['id']); + //since subtotal and grand total is updated in the update parent api + $parent['hdnSubTotal'] = $updatedParent['hdnSubTotal']; + $parent['hdnGrandTotal'] = $updatedParent['hdnGrandTotal']; + $parent['pre_tax_total'] = $updatedParent['pre_tax_total']; + $updatedElement = array_merge($updatedElement,$parent); $currentValue = vglobal('updateInventoryProductRel_deduct_stock'); vglobal('updateInventoryProductRel_deduct_stock', false); @@ -118,8 +129,10 @@ class VtigerInventoryOperation extends VtigerModuleOperation { unset($element['LineItems']); $eventManager = new VTEventsManager(vglobal('adb')); - $this->triggerBeforeSaveEvents($element, $eventManager); - + $sanitizedData = DataTransform::sanitizeForInsert($element,$this->meta); + $sanitizedData['id'] = $element['id']; + $this->triggerBeforeSaveEvents($sanitizedData, $eventManager); + unset($sanitizedData['id']); $currentBulkSaveMode = vglobal('VTIGER_BULK_SAVE_MODE'); if ($currentBulkSaveMode === NULL) { $currentBulkSaveMode = false; @@ -181,17 +194,18 @@ class VtigerInventoryOperation extends VtigerModuleOperation { $element['LineItems'] = $lineItems; $recordCompoundTaxesElement = $this->getCompoundTaxesElement($element, $lineItems); $element = array_merge($element, $recordCompoundTaxesElement); - $element['LineItems_FinalDetails'] = $this->getLineItemFinalDetails($idComponents[1]); + $element['productid'] = $lineItems[0]['productid']; + $element['LineItems_FinalDetails'] = $this->getLineItemFinalDetails($idComponents[1]); return $element; } - - public function getLineItemFinalDetails($record) { - $finalDetails = array(); - $recordModel = Inventory_Record_Model::getInstanceById($record); - if($recordModel) { - $finalDetails = $recordModel->getProducts(); - } - return $finalDetails; + + public function getLineItemFinalDetails($record) { + $finalDetails = array(); + $recordModel = Inventory_Record_Model::getInstanceById($record); + if($recordModel) { + $finalDetails = $recordModel->getProducts(); + } + return $finalDetails; } public function delete($id) { @@ -209,6 +223,11 @@ class VtigerInventoryOperation extends VtigerModuleOperation { * @return type */ protected function sanitizeInventoryForInsert($element) { + + if (!$element['hdnTaxType']) { + $element['hdnTaxType'] = Inventory_TaxRecord_Model::getSelectedDefaultTaxMode(); + } + if (!empty($element['hdnTaxType'])) { $_REQUEST['taxtype'] = $element['hdnTaxType']; } @@ -216,10 +235,10 @@ class VtigerInventoryOperation extends VtigerModuleOperation { $_REQUEST['subtotal'] = $element['hdnSubTotal']; } - if ($element['hdnDiscountAmount']) { + if ((float) $element['hdnDiscountAmount'] && $element['hdnDiscountAmount'] !== '') { $_REQUEST['discount_type_final'] = 'amount'; $_REQUEST['discount_amount_final'] = $element['hdnDiscountAmount']; - } elseif ($element['hdnDiscountPercent']) { + } elseif ((float) $element['hdnDiscountPercent'] && $element['hdnDiscountPercent'] !== '') { $_REQUEST['discount_type_final'] = 'percentage'; $_REQUEST['discount_percentage_final'] = $element['hdnDiscountPercent']; } else { @@ -227,8 +246,8 @@ class VtigerInventoryOperation extends VtigerModuleOperation { $_REQUEST['discount_percentage_final'] = ''; } - if ($element['txtAdjustment']) { - $_REQUEST['adjustmentType'] = ((int) $element['txtAdjustment'] < 0) ? '-' : '+'; + if ((float) $element['txtAdjustment']) { + $_REQUEST['adjustmentType'] = ((float) $element['txtAdjustment'] < 0) ? '-' : '+'; $_REQUEST['adjustment'] = abs($element['txtAdjustment']); } else { $_REQUEST['adjustmentType'] = ''; @@ -246,6 +265,23 @@ class VtigerInventoryOperation extends VtigerModuleOperation { $_REQUEST['conversion_rate'] = 1; } + $lineItems = $element['LineItems']; + $totalNoOfProducts = count($lineItems); + $_REQUEST['totalProductCount'] = $totalNoOfProducts; + $_REQUEST['REQUEST_FROM_WS'] = true; + + $i = 1; + if (!is_array($lineItems)) { + $lineItems = array(); + } + foreach ($lineItems as $lineItem) { + $productIdComponents = vtws_getIdComponents($lineItem['productid']); + $productId = $productIdComponents[1]; + + $_REQUEST['hdnProductId'.$i] = $productId; + $_REQUEST['qty'.$i] = $lineItem['quantity']; + $i++; + } return $element; } @@ -314,16 +350,16 @@ class VtigerInventoryOperation extends VtigerModuleOperation { return $element; } - /* NOTE: Special case to pull the default setting of TermsAndCondition */ - - public function describe($elementType) { - $describe = parent::describe($elementType); - $tandc = getTermsAndConditions($elementType); - foreach ($describe['fields'] as $key => $list){ - if($list["name"] == 'terms_conditions'){ - $describe['fields'][$key]['default'] = $tandc; - } - } + /* NOTE: Special case to pull the default setting of TermsAndCondition */ + + public function describe($elementType) { + $describe = parent::describe($elementType); + $tandc = getTermsAndConditions($elementType); + foreach ($describe['fields'] as $key => $list){ + if($list["name"] == 'terms_conditions'){ + $describe['fields'][$key]['default'] = $tandc; + } + } $shippingTaxes = array(); $allShippingTaxes = getAllTaxes('available', 'sh'); @@ -359,8 +395,8 @@ class VtigerInventoryOperation extends VtigerModuleOperation { } - return $describe; - } + return $describe; + } /** * Function to trigger the events which are before save @@ -368,15 +404,17 @@ class VtigerInventoryOperation extends VtigerModuleOperation { * @param <type> $eventManager */ public function triggerBeforeSaveEvents($element, $eventManager) { - + global $VTIGER_BULK_SAVE_MODE; if ($eventManager) { $eventManager->initTriggerCache(); $focusObj = $this->constructFocusObject($element); $entityData = VTEntityData::fromCRMEntity($focusObj); - $eventManager->triggerEvent("vtiger.entity.beforesave.modifiable", $entityData); - $eventManager->triggerEvent("vtiger.entity.beforesave", $entityData); - $eventManager->triggerEvent("vtiger.entity.beforesave.final", $entityData); + if (!$VTIGER_BULK_SAVE_MODE) { + $eventManager->triggerEvent("vtiger.entity.beforesave.modifiable", $entityData); + $eventManager->triggerEvent("vtiger.entity.beforesave", $entityData); + $eventManager->triggerEvent("vtiger.entity.beforesave.final", $entityData); + } } } @@ -386,13 +424,18 @@ class VtigerInventoryOperation extends VtigerModuleOperation { * @param <type> $eventManager */ public function triggerAfterSaveEvents($element, $eventManager) { - + global $VTIGER_BULK_SAVE_MODE; if ($eventManager) { $focusObj = $this->constructFocusObject($element); + if (isset($element['new']) && $element['new'] == true) { + $focusObj->newDelta = true; + } $entityData = VTEntityData::fromCRMEntity($focusObj); + if (!$VTIGER_BULK_SAVE_MODE) { - $eventManager->triggerEvent("vtiger.entity.aftersave", $entityData); - $eventManager->triggerEvent("vtiger.entity.aftersave.final", $entityData); + $eventManager->triggerEvent("vtiger.entity.aftersave", $entityData); + $eventManager->triggerEvent("vtiger.entity.aftersave.final", $entityData); + } } } diff --git a/include/Webservices/LineItem/VtigerLineItemOperation.php b/include/Webservices/LineItem/VtigerLineItemOperation.php index cb3e12b0ddf916468246ee110220a920abc953c5..f64421768908729f7ddf5883dbbf0f6f864ecd3d 100644 --- a/include/Webservices/LineItem/VtigerLineItemOperation.php +++ b/include/Webservices/LineItem/VtigerLineItemOperation.php @@ -1,13 +1,12 @@ <?php -/*+******************************************************************************* - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 +/* +********************************************************************************** + * 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 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. - * - *********************************************************************************/ + * ***********************************************************************************/ require_once "include/Webservices/VtigerActorOperation.php"; require_once "include/Webservices/LineItem/VtigerInventoryOperation.php"; @@ -25,13 +24,14 @@ require_once 'include/utils/InventoryUtils.php'; /** * Description of VtigerLineItemOperation */ -class VtigerLineItemOperation extends VtigerActorOperation { +class VtigerLineItemOperation extends VtigerActorOperation { private static $lineItemCache = array(); private $taxType = null; private $Individual = 'Individual'; private $Group = 'Group'; private $newId = null; private $taxList = null; + private $inActiveTaxList = null; private static $parentCache = array(); public function __construct($webserviceObject,$user,$adb,$log) { @@ -41,12 +41,12 @@ class VtigerLineItemOperation extends VtigerActorOperation { $this->pearDB = $adb; $this->entityTableName = $this->getActorTables(); if($this->entityTableName === null){ - throw new WebServiceException(WebServiceErrorCode::$UNKOWNENTITY, - "Entity is not associated with any tables"); + throw new WebServiceException(WebServiceErrorCode::$UNKOWNENTITY, 'Entity is not associated with any tables'); } $this->meta = new VtigerLineItemMeta($this->entityTableName,$webserviceObject,$adb,$user); $this->moduleFields = null; $this->taxList = array(); + $this->inActiveTaxList = array(); } protected function getNextId($elementType, $element) { @@ -78,21 +78,19 @@ class VtigerLineItemOperation extends VtigerActorOperation { */ public function getAllLineItemForParent($parentId){ $result = null; - if(is_array($parentId)){ - $query = "select vtiger_crmentity.label as productname,vtiger_crmentity.setype as entitytype,vtiger_crmentity.deleted as deleted, {$this->entityTableName}.* + + if (!is_array($parentId)) { + $parentId = array($parentId); + } + + $query = "SELECT vtiger_crmentity.label AS productname,vtiger_crmentity.setype AS entitytype,vtiger_crmentity.deleted AS deleted, {$this->entityTableName}.* FROM {$this->entityTableName} LEFT JOIN vtiger_crmentity ON vtiger_crmentity.crmid=vtiger_inventoryproductrel.productid WHERE id IN (". generateQuestionMarks($parentId) .")"; - }else { - $query = "select vtiger_crmentity.label as productname,vtiger_crmentity.setype as entitytype,vtiger_crmentity.deleted as deleted, {$this->entityTableName}.* - FROM {$this->entityTableName} - LEFT JOIN vtiger_crmentity ON vtiger_crmentity.crmid=vtiger_inventoryproductrel.productid where id=?"; - } $transactionSuccessful = vtws_runQueryAsTransaction($query,array($parentId),$result); if(!$transactionSuccessful){ - throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, - "Database error while performing required operation"); + throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, 'Database error while performing required operation'); } $lineItemList = array(); if($result){ @@ -171,28 +169,33 @@ class VtigerLineItemOperation extends VtigerActorOperation { } private function updateTaxes($createdElement){ - if(count($this->taxList) > 0 ) { + if (count($this->taxList) > 0 || (is_array($this->inActiveTaxList) && count($this->inActiveTaxList) > 0)) { + $taxList = $this->taxList; + if (is_array($this->inActiveTaxList) && count($this->inActiveTaxList) > 0) { + $taxList = array_merge($taxList, $this->inActiveTaxList); + } $id = vtws_getIdComponents($createdElement['id']); $id = $id[1]; $sql = 'UPDATE vtiger_inventoryproductrel set '; - $sql .= implode('=?,',array_keys($this->taxList)); + $sql .= implode('=?,',array_keys($taxList)); $sql .= '=? WHERE lineitem_id = ?'; $params = array(); - foreach ($this->taxList as $taxInfo) { + foreach ($taxList as $taxInfo) { $params[] = $taxInfo['percentage']; } $params[] = $id; $result = null; $transactionSuccessful = vtws_runQueryAsTransaction($sql,$params,$result); if(!$transactionSuccessful){ - throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, - "Database error while performing required operation"); + throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, 'Database error while performing required operation'); } } } private function initTax($element, $parent) { $this->taxList = array(); + $this->inActiveTaxList = array(); + $allTaxes = getAllTaxes(); if (!empty($element['parent_id'])) { $this->taxType = $parent['hdnTaxType']; } @@ -204,12 +207,13 @@ class VtigerLineItemOperation extends VtigerActorOperation { $moduleFields = $meta->getModuleFields(); $productTaxList = $this->getProductTaxList($productId); if (count($productTaxList) > 0) { + $this->providedTaxList = array(); foreach ($moduleFields as $fieldName => $field) { if (preg_match('/tax\d+/', $fieldName) != 0) { if (isset($element[$fieldName])) { $found = true; if (is_array($productTaxList[$fieldName])) { - $this->taxList[$fieldName] = array( + $this->providedTaxList[$fieldName] = array( 'label' => $field->getFieldLabelKey(), 'percentage' => $element[$fieldName] ); @@ -217,6 +221,10 @@ class VtigerLineItemOperation extends VtigerActorOperation { } } } + + if ($found) { + $this->taxList = $this->providedTaxList; + } } elseif ($found == false) { array_merge($this->taxList, $productTaxList); } @@ -236,15 +244,21 @@ class VtigerLineItemOperation extends VtigerActorOperation { } } if(!$found) { - $availableTaxes = getAllTaxes('available'); - foreach($availableTaxes as $taxInfo){ - $this->taxList[$taxInfo['taxname']] = array( - 'label' => $field->getFieldLabelKey(), - 'percentage' => $taxInfo['percentage'] - ); + foreach ($allTaxes as $taxInfo) { + if ($taxInfo['deleted'] == '0') { + $this->taxList[$taxInfo['taxname']] = array( + 'label' => $field->getFieldLabelKey(), + 'percentage' => $taxInfo['percentage'] + ); + } } } } + foreach ($allTaxes as $taxInfo) { + if ($taxInfo['deleted'] == '1' && !array_key_exists($taxInfo['taxname'], $this->taxList)) { + $this->inActiveTaxList[$taxInfo['taxname']] = array('percentage' => NULL); + } + } $this->taxList; } @@ -268,7 +282,7 @@ class VtigerLineItemOperation extends VtigerActorOperation { vglobal('updateInventoryProductRel_deduct_stock', false); $sequenceNo = 1; foreach ($lineItemList as $lineItem) { - $lineItem['parent_id'] = $parent['id']; + $lineItem['parent_id'] = $parent['id']; $lineItem['sequence_no'] = $sequenceNo++; $this->initTax($lineItem, $parent); $id = vtws_getIdComponents($lineItem['parent_id']); @@ -286,11 +300,12 @@ class VtigerLineItemOperation extends VtigerActorOperation { $parentId = $parentId[1]; $parent = $this->getParentById($element['parent_id']); - if(empty($element['listprice'])){ + if (!isset($element['listprice']) && $element['listprice'] == '') { $productId = vtws_getIdComponents($element['productid']); $productId = $productId[1]; $element['listprice'] = $this->getProductPrice($productId); } + $element = $this->calculateNetprice($element); $id = vtws_getIdComponents($element['parent_id']); $this->newId = $id[1]; $createdLineItem = $this->_create($elementType, $element); @@ -299,13 +314,46 @@ class VtigerLineItemOperation extends VtigerActorOperation { $this->setCache($parentId, $updatedLineItemList); return $createdLineItem; } + + public function calculateNetprice($element) { + global $current_user; + $productId = $element['parent_id']; + $parent = $this->getParentById($productId); + $listPrice = $element['listprice']; + $quantity = $element['quantity']; + $discount_amount = $element['discount_amount']; + $discount_percent = $element['discount_percent']; + $productTotal = $listPrice * $quantity; + $total_after_discount = $productTotal; + + if (!empty($discount_amount)) { + $total_after_discount -= $discount_amount; + } + if (!empty($discount_percent)) { + $percentage_discount = ($productTotal * $discount_percent) / 100; + $total_after_discount -= $percentage_discount; + } + + $this->initTax($element, $parent); + if (strcasecmp($parent['hdnTaxType'], $this->Individual) === 0) { + $tax_net = 0; + foreach ($this->taxList as $taxname => $taxArray) { + $taxValue = $taxArray['percentage']; + $tax_net += ($taxValue * $total_after_discount) / 100; + } + } + + $net_price = number_format(($total_after_discount + $tax_net), getCurrencyDecimalPlaces($current_user), '.', ''); + $element['netprice'] = $net_price; + return $element; + } public function retrieve($id) { $element = parent::retrieve($id); $element['id'] = $id; $parent = $this->getParentById($element['parent_id']); return $this->resetTaxInfo($element, $parent); - } + } public function update($element) { $parentId = vtws_getIdComponents($element['parent_id']); @@ -319,7 +367,7 @@ class VtigerLineItemOperation extends VtigerActorOperation { $parent = $this->getParentById($element['parent_id']); $location = $this->getLocationById($lineItemList, $element['id']); if($location === false){ - throw new WebserviceException('UNKOWN_CHILD','given line item is not child of parent'); + throw new WebserviceException('UNKOWN_CHILD','given line item is not child of parent'); } if(empty($element['listprice'])){ $productId = vtws_getIdComponents($element['productid']); @@ -351,8 +399,7 @@ class VtigerLineItemOperation extends VtigerActorOperation { $result = null; $transactionSuccessful = vtws_runQueryAsTransaction($sql,$params,$result); if(!$transactionSuccessful){ - throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, - "Database error while performing required operation"); + throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, 'Database error while performing required operation'); } $price = 0; $it = new SqlResultIterator($db, $result); @@ -437,8 +484,7 @@ class VtigerLineItemOperation extends VtigerActorOperation { if(strcasecmp($parent['hdnTaxType'], $this->Individual) ===0){ $taxAmountsList = array(); foreach ($this->taxList as $taxName => $taxInfo) { - $taxAmountsList[$allTaxes[$taxName]['taxid']] = array( 'percentage' => $taxInfo['percentage'], - 'amount' => ($lineItemTotal * $taxInfo['percentage']) / 100); + $taxAmountsList[$allTaxes[$taxName]['taxid']] = array('percentage' => $taxInfo['percentage'], 'amount' => ($lineItemTotal * $taxInfo['percentage']) / 100); } foreach ($taxAmountsList as $taxId => $taxInfo) { @@ -452,6 +498,7 @@ class VtigerLineItemOperation extends VtigerActorOperation { $parent['hdnSubTotal'] += $taxInfo['amount']; } + $individualPreTaxTotal += $lineItemTotal; } } @@ -463,9 +510,20 @@ class VtigerLineItemOperation extends VtigerActorOperation { $discount = 0; } $parent['pre_tax_total'] = $total = $parent['hdnSubTotal'] - $discount + $parent['hdnS_H_Amount']; + if ($parent['hdnTaxType'] === 'individual') { + $parent['pre_tax_total'] = $individualPreTaxTotal - $discount + $parent['hdnS_H_Amount']; + } + $taxTotal = $parent['hdnSubTotal'] - $discount; - if(strcasecmp($parent['hdnTaxType'], $this->Individual) !==0){ - $this->initTax($createdElement, $parent); + if (strcasecmp($parent['hdnTaxType'], $this->Individual) !== 0) { + $newTaxList = array(); + foreach ($createdElement as $element) { + $this->initTax($element, $parent); + $newTaxList[] = $this->taxList; + } + if ($newTaxList) { + $this->taxList = $newTaxList[0]; + } $taxAmountsList = array(); foreach ($this->taxList as $taxName => $taxInfo) { $taxAmountsList[$allTaxes[$taxName]['taxid']] = array('percentage' => $taxInfo['percentage'], 'amount' => ($taxTotal * $taxInfo['percentage']) / 100); @@ -477,7 +535,7 @@ class VtigerLineItemOperation extends VtigerActorOperation { foreach ($compoundOn[$taxId] as $comTaxId) { $amount += $taxAmountsList[$comTaxId]['amount']; } - $taxAmountsList[$taxId]['amount'] = ($amount * $taxInfo['percentage']) / 100; + $taxInfo['amount'] = $taxAmountsList[$taxId]['amount'] = ($amount * $taxInfo['percentage']) / 100; } $taxAmount += $taxInfo['amount']; @@ -508,7 +566,7 @@ class VtigerLineItemOperation extends VtigerActorOperation { $amount = $calculatedOn = $chargeInfo['value']; if ($allShippingTaxes[$shTaxId]['method'] === 'Compound') { foreach ($allShippingTaxes[$shTaxId]['compoundon'] as $comShTaxId) { - $calculatedOn += ($amount * $charges[$comShTaxId]) / 100; + $calculatedOn += ($amount * $chargeTaxes[$comShTaxId]) / 100; } } @@ -529,10 +587,9 @@ class VtigerLineItemOperation extends VtigerActorOperation { $parentInstance->tab_name_index[$parentInstance->table_name].'=?'; $params = array($parent['hdnSubTotal'],$parent['hdnGrandTotal'],$parent['pre_tax_total'],$parentId); $transactionSuccessful = vtws_runQueryAsTransaction($sql,$params,$result); - $this->resetCacheForParent($parent['id']); + $this->setParent($parent['id'], $parent); if(!$transactionSuccessful){ - throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, - "Database error while performing required operation"); + throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, 'Database error while performing required operation'); } } @@ -543,8 +600,7 @@ class VtigerLineItemOperation extends VtigerActorOperation { $result = null; $transactionSuccessful = vtws_runQueryAsTransaction($sql,$params,$result); if(!$transactionSuccessful){ - throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, - "Database error while performing required operation"); + throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, 'Database error while performing required operation'); } $it = new SqlResultIterator($db, $result); $this->taxList = array(); @@ -564,8 +620,7 @@ class VtigerLineItemOperation extends VtigerActorOperation { $result = null; $transactionSuccessful = vtws_runQueryAsTransaction($sql,$params,$result); if(!$transactionSuccessful){ - throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, - "Database error while performing required operation"); + throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, 'Database error while performing required operation'); } $it = new SqlResultIterator($db, $result); $this->taxList = array(); @@ -601,14 +656,20 @@ class VtigerLineItemOperation extends VtigerActorOperation { } public function getParentById($parentId){ - if(empty(self::$parentCache[$parentId])){ - return vtws_retrieve($parentId, $this->user); - } else { - return self::$parentCache[$parentId]; + if (empty(self::$parentCache[$parentId])) { + self::$parentCache[$parentId] = Vtiger_Functions::jsonEncode(vtws_retrieve($parentId, $this->user)); + } + return json_decode(self::$parentCache[$parentId], true); + } + + public function setParent($parentId, $parent) { + if (is_array($parent) || is_object($parent)) { + $parent = Vtiger_Functions::jsonEncode($parent); } + self::$parentCache[$parentId] = $parent; } - function setCache($parentId, $updatedList) { + function setCache($parentId, $updatedList) { self::$lineItemCache[$parentId] = $updatedList; } @@ -633,9 +694,9 @@ class VtigerLineItemOperation extends VtigerActorOperation { unset($describe['fields'][$key]); } } - // unset will retain array index in the result, we should remove - $describe['fields'] = array_values($describe['fields']); + // unset will retain array index in the result, we should remove + $describe['fields'] = array_values($describe['fields']); return $describe; } } -?> \ No newline at end of file +?> diff --git a/include/Webservices/OperationManager.php b/include/Webservices/OperationManager.php index bf0b7429fadde7e5d757dba7f6b90d3202129b68..63e8d5a79099dfe845eee28a889ca5fdb1c1bbd9 100644 --- a/include/Webservices/OperationManager.php +++ b/include/Webservices/OperationManager.php @@ -158,6 +158,8 @@ return $resp; } } + } catch (DuplicateException $e) { + throw $e; }catch(WebServiceException $e){ throw $e; }catch(Exception $e){ diff --git a/include/Webservices/Utils.php b/include/Webservices/Utils.php index 3a171177aa5d63d9de29a9569b2b378edfa1b4f1..49866d0e249827ca542890371e003ccd0c7d6ef8 100644 --- a/include/Webservices/Utils.php +++ b/include/Webservices/Utils.php @@ -822,59 +822,43 @@ function vtws_transferComments($sourceRecordId, $destinationRecordId) { function vtws_transferOwnership($ownerId, $newOwnerId, $delete=true) { $db = PearDatabase::getInstance(); //Updating the smownerid, modifiedby in vtiger_crmentity - $sql = "UPDATE vtiger_crmentity SET smownerid=?, modifiedtime = ? WHERE smownerid=? AND setype<>?"; - $db->pquery($sql, array($newOwnerId, date('Y-m-d H:i:s'), $ownerId, 'ModComments')); - - $sql = "update vtiger_crmentity set modifiedby=? where modifiedby=?"; - $db->pquery($sql, array($newOwnerId, $ownerId)); + $db->pquery('UPDATE vtiger_crmentity SET smownerid=?, modifiedtime = ? WHERE smownerid=? AND setype<>?', array($newOwnerId, date('Y-m-d H:i:s'), $ownerId, 'ModComments')); + $db->pquery('UPDATE vtiger_crmentity SET modifiedby=? WHERE modifiedby=?', array($newOwnerId, $ownerId)); //deleting from vtiger_tracker - if ($delete) { - $sql = "delete from vtiger_tracker where user_id=?"; - $db->pquery($sql, array($ownerId)); - } + $db->pquery('DELETE FROM vtiger_tracker WHERE user_id=?', array($ownerId)); - //updating the vtiger_import_maps - $sql ="update vtiger_import_maps set assigned_user_id=? where assigned_user_id=?"; - $db->pquery($sql, array($newOwnerId, $ownerId)); + //delete from vtiger_homestuff + $db->pquery('DELETE FROM vtiger_homestuff WHERE userid=?', array($ownerId)); - if(Vtiger_Utils::CheckTable('vtiger_customerportal_prefs')) { - $query = 'UPDATE vtiger_customerportal_prefs SET prefvalue = ? WHERE prefkey = ? AND prefvalue = ?'; - $params = array($newOwnerId, 'defaultassignee', $ownerId); - $db->pquery($query, $params); + //updating the vtiger_import_maps + $db->pquery('UPDATE vtiger_import_maps SET assigned_user_id=? WHERE assigned_user_id=?', array($newOwnerId, $ownerId)); - $query = 'UPDATE vtiger_customerportal_prefs SET prefvalue = ? WHERE prefkey = ? AND prefvalue = ?'; - $params = array($newOwnerId, 'userid', $ownerId); + if (Vtiger_Utils::CheckTable('vtiger_customerportal_prefs')) { + $query = 'UPDATE vtiger_customerportal_prefs SET prefvalue = ? WHERE prefkey IN (?, ?) AND prefvalue = ?'; + $params = array($newOwnerId, 'userid', 'defaultassignee', $ownerId); $db->pquery($query, $params); } - //delete from vtiger_homestuff - if ($delete) { - $sql = "delete from vtiger_homestuff where userid=?"; - $db->pquery($sql, array($ownerId)); - } + $sql = "SELECT tablename,columnname FROM vtiger_field + LEFT JOIN vtiger_fieldmodulerel ON vtiger_field.fieldid=vtiger_fieldmodulerel.fieldid + WHERE (uitype IN (?,?,?,?) OR (uitype=? AND relmodule=?)) AND columnname <> ? GROUP BY tablename,columnname ORDER BY NULL"; + $result = $db->pquery($sql, array(52, 53, 77, 101, 10, 'Users', 'smcreatorid')); - //delete from vtiger_users to vtiger_role vtiger_table - if ($delete) { - $sql = "delete from vtiger_users2group where userid=?"; - $db->pquery($sql, array($ownerId)); - } - - $sql = "SELECT tabid,fieldname,tablename,columnname FROM vtiger_field - LEFT JOIN vtiger_fieldmodulerel ON vtiger_field.fieldid=vtiger_fieldmodulerel.fieldid - WHERE (uitype in (52,53,77,101) OR (uitype=10 AND relmodule='Users')) AND columnname <> 'smcreatorid'"; - $result = $db->pquery($sql, array()); $it = new SqlResultIterator($db, $result); $columnList = array(); foreach ($it as $row) { $column = $row->tablename.'.'.$row->columnname; - if(!in_array($column, $columnList)) { + if (!in_array($column, $columnList)) { $columnList[] = $column; - if($row->columnname == 'smownerid') { - $sql = "update $row->tablename set $row->columnname=? where $row->columnname=? and setype<>?"; + if ($row->columnname == 'smownerid') { + $sql = "UPDATE $row->tablename set $row->columnname=? WHERE $row->columnname=? AND setype<>?"; $db->pquery($sql, array($newOwnerId, $ownerId, 'ModComments')); + } elseif ($row->tablename == 'vtiger_users' && $row->columnname == 'reports_to_id') { + $sql = "UPDATE $row->tablename SET $row->columnname = CASE WHEN id=$newOwnerId THEN ? ELSE ? END WHERE $row->columnname=?"; + $db->pquery($sql, array('', $newOwnerId, $ownerId)); } else { - $sql = "update $row->tablename set $row->columnname=? where $row->columnname=?"; + $sql = "UPDATE $row->tablename SET $row->columnname=? WHERE $row->columnname=?"; $db->pquery($sql, array($newOwnerId, $ownerId)); } } @@ -886,46 +870,63 @@ function vtws_transferOwnership($ownerId, $newOwnerId, $delete=true) { //update workflow tasks Assigned User from Deleted User to Transfer User $newOwnerModel = Users_Record_Model::getInstanceById($newOwnerId, 'Users'); $ownerModel = Users_Record_Model::getInstanceById($ownerId, 'Users'); - + vtws_transferOwnershipForWorkflowTasks($ownerModel, $newOwnerModel); - vtws_updateWebformsRoundrobinUsersLists($ownerId, $newOwnerId); -} - -function vtws_updateWebformsRoundrobinUsersLists($ownerId, $newOwnerId){ - $db = PearDatabase::getInstance(); - $sql = 'SELECT id,roundrobin_userid FROM vtiger_webforms;'; - $result = $db->pquery($sql, array()); - $numOfRows = $db->num_rows($result); - for($i=0;$i<$numOfRows;$i++){ - $rowdata = $db->query_result_rowdata($result, $i); - $webformId = $rowdata['id']; - $encodedUsersList = $rowdata['roundrobin_userid']; - $encodedUsersList = str_replace(""","\"",$encodedUsersList); - $usersList = json_decode($encodedUsersList,true); - if(is_array($usersList)){ - if(($key = array_search($ownerId, $usersList)) !== false){ - if(!in_array($newOwnerId,$usersList)){ - $usersList[$key] = $newOwnerId; - } - else{ - unset($usersList[$key]); - $revisedUsersList = array(); - $j=0; - foreach($usersList as $uid){ - $revisedUsersList[$j++] = $uid; - } - $usersList = $revisedUsersList; - } - if(count($usersList) == 0){ - $db->pquery('UPDATE vtiger_webforms SET roundrobin_userid = ?,roundrobin = ? where id =?',array("--None--",0,$webformId)); - } - else{ - $usersList = json_encode($usersList); - $db->pquery('UPDATE vtiger_webforms SET roundrobin_userid = ? where id =?',array($usersList,$webformId)); - } - } - } - } + vtws_updateWebformsRoundrobinUsersLists($ownerId, $newOwnerId); + + //transferring non-private filters (status not 1) of deleted user to new selected user + $db->pquery('UPDATE vtiger_customview SET userid = ? WHERE userid = ? AND status != ?', array($newOwnerId, $ownerId, 1)); + //transferring private shared filters of deleted user to selected user + $db->pquery('UPDATE vtiger_customview SET userid = ? WHERE userid = ? AND status = ? AND cvid IN (SELECT cvid FROM vtiger_cv2users UNION SELECT cvid FROM vtiger_cv2group UNION SELECT cvid FROM vtiger_cv2role UNION SELECT cvid FROM vtiger_cv2rs)', array($newOwnerId, $ownerId, 1)); + + if ($delete) { + //Delete from vtiger_users to vtiger_role vtiger_table + $db->pquery('DELETE FROM vtiger_users2group WHERE userid=?', array($ownerId)); + + //Mark user as deleted =1 + $db->pquery('UPDATE vtiger_users SET deleted=? WHERE id=?', array(1, $ownerId)); + + //Change the owner for report + $db->pquery('UPDATE vtiger_report SET owner=? WHERE owner=?', array($newOwnerId, $ownerId)); + + //Recalculate user privelege file + RecalculateSharingRules(); + } +} + +function vtws_updateWebformsRoundrobinUsersLists($ownerId, $newOwnerId) { + $db = PearDatabase::getInstance(); + $sql = 'SELECT id,roundrobin_userid FROM vtiger_webforms;'; + $result = $db->pquery($sql, array()); + $numOfRows = $db->num_rows($result); + for ($i = 0; $i < $numOfRows; $i++) { + $rowdata = $db->query_result_rowdata($result, $i); + $webformId = $rowdata['id']; + $encodedUsersList = $rowdata['roundrobin_userid']; + $encodedUsersList = str_replace(""", "\"", $encodedUsersList); + $usersList = json_decode($encodedUsersList, true); + if (is_array($usersList)) { + if (($key = array_search($ownerId, $usersList)) !== false) { + if (!in_array($newOwnerId, $usersList)) { + $usersList[$key] = $newOwnerId; + } else { + unset($usersList[$key]); + $revisedUsersList = array(); + $j = 0; + foreach ($usersList as $uid) { + $revisedUsersList[$j++] = $uid; + } + $usersList = $revisedUsersList; + } + if (count($usersList) == 0) { + $db->pquery('UPDATE vtiger_webforms SET roundrobin_userid = ?,roundrobin = ? where id =?', array("--None--", 0, $webformId)); + } else { + $usersList = json_encode($usersList); + $db->pquery('UPDATE vtiger_webforms SET roundrobin_userid = ? where id =?', array($usersList, $webformId)); + } + } + } + } } function vtws_transferOwnershipForWorkflowTasks($ownerModel, $newOwnerModel) { @@ -1273,4 +1274,15 @@ function vtws_recordExists($recordId) { return !Vtiger_Util_Helper::CheckRecordExistance($ids[1]); } +function vtws_isDuplicatesAllowed($webserviceObject){ + $moduleName = $webserviceObject->getEntityName(); + $allowed = true; + if ($moduleName) { + $db = PearDatabase::getInstance(); + $result = $db->pquery('SELECT allowduplicates FROM vtiger_tab WHERE name=?', array($moduleName)); + $allowed = ($db->query_result($result, 'allowduplicates')) ? true : false; + } + return $allowed; +} + ?> \ No newline at end of file diff --git a/include/Webservices/VtigerCRMObjectMeta.php b/include/Webservices/VtigerCRMObjectMeta.php index 0d35e2b5d0e8a2057c72c0176ce8c40f43252c79..dc4afcb3d7a82c5dbb933f3793f5c8f463897841 100644 --- a/include/Webservices/VtigerCRMObjectMeta.php +++ b/include/Webservices/VtigerCRMObjectMeta.php @@ -553,5 +553,12 @@ class VtigerCRMObjectMeta extends EntityMeta { return true; } + public function isDuplicatesAllowed() { + if (!isset($this->allowDuplicates)) { + $this->allowDuplicates = vtws_isDuplicatesAllowed($this->webserviceObject); + } + return $this->allowDuplicates; + } + } ?> \ No newline at end of file diff --git a/include/Webservices/VtigerModuleOperation.php b/include/Webservices/VtigerModuleOperation.php index 98f576cda377521f570b27029afe14c530e0da4e..675b67ff8b4f000211db868d3a1ad9a3c4898626 100644 --- a/include/Webservices/VtigerModuleOperation.php +++ b/include/Webservices/VtigerModuleOperation.php @@ -206,9 +206,17 @@ class VtigerModuleOperation extends WebserviceEntityOperation { $deleteable = $this->meta->hasDeleteAccess(); $retrieveable = $this->meta->hasReadAccess(); $fields = $this->getModuleFields(); - return array("label"=>$label,"name"=>$elementType,"createable"=>$createable,"updateable"=>$updateable, - "deleteable"=>$deleteable,"retrieveable"=>$retrieveable,"fields"=>$fields, - "idPrefix"=>$this->meta->getEntityId(),'isEntity'=>$this->isEntity,'labelFields'=>$this->meta->getNameFields()); + return array( 'label' => $label, + 'name' => $elementType, + 'createable' => $createable, + 'updateable' => $updateable, + 'deleteable' => $deleteable, + 'retrieveable' => $retrieveable, + 'fields' => $fields, + 'idPrefix' => $this->meta->getEntityId(), + 'isEntity' => $this->isEntity, + 'allowDuplicates'=> $this->meta->isDuplicatesAllowed(), + 'labelFields' => $this->meta->getNameFields()); } public function describePartial($elementType, $fields=null) { @@ -253,9 +261,13 @@ class VtigerModuleOperation extends WebserviceEntityOperation { } $editable = $this->isEditable($webserviceField); - $describeArray = array('name'=>$webserviceField->getFieldName(),'label'=>$fieldLabel,'mandatory'=> - $webserviceField->isMandatory(),'type'=>$typeDetails,'nullable'=>$webserviceField->isNullable(), - "editable"=>$editable); + $describeArray = array( 'name' => $webserviceField->getFieldName(), + 'label' => $fieldLabel, + 'mandatory' => $webserviceField->isMandatory(), + 'type' => $typeDetails, + 'isunique' => $webserviceField->isUnique(), + 'nullable' => $webserviceField->isNullable(), + 'editable' => $editable); if($webserviceField->hasDefault()){ $describeArray['default'] = $webserviceField->getDefault(); } diff --git a/include/Webservices/WebserviceField.php b/include/Webservices/WebserviceField.php index ed0ac2f13b1c4c939b6acf819a6c241a2447f34d..c5add0d22c19018b099b1b259f586f7fc4421dbf 100644 --- a/include/Webservices/WebserviceField.php +++ b/include/Webservices/WebserviceField.php @@ -46,6 +46,7 @@ class WebserviceField{ private $genericUIType = 10; private $readOnly = 0; + private $isunique = 0; private function __construct($adb,$row){ $this->uitype = $row['uitype']; @@ -57,8 +58,9 @@ class WebserviceField{ $this->fieldLabel = $row['fieldlabel']; $this->displayType = $row['displaytype']; $this->massEditable = ($row['masseditable'] === '1')? true: false; - $typeOfData = $row['typeofdata']; $this->presence = $row['presence']; + $this->isunique = ($row['isunique']) ? true : false; + $typeOfData = $row['typeofdata']; $this->typeOfData = $typeOfData; $typeOfData = explode("~",$typeOfData); $this->mandatory = ($typeOfData[1] == 'M')? true: false; @@ -118,6 +120,10 @@ class WebserviceField{ return $this->displayType; } + public function isUnique(){ + return $this->isunique; + } + public function getMassEditable(){ return $this->massEditable; } diff --git a/include/events/VTEntityData.inc b/include/events/VTEntityData.inc index 4ea4c10f0920b961f3a6c205a2a77d1fc3372bf3..853dbb7856fc86fc121a967cff9be072ecf10d41 100644 --- a/include/events/VTEntityData.inc +++ b/include/events/VTEntityData.inc @@ -184,5 +184,27 @@ class VTEntityData{ return $db->query_result($result, 0, 'label'); } + public static function getInstanceByDeletedEntityId($db, $entityId, $moduleName = '') { + $obj = new VTEntityData(); + $obj->isNew = false; + $obj->entityId = $entityId; + + if (!$moduleName) { + $result = $db->pquery('SELECT setype FROM vtiger_crmentity WHERE crmid=?', array($entityId)); + $moduleName = $db->query_result($result, 0, 'setype'); + } + if ($moduleName == 'Calendar') { + $moduleName = vtws_getCalendarEntityType($entityId); + } + $obj->moduleName = $moduleName; + + require_once('data/CRMEntity.php'); + $focus = CRMEntity::getInstance($moduleName); + $focus->retrieve_entity_info($entityId, $moduleName, $allowDeleted = true); + $focus->id = $entityId; + + $obj->focus = $focus; + return $obj; + } } ?> diff --git a/include/utils/VtlibUtils.php b/include/utils/VtlibUtils.php index a96f5e88445a77d5a2213e63f43f0e91ae9aa510..c7cb39e8898c5a559bbfe4d09780367ffcb7808c 100644 --- a/include/utils/VtlibUtils.php +++ b/include/utils/VtlibUtils.php @@ -349,7 +349,10 @@ function __vtlib_get_modulevar_value($module, $varname) { 'IsCustomModule'=>false, 'table_name' => 'vtiger_quotes', 'table_index'=> 'quoteid', - 'related_tables' => Array ('vtiger_account' => Array('accountid')), + 'related_tables' => Array ( + 'vtiger_quotescf' => array('quoteid', 'vtiger_quotes', 'quoteid'), + 'vtiger_account' => Array('accountid') + ), 'popup_fields'=>Array('subject'), ), 'SalesOrder'=> @@ -357,7 +360,10 @@ function __vtlib_get_modulevar_value($module, $varname) { 'IsCustomModule'=>false, 'table_name' => 'vtiger_salesorder', 'table_index'=> 'salesorderid', - 'related_tables'=> Array ('vtiger_account' => Array('accountid')), + 'related_tables'=> Array ( + 'vtiger_salesordercf' => array('salesorderid', 'vtiger_salesorder', 'salesorderid'), + 'vtiger_account' => Array('accountid') + ), 'popup_fields'=>Array('subject'), ), 'PurchaseOrder'=> @@ -404,6 +410,9 @@ function __vtlib_get_modulevar_value($module, $varname) { 'IsCustomModule'=>false, 'table_name' => 'vtiger_notes', 'table_index'=> 'notesid', + 'related_tables' => Array( + 'vtiger_notescf' => Array('notesid', 'vtiger_notes', 'notesid') + ), ), 'Products'=> Array( @@ -427,6 +436,9 @@ function __vtlib_get_modulevar_value($module, $varname) { 'table_name' => 'vtiger_vendor', 'table_index'=> 'vendorid', 'popup_fields'=>Array('vendorname'), + 'related_tables'=> Array( + 'vtiger_vendorcf' => Array('vendorid', 'vtiger_vendor', 'vendorid') + ), ), 'Project' => Array( diff --git a/include/utils/utils.php b/include/utils/utils.php index 6246a16db98687bcee3f18c284eaa35d57c1d3d5..965910a3f85cb8906a7571806ac87490a44d11d9 100755 --- a/include/utils/utils.php +++ b/include/utils/utils.php @@ -334,7 +334,7 @@ function set_default_config(&$defaults) */ function decide_to_html() { global $doconvert, $inUTF8, $default_charset; - $action = $_REQUEST['action']; + $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : ''; $inUTF8 = (strtoupper($default_charset) == 'UTF-8'); @@ -2458,4 +2458,166 @@ function deleteRecordFromDetailViewNavigationRecords($recordId, $cvId, $moduleNa } } -?> \ No newline at end of file +function sendMailToUserOnDuplicationPrevention($moduleName, $fieldData, $mailBody, $userModel = '') { + if (!$userModel) { + $userId = $_SESSION['authenticated_user_id']; + if ($userId) { + $userModel = Users_Record_Model::getInstanceFromPreferenceFile($userId); + } else { + $userModel = Users_Record_Model::getCurrentUserModel(); + } + } + + $mailer = Emails_Mailer_Model::getInstance(); + $mailer->IsHTML(true); + + $emailRecordModel = Emails_Record_Model::getCleanInstance('Emails'); + $fromEmail = $emailRecordModel->getFromEmailAddress(); + $replyTo = $emailRecordModel->getReplyToEmail(); + $userName = $userModel->getName(); + + $mailer->ConfigSenderInfo($fromEmail, $userName, $replyTo); + $mailer->Subject = vtranslate('LBL_VTIGER_NOTIFICATION'); + $body = $mailBody; + + $body .= '<br>'; + $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + $fieldModels = $moduleModel->getFields(); + foreach ($fieldModels as $fieldName => $fieldModel) { + if ($fieldModel->isUniqueField() && $fieldModel->isViewable()) { + $fieldValue = $fieldData[$fieldName]; + + switch($fieldModel->getFieldDataType()) { + case 'reference' : list($refModuleId, $refRecordId) = vtws_getIdComponents($fieldValue); + $fieldValue = Vtiger_Functions::getCRMRecordLabel($refRecordId); + break; + case 'date' : + case 'datetime' : + case 'currency' : + case 'currencyList' : + case 'documentsFolder' : + case 'multipicklist' : if ($fieldValue) { + $fieldValue = $fieldModel->getDisplayValue($fieldValue); + } + break; + } + + $fieldLabel = $fieldModel->get('label'); + $body .= '<br>'.vtranslate($fieldLabel, $moduleName)." : $fieldValue<br>"; + } + } + $body .= '<br>'; + + if ($userModel->isAdminUser()) { + $siteURL = vglobal('site_URL'); + $url = "$siteURL/index.php?parent=Settings&module=LayoutEditor&sourceModule=$moduleName&mode=showDuplicationHandling"; + $here = '<a href="'.$url.'" target="_blank">'.vtranslate('LBL_CLICK_HERE', $moduleName).'</a>'; + $body .= vtranslate('LBL_DUPLICATION_FAILURE_FOR_ADMIN', $moduleName, $here); + } else { + $body .= vtranslate('LBL_DUPLICATION_FAILURE_FOR_NON_ADMIN', $moduleName); + } + + $mailer->Body = $body; + $mailer->AddAddress($userModel->get('email1'), $userName); + $mailer->Send(false); +} + +function getDuplicatesPreventionMessage($moduleName, $duplicateRecordsList) { + $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + $fieldModels = $moduleModel->getFields(); + + $recordId = reset($duplicateRecordsList); + $recordModel = Vtiger_Record_Model::getInstanceById($recordId); + $recordData = $recordModel->getData(); + + $uniqueFields = array(); + foreach ($fieldModels as $fieldName => $fieldModel) { + $fieldDataType = $fieldModel->getFieldDataType(); + $fieldValue = $recordData[$fieldName]; + + if ($fieldDataType === 'reference' && $fieldValue == 0) { + $fieldValue = ''; + } + + if ($fieldModel->isUniqueField() && $fieldModel->isViewable() && $fieldValue !== '' && $fieldValue !== NULL) { + $uniqueFields[] = $fieldModel; + } + } + + $fieldsString = ''; + $uniqueFieldsCount = count($uniqueFields); + for($i=0; $i<$uniqueFieldsCount; $i++) { + $fieldModel = $uniqueFields[$i]; + $fieldLabel = $fieldModel->get('label'); + $fieldsString .= vtranslate($fieldLabel, $moduleName); + + if ($uniqueFieldsCount != 1 && $i == ($uniqueFieldsCount-2)) { + $fieldsString .= ' '.vtranslate('LBL_AND', $moduleName).' '; + } else if ($i != ($uniqueFieldsCount-1)) { + $fieldsString .= ', '; + } + } + $fieldsString = rtrim($fieldsString, ','); + + $singleModuleName = vtranslate('SINGLE_'.$moduleName, $moduleName); + $translatedModuleName = $singleModuleName; + $duplicateRecordsCount = count($duplicateRecordsList); + if ($duplicateRecordsCount > 1) { + $translatedModuleName = vtranslate($moduleName, $moduleName); + } + $message = vtranslate('LBL_DUPLICATES_FOUND_MESSAGE', $moduleName, $singleModuleName, $translatedModuleName, $fieldsString).' '; + + $currentUserModel = Users_Record_Model::getCurrentUserModel(); + if ($currentUserModel->isAdminUser()) { + $url = "index.php?parent=Settings&module=LayoutEditor&sourceModule=$moduleName&mode=showDuplicationHandling"; + $here = '<a href="'.$url.'" target="_blank" style="color:#15c !important">'.vtranslate('LBL_CLICK_HERE', $moduleName).'</a>'; + $message .= vtranslate('LBL_DUPLICATION_FAILURE_FOR_ADMIN', $moduleName, $here); + } else { + $message .= vtranslate('LBL_DUPLICATION_FAILURE_FOR_NON_ADMIN', $moduleName); + } + + $message .= '<br><br>'; + $message .= vtranslate('LBL_DUPLICATE_RECORD_LISTS', $moduleName, $singleModuleName).'<br>'; + for ($i=0; $i<$duplicateRecordsCount && $i<5; $i++) { + $dupliRecordId = $duplicateRecordsList[$i]; + $dupliRecordModel = new Vtiger_Record_Model(); + $dupliRecordModel->setId($dupliRecordId)->setModuleFromInstance($moduleModel); + $message .= '<a href="'.$dupliRecordModel->getDetailViewUrl().'" target="_blank" style="color:#15c !important">'.Vtiger_Functions::getCRMRecordLabel($dupliRecordId).'</a><br>'; + } + + if ($duplicateRecordsCount === 6) { + $searchParams = array(); + foreach ($uniqueFields as $fieldModel) { + $fieldName = $fieldModel->getName(); + $fieldValue = $recordData[$fieldName]; + $fieldDataType = $fieldModel->getFieldDataType(); + switch($fieldDataType) { + case 'reference' : $fieldValue = Vtiger_Functions::getCRMRecordLabel($fieldValue); + break; + case 'date' : + case 'datetime' : + case 'currency' : + case 'currencyList' : + case 'documentsFolder' : + case 'multipicklist' : if ($fieldValue) { + $fieldValue = $fieldModel->getDisplayValue($fieldValue); + } + break; + } + + $comparator = 'e'; + if (in_array($fieldDataType, array('date', 'datetime'))) { + $comparator = 'bw'; + $fieldValue = "$fieldValue,$fieldValue"; + } + $searchParams[] = array($fieldName, $comparator, $fieldValue); + } + + $listViewUrl = $moduleModel->getListViewUrl().'&search_params='.json_encode(array($searchParams)); + $message .= "<a href='$listViewUrl' target='_blank' style='color:#15c !important'>+". strtolower(vtranslate('LBL_MORE', $moduleName)).'</a>'; + } + + return $message; +} + +?> diff --git a/includes/http/Response.php b/includes/http/Response.php index 38e8ca3129ab225de088b08b3e15bfc2023ee68b..a6ce17c6a29e066d9f11daca121432e92827b38b 100644 --- a/includes/http/Response.php +++ b/includes/http/Response.php @@ -64,9 +64,9 @@ class Vtiger_Response { /** * Set error data to send */ - function setError($code, $message=null) { + function setError($code, $message=null, $title=null) { if ($message == null) $message = $code; - $error = array('code' => $code, 'message' => $message); + $error = array('code' => $code, 'message' => $message, 'title' => $title); $this->error = $error; } diff --git a/includes/runtime/LanguageHandler.php b/includes/runtime/LanguageHandler.php index 6af2e4b56e6e2c4835fbfbcef4877c4c44d799bb..e2a993f87b5dd57bf395da113e720df44770c41e 100644 --- a/includes/runtime/LanguageHandler.php +++ b/includes/runtime/LanguageHandler.php @@ -147,7 +147,7 @@ class Vtiger_Language_Handler { public static function getLanguage() { $userModel = Users_Record_Model::getCurrentUserModel(); $language = ''; - if (!empty($userModel)) { + if (!empty($userModel) && $userModel->has('language')) { $language = $userModel->get('language'); } return empty($language) ? vglobal('default_language') : $language; diff --git a/languages/en_us/Calendar.php b/languages/en_us/Calendar.php index 728996280b0c8bf32af0ddd7cc05ce048b6ffee2..0633f5f485f467c05ad928fd890e112853ba7b75 100644 --- a/languages/en_us/Calendar.php +++ b/languages/en_us/Calendar.php @@ -107,6 +107,8 @@ $languageStrings = array( 'LBL_TOTAL_TASKS_SKIPPED' => 'No. of Tasks Skipped as they were missing one or more required field ', 'LBL_TOTAL_EVENTS_IMPORTED' => 'No. of Events Successfully Imported ', 'LBL_TOTAL_EVENTS_SKIPPED' => 'No. of Events Skipped as they were missing one or more required field ', + 'LBL_TOTAL_EVENTS_DUPLICATED' => 'No. of duplicate Events skipped', + 'LBL_TOTAL_TASKS_DUPLICATED' => 'No. of duplicate Tasks skipped', 'ICAL_FORMAT' => 'iCal Format', 'LBL_LAST_IMPORT_UNDONE'=>'Your Last Import Was Undone', diff --git a/languages/en_us/Contacts.php b/languages/en_us/Contacts.php index dff08535ca8656bb4ccc75c24fe15beba1485c2f..e7a4b3824516e76723c11e31383851bd816f3a1f 100644 --- a/languages/en_us/Contacts.php +++ b/languages/en_us/Contacts.php @@ -61,7 +61,6 @@ $languageStrings = array( 'Prof.'=>'Prof.', 'User List'=>'User List', - 'LBL_TRANSACTIONS' => 'Transactions', ); $jsLanguageStrings = array( diff --git a/languages/en_us/Install.php b/languages/en_us/Install.php index 8a77320ba9da6814df772959aab9345b1cf0b879..7ddd329396035dbcaa0bf17a6481965c32cbde7e 100644 --- a/languages/en_us/Install.php +++ b/languages/en_us/Install.php @@ -11,6 +11,7 @@ $languageStrings = array( 'ERR_DATABASE_CONNECTION_FAILED' => 'Unable to connect to database Server', 'ERR_DB_NOT_FOUND' => 'This Database is not found.Try changing the Database settings', + 'ERR_DB_NOT_UTF8' => 'Database charset or collation not compatible with UTF8', 'ERR_INVALID_MYSQL_PARAMETERS' => 'Invalid mySQL Connection Parameters specified', 'ERR_INVALID_MYSQL_VERSION' => 'MySQL version is not supported, kindly connect to MySQL 5.1.x or above', 'ERR_UNABLE_CREATE_DATABASE' => 'Unable to Create database', @@ -61,6 +62,7 @@ $languageStrings = array( 'LBL_WELCOME_TO_VTIGER7_SETUP_WIZARD' => 'Welcome to Vtiger CRM 7 Setup Wizard', 'LBL_WELCOME' => 'Welcome', 'LBL_ZLIB_SUPPORT' => 'Zlib Support', + 'LBL_SIMPLEXML' => 'SimpleXML Support', 'MSG_DB_PARAMETERS_INVALID' => 'specified database user, password, hostname, database type, or port is invalid', 'MSG_DB_ROOT_USER_NOT_AUTHORIZED' => 'Message: Specified database Root User doesn\'t have permission to Create database or the Database name has special characters. Try changing the Database settings', 'MSG_DB_USER_NOT_AUTHORIZED' => 'specified database user does not have access to connect to the database server from the host', diff --git a/languages/en_us/ModuleManager.php b/languages/en_us/ModuleManager.php index 9bdf5d43de07945be7d7b06f76a1040427511115..3fb624ae7452b736fa9f5a2cd17bea0801b8a6f7 100644 --- a/languages/en_us/ModuleManager.php +++ b/languages/en_us/ModuleManager.php @@ -45,7 +45,7 @@ $languageStrings = array( 'LBL_EXTENSION_STORE' => 'Extension Store', 'LBL_ACCEPT_WITH_THE_DISCLAIMER' => 'I accept with disclaimer and would like to proceed', 'LBL_INSTALL_FROM_ZIP' => 'Install from Zip', - 'LBL_DELETE_EXIST_DIRECTORY' => 'Please delete the module direcctory that exist to proceed with import module', + 'LBL_DELETE_EXIST_DIRECTORY' => 'Please delete the module directory that exist to proceed with import module', 'LBL_UPDATE_MODULE_FROM_FILE' => 'Update Module From File', 'LBL_UPDATED_MODULE' => ' module was updated successfully.', diff --git a/languages/en_us/Settings/LayoutEditor.php b/languages/en_us/Settings/LayoutEditor.php index 735de7c645c061a87b784c6d53edc0669a78acae..23b58c1f11f0762005f647a05ea031aec7979723 100644 --- a/languages/en_us/Settings/LayoutEditor.php +++ b/languages/en_us/Settings/LayoutEditor.php @@ -147,6 +147,21 @@ $languageStrings = array( 'LBL_HEADER' => 'Header', 'LBL_DETAIL_HEADER' => 'Record header', 'LBL_HEADER_FIELD' => 'Header View', + + 'LBL_DUPLICATE_HANDLING' => 'Duplicate Prevention', + 'LBL_DUPLICATE_CHECK' => 'Enable duplicate check', + 'LBL_DUPLICATION_INFO_MESSAGE' => 'Duplicate prevention feature only prevents new duplicate records from getting created by users and external applications. Records created from Import, and from Workflows will not be checked for duplicates.<br><br>Existing duplicate records can be removed using “Find Duplicates†feature from the module page.', + 'LBL_SELECT_FIELDS_FOR_DUPLICATION' => 'Select the unique fields on which duplicate records are to be checked', + 'LBL_SELECT_FIELDS' => 'Select Fields', + 'LBL_MAX_3_FIELDS' => 'Max 3 Fields', + 'LBL_SELECT_RULE' => 'Select rule for handling duplicates', + 'LBL_ALLOW_DUPLICATES' => 'Allow Duplicates', + 'LBL_DO_NOT_ALLOW_DUPLICATES' => 'Do not allow Duplicates', + 'LBL_DUPLICATES_IN_SYNC_MESSAGE' => 'Action to take if duplicate record is found while syncing with external application', + 'LBL_PREFER_LATEST_RECORD' => 'Prefer latest record', + 'LBL_PREFER_INTERNAL_RECORD' => 'Prefer internal record', + 'LBL_PREFER_EXTERNAL_RECORD' => 'Prefer external record', + 'LBL_SYNC_TOOLTIP_MESSAGE' => 'Prefer latest record - Most recently modified record data will be retained<br>Prefer internal record - Existing record will be retained as it is<br>Prefer external record - Data from the external application will be copied', ); $jsLanguageStrings = array( @@ -207,4 +222,8 @@ $jsLanguageStrings = array( 'JS_MAXIMUM_HEADER_FIELDS_ALLOWED' => 'Maximum %s header fields allowed', 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'Name fields appear in Header by default', 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'This Field is Header enabled for Vtiger7, It will appear in Summary View', + + 'JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE' => 'Successfully updated to consider selected fields in duplicates prevention', + 'JS_DUPLICATE_HANDLING_FAILURE_MESSAGE' => 'Failed to consider selected fields in duplicates prevention', + 'JS_DUPLICATE_CHECK_DISABLED' => 'Duplicate check is disabled', ); diff --git a/languages/en_us/Settings/ModuleManager.php b/languages/en_us/Settings/ModuleManager.php index 9bdf5d43de07945be7d7b06f76a1040427511115..3fb624ae7452b736fa9f5a2cd17bea0801b8a6f7 100644 --- a/languages/en_us/Settings/ModuleManager.php +++ b/languages/en_us/Settings/ModuleManager.php @@ -45,7 +45,7 @@ $languageStrings = array( 'LBL_EXTENSION_STORE' => 'Extension Store', 'LBL_ACCEPT_WITH_THE_DISCLAIMER' => 'I accept with disclaimer and would like to proceed', 'LBL_INSTALL_FROM_ZIP' => 'Install from Zip', - 'LBL_DELETE_EXIST_DIRECTORY' => 'Please delete the module direcctory that exist to proceed with import module', + 'LBL_DELETE_EXIST_DIRECTORY' => 'Please delete the module directory that exist to proceed with import module', 'LBL_UPDATE_MODULE_FROM_FILE' => 'Update Module From File', 'LBL_UPDATED_MODULE' => ' module was updated successfully.', diff --git a/languages/en_us/Users.php b/languages/en_us/Users.php index c55af466b60e23fed7b626013fbf6033315489de..64f948109619037330706d637fa8594489738216 100644 --- a/languages/en_us/Users.php +++ b/languages/en_us/Users.php @@ -35,7 +35,7 @@ $languageStrings = array( 'Reports To' => 'Reports To', 'Yahoo id' => 'Yahoo id', 'Home Phone' => 'Home Phone', - 'User Image' => 'Upload Photograph', + 'User Image' => 'User Image', 'Date Format' => 'Date Format', 'Tag Cloud' => 'Tag Cloud', 'Signature' => 'Signature', @@ -137,9 +137,9 @@ $languageStrings = array( 'Asia/Kuwait' => '(UTC+03:00) Kuwait, Riyadh', 'Asia/Baghdad' => '(UTC+03:00) Baghdad', 'Africa/Nairobi' => '(UTC+03:00) Nairobi', + 'Europe/Moscow' => '(UTC+03:00) Moscow, Volgograd', 'Asia/Tehran' => '(UTC+03:30) Tehran', 'Asia/Tbilisi' => '(UTC+04:00) Tbilisi', - 'Europe/Moscow' => '(UTC+04:00) Moscow, Volgograd', 'Asia/Muscat' => '(UTC+04:00) Abu Dhabi, Muscat', 'Asia/Baku' => '(UTC+04:00) Baku', 'Asia/Yerevan' => '(UTC+04:00) Yerevan', diff --git a/languages/en_us/Vtiger.php b/languages/en_us/Vtiger.php index dbe86879693ad7f9217954fa4a4f14f16305a738..596c3caa76d0578e5d40cd59e26526b4564c1694 100644 --- a/languages/en_us/Vtiger.php +++ b/languages/en_us/Vtiger.php @@ -40,6 +40,9 @@ $languageStrings = array( 'LBL_NOT_STARRED' => 'Click to follow', 'LBL_QUICK_VIEW' => 'Quick View', 'LBL_NOTIFICATION_CENTER' => 'Notification Center', + 'LBL_NOTIFICATION' => 'Notification', + 'LBL_STARRED_RECORD_TO' => '%s to %s', + 'LBL_STARRED_RECORD_UPDATED' => '%s updated %s', 'LBL_SETTINGS'=> 'Settings', 'LBL_ADD_COMMENT' => 'Add Comment', 'LBL_EDIT_FIELDS' => '%s Fields & Layout', @@ -1161,6 +1164,7 @@ $languageStrings = array( 'LBL_MARKETING' => 'MARKETING', 'LBL_SALES' => 'SALES', 'LBL_PROJECT' => 'PROJECTS', + 'LBL_TOOLS' => 'TOOLS', 'LBL_TAGS' => 'Tags', 'LBL_SHARE_TAGS' => 'Public Tags', 'LBL_SHARE_TAG' => 'Shared Tag(s)', @@ -1336,7 +1340,7 @@ $languageStrings = array( '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_DUPLICATE_RECORD_LISTS' =>'Duplicate %s(s) :', 'LBL_COLUMNS_ADDED'=>'of %s columns added', 'LBL_SHOW_ALL'=>'Show all', 'LBL_LanguageEditor_WEBTITLE' => 'Labels Editor', @@ -1931,4 +1935,6 @@ $jsLanguageStrings = array( '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', + 'JS_PASSWORD_MISMATCH_ERROR' => 'Please re-enter passwords. The "new password" and "confirm password" values do not match.', + 'LBL_LIST_DELETE_CONFIRMATION' => 'Are you sure you want to delete?', ); \ No newline at end of file diff --git a/layouts/v7/modules/Accounts/DetailViewHeaderTitle.tpl b/layouts/v7/modules/Accounts/DetailViewHeaderTitle.tpl index 77f70b1085204bfa687b905060519a572e6bb863..7b92d5ce0ead303579f156c73322edacc3fcea1f 100644 --- a/layouts/v7/modules/Accounts/DetailViewHeaderTitle.tpl +++ b/layouts/v7/modules/Accounts/DetailViewHeaderTitle.tpl @@ -22,8 +22,8 @@ {/if} {/foreach} {if empty($IMAGE_DETAILS)} - <div class="name"><span><strong> <i class="vicon-accounts"></i> </strong></span></div> - {/if} + <div class="name"><span><strong>{$MODULE_MODEL->getModuleIcon()}</strong></span></div> + {/if} </div> <div class="recordBasicInfo"> <div class="info-row" > diff --git a/layouts/v7/modules/Calendar/ListViewRecordActions.tpl b/layouts/v7/modules/Calendar/ListViewRecordActions.tpl index 4940f5c959f73739e63368097d721875e05db5c4..129b900110fd6371ebc2bc888b22674dc3985613 100644 --- a/layouts/v7/modules/Calendar/ListViewRecordActions.tpl +++ b/layouts/v7/modules/Calendar/ListViewRecordActions.tpl @@ -20,17 +20,21 @@ {assign var=STARRED value=false} {/if} {if $QUICK_PREVIEW_ENABLED eq 'true'} - <span class="quickView fa fa-eye icon action" title="{vtranslate('LBL_QUICK_VIEW', $MODULE)}"></span> + <span> + <a class="quickView fa fa-eye icon action" title="{vtranslate('LBL_QUICK_VIEW', $MODULE)}"></a> + </span> {/if} {if $MODULE_MODEL->isStarredEnabled()} - <span class="markStar fa icon action {if $STARRED} fa-star active {else} fa-star-o{/if}" title="{if $STARRED} {vtranslate('LBL_STARRED', $MODULE)} {else} {vtranslate('LBL_NOT_STARRED', $MODULE)}{/if}"></span> + <span> + <a class="markStar fa icon action {if $STARRED} fa-star active {else} fa-star-o{/if}" title="{if $STARRED} {vtranslate('LBL_STARRED', $MODULE)} {else} {vtranslate('LBL_NOT_STARRED', $MODULE)}{/if}"></a> + </span> {/if} {assign var=EDIT_VIEW_URL value={$LISTVIEW_ENTRY->getEditViewUrl()}} {if $IS_MODULE_EDITABLE && $EDIT_VIEW_URL && $LISTVIEW_ENTRY->get('taskstatus') neq vtranslate('Held', $MODULE) && $LISTVIEW_ENTRY->get('taskstatus') neq vtranslate('Completed', $MODULE)} - <span class="fa fa-check icon action" title="{vtranslate('LBL_MARK_AS_HELD', $MODULE)}" onclick="Calendar_Calendar_Js.markAsHeld('{$LISTVIEW_ENTRY->getId()}');"></span> + <span class="fa fa-check icon action markAsHeld" title="{vtranslate('LBL_MARK_AS_HELD', $MODULE)}" onclick="Calendar_Calendar_Js.markAsHeld('{$LISTVIEW_ENTRY->getId()}');"></span> {/if} {if $IS_CREATE_PERMITTED && $EDIT_VIEW_URL && $LISTVIEW_ENTRY->get('taskstatus') eq vtranslate('Held', $MODULE)} - <span class="fa fa-flag icon action" title="{vtranslate('LBL_HOLD_FOLLOWUP_ON', "Events")}" onclick="Calendar_Calendar_Js.holdFollowUp('{$LISTVIEW_ENTRY->getId()}');"></span> + <span class="fa fa-flag icon action holdFollowupOn" title="{vtranslate('LBL_HOLD_FOLLOWUP_ON', "Events")}" onclick="Calendar_Calendar_Js.holdFollowUp('{$LISTVIEW_ENTRY->getId()}');"></span> {/if} <span class="more dropdown action"> <span href="javascript:;" class="dropdown-toggle" data-toggle="dropdown"> diff --git a/layouts/v7/modules/Calendar/ModuleHeader.tpl b/layouts/v7/modules/Calendar/ModuleHeader.tpl index 45767bad4dfddf8656b9c4da3618e9a36ad1652e..5161c6cb2294564bec7d923ff0cf684a1d9fd9a2 100644 --- a/layouts/v7/modules/Calendar/ModuleHeader.tpl +++ b/layouts/v7/modules/Calendar/ModuleHeader.tpl @@ -23,7 +23,7 @@ {assign var=DEFAULT_FILTER_URL value=$MODULE_MODEL->getListViewUrlWithAllFilter()} {/if} {/if} - <a title="{vtranslate($MODULE, $MODULE)}" href='{$DEFAULT_FILTER_URL}&app={$SELECTED_MENU_CATEGORY}'><h4 class="module-title pull-left text-uppercase"> {vtranslate($MODULE, $MODULE)} </h4> </a> + <a title="{vtranslate($MODULE, $MODULE)}" href='{$DEFAULT_FILTER_URL}&app={$SELECTED_MENU_CATEGORY}'><h4 class="module-title pull-left text-uppercase"> {vtranslate($MODULE, $MODULE)} </h4></a> {if $smarty.session.lvs.$MODULE.viewname} {assign var=VIEWID value=$smarty.session.lvs.$MODULE.viewname} {/if} @@ -36,18 +36,18 @@ {/if} {/foreach} {/foreach} - <p class="current-filter-name filter-name pull-left cursorPointer" title="{$CVNAME}"><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a href='{$MODULE_MODEL->getListViewUrl()}&viewname={$VIEWID}&app={$SELECTED_MENU_CATEGORY}'> {$CVNAME} </a> </p> + <p class="current-filter-name filter-name pull-left cursorPointer" title="{$CVNAME}"> <span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a href='{$MODULE_MODEL->getListViewUrl()}&viewname={$VIEWID}&app={$SELECTED_MENU_CATEGORY}'> {$CVNAME} </a></p> {/if} {assign var=SINGLE_MODULE_NAME value='SINGLE_'|cat:$MODULE} {if $RECORD and $smarty.request.view eq 'Edit'} - <p class="current-filter-name filter-name pull-left "><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a title="{$RECORD->get('label')}"> {vtranslate('LBL_EDITING', $MODULE)} : {$RECORD->get('label')} </a></p> + <p class="current-filter-name filter-name pull-left "><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a title="{$RECORD->get('label')}"> {vtranslate('LBL_EDITING', $MODULE)} : {$RECORD->get('label')} </a></p> {else if $smarty.request.view eq 'Edit'} - <p class="current-filter-name filter-name pull-left "><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a> {vtranslate('LBL_ADDING_NEW', $MODULE)} </a></p> + <p class="current-filter-name filter-name pull-left "><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a> {vtranslate('LBL_ADDING_NEW', $MODULE)} </a></p> {/if} {if $smarty.request.view eq 'Detail'} - <p class="current-filter-name filter-name pull-left"><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a title="{$RECORD->get('label')}"> {$RECORD->get('label')} </a></p> + <p class="current-filter-name filter-name pull-left"><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a title="{$RECORD->get('label')}"> {$RECORD->get('label')} </a></p> {/if} </div> <div class="col-lg-5 col-md-5 pull-right"> @@ -62,7 +62,7 @@ {else} onclick="Vtiger_Import_Js.triggerImportAction('{$BASIC_ACTION->getUrl()}')" {/if}> - <div class="fa {$BASIC_ACTION->getIcon()}" aria-hidden="true"></div> + <div class="fa {$BASIC_ACTION->getIcon()}" aria-hidden="true"></div> {vtranslate($BASIC_ACTION->getLabel(), $MODULE)} </button> </li> @@ -74,7 +74,7 @@ {else} onclick='window.location.href="{$BASIC_ACTION->getUrl()}&app={$SELECTED_MENU_CATEGORY}"' {/if}> - <div class="fa {$BASIC_ACTION->getIcon()}" aria-hidden="true"></div> + <div class="fa {$BASIC_ACTION->getIcon()}" aria-hidden="true"></div> {vtranslate($BASIC_ACTION->getLabel(), $MODULE)} </button> </li> diff --git a/layouts/v7/modules/Calendar/SharedCalendarView.tpl b/layouts/v7/modules/Calendar/SharedCalendarView.tpl index 02ea1d88e79628b8151a999e43b8014b737d97cc..f520354727e7f35f3f1adce60bf91799b0eedfa2 100644 --- a/layouts/v7/modules/Calendar/SharedCalendarView.tpl +++ b/layouts/v7/modules/Calendar/SharedCalendarView.tpl @@ -17,7 +17,7 @@ <input type="hidden" id="hideCompletedEventTodo" value="{$CURRENT_USER->get('hidecompletedevents')}"> <input type="hidden" id="show_allhours" value="{$CURRENT_USER->get('showallhours')}" /> <div id="sharedcalendar" class="calendarview col-lg-12"> - {assign var=LEFTPANELHIDE value=$CURRENT_USER_MODEL->get('leftpanelhide')} + {assign var=LEFTPANELHIDE value=$CURRENT_USER->get('leftpanelhide')} <div class="essentials-toggle" title="{vtranslate('LBL_LEFT_PANEL_SHOW_HIDE', 'Vtiger')}"> <span class="essentials-toggle-marker fa {if $LEFTPANELHIDE eq '1'}fa-chevron-right{else}fa-chevron-left{/if} cursorPointer"></span> </div> diff --git a/layouts/v7/modules/Calendar/TaskManagementContents.tpl b/layouts/v7/modules/Calendar/TaskManagementContents.tpl index 56d743485b3f4dc6322d25f66b0da84c308ad153..d0e813b6a46bf1104d45185a7f0289ef39187433 100644 --- a/layouts/v7/modules/Calendar/TaskManagementContents.tpl +++ b/layouts/v7/modules/Calendar/TaskManagementContents.tpl @@ -60,7 +60,7 @@ {if !empty($RELATED_PARENT)} <span class='related_account' style='margin-left: 8px;'> {assign var=RELATED_PARENT_MODULE value=$RELATED_PARENT['module']} - <i class="vicon-{$RELATED_PARENT_MODULE|lower}" style="font-size: 12px;"></i> + <span style="font-size: 12px;">{Vtiger_Module_Model::getModuleIconPath($RELATED_PARENT_MODULE)} </span> <span class="recordName textOverflowEllipsis" style="vertical-align: middle"> <a class="quickPreview" href="index.php?module={$RELATED_PARENT_MODULE}&view=Detail&record={$RELATED_PARENT['id']}" data-id="{$RELATED_PARENT['id']}" title="{$RELATED_PARENT['display_value']}">{$RELATED_PARENT['display_value']}</a> </span> @@ -68,7 +68,7 @@ {/if} {if !empty($RELATED_CONTACT['id'])} <span class='related_contact' style='margin-left: 8px;'> - <i class="vicon-contacts" style="font-size: 12px;"></i> + <span style="font-size: 12px;">{Vtiger_Module_Model::getModuleIconPath('Contacts')} </span> <span class="recordName textOverflowEllipsis" style="vertical-align: middle"> <a class="quickPreview" href="index.php?module={$RELATED_CONTACT['module']}&view=Detail&record={$RELATED_CONTACT['id']}" data-id="{$RELATED_CONTACT['id']}" title="{$RELATED_CONTACT['display_value']}">{$RELATED_CONTACT['display_value']}</a> </span> diff --git a/layouts/v7/modules/Calendar/partials/SidebarHeader.tpl b/layouts/v7/modules/Calendar/partials/SidebarHeader.tpl index f61af13a48c3d0cd62041e52681c4ed5a123ca52..4752aee628b43a0711d4dc226115d4d2943a0a1d 100644 --- a/layouts/v7/modules/Calendar/partials/SidebarHeader.tpl +++ b/layouts/v7/modules/Calendar/partials/SidebarHeader.tpl @@ -6,13 +6,8 @@ * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. ************************************************************************************} -{assign var="APP_IMAGE_MAP" value=[ - 'MARKETING' => 'fa-users', - 'SALES' => 'fa-dot-circle-o', - 'SUPPORT' => 'fa-life-ring', - 'INVENTORY' => 'vicon-inventory', - 'PROJECT' => 'fa-briefcase' -]} + +{assign var=APP_IMAGE_MAP value=Vtiger_MenuStructure_Model::getAppIcons()} <div class="col-sm-12 col-xs-12 app-indicator-icon-container app-{$SELECTED_MENU_CATEGORY}"> <div class="row" title="{strtoupper(vtranslate("LBL_CALENDAR",$MODULE))}"> <span class="app-indicator-icon fa fa-calendar"></span> diff --git a/layouts/v7/modules/Calendar/resources/Calendar.js b/layouts/v7/modules/Calendar/resources/Calendar.js index cb489e12f4f09c1857616facd9fbae7876d90a6b..83175bb3a0baf8e98c60701edc8ad7530b015ba5 100644 --- a/layouts/v7/modules/Calendar/resources/Calendar.js +++ b/layouts/v7/modules/Calendar/resources/Calendar.js @@ -80,12 +80,11 @@ Vtiger.Class("Calendar_Calendar_Js", { app.helper.hideProgress(); app.helper.hideModal(); if (!err && res['created']) { + jQuery('.vt-notification').remove(); thisInstance.updateListView(); thisInstance.updateCalendarView("Event"); } else { - app.helper.showErrorNotification({ - 'message': app.vtranslate('JS_NO_EDIT_PERMISSION') - }); + app.event.trigger('post.save.failed', err); } }); } @@ -139,10 +138,9 @@ Vtiger.Class("Calendar_Calendar_Js", { }; app.request.post({'data': requestParams}).then(function (e, res) { + jQuery('.vt-notification').remove(); if (e) { - app.helper.showErrorNotification({ - 'message': app.vtranslate('JS_PERMISSION_DENIED') - }); + app.event.trigger('post.save.failed', e); } else if (res && res['valid'] === true && res['markedascompleted'] === true) { thisInstance.updateListView(); thisInstance.updateCalendarView(res.activitytype); @@ -1046,14 +1044,17 @@ Vtiger.Class("Calendar_Calendar_Js", { var formData = jQuery(form).serialize(); app.helper.showProgress(); app.request.post({data: formData}).then(function (err, data) { + app.helper.hideProgress(); if (!err) { - app.helper.showSuccessNotification({"message": ''}); + jQuery('.vt-notification').remove(); + app.helper.hideModal(); + var message = typeof formData.record !== 'undefined' ? app.vtranslate('JS_EVENT_UPDATED') : app.vtranslate('JS_RECORD_CREATED'); + app.helper.showSuccessNotification({"message": message}); thisInstance.showEventOnCalendar(data); } else { - app.helper.showErrorNotification({"message": err}); + app.event.trigger('post.save.failed', err); + jQuery("button[name='saveButton']").removeAttr('disabled'); } - app.helper.hideModal(); - app.helper.hideProgress(); }); } }; @@ -1208,6 +1209,7 @@ Vtiger.Class("Calendar_Calendar_Js", { app.request.post({'data': postData}).then(function (e, resp) { app.helper.hideProgress(); if (!e) { + jQuery('.vt-notification').remove(); if (!resp['ispermitted']) { revertFunc(); app.helper.showErrorNotification({ @@ -1224,7 +1226,8 @@ Vtiger.Class("Calendar_Calendar_Js", { }); } } else { - console.log("error : ", e); + app.event.trigger('post.save.failed', e); + thisInstance.updateAllEventsOnCalendar(); } }); }, @@ -1359,14 +1362,16 @@ Vtiger.Class("Calendar_Calendar_Js", { jQuery.extend(formData, extraParams); app.helper.showProgress(); app.request.post({data: formData}).then(function (err, data) { + app.helper.hideProgress(); if (!err) { + jQuery('.vt-notification').remove(); app.helper.showSuccessNotification({"message": ''}); + app.event.trigger("post.QuickCreateForm.save", data, jQuery(form).serializeFormData()); + app.helper.hideModal(); } else { - app.helper.showErrorNotification({"message": err}); + app.event.trigger('post.save.failed', err); + jQuery("button[name='saveButton']").removeAttr("disabled"); } - app.event.trigger("post.QuickCreateForm.save", data, jQuery(form).serializeFormData()); - app.helper.hideModal(); - app.helper.hideProgress(); }); }, validateAndUpdateEvent: function (modalContainer, isRecurring) { diff --git a/layouts/v7/modules/Campaigns/RelatedList.tpl b/layouts/v7/modules/Campaigns/RelatedList.tpl index c3a57d6f7c034ab0d0dae2292058762589f19edb..f8e47b4588be7bf4294b7e755c0c1dc7a2e66d49 100644 --- a/layouts/v7/modules/Campaigns/RelatedList.tpl +++ b/layouts/v7/modules/Campaigns/RelatedList.tpl @@ -62,7 +62,7 @@ onclick="{$RELATED_LINK->getUrl()}" {/if} {if ($IS_SELECT_BUTTON neq true) && ($IS_SEND_EMAIL_BUTTON neq true)}name="addButton"{/if} - {if $IS_SEND_EMAIL_BUTTON eq true} disabled="disabled" {/if}>{if ($IS_SELECT_BUTTON neq true) && ($IS_SEND_EMAIL_BUTTON neq true)}<i class="fa fa-plus"></i>{/if} {$RELATED_LINK->getLabel()}</button> + {if $IS_SEND_EMAIL_BUTTON eq true} disabled="disabled" {/if}>{if ($IS_SELECT_BUTTON neq true) && ($IS_SEND_EMAIL_BUTTON neq true)}<i class="fa fa-plus"></i>{/if} {$RELATED_LINK->getLabel()}</button> {/if} </div> {/foreach} diff --git a/layouts/v7/modules/Contacts/DetailViewHeaderTitle.tpl b/layouts/v7/modules/Contacts/DetailViewHeaderTitle.tpl index 338f33e1b7981526da71e1da966cb8fb26e83ff9..321a158302c204bb9e73c8bdb1ced9e10904eff6 100644 --- a/layouts/v7/modules/Contacts/DetailViewHeaderTitle.tpl +++ b/layouts/v7/modules/Contacts/DetailViewHeaderTitle.tpl @@ -22,8 +22,8 @@ {/if} {/foreach} {if empty($IMAGE_DETAILS)} - <div class="name"><span><strong> <i class="vicon-contacts"></i> </strong></span></div> - {/if} + <div class="name"><span><strong>{$MODULE_MODEL->getModuleIcon()}</strong></span></div> + {/if} </div> <div class="recordBasicInfo"> <div class="info-row"> diff --git a/layouts/v7/modules/CustomView/resources/CustomView.js b/layouts/v7/modules/CustomView/resources/CustomView.js index 8f6b68d3ea197e42fac061b32b5a5c5190bae012..8e719919935f9c5ee52396ea7935348cd495d7b7 100644 --- a/layouts/v7/modules/CustomView/resources/CustomView.js +++ b/layouts/v7/modules/CustomView/resources/CustomView.js @@ -288,7 +288,7 @@ jQuery.Class("Vtiger_CustomView_Js",{ jQuery(document).on('post.DeleteFilter.click',function(e,params){ var target = jQuery(e.target); - app.helper.showConfirmationBox({'message': app.vtranslate('LBL_DELETE_CONFIRMATION')}).then( + app.helper.showConfirmationBox({'message': app.vtranslate('LBL_LIST_DELETE_CONFIRMATION')}).then( function(){ app.helper.showProgress(); app.request.post({'url':params.url}).then(function(){ diff --git a/layouts/v7/modules/Documents/DocumentsRelatedList.tpl b/layouts/v7/modules/Documents/DocumentsRelatedList.tpl index 46fce2d8b1a90483f01aacea1b4d2e0f797ac75a..198e27e95c01d890640382ae81cc9dde3951c2cd 100644 --- a/layouts/v7/modules/Documents/DocumentsRelatedList.tpl +++ b/layouts/v7/modules/Documents/DocumentsRelatedList.tpl @@ -54,7 +54,7 @@ <div class="col-sm-3"> <div class="dropdown"> <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown"> - <span class="fa fa-plus" title="{vtranslate('LBL_NEW_DOCUMENT', $MODULE)}"></span> {vtranslate('LBL_NEW_DOCUMENT', $RELATED_MODULE_NAME)} <span class="caret"></span> + <span class="fa fa-plus" title="{vtranslate('LBL_NEW_DOCUMENT', $MODULE)}"></span> {vtranslate('LBL_NEW_DOCUMENT', $RELATED_MODULE_NAME)} <span class="caret"></span> </button> <ul class="dropdown-menu"> <li class="dropdown-header"><i class="fa fa-upload"></i> {vtranslate('LBL_FILE_UPLOAD', $RELATED_MODULE_NAME)}</li> diff --git a/layouts/v7/modules/Documents/ListViewRecordActions.tpl b/layouts/v7/modules/Documents/ListViewRecordActions.tpl index 81ea8da849e176117b52a2e1929b4d4d0c97291c..ea89bd38a55a36f0bd698f7683bac2602e86379a 100644 --- a/layouts/v7/modules/Documents/ListViewRecordActions.tpl +++ b/layouts/v7/modules/Documents/ListViewRecordActions.tpl @@ -21,10 +21,12 @@ {assign var=STARRED value=false} {/if} {if $MODULE_MODEL->isStarredEnabled()} - <span class="markStar fa icon action {if $STARRED} fa-star active {else} fa-star-o{/if}" title="{if $STARRED} {vtranslate('LBL_STARRED', $MODULE)} {else} {vtranslate('LBL_NOT_STARRED', $MODULE)}{/if}"></span> + <span> + <a class="markStar fa icon action {if $STARRED} fa-star active {else} fa-star-o{/if}" title="{if $STARRED} {vtranslate('LBL_STARRED', $MODULE)} {else} {vtranslate('LBL_NOT_STARRED', $MODULE)}{/if}"></a> + </span> {/if} <span class="more dropdown action"> - <a href="javascript:;" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-ellipsis-v icon"></i></a> + <span class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-ellipsis-v icon"></i></span> <ul class="dropdown-menu"> <li><a data-id="{$LISTVIEW_ENTRY->getId()}" href="{$LISTVIEW_ENTRY->getFullDetailViewUrl()}">{vtranslate('LBL_DETAILS', $MODULE)}</a></li> {if $RECORD_ACTIONS} diff --git a/layouts/v7/modules/Documents/ModuleHeader.tpl b/layouts/v7/modules/Documents/ModuleHeader.tpl index fdbc8d1eedf77f2d94e4b26fee030e8ad5810988..c22873917a2fae87bddb6aaee19b63de95c5f16d 100644 --- a/layouts/v7/modules/Documents/ModuleHeader.tpl +++ b/layouts/v7/modules/Documents/ModuleHeader.tpl @@ -25,7 +25,7 @@ {assign var=DEFAULT_FILTER_URL value=$MODULE_MODEL->getListViewUrlWithAllFilter()} {/if} {/if} - <a title="{vtranslate($MODULE, $MODULE)}" href='{$DEFAULT_FILTER_URL}&app={$SELECTED_MENU_CATEGORY}'><h4 class="module-title pull-left textOverflowEllipsis text-uppercase"> {vtranslate($MODULE, $MODULE)} </h4> </a> + <a title="{vtranslate($MODULE, $MODULE)}" href='{$DEFAULT_FILTER_URL}&app={$SELECTED_MENU_CATEGORY}'><h4 class="module-title pull-left textOverflowEllipsis text-uppercase"> {vtranslate($MODULE, $MODULE)} </h4></a> {if $smarty.session.lvs.$MODULE.viewname} {assign var=VIEWID value=$smarty.session.lvs.$MODULE.viewname} {/if} @@ -38,16 +38,16 @@ {/if} {/foreach} {/foreach} - <p class="current-filter-name filter-name pull-left cursorPointer" title="{$CVNAME}"><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a href='{$MODULE_MODEL->getListViewUrl()}&viewname={$VIEWID}'> {$CVNAME} </a> </p> + <p class="current-filter-name filter-name pull-left cursorPointer" title="{$CVNAME}"> <span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a href='{$MODULE_MODEL->getListViewUrl()}&viewname={$VIEWID}'> {$CVNAME} </a> </p> {/if} {assign var=SINGLE_MODULE_NAME value='SINGLE_'|cat:$MODULE} {if $RECORD and $smarty.request.view eq 'Edit'} - <p class="current-filter-name filter-name pull-left "><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a title="{$RECORD->get('label')}"> {vtranslate('LBL_EDITING', $MODULE)} : {$RECORD->get('label')} </a></p> + <p class="current-filter-name filter-name pull-left "><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a title="{$RECORD->get('label')}"> {vtranslate('LBL_EDITING', $MODULE)} : {$RECORD->get('label')} </a></p> {else if $smarty.request.view eq 'Edit'} - <p class="current-filter-name filter-name pull-left "><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a> {vtranslate('LBL_ADDING_NEW', $MODULE)} </a></p> + <p class="current-filter-name filter-name pull-left "><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a> {vtranslate('LBL_ADDING_NEW', $MODULE)} </a></p> {/if} {if $smarty.request.view eq 'Detail'} - <p class="current-filter-name filter-name pull-left"><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a title="{$RECORD->get('label')}"> {$RECORD->get('label')} </a></p> + <p class="current-filter-name filter-name pull-left"><span class="fa fa-angle-right pull-left" aria-hidden="true"></span><a title="{$RECORD->get('label')}"> {$RECORD->get('label')} </a></p> {/if} </div> <div class="col-lg-5 col-md-5 pull-right "> @@ -58,7 +58,7 @@ <li> <div> <button type="button" class="btn btn-default module-buttons dropdown-toggle" data-toggle="dropdown"> - <span class="fa fa-plus" title="{vtranslate('LBL_NEW_DOCUMENT', $MODULE)}"></span> {vtranslate('LBL_NEW_DOCUMENT', $MODULE)} <span class="caret"></span> + <span class="fa fa-plus" title="{vtranslate('LBL_NEW_DOCUMENT', $MODULE)}"></span> {vtranslate('LBL_NEW_DOCUMENT', $MODULE)} <span class="caret"></span> </button> <ul class="dropdown-menu"> <li class="dropdown-header"><i class="fa fa-upload"></i> {vtranslate('LBL_FILE_UPLOAD', $MODULE)}</li> diff --git a/layouts/v7/modules/Documents/partials/Menubar.tpl b/layouts/v7/modules/Documents/partials/Menubar.tpl index 053e3e8b6189260bf8e438ebeb81a1f557337abb..3dd9d5a72413780b945b1c5b89b35298d49b9b1a 100644 --- a/layouts/v7/modules/Documents/partials/Menubar.tpl +++ b/layouts/v7/modules/Documents/partials/Menubar.tpl @@ -1,9 +1,18 @@ +{*+********************************************************************************** +* 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. +*************************************************************************************} + {if $smarty.request.view eq 'Detail'} <div id="modules-menu" class="modules-menu"> <ul> <li class="active"> <a href="{$MODULE_MODEL->getListViewUrl()}"> - <i class="vicon-documents"></i> + {$MODULE_MODEL->getModuleIcon()} <span>{$MODULE}</span> </a> </li> diff --git a/layouts/v7/modules/Documents/partials/SidebarHeader.tpl b/layouts/v7/modules/Documents/partials/SidebarHeader.tpl index 4be9589120b469c1ff60ac0b2ce3caf6799bf8f7..d38ee103e5f795fea618fc75d2de5f98fc885ad8 100644 --- a/layouts/v7/modules/Documents/partials/SidebarHeader.tpl +++ b/layouts/v7/modules/Documents/partials/SidebarHeader.tpl @@ -6,16 +6,11 @@ * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. ************************************************************************************} -{assign var="APP_IMAGE_MAP" value=[ - 'MARKETING' => 'fa-users', - 'SALES' => 'fa-dot-circle-o', - 'SUPPORT' => 'fa-life-ring', - 'INVENTORY' => 'vicon-inventory', - 'PROJECT' => 'fa-briefcase' -]} -<div class="col-sm-12 col-xs-12 app-indicator-icon-container app-{$SELECTED_MENU_CATEGORY}"> + +{assign var=APP_IMAGE_MAP value=Vtiger_MenuStructure_Model::getAppIcons()} +<div class="col-sm-12 col-xs-12 app-indicator-icon-container app-{$SELECTED_MENU_CATEGORY} moduleIcon"> <div class="row" title="{vtranslate("Documents",$MODULE)}"> - <span class="app-indicator-icon fa vicon-documents"></span> + <span class="app-indicator-icon fa vicon-documents"></span> </div> </div> diff --git a/layouts/v7/modules/Documents/resources/Documents.js b/layouts/v7/modules/Documents/resources/Documents.js index 8dce6caceb9a46c4a8f9e57d26160b65e60fdb59..2421d6bb34ae0e152c61e1cd22ff5c9531d527d5 100644 --- a/layouts/v7/modules/Documents/resources/Documents.js +++ b/layouts/v7/modules/Documents/resources/Documents.js @@ -389,6 +389,7 @@ Vtiger.Class('Documents_Index_Js', { app.request.post({'data':formData}).then(function(e,res) { app.helper.hideProgress(); if (e === null) { + jQuery('.vt-notification').remove(); app.helper.hideModal(); app.helper.showSuccessNotification({ 'message' : app.vtranslate('JS_DOCUMENT_CREATED') diff --git a/layouts/v7/modules/Emails/resources/MassEdit.js b/layouts/v7/modules/Emails/resources/MassEdit.js index a9ced971c20416f8454171f0515858d651654ffd..69df026f0cf6353b32db0bda67c222b738dfde3c 100644 --- a/layouts/v7/modules/Emails/resources/MassEdit.js +++ b/layouts/v7/modules/Emails/resources/MassEdit.js @@ -846,7 +846,7 @@ jQuery.Class("Emails_MassEdit_Js",{},{ this.calculateUploadFileSize(); this.registerSaveDraftOrSendEmailEvent(); var isCkeditorApplied = jQuery('#description').data('isCkeditorApplied'); - if(isCkeditorApplied != true){ + if(isCkeditorApplied != true && jQuery('#description').length > 0){ this.loadCkEditor(jQuery('#description').data('isCkeditorApplied',true)); } this.registerSelectEmailTemplateEvent(); diff --git a/layouts/v7/modules/HelpDesk/DetailViewHeaderTitle.tpl b/layouts/v7/modules/HelpDesk/DetailViewHeaderTitle.tpl index 1c76eff7100880d6b35f83a0d1e4e2b91c98a4a5..918af0b4535e35c5725dfd4bfb31a3acca86a24c 100644 --- a/layouts/v7/modules/HelpDesk/DetailViewHeaderTitle.tpl +++ b/layouts/v7/modules/HelpDesk/DetailViewHeaderTitle.tpl @@ -13,7 +13,7 @@ <div class="col-sm-6 col-lg-6 col-md-6"> <div class="record-header clearfix"> <div class="hidden-sm hidden-xs recordImage bghelpdesk app-{$SELECTED_MENU_CATEGORY}"> - <div class="name"><span><strong> <i class="vicon-helpdesk"></i> </strong></span></div> + <div class="name"><span><strong>{$MODULE_MODEL->getModuleIcon()}</strong></span></div> </div> <div class="recordBasicInfo"> <div class="info-row"> diff --git a/layouts/v7/modules/Inventory/EditView.tpl b/layouts/v7/modules/Inventory/EditView.tpl index cf62317815641e79b4aa5f80ebd6380646424011..7ab1fd53e5203119e91a36b1f6949183bcec89aa 100644 --- a/layouts/v7/modules/Inventory/EditView.tpl +++ b/layouts/v7/modules/Inventory/EditView.tpl @@ -74,7 +74,7 @@ <div class="row clearfix"> <div class='textAlignCenter col-lg-12 col-md-12 col-sm-12 '> <button class="btn btn-success saveButton" type="submit">Save</button> - <a class="cancelLink" href="javascript:history.back()" type="reset">Cancel</a> + <a class="cancelLink" href="javascript:history.{if $DUPLICATE_RECORDS}go(-2){else}back(){/if}" type="reset">{vtranslate('LBL_CANCEL', $MODULE)}</a> </div> </div> </div> diff --git a/layouts/v7/modules/Inventory/partials/EditViewContents.tpl b/layouts/v7/modules/Inventory/partials/EditViewContents.tpl index ab223bee22f0e47630e84927b78528863b4562f1..9f141adc3fca5ed65cd21a5214e8c242417ce536 100644 --- a/layouts/v7/modules/Inventory/partials/EditViewContents.tpl +++ b/layouts/v7/modules/Inventory/partials/EditViewContents.tpl @@ -14,6 +14,12 @@ <input type="hidden" name="picklistDependency" value='{Vtiger_Util_Helper::toSafeHTML($PICKIST_DEPENDENCY_DATASOURCE)}' /> {/if} <div name='editContent'> + {if $DUPLICATE_RECORDS} + <div class="fieldBlockContainer duplicationMessageContainer"> + <div class="duplicationMessageHeader"><b>{vtranslate('LBL_DUPLICATES_DETECTED', $MODULE)}</b></div> + <div>{getDuplicatesPreventionMessage($MODULE, $DUPLICATE_RECORDS)}</div> + </div> + {/if} {foreach key=BLOCK_LABEL item=BLOCK_FIELDS from=$RECORD_STRUCTURE name=blockIterator} {if $BLOCK_LABEL eq 'LBL_ITEM_DETAILS'}{continue}{/if} {if $BLOCK_FIELDS|@count gt 0} diff --git a/layouts/v7/modules/Inventory/partials/LineItemsContent.tpl b/layouts/v7/modules/Inventory/partials/LineItemsContent.tpl index 9a6ad82b3f72e14db5ede702db6643f4a0c66ae9..a5ef87a711e109bee46e0ffbe4d4f5a545c8bab4 100644 --- a/layouts/v7/modules/Inventory/partials/LineItemsContent.tpl +++ b/layouts/v7/modules/Inventory/partials/LineItemsContent.tpl @@ -83,17 +83,17 @@ <input type="hidden" id="lineItemType{$row_no}" name="lineItemType{$row_no}" value="{$entityType}" class="lineItemType"/> <div class="col-lg-2"> {if $row_no eq 0} - <i class="lineItemPopup cursorPointer vicon-services" data-popup="ServicesPopup" title="{vtranslate('Services',$MODULE)}" data-module-name="Services" data-field-name="serviceid"></i> - <i class="lineItemPopup cursorPointer vicon-products" data-popup="ProductsPopup" title="{vtranslate('Products',$MODULE)}" data-module-name="Products" data-field-name="productid"></i> + <span class="lineItemPopup cursorPointer" data-popup="ServicesPopup" title="{vtranslate('Services',$MODULE)}" data-module-name="Services" data-field-name="serviceid">{Vtiger_Module_Model::getModuleIconPath('Services')}</span> + <span class="lineItemPopup cursorPointer" data-popup="ProductsPopup" title="{vtranslate('Products',$MODULE)}" data-module-name="Products" data-field-name="productid">{Vtiger_Module_Model::getModuleIconPath('Products')}</span> {elseif $entityType eq '' and $PRODUCT_ACTIVE eq 'true'} - <i class="lineItemPopup cursorPointer vicon-products" data-popup="ProductsPopup" data-module-name="Products" title="{vtranslate('Products',$MODULE)}" data-field-name="productid"></i> + <span class="lineItemPopup cursorPointer" data-popup="ProductsPopup" title="{vtranslate('Products',$MODULE)}" data-module-name="Products" data-field-name="productid">{Vtiger_Module_Model::getModuleIconPath('Products')}</span> {elseif $entityType eq '' and $SERVICE_ACTIVE eq 'true'} - <i class="lineItemPopup cursorPointer vicon-services" data-popup="ServicesPopup" data-module-name="Services" title="{vtranslate('Services',$MODULE)}" data-field-name="serviceid" ></i> + <span class="lineItemPopup cursorPointer" data-popup="ServicesPopup" title="{vtranslate('Services',$MODULE)}" data-module-name="Services" data-field-name="serviceid">{Vtiger_Module_Model::getModuleIconPath('Services')}</span> {else} {if ($entityType eq 'Services') and (!$data.$productDeleted)} - <i class="lineItemPopup cursorPointer vicon-services" data-popup="ServicesPopup" data-module-name="Services" title="{vtranslate('Services',$MODULE)}" data-field-name="serviceid" ></i> + <span class="lineItemPopup cursorPointer" data-popup="ServicesPopup" title="{vtranslate('Services',$MODULE)}" data-module-name="Services" data-field-name="serviceid">{Vtiger_Module_Model::getModuleIconPath('Services')}</span> {elseif (!$data.$productDeleted)} - <i class="lineItemPopup cursorPointer vicon-products" data-popup="ProductsPopup" data-module-name="Products" title="{vtranslate('Products',$MODULE)}" data-field-name="productid" ></i> + <span class="lineItemPopup cursorPointer" data-popup="ProductsPopup" title="{vtranslate('Products',$MODULE)}" data-module-name="Products" data-field-name="productid">{Vtiger_Module_Model::getModuleIconPath('Products')}</span> {/if} {/if} </div> @@ -169,7 +169,7 @@ {assign var=PRICEBOOK_MODULE_MODEL value=Vtiger_Module_Model::getInstance('PriceBooks')} {if $PRICEBOOK_MODULE_MODEL->isPermitted('DetailView') && $MODULE != 'PurchaseOrder'} - <i class="priceBookPopup cursorPointer vicon-pricebooks" data-popup="Popup" data-module-name="PriceBooks" style="float:left"></i> + <span class="priceBookPopup cursorPointer" data-popup="Popup" title="{vtranslate('PriceBooks', $MODULE)}" data-module-name="PriceBooks" style="float:left">{Vtiger_Module_Model::getModuleIconPath('PriceBooks')}</span> {/if} </div> <div style="clear:both"></div> diff --git a/layouts/v7/modules/Inventory/partials/LineItemsEdit.tpl b/layouts/v7/modules/Inventory/partials/LineItemsEdit.tpl index c0af62ed33c6dccbf4971038c9f912d5b0bb13ea..ebaa0c37711f5af3cd5cebed2baa554bc3691eab 100644 --- a/layouts/v7/modules/Inventory/partials/LineItemsEdit.tpl +++ b/layouts/v7/modules/Inventory/partials/LineItemsEdit.tpl @@ -213,13 +213,13 @@ {elseif $PRODUCT_ACTIVE eq 'true'} <div class="btn-group"> <button type="button" class="btn btn-default" id="addProduct" data-module-name="Products"> - <i class="fa fa-plus"></i><strong> {vtranslate('LBL_ADD_PRODUCT',$MODULE)}</strong> + <i class="fa fa-plus"></i><strong> {vtranslate('LBL_ADD_PRODUCT',$MODULE)}</strong> </button> </div> {elseif $SERVICE_ACTIVE eq 'true'} <div class="btn-group"> <button type="button" class="btn btn-default" id="addService" data-module-name="Services"> - <i class="fa fa-plus"></i><strong> {vtranslate('LBL_ADD_SERVICE',$MODULE)}</strong> + <i class="fa fa-plus"></i><strong> {vtranslate('LBL_ADD_SERVICE',$MODULE)}</strong> </button> </div> {/if} diff --git a/layouts/v7/modules/Invoice/DetailViewHeaderTitle.tpl b/layouts/v7/modules/Invoice/DetailViewHeaderTitle.tpl index eca4adb7e1e3306e4c07a8b14239adfc27fd7ea1..47393217a94d54fcb943333d67311223dc71aa58 100644 --- a/layouts/v7/modules/Invoice/DetailViewHeaderTitle.tpl +++ b/layouts/v7/modules/Invoice/DetailViewHeaderTitle.tpl @@ -21,9 +21,9 @@ <img src="{vimage_path('summary_organizations.png')}" class="summaryImg"/> {/if} {/foreach} - {if empty($IMAGE_DETAILS)} - <div class="name"><span><strong><i class="vicon-invoice"></i></strong></span></div> - {/if} + {if empty($IMAGE_DETAILS)} + <div class="name"><span><strong>{$MODULE_MODEL->getModuleIcon()}</strong></span></div> + {/if} </div> <div class="recordBasicInfo"> <div class="info-row" > diff --git a/layouts/v7/modules/Leads/ConvertLeadError.tpl b/layouts/v7/modules/Leads/ConvertLeadError.tpl index 3dfd8d387d637b19fb0a29fe529761d5d2de0d89..c0ec6497af344cceee6cf91767437795fe1ecafb 100644 --- a/layouts/v7/modules/Leads/ConvertLeadError.tpl +++ b/layouts/v7/modules/Leads/ConvertLeadError.tpl @@ -1,48 +1,41 @@ {*+********************************************************************************** - * 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. - ************************************************************************************} -<table border='0' cellpadding='5' cellspacing='0' width='100%' height='450px'> - <tr> - <td align='center'> - <div style='border: 3px solid rgb(153, 153, 153); background-color: rgb(255, 255, 255); width: 70%; position: relative; z-index: 10000000;'> - <table border='0' cellpadding='5' cellspacing='0' width='98%'> - <tbody> - <tr> - <td rowspan='2' width='11%'><img src="{vimage_path('denied.gif')}" ></td> - <td style='border-bottom: 1px solid rgb(204, 204, 204);' nowrap='nowrap' width='70%'> - <span class='genHeaderSmall'> - {assign var=SINGLE_MODULE value="SINGLE_$MODULE"} - <span class='genHeaderSmall'>{vtranslate($SINGLE_MODULE, $MODULE)} {vtranslate('CANNOT_CONVERT', $MODULE)} - <br> - <ul> {vtranslate('LBL_FOLLOWING_ARE_POSSIBLE_REASONS', $MODULE)} : - <li>{vtranslate('LBL_LEADS_FIELD_MAPPING_INCOMPLETE', $MODULE)}</li> - <li>{vtranslate('LBL_MANDATORY_FIELDS_ARE_EMPTY', $MODULE)}</li> - {if $EXCEPTION} - <li>{$EXCEPTION}</li> - {/if} - </ul> - </span> - </span> - </td> - </tr> - <tr> - <td class='small' align='right' nowrap='nowrap'> - {if $CURRENT_USER->isAdminUser()} - <a href='index.php?parent=Settings&module=Leads&view=MappingDetail'>{vtranslate('LBL_LEADS_FIELD_MAPPING', $MODULE)}</a><br> +* 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. +*************************************************************************************} + +{strip} + <div class="row" style="border: 3px solid rgb(153, 153, 153); background-color: rgb(255, 255, 255);position: relative; z-index: 10000000; padding: 10px; width: 80%; margin: 0 auto; margin-top: 5%;"> + <div class ="col-lg-1 col-sm-2 col-md-1" style="float: left;"><img src="{vimage_path('denied.gif')}" ></div> + <div class ="col-lg-11 col-sm-10 col-md-11" nowrap="nowrap"> + <span class="genHeaderSmall"> + {if $IS_DUPICATES_FAILURE} + <span>{$EXCEPTION}</span> + {else} + {assign var=SINGLE_MODULE value="SINGLE_$MODULE"} + <span class="genHeaderSmall">{vtranslate($SINGLE_MODULE, $MODULE)} {vtranslate('CANNOT_CONVERT', $MODULE)} + <br> + <ul> {vtranslate('LBL_FOLLOWING_ARE_POSSIBLE_REASONS', $MODULE)}: + <li>{vtranslate('LBL_LEADS_FIELD_MAPPING_INCOMPLETE', $MODULE)}</li> + <li>{vtranslate('LBL_MANDATORY_FIELDS_ARE_EMPTY', $MODULE)}</li> + {if $EXCEPTION} + <li>{$EXCEPTION}</li> + {/if} + </ul> + </span> {/if} - <a href='javascript:window.history.back();'>{vtranslate('LBL_GO_BACK', $MODULE)}</a><br> - </td> - </tr> - </tbody> - </table> + </span> + <hr> + <div class="small" align="right" nowrap="nowrap"> + {if !$IS_DUPICATES_FAILURE && $CURRENT_USER->isAdminUser()} + <a href="index.php?parent=Settings&module=Leads&view=MappingDetail">{vtranslate('LBL_LEADS_FIELD_MAPPING', $MODULE)}</a><br> + {/if} + <a href="javascript:window.history.back();">{vtranslate('LBL_GO_BACK', $MODULE)}</a><br> + </div> + </div> </div> - </td> - </tr> - </td> - </tr> -</table> \ No newline at end of file +{/strip} + diff --git a/layouts/v7/modules/Leads/DetailViewHeaderTitle.tpl b/layouts/v7/modules/Leads/DetailViewHeaderTitle.tpl index 17f3914c4c534f0312b2aaa2e6ac0a30ce59bbe9..9339f20596bf43798943cdb439d00373f6312a53 100644 --- a/layouts/v7/modules/Leads/DetailViewHeaderTitle.tpl +++ b/layouts/v7/modules/Leads/DetailViewHeaderTitle.tpl @@ -22,8 +22,8 @@ {/if} {/foreach} {if empty($IMAGE_DETAILS)} - <div class="name"><span><strong><i class="vicon-leads"></i></strong></span></div> - {/if} + <div class="name"><span><strong>{$MODULE_MODEL->getModuleIcon()}</strong></span></div> + {/if} </div> <div class="recordBasicInfo"> <div class="info-row"> diff --git a/layouts/v7/modules/Mobile/simple/Header.tpl b/layouts/v7/modules/Mobile/simple/Header.tpl index 3163e4861f8d3073be1bf3e34795947f62b66e6f..845f40a6cff515c248bbf158715f18e366b481eb 100644 --- a/layouts/v7/modules/Mobile/simple/Header.tpl +++ b/layouts/v7/modules/Mobile/simple/Header.tpl @@ -1,61 +1,67 @@ -{*<!-- -/************************************************************************************* -** The contents of this file are subject to the vtiger CRM Public License Version 1.1 +{*+********************************************************************************** +* 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. -* -**************************************************************************************/ --->*}<!doctype html> +*************************************************************************************} + +<!doctype html> <html ng-app="mobileapp"> - <head> - <meta charset="utf-8" /> - <meta name="viewport" content="width=device-width, initial-scale=1" /> - <title>Vtiger</title> - <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon"> - <link rel="stylesheet" href="../../{$TEMPLATE_WEBPATH}/resources/libs/angularjs/angular-material.min.css"> - <!--link rel="stylesheet" href="https://fonts.googleapis.com/css?family=RobotoDraft:300,400,500,700,400italic"--> + <head> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <title>Vtiger</title> + <link rel="shortcut icon" href="data:image/x-icon;," type="image/x-icon"> + <link rel="stylesheet" href="../../{$TEMPLATE_WEBPATH}/resources/libs/angularjs/angular-material.min.css"> + <!--link rel="stylesheet" href="https://fonts.googleapis.com/css?family=RobotoDraft:300,400,500,700,400italic"--> + + {* Include desired styles injected *} + {if $_styles} + {foreach item=_style from=$_styles} + <link type="text/css" rel="stylesheet" href="../../{$TEMPLATE_WEBPATH}/{$_style}"> + {/foreach} + {/if} + {* End *} + <link type="text/css" rel="stylesheet" href="../../{$TEMPLATE_WEBPATH}/resources/libs/md-icons/css/materialdesignicons.min.css"> + <link type="text/css" rel="stylesheet" href="../../{$TEMPLATE_WEBPATH}/resources/libs/md-datepicker/angular-datepicker.min.css"> + <link type="text/css" rel="stylesheet" href="../../{$TEMPLATE_WEBPATH}/resources/libs/Vtiger-icons/style.css"> + <link type="text/css" rel="stylesheet" href="../../{$TEMPLATE_WEBPATH}/resources/css/application.css"> + <link type="text/css" rel="stylesheet" href="../../{$TEMPLATE_WEBPATH}/resources/css/style.css"> + {*Date-time-picker*} + <link type="text/css" rel="stylesheet" href="../../{$TEMPLATE_WEBPATH}/resources/libs/angularjs/angular-material-datetimepicker/css/material-datetimepicker.min.css"> - {* Include desired styles injected *} - {if $_styles} - {foreach item=_style from=$_styles} - <link type="text/css" rel="stylesheet" href="../../{$TEMPLATE_WEBPATH}/{$_style}"> - {/foreach} - {/if} - {* End *} - <link type="text/css" rel="stylesheet" href="../../{$TEMPLATE_WEBPATH}/resources/libs/md-icons/css/materialdesignicons.min.css"> - <link type="text/css" rel="stylesheet" href="../../{$TEMPLATE_WEBPATH}/resources/libs/md-datepicker/angular-datepicker.min.css"> - <link type="text/css" rel="stylesheet" href="../../{$TEMPLATE_WEBPATH}/resources/libs/md-datepicker/angular-clockpicker.css"> - <link type="text/css" rel="stylesheet" href="../../{$TEMPLATE_WEBPATH}/resources/libs/Vtiger-icons/style.css"> - <link type="text/css" rel="stylesheet" href="../../{$TEMPLATE_WEBPATH}/resources/css/application.css"> - <link type="text/css" rel="stylesheet" href="../../{$TEMPLATE_WEBPATH}/resources/css/style.css"> + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/jquery/date.js"></script> + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/jquery/jquery2.min.js"></script> + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/angularjs/angular.js"></script> + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/angularjs/angular-touch.min.js"></script> + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/angularjs/angular-animate.min.js"></script> + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/angularjs/angular-aria.min.js"></script> + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/angularjs/angular-material.min.js"></script> + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/angularjs/angular-touch.min.js"></script> + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/jquery/purl.js"></script> + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/md-datepicker/angular-datepicker.min.js"></script> + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/md-datepicker/angular-clockpicker.js"></script> + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/Vtiger/js/application.js"></script> + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/Vtiger/js/Vtiger.js"></script> + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/Vtiger/js/Utils.js"></script> - <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/jquery/jquery2.min.js"></script> - <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/angularjs/angular.js"></script> - <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/angularjs/angular-touch.min.js"></script> - <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/angularjs/angular-animate.min.js"></script> - <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/angularjs/angular-aria.min.js"></script> - <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/angularjs/angular-material.min.js"></script> - <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/angularjs/angular-touch.min.js"></script> - <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/jquery/purl.js"></script> - <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/jquery/date.js"></script> - <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/md-datepicker/angular-datepicker.min.js"></script> - <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/md-datepicker/angular-clockpicker.js"></script> - <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/Vtiger/js/application.js"></script> - <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/Vtiger/js/Vtiger.js"></script> - <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/Vtiger/js/Utils.js"></script> + {*moment-js*} + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/moment/moment.min.js"></script> + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/moment/moment-timezone.min.js"></script> + {*Date-time-picker*} + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/resources/libs/angularjs/angular-material-datetimepicker/js/angular-material-datetimepicker.js"></script> - {* Include desired script injected *} - {if $_scripts} - {foreach item=_script from=$_scripts} - <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/{$_script}"></script> - {/foreach} - {/if} - {* End *} + {* Include desired script injected *} + {if $_scripts} + {foreach item=_script from=$_scripts} + <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/{$_script}"></script> + {/foreach} + {/if} + {* End *} - </head> - {literal} - <body ng-controller="VtigerBodyController" ng-init="init();" ng-cloak md-theme="{{dynamicTheme}}" md-theme-watch> - {/literal} \ No newline at end of file + </head> + {literal} + <body ng-controller="VtigerBodyController" ng-init="init();" ng-cloak md-theme="{{dynamicTheme}}" md-theme-watch> + {/literal} diff --git a/layouts/v7/modules/Mobile/simple/Users/Login.tpl b/layouts/v7/modules/Mobile/simple/Users/Login.tpl index 65f67456ef30d2d235facd76a11866d22433d589..829a4f8dda9134ccaca2edcad4da96bb9ce3c754 100644 --- a/layouts/v7/modules/Mobile/simple/Users/Login.tpl +++ b/layouts/v7/modules/Mobile/simple/Users/Login.tpl @@ -19,7 +19,7 @@ <md-content class="login-background"> <div class="logo-container"> {/literal} - <img src="../../{$TEMPLATE_WEBPATH}/resources/images/vtiger_logo_white.svg" alt="Vtiger Logo"/> + <img src="../../{$TEMPLATE_WEBPATH}/resources/images/vtiger_logo.svg" alt="Vtiger Logo"/> {literal} </div> <form name="loginForm" ng-submit="login()" class="login-form" ng-validate> diff --git a/layouts/v7/modules/Mobile/simple/Vtiger/Detail.tpl b/layouts/v7/modules/Mobile/simple/Vtiger/Detail.tpl index da387876a72105ec2b20f522f314440875255787..c3e3a759b56bfbee870d0e30c82d5edc9921946c 100644 --- a/layouts/v7/modules/Mobile/simple/Vtiger/Detail.tpl +++ b/layouts/v7/modules/Mobile/simple/Vtiger/Detail.tpl @@ -111,9 +111,9 @@ </md-tab> <md-tab label="Related"> <div ng-if="relatedModules" style="height:75vh; overflow: scroll;"> - <md-list-item ng-repeat="(module , value) in relatedModules" ng-click="showRelatedList(module)"> - <p style="font-size: 13px;"><span style="font-size: 12px; color:#FF4068" class="vicon-{{module | lowercase | nospace}}"></span> {{module}}</p> - <p style="text-align:right; color:#0099FF">{{value}}</p> + <md-list-item ng-repeat="(label, info) in relatedModules" ng-click="showRelatedList(info.relatedModule)"> + <p style="font-size: 13px;"><span style="font-size: 12px; color:#FF4068" class="vicon-{{info.relatedModule | lowercase | nospace}}"></span> {{label}}</p> + <p style="text-align:right; color:#0099FF">{{info.count}}</p> <md-divider></md-divider> </md-list-item> </div> diff --git a/layouts/v7/modules/Mobile/simple/Vtiger/Edit.tpl b/layouts/v7/modules/Mobile/simple/Vtiger/Edit.tpl index 2b0fde68a05bf05bfcca3ab3f6404a79c1828b4c..a4ddf0523a1fe614c3d77963035a12fe447c7085 100644 --- a/layouts/v7/modules/Mobile/simple/Vtiger/Edit.tpl +++ b/layouts/v7/modules/Mobile/simple/Vtiger/Edit.tpl @@ -13,59 +13,119 @@ <script type="text/javascript" src="../../{$TEMPLATE_WEBPATH}/Vtiger/js/Edit.js"></script> {literal} - <form name="editForm" id="field-edit-form" ng-submit="saveThisRecord()" ng-controller="VtigerEditController"> - <header md-page-header fixed-top> - <md-toolbar> - <div class="md-toolbar-tools actionbar"> - <md-button ng-click="gobacktoUrl()" class="md-icon-button" aria-label="side-menu-open"> - <i class="mdi mdi-window-close actionbar-icon"></i> - </md-button> - <h2 ng-if="record" flex>Edit</h2> - <h2 ng-if="!record" flex>Create</h2> - <span flex></span> - <md-button type="submit" class="md-icon-button" aria-label="notifications"> - <i class="mdi mdi-check actionbar-icon"></i> - </md-button> - </div> - </md-toolbar> - </header> - <section layout="row" flex class="content-section"> - <div layout="column" class="edit-content" layout-fill layout-align="top center" ng-if="fieldsData.length"> - <md-list class="fields-list"> - <md-list-item class="md-1-line" ng-repeat="field in fieldsData" ng-if="field.editable"> - <div class="md-list-item-text field-row" ng-switch="field.fieldType"> - <!--*************Picklist**************************************--> - <md-input-container ng-switch-when="picklist"> - <label class="edit-select-label">{{field.label}}</label> - <md-select ng-model="field.value" name="{{field.name}}" aria-label="{{field.name}}" ng-required="field.mandatory"> - <md-option ng-value="opt.value" ng-repeat="opt in field.picklist">{{opt.label}}</md-option> +<form name="editForm" id="field-edit-form" ng-submit="saveThisRecord(editForm)" ng-controller="VtigerEditController"> + <header md-page-header fixed-top> + <md-toolbar> + <div class="md-toolbar-tools actionbar"> + <md-button ng-click="gobacktoUrl()" class="md-icon-button" aria-label="side-menu-open"> + <i class="mdi mdi-window-close actionbar-icon"></i> + </md-button> + <h2 ng-if="record" flex>Edit</h2> + <h2 ng-if="!record" flex>Create</h2> + <span flex></span> + <md-button type="submit" class="md-icon-button" aria-label="notifications"> + <i class="mdi mdi-check actionbar-icon"></i> + </md-button> + </div> + </md-toolbar> + </header> + <section layout="row" flex class="content-section"> + <div layout="column" class="edit-content" layout-fill layout-align="top center"> + <md-list class="fields-list"> + <md-list-item ng-repeat="field in fieldsData" class="md-1-line" ng-if="field.editable"> + <div class="md-list-item-text field-row" ng-switch="field.type.name"> + <md-input-container ng-switch-when="string"> + <div class="input-group-addon"> + <label>{{field.label}}</label> + <input name="{{field.name}}" ng-model="field.raw" type="text" aria-label="{{field.name}}" ng-required="field.mandatory"> + </div> + <div ng-messages="editForm.{{field.name}}.$error"> + <div ng-show="field.mandatory && !field.raw" ng-message="required"> Mandatory Field.</div> + </div> + </md-input-container> + <md-input-container ng-switch-when="phone"> + <div class="input-group-addon"> + <label>{{field.label}}</label> + <input name="{{field.name}}" ng-model="field.raw" type="phone" aria-label="{{field.name}}" ng-required="field.mandatory"> + </div> + <div ng-messages="editForm.{{field.name}}.$error"> + <div ng-if="editForm[field.name].$error.required" ng-message="required"> Mandatory Field.</div> + </div> + </md-input-container> + <!--*************PICKLIST UI***********************************--> + <md-input-container ng-switch-when="picklist" ng-hide="(field.name == 'activitytype' || field.name == 'eventstatus') && module =='Calendar'"> + <div class="input-group-addon"> + <label ng-if="field.name == 'taskstatus'">Task Status</label> + <label ng-if="field.name == 'eventstatus'">Event Status</label> + <label ng-if="field.name != 'taskstatus' && field.name != 'eventstatus'">{{field.label}}</label> + <md-select name="{{field.name}}" ng-model="field.raw" aria-label="{{field.label}}" ng-required="field.mandatory"> + <md-option ng-value="opt.value" ng-repeat="opt in field.type.picklistValues">{{opt.label}}</md-option> </md-select> - <div ng-messages="editForm.{{field.name}}.$error"> - <div ng-show="field.mandatory && !field.value" ng-message="required"> Mandatory Field.</div> - </div> - </md-input-container> - <!--*************Picklist**************************************--> - <md-input-container ng-switch-when="metricpicklist"> - <label class="edit-select-label">{{field.label}}</label> - <md-select ng-model="field.value" name="{{field.name}}" aria-label="{{field.name}}" ng-required="field.mandatory"> - <md-option ng-value="opt.value" ng-repeat="opt in field.picklist">{{opt.label}}</md-option> + </div> + <div ng-messages="editForm.{{field.name}}.$error"> + <div ng-show="field.mandatory && !field.raw" ng-message="required"> Mandatory Field.</div> + </div> + </md-input-container> + <!--*************PICKLIST UI***********************************--> + <md-input-container ng-switch-when="metricpicklist"> + <div class="input-group-addon"> + <label ng-if="field.name == 'taskstatus'">Task Status</label> + <label ng-if="field.name == 'eventstatus'">Event Status</label> + <label ng-if="field.name != 'taskstatus' && field.name != 'eventstatus'">{{field.label}}</label> + <md-select name="{{field.name}}" ng-model="field.raw" aria-label="{{field.label}}" ng-required="field.mandatory"> + <md-option ng-value="opt.value" ng-repeat="opt in field.type.picklistValues">{{opt.label}}</md-option> </md-select> - <div ng-messages="editForm.{{field.name}}.$error"> - <div ng-show="field.mandatory && !field.value" ng-message="required"> Mandatory Field.</div> - </div> - </md-input-container> - - <!--****************Multi Select Picklist*******************************--> - <md-input-container ng-switch-when="multipicklist"> - <div style="border: 1px solid;">{{field.label}}</div> - <div style="border: 1px solid;">{{field.valuelabel}}</div><br> - <div style="border: 1px solid;">{{field.value}}</div><br> - <div style="border: 1px solid;">{{field.name}}</div><br> - <div style="border: 1px solid;">{{field.fieldType}}</div><br> - <div style="border: 1px solid;">{{field.fieldFormat}}</div><br> - <div style="border: 1px solid;">{{field.picklist}}</div><br> + </div> + <div ng-messages="editForm.{{field.name}}.$error"> + <div ng-show="field.mandatory && !field.raw" ng-message="required"> Mandatory Field.</div> + </div> + </md-input-container> + <!--*************Owner UI***********************************--> + <md-input-container ng-switch-when="owner"> + <div class="input-group-addon"> + <label>{{field.label}}</label> + <md-select name="{{field.name}}" ng-model="field.raw" aria-label="{{field.label}}"> + <md-optgroup label="Users" aria-label="Users"> + <md-option ng-value="user_id" ng-repeat="(user_id, user) in field.type.picklistValues.users">{{user}}</md-option> + </md-optgroup> + <md-optgroup label="Groups" aria-label="Groups"> + <md-option ng-value="group_id" ng-repeat="(group_id, group) in field.type.picklistValues.groups">{{group}}</md-option> + </md-optgroup> + </md-select> + </div> + <div ng-messages="editForm.{{field.name}}.$error"> + <div ng-show="field.mandatory && !field.raw" ng-message="required"> Mandatory Field.</div> + </div> + </md-input-container> + <!--****************Reference Picklist*******************************--> + <div ng-switch-when="reference" style="padding-bottom: 16px;"> + <div class="input-group-addon"> + <label>{{field.label}}</label> + <md-autocomplete name="{{field.name}}" flex + ng-model="field.raw" + md-search-text="field.valueLabel" + md-items="item in getMatchedReferenceFields(field.valueLabel, field)" + md-selected-item-change="setReferenceFieldValue(item, field)" + md-item-text="item.label" + md-min-length="3" + md-input-name="{{field.name}}"> + <md-item-template> + <span md-highlight-text="field.valueLabel">{{item.label}}</span> + </md-item-template> + <md-not-found> + No matches found for "{{field.valueLabel}}". + </md-not-found> + </md-autocomplete> + </div> + <div ng-messages="editForm.{{field.name}}.$error" ng-if="searchForm.autocompleteField.$touched"> + <div ng-message="required">You <b>must</b> have a favorite fruit.</div> + </div> + </div> + <!--****************Multi Select Picklist*******************************--> + <md-input-container ng-switch-when="multipicklist"> + <div class="input-group-addon"> <label>{{field.label}}</label> - <md-chips ng-model="field.valuelabel" md-autocomplete-snap md-require-match> + <md-chips name="{{field.name}}" ng-model="field.valuelabel" md-autocomplete-snap md-require-match> <md-autocomplete aria-label="{{field.name}}" md-input-name="field.name" md-search-text="field.valuelabel" @@ -77,217 +137,78 @@ <span> {{$chip['display']}} </span> </md-chip-template> </md-chips> - <div ng-messages="editForm.{{field.name}}.$error"> - <div ng-show="field.mandatory && !field.value" ng-message="required"> Mandatory Field.</div> - </div> - </md-input-container> - - <!--****************Reference Picklist*******************************--> - <div ng-switch-when="reference"> - <label style="font-size: 13px; color: grey;">{{field.label}}</label> - <md-autocomplete flex - ng-required="field.mandatory" - ng-model="field.value" - aria-label="field.name" - md-input-name="field.name" - md-search-text="field.valuelabel" - md-items="item in getMatchedReferenceFields(field.valuelabel)" - md-item-text="item.label" - md-min-length="2" - md-selected-item-change="field.value = item.id; field.valuelabel = item.label" - placeholder="Type to search"> - <md-item-template> - <span md-highlight-text="searchText">{{item.label}}</span> - </md-item-template> - <md-not-found> - No matches found for "{{field.valuelabel}}". - </md-not-found> - </md-autocomplete> - <div ng-messages="editForm.{{field.name}}.$error" ng-if="searchForm.autocompleteField.$touched"> - <div ng-message="required">You <b>must</b> have a favorite fruit.</div> - </div> </div> - <!--*************Phone number************************************--> - <md-input-container ng-switch-when="phone"> - <label>{{field.label}}</label> - <input name="{{field.name}}" ng-model="field.value" type="text" aria-label="{{field.name}}" ng-required="field.mandatory"> - <div ng-messages="editForm.{{field.name}}.$error"> - <div ng-show="field.mandatory && !field.value" ng-message="required"> Mandatory Field.</div> - </div> - </md-input-container> - - <!--*************Skype number************************************--> - <md-input-container ng-switch-when="skype" class="skype-field"> - <label>{{field.label}}</label> - <i class='mdi mdi-skype skype-icon'></i> - <input class="skype-input" name="{{field.name}}" ng-model="field.value" type="text" aria-label="{{field.name}}" ng-required="field.mandatory"> - <div ng-messages="editForm.{{field.name}}.$error"> - <div ng-show="field.mandatory && !field.value" ng-message="required"> Mandatory Field.</div> - </div> - </md-input-container> - - <!--*************Textbox UI ************************************--> - <md-input-container ng-switch-when="string"> - <label>{{field.label}}</label> - <input name="{{field.name}}" ng-model="field.value" type="text" aria-label="{{field.name}}" ng-required="field.mandatory"> - <div ng-messages="editForm.{{field.name}}.$error"> - <div ng-show="field.mandatory && !field.value" ng-message="required"> Mandatory Field.</div> - </div> - </md-input-container> - - <!--*************Date Field UI***********************************--> - <md-input-container class="date-input-container" ng-switch-when="date"> - <label>{{field.label}}</label> - <md-datepicker style="width: 100%;" - class="edit-date-picker" - name = "{{field.name}}" - ng-model="field.dateFieldValue" - value="field.value" - ng-change="setdateString(field)" - ng-aria-label="field.name" - > - </md-datepicker> - <!--datepicker date-format="{{field.fieldFormat | ngdateformat}}"> - <input class="date-input" name="field.name" ng-model="field.value" type="text" ng-required="field.mandatory"> - </datepicker--> - <div ng-messages="editForm.{{field.name}}.$error"> - <div ng-show="field.mandatory && !field.value" ng-message="required"> Mandatory Field.</div> - </div> - </md-input-container> - - <!--****************Time UI***********************************--> - <md-input-container class="date-input-container" ng-switch-when="time"> - <label>{{field.label}}</label> - <clockpicker ng-model="field.value" time12format="field.valuelabel" time24format="field.value" appliedname="field.name" aria-label="{{field.name}}" ng-required="field.mandatory"></clockpicker> - <div ng-messages="editForm.{{field.name}}.$error"> - <div ng-show="field.mandatory && !field.value" ng-message="required"> Mandatory Field.</div> - </div> - </md-input-container> - - <!--*************Date & Time UI***********************************--> - <md-input-container ng-switch-when="datetime"> - <div >This is datetime</div> - </md-input-container> - - <!--*************Text Area UI***********************************--> - <md-input-container ng-switch-when="text"> - <label>{{field.label}}</label> - <textarea ng-model="field.value" columns="1" name="{{field.name}}" aria-label="{{field.name}}" ng-required="field.mandatory"></textarea> - <div ng-messages="editForm.{{field.name}}.$error"> - <div ng-show="field.mandatory && !field.value" ng-message="required"> Mandatory Field.</div> - </div> - </md-input-container> - - <!--*************Double UI***********************************--> - <md-input-container ng-switch-when="double"> - <label>{{field.label}}</label> - <input type="text" name="{{field.name}}" ng-model="field.value" pattern="[0-9]+([\.|,][0-9]+)?" aria-label="{{field.name}}" ng-required="field.mandatory"> - <div ng-messages="editForm.{{field.name}}.$error"> - <div ng-show="field.mandatory && !field.value" ng-message="required"> Mandatory Field.</div> - <div ng-show="editForm.field.name.$error.text" ng-message="ngInvalidPattern"> match failed</div> - </div> - </md-input-container> - - <!--*************Integer UI***********************************--> - <md-input-container ng-switch-when="integer"> - <label>{{field.label}}</label> - <input type="text" name="{{field.name}}" ng-model="field.value" pattern="[0-9]+" aria-label="{{field.name}}" ng-required="field.mandatory"> - <div ng-messages="editForm.{{field.name}}.$error"> - <div ng-show="field.mandatory && !field.value" ng-message="required"> Mandatory Field.</div> - </div> - </md-input-container> - - <!--*************Currency UI***********************************--> - <md-input-container ng-switch-when="currency"> - <label>{{field.label}}</label> - <input type="text" name="{{field.name}}" ng-model="field.value" aria-label="{{field.name}}" ng-required="field.mandatory"> - <div ng-messages="editForm.{{field.name}}.$error"> - <div ng-show="field.mandatory && !field.value" ng-message="required"> Mandatory Field.</div> - </div> - </md-input-container> - - <!--*************Email UI***********************************--> - <md-input-container ng-switch-when="email" novalidate> - <label>{{field.label}}</label> - <input name="{{field.name}}" ng-model="field.value" type="email" aria-label="{{field.name}}" ng-required="field.mandatory" novalidate> - - <div ng-messages="editForm.field.name.$error"> - <div ng-show="field.mandatory" ng-message="required"> Mandatory Field.</div> - <div ng-show="editForm.{{field.name}}.$error.email" ng-message="email"> - Not valid email! + <div ng-messages="editForm.{{field.name}}.$error"> + <div ng-show="field.mandatory && !field.raw" ng-message="required"> Mandatory Field.</div> + </div> + </md-input-container> + <!--*************Date Field UI***********************************--> + <md-input-container ng-switch-when="date"> + <div class="input-group-addon"> + <label ng-if="field.name != 'date_start'">{{field.label}}</label> + <label ng-if="field.name == 'date_start'">Start Date</label> + <div layout="row"> + <span class="mdi mdi-calendar editIcon"></span> + <div flex="90"> + <input name="{{field.name}}" type="date" aria-label="Date Field UI" ng-model="field.raw"> </div> </div> - </md-input-container> - - <!--*************Url UI***********************************--> - <md-input-container ng-switch-when="url" novalidate> + </div> + <div ng-messages="editForm.{{field.name}}.$error"> + <div ng-show="field.mandatory && !field.raw" ng-message="required"> Mandatory Field.</div> + </div> + </md-input-container> + <!--*************Time Field UI***********************************--> + <md-input-container class="date-input-container" ng-switch-when="time" ng-hide="field.name == 'time_end' && module =='Calendar'"> + <div class="input-group-addon"> <label>{{field.label}}</label> - <input name="{{field.name}}" ng-model="field.value" type="url" aria-label="{{field.name}}" ng-required="field.mandatory" novalidate> - <div ng-messages="editForm.{{field.name}}.$error"> - <div ng-show="field.mandatory && !field.value" ng-message="required"> Mandatory Field.</div> - </div> - </md-input-container> - - <!--*************Owner UI***********************************--> - <md-input-container ng-switch-when="owner"> - <label class="edit-select-label">{{field.label}}</label> - <md-select ng-model="field.value" name="{{field.name}}" aria-label="{{field.name}}" ng-required="field.mandatory"> - <md-optgroup label="Users" aria-label="Users"> - <md-option ng-value="user" ng-repeat="user in field.picklist.users" aria-label="{{field.name}}">{{user}}</md-option> - {{user}} - </md-optgroup> - <md-optgroup label="Groups"> - <md-option ng-value="group" ng-repeat="group in field.picklist.groups" aria-label="{{field.name}}">{{group}}</md-option> - </md-optgroup> - </md-select> - <div ng-messages="editForm.{{field.name}}.$error"> - <div ng-show="field.mandatory && !field.value" ng-message="required"> Mandatory Field.</div> - </div> - </md-input-container> - - <!--*************Checkbox /Boolean Box UI *********************--> - <md-input-container ng-switch-when="boolean"> - <!--label class="edit-checkbox-label">{{field.label}}</label--> - <md-checkbox class="md-primary edit-checkbox" name="{{field.name}}" ng-model="field.value" aria-label="{{field.name}}" ng-required="field.mandatory"> - {{field.label}} - </md-checkbox> - <div ng-messages="editForm.{{field.name}}.$error"> - <div ng-show="field.mandatory && !field.value" ng-message="required"> Mandatory Field.</div> + <div layout="row" class="input-group-addon" flex> + <span class="mdi mdi-clock editIcon"></span> + <div flex="90"> + <input name="{{field.name}}" mdc-datetime-picker ng-if="userinfo.hour_format == '12'" date="false" time="true" type="text" format="hh:mm a" short-time="true" ng-model="field.raw" aria-label="{{field.label}}" ng-required="field.mandatory" placeholder="Time"> + <input name="{{field.name}}" mdc-datetime-picker ng-if="userinfo.hour_format == '24'" date="false" time="true" type="text" format="HH:mm" short-time="false" ng-model="field.raw" aria-label="{{field.label}}" ng-required="field.mandatory" placeholder="Time"> + </div> </div> - </md-input-container> - - <!--*************Image UI***********************************--> - <md-input-container ng-switch-when="image"> - <div class="mdi mdi-image"></div> - </md-input-container> - - <md-input-container ng-switch-when="richtext"> - <label>{{field.label}}</label> - <textarea rows="4" ng-model="field.value"></textarea> - </md-input-container> - - <!--*************Auto generated UI***********************************--> - <md-input-container ng-switch-when="autogenerated"> - <div>This is autogenerated</div> - </md-input-container> - - <!--*************Default text to be changed Later**********************--> - <md-input-container ng-switch-default> + </div> + <div ng-messages="editForm.{{field.name}}.$error"> + <div ng-show="field.mandatory && !field.raw" ng-message="required"> Mandatory Field.</div> + </div> + </md-input-container> + <!--*************Checkbox /Boolean Box UI *********************--> + <md-input-container ng-switch-when="boolean"> + <md-checkbox name="{{field.name}}" class="md-primary edit-checkbox" name="{{field.name}}" ng-model="field.raw" aria-label="{{field.name}}" ng-required="field.mandatory"> + {{field.label}} + </md-checkbox> + <div ng-messages="editForm.{{field.name}}.$error"> + <div ng-show="field.mandatory" ng-message="required"> Mandatory Field.</div> + </div> + </md-input-container> + <!--************* TEXT AREA *********************--> + <md-input-container ng-switch-when="text"> + <label>{{field.label}}</label> + <textarea name="{{field.name}}" ng-model="field.raw" rows="4" md-select-on-focus></textarea> + <div ng-messages="editForm.{{field.name}}.$error"> + <div ng-show="field.mandatory" ng-message="required"> Mandatory Field.</div> + </div> + </md-input-container> + + <!--*************Default text to be changed Later**********************--> + <md-input-container ng-switch-when="image"> + <h5>Upload image from web verion.</h5> + </md-input-container> + <md-input-container ng-switch-default> + <div class="input-group-addon"> <label>{{field.label}}</label> - <input name="{{field.name}}" ng-model="field.value" type="text" aria-label="{{field.name}}" ng-required="field.mandatory"> - <div ng-messages="editForm.{{field.name}}.$error"> - <div ng-show="field.mandatory && !field.value" ng-message="required"> Mandatory Field.</div> - </div> - </md-input-container> - - </div> - </md-list-item> - </md-list> - </div> - <div class="no-records-message" ng-if="!fieldsData.length"> - <div class="no-records">No Fields Found</div> - </div> - <div flex></div> - </section> - </form> + <input name="{{field.name}}" ng-model="field.raw" type="text" aria-label="{{field.name}}" ng-required="field.mandatory"> + </div> + <div ng-messages="editForm.{{field.name}}.$error"> + <div ng-show="field.mandatory && !field.raw" ng-message="required"> Mandatory Field.</div> + </div> + </md-input-container> + </div> + </md-list-item> + </md-list> + </div> + </section> +</form> {/literal} diff --git a/layouts/v7/modules/Mobile/simple/Vtiger/Home.tpl b/layouts/v7/modules/Mobile/simple/Vtiger/Home.tpl index e84354c98d43e7a1a3bdd3186a52a186e73b3218..e2739b77ae549daae5f30a5604c36af6c33d24fd 100644 --- a/layouts/v7/modules/Mobile/simple/Vtiger/Home.tpl +++ b/layouts/v7/modules/Mobile/simple/Vtiger/Home.tpl @@ -40,12 +40,11 @@ <div class="user-details"> <md-list-item class="md-1-line"> {/literal} - <img src="../../{$TEMPLATE_WEBPATH}/resources/images/butler.jpg" class="md-avatar" alt="butler"> + <img src="../../{$TEMPLATE_WEBPATH}/resources/images/default_1.png" class="md-avatar" alt="user"> {literal} <div class="md-list-item-text"> - <h5>{{userinfo.first_name + " "}}{{userinfo.last_name}}</h5> - <!--p>{{userinfo.username}}</p> - <p>{{userinfo.email}}</p--> + <div>{{userinfo.first_name + " "}}{{userinfo.last_name}}</div> + <h5 style="margin: 0px;">{{userinfo.email}}</h5> </div> </md-list-item> </div> @@ -90,4 +89,4 @@ </div> </section> {/literal} -{include file="../Footer.tpl"} \ No newline at end of file +{include file="../Footer.tpl"} diff --git a/layouts/v7/modules/Mobile/simple/Vtiger/List.tpl b/layouts/v7/modules/Mobile/simple/Vtiger/List.tpl index d04ff1450ce94ff82d5ecbe3d8c09ff9ab0817db..a6eb358abbc1fb1cebe97bb885f01ca062ea6ba6 100644 --- a/layouts/v7/modules/Mobile/simple/Vtiger/List.tpl +++ b/layouts/v7/modules/Mobile/simple/Vtiger/List.tpl @@ -9,49 +9,44 @@ * **************************************************************************************/ -->*} -{*<!-- -/************************************************************************************* -** 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. -* -**************************************************************************************/ --->*} {include file="../Header.tpl" scripts=$_scripts} -{include file="../Vtiger/Toolbar.tpl"} <section layout="row" flex class="content-section" ng-controller="{$_controller}"> + {include file="../Vtiger/Toolbar.tpl"} {include file="../Vtiger/SideMenu.tpl"} {literal} <md-button ng-click="listViewCreateEvent()" class="md-fab md-primary float-button md-fab-bottom-right" aria-label="addnew"> <i class="mdi mdi-plus"></i> </md-button> <div flex class="list-content"> - <div class="list-filters" layout="row" > - <div flex="50" class="change-filter"> + <div class="list-filters" layout="row" flex> + <div flex="100" class="change-filter"> + <md-button class="filter-btn" aria-label="notifications"> + <i class="mdi mdi-filter-outline"></i> + </md-button> <md-input-container class="current-filter"> - <md-select ng-model="selectedFilter" aria-label="filter"> - <md-optgroup label="Mine"> - <md-option ng-repeat="filter in filters.Mine" ng-value="filter.id">{{filter.name}}</md-option> + <md-select ng-model="selectedFilter" aria-label="filter" ng-change="changeFilter()"> + <md-optgroup label="Mine" aria-label="Mine"> + <md-option ng-repeat="filter in filters.Mine track by filter.id" ng-value="filter.id" aria-label="{{filter.name}}">{{filter.name}}</md-option> </md-optgroup> - <md-optgroup label="Shared"> - <md-option ng-repeat="filter in filters.Shared" ng-value="filter.id">{{filter.name}}</md-option> + <md-optgroup label="Shared" aria-label="Shared"> + <md-option ng-repeat="filter in filters.Shared track by filter.id" ng-value="filter.id" aria-label="{{filter.name}}">{{filter.name}}</md-option> </md-optgroup> </md-select> </md-input-container> </div> - <div flex="50" class="sort-filter" ng-show="records.length"> + <!--div flex="50" class="sort-filter" ng-if="records.length"> + <md-button class="filter-btn" aria-label="notifications"> + <i class="mdi mdi-sort"></i> + </md-button> <md-input-container class="current-sort-field"> - <md-select ng-model="orderBy" aria-label="sortfield" placeholder="Select sort field"> - <md-option ng-repeat="header in headers" ng-value="header.name">{{header.label}}</md-option> + <md-select ng-model="orderBy" aria-label="sortfield" placeholder="Sort" ng-change="changeSort(orderBy)"> + <md-option ng-repeat="nameField in nameFields track by $index" ng-value="nameField.name" aria-label="nameField.name">{{nameField.label}}</md-option> + <md-option ng-repeat="header in headers track by $index" ng-value="header.name" aria-label="nameField.name">{{header.label}}</md-option> </md-select> </md-input-container> - </div> + </div>--> </div> - <div layout="column" layout-fill layout-align="top center" ng-if="records.length"> <md-list class="records-list"> <md-list-item class="md-3-line" data-record-id="{{record.id}}" aria-label="row+{{record.id}}" ng-model="showActions" md-swipe-right="showActions=false;$event.stopPropagation();" md-swipe-left="showActions=true;$event.stopPropagation();" ng-click="gotoDetailView(record.id)" ng-repeat="record in records"> @@ -63,26 +58,27 @@ </h3> <p class="header-fields" ng-repeat="header in headers" ng-if="headerIndex(nameFields,header.name)== -1"> {{record[header.name]}} - </p> + </p> </div> <div class="actions-slider animate-show" ng-show="showActions" ng-swipe-right="hideRecordActions();" ng-animate="{enter: 'animate-enter', leave: 'animate-leave'}"> - <div class="button-wrap"> - <md-button class="list-action-edit md-icon-button" aria-label="list-action-edit" ng-click="listViewEditEvent(record.id);$event.stopPropagation();"> - <i class="mdi mdi-pencil"></i> - </md-button> - <md-button class="list-action-delete md-icon-button" aria-label="list-action-delete" ng-click="showConfirmDelete($event, record.id);$event.stopPropagation();"> - <i class="mdi mdi-delete"></i> - </md-button> + <div class="button-wrap" flex layout="row"> + <div flex layout='column'> + <md-button class="list-action-edit md-icon-button" aria-label="list-action-edit" ng-click="listViewEditEvent($event, record.id);$event.stopPropagation();"> + <span><i class="mdi mdi-pencil"></i></span> + </md-button> + </div> + <div flex layout='column'> + <md-button class="list-action-delete md-icon-button" aria-label="list-action-delete" ng-click="showConfirmDelete($event, record.id);$event.stopPropagation();"> + <span><i class="mdi mdi-delete"></i></span> + </md-button> + </div> </div> </div> <md-divider ></md-divider> </md-list-item> <md-list-item class="md-1-line load-more-link" > <div ng-click="loadMoreRecords()" ng-show="moreRecordsExists"> - Load more records - </div> - <div ng-show="!moreRecordsExists" class="thats-all"> - That's All + Load more </div> </md-list-item> </md-list> @@ -95,4 +91,4 @@ </div> </section> {/literal} -{include file="../Footer.tpl"} \ No newline at end of file +{include file="../Footer.tpl"} diff --git a/layouts/v7/modules/Mobile/simple/Vtiger/SideMenu.tpl b/layouts/v7/modules/Mobile/simple/Vtiger/SideMenu.tpl index 924088ee364e45e8278dc1eee7eb465c6ed63bc3..e35b8bc573e9c1d7e21ffbed44fb0e07e69269be 100644 --- a/layouts/v7/modules/Mobile/simple/Vtiger/SideMenu.tpl +++ b/layouts/v7/modules/Mobile/simple/Vtiger/SideMenu.tpl @@ -1,51 +1,51 @@ -{literal} -<md-sidenav class="md-sidenav-left" md-component-id="left"> - <md-toolbar class="app-menu md-locked-open"> - <!--div class="md-toolbar-tools"> - <md-button ng-click="navigationToggle()" class="md-icon-button" aria-label="side-menu-close"> - <i class="mdi mdi-arrow-left actionbar-icon"></i> - </md-button> - </div--> - <div class="user-details"> - <md-list-item class="md-1-line"> - {/literal} - <img src="../../{$TEMPLATE_WEBPATH}/resources/images/butler.jpg" class="md-avatar" alt="butler"> - {literal} - <div class="md-list-item-text"> - <h5>{{userinfo.first_name + " "}}{{userinfo.last_name}}</h5> - <!--p>{{userinfo.username}}</p> - <p>{{userinfo.email}}</p--> - </div> - </md-list-item> - </div> - <div class="app-dropdown"> - <md-select ng-model="selectedApp" aria-label="app_menu"> - <md-option ng-repeat="app in apps" ng-value="app">{{app}}</md-option> - </md-select> - </div> - </md-toolbar> - - <md-list class="sidenav-module-list"> - <md-list-item md-ink-ripple class="md-1-line"> - <span style="font-size:14px;" class="vicon-grid"></span> - <span class="vmodule-name">Dashboard</span> - </md-list-item> - <md-list-item ng-click="navigationToggle();loadList(module.name);" class="md-1-line" ng-click="module.label" ng-repeat="module in menus[selectedApp]"> - <span style="font-size: 14px;" class="vicon-{{module.name | lowercase | nospace}}"></span> - <span class="vmodule-name">{{module.label}}</span> - </md-list-item> - </md-list> - <md-list> - <md-list-item md-ink-ripple class="md-1-line"> - <div class="md-list-item-text"> - <a href="#" class="logout-link" ng-click="logout();"><span class="mdi mdi-power"></span> Logout</a> - </div> - </md-list-item> - <md-list-item class="md-1-line"> - <div class="md-list-item-text"> - - </div> - </md-list-item> - </md-list> -</md-sidenav> -{/literal} \ No newline at end of file +{literal} +<md-sidenav class="md-sidenav-left" md-component-id="left"> + <md-toolbar class="app-menu md-locked-open"> + <div class="user-details"> + <md-list-item class="md-1-line" style="margin:10px 0px"> + {/literal} + <img src="../../{$TEMPLATE_WEBPATH}/resources/images/default_1.png" class="md-avatar" alt="user"> + {literal} + <div class="md-list-item-text"> + <small>{{userinfo.first_name + " "}}{{userinfo.last_name}}</small> + <h5 style="margin: 0px;">{{userinfo.email}}</h5> + </div> + </md-list-item> + </div> + <div class="app-dropdown"> + <md-select ng-model="selectedApp" aria-label="app_menu"> + <md-option ng-repeat="app in apps" ng-value="app" ng-click="setSelectedApp(app)">{{app}}</md-option> + </md-select> + </div> + </md-toolbar> + + <md-list class="sidenav-module-list"> + <md-list-item ng-click="navigationToggle(); loadList('Events');" md-ink-ripple class="md-1-line"> + <span style="font-size:14px;" class="vicon-calendar"></span> + <span class="vmodule-name">Events</span> + </md-list-item> + <md-list-item ng-click="navigationToggle(); loadList('Calendar');" md-ink-ripple class="md-1-line"> + <span style="font-size:14px;" class="vicon-calendar"></span> + <span class="vmodule-name">Tasks</span> + </md-list-item> + <md-divider></md-divider> + <md-list-item ng-click="navigationToggle();loadList(module.name);" class="md-1-line" ng-click="module.label" ng-repeat="module in menus[selectedApp]"> + <span style="font-size: 14px;" class="vicon-{{module.name | lowercase | nospace}}"></span> + <span class="vmodule-name">{{module.label}}</span> + </md-list-item> + </md-list> + <md-divider></md-divider> + <md-list> + <md-list-item md-ink-ripple class="md-1-line"> + <div class="md-list-item-text"> + <a href="#" class="logout-link" ng-click="logout();"><span class="mdi mdi-power"></span> Logout</a> + </div> + </md-list-item> + <md-list-item class="md-1-line"> + <div class="md-list-item-text"> + + </div> + </md-list-item> + </md-list> +</md-sidenav> +{/literal} diff --git a/layouts/v7/modules/Mobile/simple/Vtiger/Toolbar.tpl b/layouts/v7/modules/Mobile/simple/Vtiger/Toolbar.tpl index a30addcc1c71c260356bcc857bb2c23274a2059e..7055498d5c332a6639dbd28635a3b5ad6a9aaf20 100644 --- a/layouts/v7/modules/Mobile/simple/Vtiger/Toolbar.tpl +++ b/layouts/v7/modules/Mobile/simple/Vtiger/Toolbar.tpl @@ -5,11 +5,7 @@ <md-button ng-click="navigationToggle()" class="md-icon-button" aria-label="side-menu-open"> <i class="mdi mdi-menu actionbar-icon"></i> </md-button> - <h2 flex>{{pageTitle}}</h2> - <span flex></span> - <md-button class="md-icon-button" aria-label="global-search"> - <i class="mdi mdi-magnify actionbar-icon"></i> - </md-button> + <h2 flex class="toolbar-title">{{pageTitle}}</h2> </div> </md-toolbar> </header> diff --git a/layouts/v7/modules/Mobile/simple/Vtiger/js/Detail.js b/layouts/v7/modules/Mobile/simple/Vtiger/js/Detail.js index d80508e294812cb8e12f0a4062ebd8f9209cd992..8acf2fb808ff8227592b5efa0718e997898b4ae5 100644 --- a/layouts/v7/modules/Mobile/simple/Vtiger/js/Detail.js +++ b/layouts/v7/modules/Mobile/simple/Vtiger/js/Detail.js @@ -19,7 +19,9 @@ mobileapp.controller('VtigerDetailController', function ($scope, $api) { }); $scope.gobacktoUrl = function(){ - window.history.back(); + //window.history.back(); + // Binding DetailView back action to List view. (as Edit + Save puts back in wrong state) + window.location.href = (window.location.href.replace(/view=Detail/, "view=List")); }; var _VTIGER_RESTRICTIONS = { @@ -34,7 +36,7 @@ mobileapp.controller('VtigerDetailController', function ($scope, $api) { 'reassign_count', 'from_portal', 'prev_sales_stage', - 'txtAdjustment', + 'txtAdjustment', 'hdnGrandTotal', 'hdnTaxType', 'hdnSubTotal', @@ -45,16 +47,16 @@ mobileapp.controller('VtigerDetailController', function ($scope, $api) { 'balance', 'hdnS_H_Amount', 'paid', - 'tags', - 'shipping_&_handling', - 'shipping_&_handling_shtax1', - 'shipping_&_handling_shtax2', - 'shipping_&_handling_shtax3', - 'starred', - 'hdnS_H_Percent', - 'tax1', - 'tax2', - 'tax3', + 'tags', + 'shipping_&_handling', + 'shipping_&_handling_shtax1', + 'shipping_&_handling_shtax2', + 'shipping_&_handling_shtax3', + 'starred', + 'hdnS_H_Percent', + 'tax1', + 'tax2', + 'tax3', ] } @@ -86,8 +88,6 @@ mobileapp.controller('VtigerDetailController', function ($scope, $api) { $scope.lineItemsSummary['total_tax'] = lineItemFinalDetails['tax_totalamount']; $scope.lineItemsSummary['totalAfterDiscount'] = lineItemFinalDetails['totalAfterDiscount']; $scope.lineItemsSummary['adjustment'] = lineItemFinalDetails['adjustment']; - - }; $scope.loadRecord = function () { @@ -103,24 +103,21 @@ mobileapp.controller('VtigerDetailController', function ($scope, $api) { if(ignoreFields.indexOf($scope.fields[index].name) === -1) { var value = r.record[$scope.fields[index].name]; if(typeof value === 'object') { - processedData.push({label:$scope.fields[index].label, value:value.label}); + processedData.push({label:$scope.fields[index].label, value:value.label, type:$scope.fields[index].type.name}); } else { - processedData.push({label:$scope.fields[index].label, value:value}); + processedData.push({label:$scope.fields[index].label, value:value, type:$scope.fields[index].type.name}); } } } - + $scope.pageTitle = r.record.label; $scope.recordData = processedData; }); //related tab $api('fetchRecord', {mode:'getRelatedRecordCount', module:$scope.module, record:$scope.record}, function(er, re) { if(re){ - $scope.relatedModules = {}; - for(var key in re){ - $scope.relatedModules[key] = re[key].count; - } + $scope.relatedModules = re; } }); }; diff --git a/layouts/v7/modules/Mobile/simple/Vtiger/js/Edit.js b/layouts/v7/modules/Mobile/simple/Vtiger/js/Edit.js index c9791079082fb9d17a3d868fdb04fcbe8e759615..c0012c497dd92bec970e70d5db522bf3f0fceb70 100644 --- a/layouts/v7/modules/Mobile/simple/Vtiger/js/Edit.js +++ b/layouts/v7/modules/Mobile/simple/Vtiger/js/Edit.js @@ -4,7 +4,7 @@ * and open the template in the editor. */ -mobileapp.controller('VtigerEditController', function ($scope, $api, $mdToast, $animate, $filter) { +mobileapp.controller('VtigerEditController', function ($scope, $api, $mdToast, $filter, $q) { var url = jQuery.url(); $scope.module = url.param('module'); $scope.record = url.param('record'); @@ -15,52 +15,116 @@ mobileapp.controller('VtigerEditController', function ($scope, $api, $mdToast, $ $scope.deleteable = null; $scope.fieldsData = null; $scope.editdata = []; - $scope.fruitsobj = { - fruitsList: loadFruits(), - selectedFruits: [], - selectedItem: 'Kiwi', - searchText: null - //querySearch: querySearch - }; - $scope.numberChips = []; - $scope.numberChips2 = []; - $scope.numberBuffer = ''; - /*$scope.testDate = new Date();*/ - $api('describe', {module: $scope.module}, function (e, r) { - $scope.describeObject = r.describe; - $scope.fields = $scope.describeObject.fields; - console.log($scope.fields); - $scope.createable = $scope.describeObject.createable; - $scope.updateable = $scope.describeObject.updateable; - $scope.deleteable = $scope.describeObject.deleteable; - if($scope.record){ - $scope.loadFields(); + var _processFields = function(field, newrecord, value){ + if(newrecord){ + if (typeof field.default != 'undefined') field.raw = field.default; + else if (typeof field.type.defaultValue != 'undefined') field.raw = field.type.defaultValue; } - else{ - $scope.createRecord(); + if(!newrecord && value){ + field.raw = value; } - }); - - $scope.createRecord = function(){ - var processedData = []; - for (var index in $scope.fields) { - var value = ''; - processedData.push({ - label: $scope.fields[index].label, // Actual field Label - valuelabel: value, // Value to be shown on UI - value: value, // Value to be stored on backend - name: $scope.fields[index].name, // Backend name for the field - forms will use this value - fieldType: $scope.fields[index].type.name, // Type of the field - fieldFormat: $scope.fields[index].type.format, // Format of the field ex: date -> dd/mm/yyyy - editable: $scope.fields[index].editable, // Returns true if field is editable - mandatory: $scope.fields[index].mandatory, // Returns true if field is mandatory - picklist: $scope.fields[index].type.picklistValues, // Picklist values for type picklist others will get null - dateFieldValue: new Date(), // Creates date object for md-datepicker - referenceModules: $scope.fields[index].type.refersTo // Reference module names for reference fields - }); + if($scope.module == 'Calendar' && field.name == 'activitytype'){ + field.raw = 'Task'; + } + switch(field.type.name) { + case 'date': + if(value){ + field.raw = new Date(value); + } + else{ + field.raw = new Date(); + } + break; + case 'time': + if(value){ + field.raw = new Date(value); + } + else{ + field.raw = new Date(); + } + break; + case 'reference': + if(value){ + field.raw = value.value; + field.valueLabel = value.label; + } + break; + case 'owner': + if(value){ + field.raw = value.value; + field.display = value.label; + } + break; + case 'boolean': + if(value){ + field.raw = value == '1' ? true : false; + } + break; + } + return field; + }; + var ignorefields = ['notime','starred','tags','modifiedby','reminder_time','imagename','taxclass','isconvertedfromlead','donotcall']; + + //Function to prepare create data. + var prepareCreateData = function(newRecord, record){ + var fields = $scope.fields; + var processedData = {}; + for(var i=0; i < fields.length; i++) { + var field = fields[i]; + if(ignorefields.indexOf(field.name) !== -1){ + continue; + } + if(field.editable) { + //salutationtype type is not picklist + if(field.name == 'salutationtype'){ + field.type.name = 'picklist'; + } + if(newRecord){ + //set default value + if(field.default){ + field.raw = field.default; + } + //set today date as default date. + if(!field.default && (field.type.name == 'date' || field.type.name == 'time')){ + field.raw = new Date(); + } + } + else{ + field.raw = record.record[field.name]; + } + //Process the field data + if(newRecord){ + field = _processFields(field, true); + } + else{ + field = _processFields(field, false, record.record[field.name]); + } + processedData[field.name] = field; + } + } $scope.fieldsData = processedData; }; + + $api('describe', {module: $scope.module}, function (e, r) { + $scope.describeObject = r.describe; + $scope.fields = $scope.describeObject.fields; + $scope.createable = $scope.describeObject.createable; + $scope.updateable = $scope.describeObject.updateable; + $scope.deleteable = $scope.describeObject.deleteable; + if($scope.record){ + $scope.loadFields(); + } + else{ + if ($scope.userinfo) { + prepareCreateData(true); + } else { + $scope.$root.$on('UserInfo.Changed', function(){ + prepareCreateData(true); + }); + } + } + }); $scope.gobacktoUrl = function () { window.history.back(); @@ -68,50 +132,64 @@ mobileapp.controller('VtigerEditController', function ($scope, $api, $mdToast, $ $scope.loadFields = function () { $api('fetchRecord', {module: $scope.module, record: $scope.record, view_mode:'web'}, function (e, r) { - var processedData = []; - for (var index in $scope.fields) { - var value = r.record[$scope.fields[index].name]; - var field = $scope.fields[index]; - if(field && (field.type.name == 'reference' || field.type.name == 'owner' || field.type.name == 'ownergroup')){ - value = value.label; - } - processedData.push({ - label: $scope.fields[index].label, // Actual field Label - valuelabel: value, // Value to be shown on UI - value: value, // Value to be stored on backend - name: $scope.fields[index].name, // Backend name for the field - forms will use this value - fieldType: $scope.fields[index].type.name, // Type of the field - fieldFormat: $scope.fields[index].type.format, // Format of the field ex: date -> dd/mm/yyyy - editable: $scope.fields[index].editable, // Returns true if field is editable - mandatory: $scope.fields[index].mandatory, // Returns true if field is mandatory - picklist: $scope.fields[index].type.picklistValues, // Picklist values for type picklist others will get null - dateFieldValue: new Date(value), // Creates date object for md-datepicker - referenceModules: $scope.fields[index].type.refersTo // Reference module names for reference fields - }); + if(r){ + prepareCreateData(false, r); + $scope.record = r.record.id; } - $scope.fieldsData = processedData; }); + }; + $scope.editdata = {}; + $scope.processEditData = function(fieldsData) { + for (var index in fieldsData) { + var field = fieldsData[index]; + var value = field.raw; + if(!value) value=''; + switch (field.type.name){ + //Should convert date time to utc. + case 'date' : + value = field.raw; + value = moment.utc(value).format('MM-DD-YYYY'); + break; + + case 'time' : + value = field.raw; + value = moment.utc(value).format('HH:mm:ss'); + break; + } + if(field.editable){ + $scope.editdata[field.name] = value; + } + } }; - - $scope.setdateString = function (val) { - spformat = $filter('ngdateformat')(val.fieldFormat); - newDateString = val.dateFieldValue.toString(spformat); - val.value = newDateString; - val.valuelabel = newDateString; + + $scope.isValid = function(form){ + if(!form.$valid) { + return false; + } + return true; }; - - $scope.saveThisRecord = function () { - $scope.editdata = {}; - for (var index in $scope.fieldsData) { - $scope.editdata[$scope.fieldsData[index].name] = $scope.fieldsData[index].value; + + $scope.saveThisRecord = function (editForm) { + if(!$scope.isValid(editForm)) { + var toast = $mdToast.simple().content('Mandatory Fields Missing').position($scope.getToastPosition()).hideDelay(1000); + $mdToast.show(toast); + return; } + $scope.processEditData($scope.fieldsData); $api('saveRecord', {module: $scope.module, record: $scope.record, values: $scope.editdata}, function (e, r) { if (r) { + //split the ws id to get actual record id to fetch. + var id = r.record.id.split('x')[1]; var toast = $mdToast.simple().content('Record Saved Successfully!').position($scope.getToastPosition()).hideDelay(1000); - $mdToast.show(toast); + window.location.href = "index.php?module="+$scope.module+"&view=Detail&record="+id+"&app="+$scope.selectedApp; } else { - var toast = $mdToast.simple().content('Some thing went wrong ! \n Save is not Succesfull.').position($scope.getToastPosition()).hideDelay(1000); + var message = 'Some thing went wrong ! \n Save is not Succesfull.'; + if (e.message) { + message = e.message; + } + var toast = $mdToast.simple().content(message).position($scope.getToastPosition()).hideDelay(1000); $mdToast.show(toast); + //window.location.href = "index.php?module="+$scope.module+"&view=List&app="+$scope.selectedApp; } }); }; @@ -129,94 +207,31 @@ mobileapp.controller('VtigerEditController', function ($scope, $api, $mdToast, $ return $scope.toastPosition[pos]; }).join(''); }; - - $scope.getMatchedReferenceFields = function (query) { - arr = loadContacts(); - var results = query ? arr.filter(createFilterFor(query)) : []; - return results; + + //Search reference records + $scope.getMatchedReferenceFields = function (query, field) { + var deferred = $q.defer(); + var refModule = field.type.refersTo[0]; + if(query) { + $api('fetchReferenceRecords', {module: refModule, searchValue: query}, function (error, response) { + if(response) { + var result = []; + angular.forEach(response, function (item, key) { + item['valueLabel'] = item.label; + result.push(item) + }); + return deferred.resolve(result); + } + }); + } + return deferred.promise; }; - function createFilterFor(query) { - var lowercaseQuery = angular.lowercase(query); - return function filterFn(option) { - var lowercaseOption = angular.lowercase(option.label); - return (lowercaseOption.indexOf(lowercaseQuery) === 0); - }; - } - - - $scope.querySearch2 = function (query) { - arr = loadFruits(); - var results = query ? arr.filter(createFilterFor2(query)) : []; - return results; + + $scope.setReferenceFieldValue = function(item, field){ + if(item){ + field.raw = item.value; + field.display = item.label; + field.selectedItem = {
'id' : item.id,
 'label' : item.label
}; + } }; - function createFilterFor2(query) { - var lowercaseQuery = angular.lowercase(query); - return function filterFn(fruit) { - return (fruit.value.indexOf(lowercaseQuery) === 0); - }; - } }); - -loadFruits = function () { - fruits = [ - 'Apple', - 'Banana', - 'Bilberry', - 'Blackcurrant', - 'Cantaloupe', - 'Cherry', - 'Date', - 'Dragonfruit', - 'Gooseberry', - 'Grape', - 'Grapefruit', - 'Guava', - 'Jackfruit', - 'Kiwi fruit', - 'Kiwano', - 'Kumquat', - 'Lemon', - 'Lime', - 'Mango', - 'Marion berry', - 'Cantaloupe', - 'Honeydew', - 'Water melon', - 'Nectarine', - 'Olive', - 'Orange', - 'Papaya', - 'Peach', - 'Pear', - 'Pineapple', - 'Pomegranate', - 'Quince', - 'Raspberry', - 'Rambutan', - 'Redcurrant', - 'Strawberry', - 'Squash' - ]; - arry = []; - for (var fruit in fruits) { - arry.push({ - value: fruits[fruit].toLowerCase(), - display: fruits[fruit] - }); - } - - return arry; -}; - -loadContacts = function () { - return [ - {id: '63', label: 'Mary Smith'}, - {id: '65', label: 'Linda Williams'}, - {id: '68', label: 'Elizabeth Brown'}, - {id: '71', label: 'Maria Miller'}, - {id: '72', label: 'Susan Wilson'}, - {id: '66', label: 'Barbara Jones'}, - {id: '73', label: 'Margaret Moore'}, - {id: '74', label: 'Dorothy Taylor'} - ]; -}; \ No newline at end of file diff --git a/layouts/v7/modules/Mobile/simple/Vtiger/js/List.js b/layouts/v7/modules/Mobile/simple/Vtiger/js/List.js index a81bfdc9d24949066371615ccd8df2e5ae590608..7d0258454a81789e99413f98672134fac1cf5c77 100644 --- a/layouts/v7/modules/Mobile/simple/Vtiger/js/List.js +++ b/layouts/v7/modules/Mobile/simple/Vtiger/js/List.js @@ -20,16 +20,18 @@ mobileapp.controller('VtigerListController', function ($scope, $api, $mdDialog) $scope.moreRecordsExists = false; $scope.nextRecords = []; $scope.showActions = false; + $scope.moduleLabel = $scope.module; // To fetch Module Filters $api('fetchModuleFilters', {module: $scope.module}, function (e, r) { $scope.filters = r.filters; + $scope.moduleLabel = r.moduleLabel; $scope.loadRecords(); }); // To fetch data from service with the given params $scope.loadRecords = function () { - $scope.pageTitle = $scope.module; + $scope.pageTitle = $scope.moduleLabel; $api('listModuleRecords', {module: $scope.module, filterid: $scope.selectedFilter, page: $scope.page, orderBy: $scope.orderBy, sortOrder: $scope.sortOrder}, function (e, r) { $scope.records = r.records; $scope.selectedFilter = r.selectedFilter; @@ -91,7 +93,7 @@ mobileapp.controller('VtigerListController', function ($scope, $api, $mdDialog) .targetEvent(ev); $mdDialog.show(confirm).then(function() { $api('deleteRecords', {record:id}, function(e,r) { - console.log(ev.currentTarget) +// console.log(ev.currentTarget) }); }); }; diff --git a/layouts/v7/modules/Mobile/simple/Vtiger/js/Vtiger.js b/layouts/v7/modules/Mobile/simple/Vtiger/js/Vtiger.js index b49b729678940a9c7a036b2034b3587f8a94dd01..5aef10fb86a917a89a341916a67c51c2d9783c3e 100644 --- a/layouts/v7/modules/Mobile/simple/Vtiger/js/Vtiger.js +++ b/layouts/v7/modules/Mobile/simple/Vtiger/js/Vtiger.js @@ -13,23 +13,30 @@ mobileapp.controller('VtigerBodyController', function ($scope, $api, $mdUtil, $m $scope.defaultApp = null; $scope.dynamicTheme = null; $scope.modules = null; - $scope.pageTitle = "Dashboard"; - + /* Use this function when you aren't sure to $apply or $digest */ function scopeApply(fn) { $scope.$$phase ? fn() : $scope.$apply(fn); } + + $scope.setSelectedApp = function (selectedApp) { + $scope.selectedApp = selectedApp.toUpperCase(); + } $scope.init = function () { $api('userInfo', function (e, r) { if (r) { + var currentApp = jQuery.url().param('app'); + if (!currentApp) { + currentApp = 'SUPPORT'; + } scopeApply(function () { $scope.userinfo = r.userinfo; $scope.apps = r.apps; $scope.menus = r.menus; $scope.edition = r.edition; - $scope.selectedApp = r.defaultApp.toUpperCase(); - $scope.dynamicTheme = r.defaultApp.toUpperCase(); + $scope.selectedApp = currentApp.toUpperCase(); + $scope.dynamicTheme = currentApp.toUpperCase(); $scope.$root.$emit('UserInfo.Changed'); }); } diff --git a/layouts/v7/modules/Mobile/simple/Vtiger/js/application.js b/layouts/v7/modules/Mobile/simple/Vtiger/js/application.js index 768bc3bc62c8c285dc3a832b86bc17e282e63985..8cd9de3e60f16d551788f4647380e2315c2cfbc3 100644 --- a/layouts/v7/modules/Mobile/simple/Vtiger/js/application.js +++ b/layouts/v7/modules/Mobile/simple/Vtiger/js/application.js @@ -7,10 +7,11 @@ * All Rights Reserved. * **************************************************************************************/ -window.mobileapp = angular.module('mobileapp', ['ngMaterial', 'ngTouch', 'ngAnimate','720kb.datepicker','ui.clockpicker']); -mobileapp.factory('$api', function ($http) { +window.mobileapp = angular.module('mobileapp', ['ngMaterial', 'ngTouch', 'ngAnimate','ngMaterialDatePicker']); +mobileapp.factory('$api', function ($http, $mdDialog) { var APIBASE = 'api.php', APIVERSION = 'v2'; - + this.progressDialog = null; + return function (operation, params, next) { if (typeof params == 'function') { next = params; @@ -26,12 +27,29 @@ mobileapp.factory('$api', function ($http) { options.url = APIBASE; options.data = params; options.headers = {'X-API-VERSION': APIVERSION}; - + if(!this.progressDialog){ + var parentEl = angular.element(document.body); + var alert = $mdDialog.alert({ + parent: parentEl, + fullscreen: false, + clickOutsideToClose: false, + template: '<md-dialog aria-label="Loading Bar">'+ + '<md-dialog-content>'+ + '<md-progress-linear md-mode="indeterminate"></md-progress-linear>'+ + '<div layout="row" style="margin: 20px;">'+ + '<span style="margin:15px 10px; opacity: 0.5;"><i class="mdi mdi-clock"></i> in progress...</span>'+ + '</div>'+ + '</md-dialog-content>'+ + '</md-dialog>' + }); + this.progressDialog = $mdDialog.show(alert); + } $http(options).success(function (data, status, headers, config) { + $mdDialog.hide(); if (next) { next(!data.success ? new Error(data.error.message) : null, data.success ? data.result : null); } }); }; -}); \ No newline at end of file +}); diff --git a/layouts/v7/modules/Mobile/simple/resources/css/style.css b/layouts/v7/modules/Mobile/simple/resources/css/style.css index 02bab7a8a7b33c1ec16d89c200f714da8b763fb6..6297bf5dfbfcf0c34b78bdddd0c1deed74542a76 100644 --- a/layouts/v7/modules/Mobile/simple/resources/css/style.css +++ b/layouts/v7/modules/Mobile/simple/resources/css/style.css @@ -1,405 +1,470 @@ -body{ - overflow: hidden; -} -#page{ - height: 100%; -} -.list-content{ - height: 100%; - overflow-y: scroll; -} -.md-toolbar-tools.actionbar .md-button.md-icon-button{ - font-size: 1.2em; - width:32px; - margin: 0 3px; - height: 32px; -} -.md-toolbar-tools.actionbar .md-button.md-icon-button .mdi{ - vertical-align: top; - margin: 7px 0; -} -.md-toolbar-tools.actionbar>.md-button:first-child{ - margin-left: -8px; -} -.md-toolbar-tools.actionbar>.md-button:last-child{ - margin-right: -8px; -} -md-backdrop{ - overflow-y: hidden; - height: 100%; - margin-top: -65px; -} -.content-section{ - height: 100%; - padding-top: 56px; - box-sizing: border-box; - overflow-y: scroll; -} -.user-details h5{ - font-weight: 100; -} -.app-menu{ - max-height: 200px; - height: 130px; -} -.app-menu md-input-container{ - padding-bottom: 10px; -} - -md-input-container.app-dropdown > md-select .md-select-label, -md-input-container.app-dropdown > md-select:focus .md-select-label{ - padding-bottom: 10px; -} -.app-dropdown md-select .md-select-label{ - border-bottom-width: 0; - color: rgba(255,255,255,1); - padding: 10px 16px; - text-transform: uppercase; - border-bottom: 2px solid transparent; - -} -.app-dropdown md-select:not([disabled]):focus .md-select-label, -.app-dropdown md-select.md-default-theme:not([disabled]):focus .md-select-label{ - color: rgba(255,255,255,1); -} -.logout-link{ - text-decoration: none; - color: inherit; -} - -.login-background{ - min-height: 100%; - background: url("../images/bk1.jpg"); - background-position: center; - background-repeat:no-repeat; - background-size: cover; -} -.logo-container{ - padding-top: 12%; - text-align: center; -} -.logo-container img{ - max-height: 10%; - width: 40%; -} -.login-form{ - padding: 10% 10% 0 10%; - width: 80%; - text-align: center; -} -.login-form a, .login-form a:active, .login-form a:focus{ - color: rgba(255,255,255,1); - text-decoration: none; -} -.login-form md-input-container{ - text-align: left; -} -.login-form md-input-container.md-default-theme.md-hue-1 label, -.login-form md-input-container.md-default-theme.md-hue-1 .md-placeholder{ - color: rgba(255,255,255,0.90); - text-shadow: none; - font-size: 1.4em; -} -.login-form md-input-container .md-input, -.login-form md-input-container.md-default-theme.md-hue-1 .md-input, -.login-form md-input-container.md-default-theme.md-hue-1:not(.md-input-invalid).md-input-focused .ng-pristine.md-input, -.login-form md-input-container.md-default-theme.md-hue-1 .ng-pristine.md-input{ - border-bottom: 1px solid #fff; - color: rgba(255,255,255,0.90); - border-color: rgba(255,255,255,0.90); - font-size: 1.5em; -} -.login-form md-input-container.md-default-theme.md-hue-1:not(.md-input-invalid).md-input-has-value label, -.login-form md-input-container.md-default-theme.md-hue-1.md-input-has-value label{ - color: rgba(255,255,255,1); -} -.login-form md-input-container.md-default-theme.md-hue-1.md-input-invalid .md-input.ng-invalid{ - border-color: rgb(244,67,54); - border-bottom: 1px solid rgb(244,67,54); -} -.login-form md-input-container.md-default-theme.md-hue-1.md-input-invalid label{ - color: rgb(244,67,54); - text-shadow: none; -} -.login-form md-input-container.md-default-theme.md-hue-1:not(.md-input-invalid).md-input-focused .md-input{ - color: rgba(255,255,255,1); - border-color: rgba(255,255,255,1); -} - -.login-form md-input-container.md-default-theme.md-hue-1:not(.md-input-invalid).md-input-focused label{ - color: rgba(255,255,255,1); -} -.form-errors{ - bottom: 0; -} - -/* Sidebar Stylings */ -.sidenav-module-list .vmodule-name{ - margin-bottom: -3px; - margin-left: 6px; - display: inline-block; - font-size: 14px; -} -.md-list-item-text span[class^='vicon'],span[class*='vicon']{ - color: #777777; -} -/*Common rewrites */ - -md-tooltip{ - right: 8px; - white-space: normal; - word-break: break-all; - text-overflow:url; -} -[fixed-top] { - position:fixed; - top:0; - width: 100%; - z-index: 20; -} -[content-with-fixed-top]{ - margin-top: 64px; -} -/* List View */ -.list-content md-list{ - padding: 0; - padding-top: 34px; -} -.list-content md-list md-list-item .md-list-item-text{ - padding-bottom: 10px; - min-height: 60px; -} -.list-actions{ - display: block; - width: 100%; - height: 100%; - position: absolute; - top: 0; - bottom: 0; - left: 0; -} -.list-actions.show-actions{ - background: red; - z-index: 10; -} -.list-filters{ - height: 34px; - background: #eeeeee; - position: fixed; - width: 100%; - z-index: 30; - margin-top: -1px; - padding: 0px 16px; -} -.list-filters .change-filter{ - text-overflow: ellipsis; - overflow: hidden; -} -.list-filters .change-filter md-select, -.list-filters .change-filter md-select:focus, -.list-filters .sort-filter md-select, -.list-filters .sort-filter md-select:focus{ - margin: 0; - width: 100%; - font-size: 0.75em; -} -.list-filters .change-filter .md-select-label, -.list-filters .change-filter md-select:not([disabled]):focus .md-select-label, -.list-filters .sort-filter .md-select-label, -.list-filters .sort-filter md-select:not([disabled]):focus .md-select-label -{ - padding: 0; - height: 30px; - border-bottom: 0; -} -.list-filters .sort-filter{ - border-left: 1px solid #ddd; -} -.list-filters .filter-btn{ - min-height: 30px; - min-width: 14%; - margin: 0; - line-height: 0; - max-width: 100%; - text-overflow: ellipsis; - font-size: 0.8em; - text-align: left; - padding: 0 3%; - vertical-align: middle; - border-radius: 0; -} -.list-filters .filter-btn .mdi{ - font-size: 1.2em; -} -.current-filter,.current-sort-field{ - width: 100%; - display: inline-block; - padding-bottom: 0; -} -.current-filter .md-select-label .md-select-icon, -.current-sort-field .md-select-label .md-select-icon{ - width: 15px; - margin: -4px 4px 0; -} -.records-list md-list-item.md-3-line .md-list-item-text p.header-fields{ - font-size: 0.8em; -} -.load-more-link, -md-list-item.md-no-proxy.load-more-link{ - text-align: center; - color: #3399ff; - background: #f3f3f3; - padding: 7px 0; - min-height: 20px; - font-size: 0.8em; -} -.load-more-link div, -.load-more-link div:active, -.load-more-link div:focus{ - width:100%; - outline:none; -} -.load-more-link .thats-all{ - color: #777777; -} -.no-records-message{ - height: 80vh; - padding-top: 34px; - text-align: center; - display: table; - width: 100%; -} -.no-records-message .no-records{ - display: table-cell; - vertical-align: middle; - color: #777; - font-size: 1.2em; -} - -.float-button{ - font-size: 1.5em; -} -.value-empty{ - opacity: 0.4; - font-size: 0.7em !important; -} - - -.actions-slider{ - background: #2c3b49; - width: 100%; - height: 100%; - position: absolute; - top: 0; - bottom: 0; - text-align: center; -} -.actions-slider .button-wrap{ - height: 48px; - margin-top: -24px; - top:50%; - position: relative; -} -.actions-slider .md-icon-button{ - background: transparent; - color: #ffffff !important; - font-size: 2em; - visibility: visible; - opacity: 1; - z-index: 30; -} - -/* Slider animation */ -.actions-slider.animate-show { - left: 0; - opacity:1; -} -.actions-slider.animate-show.ng-hide { - left: 100%; - opacity:0; -} -.animate-show.ng-hide-add, .animate-show.ng-hide-remove { - -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 200ms; - -moz-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 200ms; - -o-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 200ms; - transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 200ms; -} - -/* Detail View styles */ -.detail-content{ - overflow-y: scroll; -} -.detail-content-wrapper{ - height: 100%; -} -.detail-content .fields-list .field-row { - padding: 8px 5px; - position: relative; -} -.detail-content .fields-list .field-row .field-label{ - font-size: 0.8em; -} -.detail-content .fields-list .field-row .field-value{ - margin-top: 6px; -} - -/*------------------------- - The edit tooltip WIP ---------------------------*/ - -.tooltip{ - background-color:#5c9bb7; - top:0; - box-shadow: 0 1px 1px #ccc; - border-radius:3px; - width: 96%; - padding: 1px; - position: absolute; - vertical-align: middle; -} - -.tooltip input{ - border: none; - width: 100%; - line-height: 34px; - border-radius: 3px; - box-shadow: 0 2px 6px #bbb inset; - text-align: center; - font-size: 16px; - font-family: inherit; - color: #8d9395; - font-weight: bold; - outline: none; -} - - -/* Edit View Styles */ -.edit-content{ - max-height: 100%; - overflow-y: scroll; -} -form, .edit-content .md-list-item-text.field-row{ - width: 100%; - height: 100%; -} -md-input-container{ - /*padding-bottom: 15px;*/ -} - -md-list-item, md-list-item .md-list-item-inner{ - min-height: 41px; -} -.letter-avatar { - width: 40px; - height: 40px; - border-radius: 50%; - background-color: #B7AAAA; - display: block; - text-align: center; - /* vertical-align: middle; */ - margin-right: 10px; - line-height: 2em; - font-size: 20px; - color: #fff; - text-transform: uppercase; -} \ No newline at end of file +body{ + overflow: hidden; +} +#page{ + height: 100%; +} +.list-content{ + height: 100%; + overflow-y: scroll; +} +.md-toolbar-tools.actionbar .md-button.md-icon-button{ + font-size: 1.2em; + width:32px; + margin: 0 3px; + height: 32px; +} +.md-toolbar-tools.actionbar .md-button.md-icon-button .mdi{ + vertical-align: top; + margin: 7px 0; +} +.md-toolbar-tools.actionbar>.md-button:first-child{ + margin-left: -8px; +} +.md-toolbar-tools.actionbar>.md-button:last-child{ + margin-right: -8px; +} +md-backdrop{ + overflow-y: hidden; + height: 100%; + margin-top: -65px; +} +.content-section{ + height: 100%; + padding-top: 56px; + box-sizing: border-box; + overflow-y: scroll; +} +.user-details h5{ + font-weight: 100; +} +.app-menu{ + max-height: 200px; + height: 130px; +} +.app-menu md-input-container{ + padding-bottom: 10px; +} + +md-input-container.app-dropdown > md-select .md-select-label, +md-input-container.app-dropdown > md-select:focus .md-select-label{ + padding-bottom: 10px; +} +.app-dropdown md-select .md-select-label{ + border-bottom-width: 0; + color: rgba(255,255,255,1); + padding: 10px 16px; + text-transform: uppercase; + border-bottom: 2px solid transparent; + +} +.app-dropdown md-select:not([disabled]):focus .md-select-label, +.app-dropdown md-select.md-default-theme:not([disabled]):focus .md-select-label{ + color: rgba(255,255,255,1); +} +.logout-link{ + text-decoration: none; + color: inherit; +} + +.login-background{ + min-height: 100%; + background: url("../images/bk1.jpg"); + background-position: center; + background-repeat:no-repeat; + background-size: cover; +} +.logo-container{ + padding-top: 12%; + text-align: center; +} +.logo-container img{ + max-height: 10%; + width: 40%; +} +.login-form{ + padding: 10% 10% 0 10%; + width: 80%; + text-align: center; +} +.login-form a, .login-form a:active, .login-form a:focus{ + color: rgba(255,255,255,1); + text-decoration: none; +} +.login-form md-input-container{ + text-align: left; +} +.login-form md-input-container.md-default-theme.md-hue-1 label, +.login-form md-input-container.md-default-theme.md-hue-1 .md-placeholder{ + color: rgba(255,255,255,0.90); + text-shadow: none; + font-size: 1.4em; +} +.login-form md-input-container .md-input, +.login-form md-input-container.md-default-theme.md-hue-1 .md-input, +.login-form md-input-container.md-default-theme.md-hue-1:not(.md-input-invalid).md-input-focused .ng-pristine.md-input, +.login-form md-input-container.md-default-theme.md-hue-1 .ng-pristine.md-input{ + border-bottom: 1px solid #fff; + color: rgba(255,255,255,0.90); + border-color: rgba(255,255,255,0.90); + font-size: 1.5em; +} +.login-form md-input-container.md-default-theme.md-hue-1:not(.md-input-invalid).md-input-has-value label, +.login-form md-input-container.md-default-theme.md-hue-1.md-input-has-value label{ + color: rgba(255,255,255,1); +} +.login-form md-input-container.md-default-theme.md-hue-1.md-input-invalid .md-input.ng-invalid{ + border-color: rgb(244,67,54); + border-bottom: 1px solid rgb(244,67,54); +} +.login-form md-input-container.md-default-theme.md-hue-1.md-input-invalid label{ + color: rgb(244,67,54); + text-shadow: none; +} +.login-form md-input-container.md-default-theme.md-hue-1:not(.md-input-invalid).md-input-focused .md-input{ + color: rgba(255,255,255,1); + border-color: rgba(255,255,255,1); +} + +.login-form md-input-container.md-default-theme.md-hue-1:not(.md-input-invalid).md-input-focused label{ + color: rgba(255,255,255,1); +} +.form-errors{ + bottom: 0; +} + +/* Sidebar Stylings */ +.sidenav-module-list .vmodule-name{ + margin-bottom: -3px; + margin-left: 6px; + display: inline-block; + font-size: 14px; +} +.md-list-item-text span[class^='vicon'],span[class*='vicon']{ + color: #777777; +} +/*Common rewrites */ + +md-tooltip{ + right: 8px; + white-space: normal; + word-break: break-all; + text-overflow:url; +} +[fixed-top] { + position:fixed; + top:0; + width: 100%; + z-index: 20; +} +[content-with-fixed-top]{ + margin-top: 64px; +} +/* List View */ +.list-content md-list{ + padding: 0; + padding-top: 34px; +} +.list-content md-list md-list-item .md-list-item-text{ + padding-bottom: 10px; + min-height: 60px; +} +.list-actions{ + display: block; + width: 100%; + height: 100%; + position: absolute; + top: 0; + bottom: 0; + left: 0; +} +.list-actions.show-actions{ + background: red; + z-index: 10; +} +.list-filters{ + height: 34px; + background: #eeeeee; + position: fixed; + width: 100%; + z-index: 30; + margin-top: -1px; + padding: 0px 10px; +} +.list-filters .change-filter{ + text-overflow: ellipsis; + overflow: hidden; +} +.list-filters .change-filter md-select, +.list-filters .change-filter md-select:focus, +.list-filters .sort-filter md-select, +.list-filters .sort-filter md-select:focus{ + margin: 0; + width: 100%; + font-size: 0.75em; +} +.list-filters .change-filter .md-select-label, +.list-filters .change-filter md-select:not([disabled]):focus .md-select-label, +.list-filters .sort-filter .md-select-label, +.list-filters .sort-filter md-select:not([disabled]):focus .md-select-label +{ + padding: 0; + height: 30px; + border-bottom: 0; +} +.list-filters .sort-filter{ + border-left: 1px solid #ddd; +} +.list-filters .filter-btn{ + min-height: 30px; + min-width: 14%; + margin: 0; + line-height: 0; + max-width: 100%; + text-overflow: ellipsis; + font-size: 0.8em; + text-align: left; + padding: 0 3%; + vertical-align: middle; + border-radius: 0; +} +.list-filters .filter-btn .mdi{ + font-size: 1.2em; +} +.current-filter,.current-sort-field{ + width: 80%; + display: inline-block; + padding-bottom: 0; +} +.current-filter .md-select-label .md-select-icon, +.current-sort-field .md-select-label .md-select-icon{ + width: 15px; + margin: -4px 4px 0; +} +.records-list md-list-item.md-3-line .md-list-item-text p{ + font-size: 0.9em; + font-weight: normal; + color: black; +} +.records-list md-list-item.md-3-line .md-list-item-text p.header-fields{ + font-size: 0.8em; +} +.load-more-link, +md-list-item.md-no-proxy.load-more-link{ + text-align: center; + color: #3399ff; + background: #f3f3f3; + padding: 7px 0; + min-height: 20px; + font-size: 0.8em; +} +.load-more-link div, +.load-more-link div:active, +.load-more-link div:focus{ + width:100%; + outline:none; +} +.load-more-link .thats-all{ + color: #777777; +} +.no-records-message{ + height: 80vh; + padding-top: 34px; + text-align: center; + display: table; + width: 100%; +} +.no-records-message .no-records{ + display: table-cell; + vertical-align: middle; + color: #777; + font-size: 1.2em; +} + +.float-button{ + font-size: 1.5em; +} +.value-empty{ + opacity: 0.4; + font-size: 0.7em !important; +} + + +.actions-slider{ + background: #4e664e; + width: 100%; + height: 100%; + position: absolute; + top: 0; + bottom: 0; + text-align: center; +} +.actions-slider .button-wrap{ + height: 48px; + margin-top: -24px; + top:50%; + position: relative; +} +.actions-slider .md-icon-button{ + background: transparent; + color: #ffffff !important; + font-size: 1.5em; + visibility: visible; + opacity: 1; + z-index: 30; + width: 100%; +} + +/* Slider animation */ +.actions-slider.animate-show { + left: 0; + opacity:1; +} +.actions-slider.animate-show.ng-hide { + left: 100%; + opacity:0; +} +.animate-show.ng-hide-add, .animate-show.ng-hide-remove { + -webkit-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 200ms; + -moz-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 200ms; + -o-transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 200ms; + transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 200ms; +} + +/* Detail View styles */ +.detail-content{ + overflow-y: scroll; +} +.detail-content-wrapper{ + height: 100%; +} +.detail-content .fields-list .field-row { + padding: 8px 5px; + position: relative; +} +.detail-content .fields-list .field-row .field-label{ + font-size: 0.8em; +} +.detail-content .fields-list .field-row .field-value{ + margin-top: 6px; +} + +/*------------------------- + The edit tooltip WIP +--------------------------*/ + +.tooltip{ + background-color:#5c9bb7; + top:0; + box-shadow: 0 1px 1px #ccc; + border-radius:3px; + width: 96%; + padding: 1px; + position: absolute; + vertical-align: middle; +} + +.tooltip input{ + border: none; + width: 100%; + line-height: 34px; + border-radius: 3px; + box-shadow: 0 2px 6px #bbb inset; + text-align: center; + font-size: 16px; + font-family: inherit; + color: #8d9395; + font-weight: bold; + outline: none; +} + + +/* Edit View Styles */ +.edit-content{ + max-height: 100%; + overflow-y: scroll; +} +form, .edit-content .md-list-item-text.field-row{ + width: 100%; + height: 100%; +} +.edit-content md-input-container{ + padding: 16px 0px; +} + +md-list-item, md-list-item .md-list-item-inner{ + min-height: 41px; +} +.letter-avatar { + width: 40px; + height: 40px; + border-radius: 50%; + background-color: #B7AAAA; + display: block; + text-align: center; + margin-right: 10px; + line-height: 2em; + font-size: 20px; + color: #ffffff; + text-transform: uppercase; +} +md-input-container md-select{ + width: 100%; +} +md-select md-select-label.md-select-label{ + padding-top : 0px; +} +.app-dropdown md-select{ + width: 100%; +} +md-backdrop{ + margin-top: 0px; +} +.editIcon{ + font-size: 1.5em; + opacity: 0.5; + margin: 10px 5px; +} + +md-autocomplete[md-floating-label]{ + padding-bottom: 0px; +} +md-checkbox{ + margin: 0px; +} +md-input-container .md-input{ + width: 100%; +} + +md-autocomplete input:not(.md-input){ + padding: 0 2px; + border-bottom : 1px solid #f1f1f1; +} +md-autocomplete{ + background: #ffffff !important; + box-shadow: none; +} +.toolbar-title{ + margin-left: 10px; +} +.detail-header-label{ + opacity: 0.6; + margin: 15px; +} + +.lineItem-summaryBlock .lineItem-value{ + text-align: right; + color:#006400; +} +.lineItem-summaryBlock{ + font-size: 0.9em; +} +.lineItem-summaryBlock .lineItem-label{ + text-align: left; +} +md-tabs md-tab-item.md-tab{ + text-transform: none; +} +md-ink-bar{ + background: gray !important; +} diff --git a/layouts/v7/modules/Mobile/simple/resources/images/vtiger_logo.svg b/layouts/v7/modules/Mobile/simple/resources/images/vtiger_logo.svg new file mode 100644 index 0000000000000000000000000000000000000000..a82ecd7c385fbb66a63b563c489ac1b5ddd1231d --- /dev/null +++ b/layouts/v7/modules/Mobile/simple/resources/images/vtiger_logo.svg @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 15.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg version="1.1" id="Vtiger_logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" + y="0px" width="256px" height="256px" viewBox="0 0 256 256" enable-background="new 0 0 256 256" xml:space="preserve"> +<g> + <g> + <path fill="#0088D0" d="M58.432,94.729c1.507,0,2.988,0.133,4.446,0.333c5.949,0.799,11.391,3.168,15.915,6.688 + c1.356,1.051,2.627,2.206,3.806,3.457c2.656,2.811,4.801,6.079,6.354,9.674c0.062,0.15,0.128,0.304,0.193,0.457 + c0.594,1.174,1.796,1.985,3.198,1.985c0.988,0,1.878-0.398,2.531-1.042c0.007-0.01,0.01-0.01,0.02-0.017 + c2.906-2.658,6.104-5,9.592-6.904c6.991-3.812,15.006-5.988,23.514-5.988c8.511,0,16.521,2.178,23.517,5.988 + c5.205,2.842,9.832,6.605,13.693,11.055c2.033,2.345,3.848,4.879,5.418,7.586c3.307,5.702,5.496,12.124,6.288,18.97 + c0.085,0.086,0.161,0.188,0.246,0.275c0.995,1.059,2.085,2.037,3.222,2.928c3.842,2.982,8.389,4.914,13.18,5.598 + c0.054-1.039,0.103-2.088,0.103-3.143c0-8.711-1.71-17.02-4.79-24.628c-2.859-7.081-6.919-13.546-11.934-19.146 + c-1.129-1.268-2.313-2.479-3.536-3.648c-3.982-3.811-8.438-7.124-13.275-9.85c-9.499-5.339-20.452-8.399-32.13-8.399 + c-11.676,0-22.627,3.062-32.127,8.399c-3.782-4.338-8.304-8.012-13.37-10.821c-4.745-2.637-9.966-4.505-15.506-5.476 + c-2.784-0.48-5.645-0.747-8.566-0.747c-27.448,0-49.697,22.244-49.697,49.688c0,27.442,22.249,49.687,49.697,49.687 + c2.922,0,5.782-0.268,8.566-0.752c9.667,24.232,33.329,41.359,61.003,41.359c25.801,0,48.1-14.898,58.836-36.539 + c-5.474-1.09-10.715-2.967-15.597-5.645c-8.357,15.328-24.593,25.77-43.239,25.77c-20.486,0-38.086-12.578-45.497-30.412 + c-1.537-3.709-2.607-7.656-3.195-11.748c-0.003-0.016-0.003-0.021-0.007-0.035c-0.338-1.637-1.782-2.867-3.526-2.867 + c-0.437,0-0.856,0.094-1.248,0.238c-0.295,0.164-0.591,0.332-0.89,0.48c-3.307,1.715-6.925,2.887-10.76,3.404 + c-1.458,0.193-2.939,0.332-4.446,0.332c-18.353,0-33.276-14.924-33.276-33.273C25.155,109.653,40.079,94.729,58.432,94.729z"/> + </g> + <g> + <path fill="#8ABD33" d="M197.578,161.273c-1.516,0-2.988-0.139-4.45-0.332c-5.95-0.801-11.394-3.166-15.915-6.686 + c-1.363-1.061-2.631-2.211-3.807-3.461c-2.656-2.809-4.803-6.084-6.354-9.674c-0.065-0.15-0.128-0.311-0.196-0.453 + c-0.594-1.18-1.795-1.986-3.197-1.986c-0.985,0-1.883,0.396-2.532,1.041c-0.003,0.006-0.013,0.01-0.021,0.014 + c-2.905,2.656-6.104,5-9.588,6.902c-6.996,3.816-15.007,5.988-23.518,5.988c-8.511,0-16.522-2.172-23.514-5.988 + c-5.204-2.836-9.834-6.604-13.692-11.051c-2.036-2.346-3.852-4.885-5.418-7.589c-3.307-5.699-5.504-12.121-6.295-18.961 + c-0.082-0.095-0.154-0.19-0.243-0.283c-0.995-1.056-2.081-2.039-3.221-2.928c-3.839-2.979-8.387-4.914-13.178-5.598 + c-0.052,1.042-0.104,2.09-0.104,3.141c0,8.718,1.711,17.026,4.794,24.629c2.86,7.081,6.922,13.546,11.933,19.147 + c1.126,1.268,2.314,2.479,3.536,3.646c3.983,3.813,8.439,7.131,13.275,9.85c9.5,5.34,20.451,8.398,32.127,8.398 + c11.677,0,22.631-3.061,32.13-8.398c3.783,4.334,8.298,8.01,13.367,10.824c4.746,2.637,9.97,4.506,15.506,5.467 + c2.781,0.49,5.647,0.756,8.574,0.756c27.442,0,49.688-22.248,49.688-49.69s-22.244-49.688-49.688-49.688 + c-2.927,0-5.793,0.267-8.574,0.754c-9.664-24.232-33.321-41.36-61.003-41.36c-25.799,0-48.102,14.897-58.835,36.541 + c5.474,1.089,10.714,2.965,15.6,5.644C93.122,64.564,109.353,54.123,128,54.123c20.486,0,38.087,12.577,45.497,30.413 + c1.541,3.706,2.604,7.646,3.198,11.748c0,0.003,0,0.017,0,0.029c0.345,1.641,1.797,2.865,3.529,2.865 + c0.443,0,0.863-0.09,1.252-0.236c0.295-0.166,0.588-0.329,0.89-0.481c3.304-1.706,6.926-2.885,10.761-3.4 + c1.462-0.195,2.936-0.333,4.45-0.333c18.353,0,33.274,14.926,33.274,33.271C230.854,146.352,215.93,161.273,197.578,161.273z"/> + </g> +</g> +</svg> diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/.gitignore b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..ac69ffd77ec293751b0f5e6ed57db9d36e216dc8 --- /dev/null +++ b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/.gitignore @@ -0,0 +1,4 @@ +# Created by .ignore support plugin (hsz.mobi) +bower_components +node_modules +.idea diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/css/material-datetimepicker.css b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/css/material-datetimepicker.css new file mode 100644 index 0000000000000000000000000000000000000000..caef77f14ee8791fdc5815f96b610a112f8a684a --- /dev/null +++ b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/css/material-datetimepicker.css @@ -0,0 +1,295 @@ +md-dialog.dtp { + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; + max-height: none; +} + +.dtp *:focus { + outline: none !important; +} + +.dtp table { + border-spacing: 0; + border-collapse: collapse; + width: 100%; +} + +.dtp .table > tbody > tr > td, +.dtp .table > tbody > tr > th, +.dtp .table > tfoot > tr > td, +.dtp .table > tfoot > tr > th, +.dtp .table > thead > tr > td, +.dtp .table > thead > tr > th { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} + +.dtp, .dtp * { + box-sizing: border-box !important; +} + +.dtp > .dtp-content { + max-width: 300px; + max-height: 500px; +} + +.dtp > .dtp-content > .dtp-date-view > header.dtp-header { + background: #689F38; + color: #fff; + text-align: center; + padding: 3px; +} + +.dtp div.dtp-date, .dtp div.dtp-time { + background: #8BC34A; + text-align: center; + color: #fff; + padding: 10px; +} + +.dtp div.dtp-date > div { + padding: 0; + margin: 0; +} + +.dtp div.dtp-actual-month { + font-size: 1.5em; +} + +.dtp div.dtp-actual-num { + font-size: 3em; + line-height: 0.9; +} + +.dtp div.dtp-actual-maxtime { + font-size: 3em; + line-height: 0.9; +} + +.dtp div.dtp-actual-year { + font-size: 1.5em; + color: #DCEDC8; +} + +.dtp div.dtp-picker { + padding: 10px; + text-align: center; +} + +.dtp div.dtp-picker-month, .dtp div.dtp-actual-time { + font-weight: 500; + text-align: center; +} + +.dtp .dtp-close { + position: absolute; + top: 0.25em; + right: 5px; + font-size: 16px; +} + +.dtp .dtp-close > a { + color: #fff; + text-decoration: none; +} + +.dtp .dtp-close > a > i { + font-size: 1em; +} + +.dtp table.dtp-picker-days { + margin: 0; + min-height: 220px; +} + +.dtp md-virtual-repeat-container.months { + height: 260px; +} + +.dtp table.dtp-picker-days, .dtp table.dtp-picker-days tr, .dtp table.dtp-picker-days tr > td { + border: none; +} + +.dtp table.dtp-picker-days tr > td { + font-size: 11px; + text-align: center; + padding: 0; +} + +.dtp table.dtp-picker-days tr > td > span.dtp-select-day { + color: #BDBDBD !important; +} +.dtp table.dtp-picker-days tr > td > .dtp-select-day { + width: 36px; + height: 36px; + display: inline-block; +} +.dtp table.dtp-picker-days tr > td > .dtp-select-day, .dtp .dtp-picker-time > a { + color: #212121; + text-decoration: none; + padding: 10px; + border-radius: 50% !important; +} + +.dtp table.dtp-picker-days tr > td > a.selected { + background: #8BC34A; + color: #fff; +} + +.dtp table.dtp-picker-days tr > td > a:hover:not(.selected) { + background: #dddddd; +} + +.dtp table.dtp-picker-days tr > th { + color: #757575; + text-align: center; + font-weight: 700; + padding: 4px 3px; +} + +.dtp .p10 > a { + color: #689F38; + text-decoration: none; +} + +.dtp .p10 { + width: 10%; + display: inline-block; +} + +.dtp .p20 { + width: 20%; + display: inline-block; +} + +.dtp .p60 { + width: 60%; + display: inline-block; +} + +.dtp .p80 { + width: 80%; + display: inline-block; +} + +.dtp a.dtp-meridien-am, .dtp a.dtp-meridien-pm { + position: relative; + top: 10px; + color: #212121; + font-weight: 500; + padding: 7px 5px; + border-radius: 50% !important; + text-decoration: none; + background: #eee; + font-size: 10px; +} + +.dtp .dtp-actual-meridien a.selected { + background: #689F38; + color: #fff; +} + +.dtp .dtp-picker-time > a { + display: block; + line-height: 23px; + padding: 3px 3px 3px 3px; +} + +.dtp .dtp-picker-time { + position: absolute; + width: 30px; + height: 30px; + font-size: 1.1em; + border-radius: 50%; + cursor: pointer; + text-align: center !important; +} + +.dtp .dtp-picker-time > a.dtp-select-hour.selected { + background: #689F38; + color: #fff; +} + +.dtp .dtp-picker-time > a.dtp-select-hour.disabled, .dtp .dtp-picker-time > a.dtp-select-minute.disabled { + color: #757575; +} + +.dtp .dtp-picker-time > a.dtp-select-minute.selected { + background: #8BC34A; + color: #fff; +} + +.dtp div.dtp-picker-clock { + margin: 10px 20px 0 20px; + padding: 10px; + border-radius: 50% !important; + background: #eee; +} + +.dtp-clock-center { + width: 15px; + height: 15px; + background: #757575; + border-radius: 50%; + position: absolute; + z-index: 50; +} + +.dtp .dtp-hand, .dtp .dtp-hour-hand { + position: absolute; + width: 4px; + margin-left: -2px; + background: #BDBDBD; + -moz-transform: rotate(0deg); + -ms-transform: rotate(0deg); + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + -moz-transform-origin: bottom; + -ms-transform-origin: bottom; + -webkit-transform-origin: bottom; + transform-origin: bottom; + z-index: 1; +} + +.dtp .dtp-minute-hand { + width: 2px; + margin-left: -1px; +} + +.dtp .dtp-hand.on { + background: #8BC34A; +} + +.dtp .dtp-buttons { + padding: 0 10px 10px 10px; + text-align: right; +} + +.dtp.hidden, .dtp .hidden { + display: none; +} + +.dtp .invisible { + visibility: hidden; +} + +.dtp .left { + float: left; +} + +.dtp .right { + float: right; +} + +.dtp .clearfix { + clear: both; +} + +.dtp .center { + text-align: center; +} + diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/css/material-datetimepicker.min.css b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/css/material-datetimepicker.min.css new file mode 100644 index 0000000000000000000000000000000000000000..6887bb1d1bbc71a8c110c2ac387449fb29ec72a6 --- /dev/null +++ b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/css/material-datetimepicker.min.css @@ -0,0 +1 @@ +md-dialog.dtp{font-size:14px;line-height:1.42857143;color:#333;background-color:#fff;max-height:none}.dtp *:focus{outline:none!important}.dtp table{border-spacing:0;border-collapse:collapse;width:100%}.dtp .table > tbody > tr > td,.dtp .table > tbody > tr > th,.dtp .table > tfoot > tr > td,.dtp .table > tfoot > tr > th,.dtp .table > thead > tr > td,.dtp .table > thead > tr > th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.dtp,.dtp *{box-sizing:border-box!important}.dtp > .dtp-content{max-width:300px;max-height:500px}.dtp > .dtp-content > .dtp-date-view > header.dtp-header{background:#689F38;color:#fff;text-align:center;padding:3px}.dtp div.dtp-date,.dtp div.dtp-time{background:#8BC34A;text-align:center;color:#fff;padding:10px}.dtp div.dtp-date > div{padding:0;margin:0}.dtp div.dtp-actual-month{font-size:1.5em}.dtp div.dtp-actual-num{font-size:3em;line-height:0.9}.dtp div.dtp-actual-maxtime{font-size:3em;line-height:0.9}.dtp div.dtp-actual-year{font-size:1.5em;color:#DCEDC8}.dtp div.dtp-picker{padding:10px;text-align:center}.dtp div.dtp-picker-month,.dtp div.dtp-actual-time{font-weight:500;text-align:center}.dtp .dtp-close{position:absolute;top:0.25em;right:5px;font-size:16px}.dtp .dtp-close > a{color:#fff;text-decoration:none}.dtp .dtp-close > a > i{font-size:1em}.dtp table.dtp-picker-days{margin:0;min-height:220px}.dtp md-virtual-repeat-container.months{height:260px}.dtp table.dtp-picker-days,.dtp table.dtp-picker-days tr,.dtp table.dtp-picker-days tr > td{border:none}.dtp table.dtp-picker-days tr > td{font-size:11px;text-align:center;padding:0}.dtp table.dtp-picker-days tr > td > span.dtp-select-day{color:#BDBDBD!important}.dtp table.dtp-picker-days tr > td > .dtp-select-day{width:36px;height:36px;display:inline-block}.dtp table.dtp-picker-days tr > td > .dtp-select-day,.dtp .dtp-picker-time > a{color:#212121;text-decoration:none;padding:10px;border-radius:50%!important}.dtp table.dtp-picker-days tr > td > a.selected{background:#8BC34A;color:#fff}.dtp table.dtp-picker-days tr > td > a:hover:not(.selected){background:#ddd}.dtp table.dtp-picker-days tr > th{color:#757575;text-align:center;font-weight:700;padding:4px 3px}.dtp .p10 > a{color:#689F38;text-decoration:none}.dtp .p10{width:10%;display:inline-block}.dtp .p20{width:20%;display:inline-block}.dtp .p60{width:60%;display:inline-block}.dtp .p80{width:80%;display:inline-block}.dtp a.dtp-meridien-am,.dtp a.dtp-meridien-pm{position:relative;top:10px;color:#212121;font-weight:500;padding:7px 5px;border-radius:50%!important;text-decoration:none;background:#eee;font-size:10px}.dtp .dtp-actual-meridien a.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time > a{display:block;line-height:23px;padding:3px}.dtp .dtp-picker-time{position:absolute;width:30px;height:30px;font-size:1.1em;border-radius:50%;cursor:pointer;text-align:center!important}.dtp .dtp-picker-time > a.dtp-select-hour.selected{background:#689F38;color:#fff}.dtp .dtp-picker-time > a.dtp-select-hour.disabled,.dtp .dtp-picker-time > a.dtp-select-minute.disabled{color:#757575}.dtp .dtp-picker-time > a.dtp-select-minute.selected{background:#8BC34A;color:#fff}.dtp div.dtp-picker-clock{margin:10px 20px 0 20px;padding:10px;border-radius:50%!important;background:#eee}.dtp-clock-center{width:15px;height:15px;background:#757575;border-radius:50%;position:absolute;z-index:50}.dtp .dtp-hand,.dtp .dtp-hour-hand{position:absolute;width:4px;margin-left:-2px;background:#BDBDBD;-moz-transform:rotate(0deg);-ms-transform:rotate(0deg);-webkit-transform:rotate(0deg);transform:rotate(0deg);-moz-transform-origin:bottom;-ms-transform-origin:bottom;-webkit-transform-origin:bottom;transform-origin:bottom;z-index:1}.dtp .dtp-minute-hand{width:2px;margin-left:-1px}.dtp .dtp-hand.on{background:#8BC34A}.dtp .dtp-buttons{padding:0 10px 10px 10px;text-align:right}.dtp.hidden,.dtp .hidden{display:none}.dtp .invisible{visibility:hidden}.dtp .left{float:left}.dtp .right{float:right}.dtp .clearfix{clear:both}.dtp .center{text-align:center} \ No newline at end of file diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/font/Material-Design-Icons.eot b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/font/Material-Design-Icons.eot new file mode 100644 index 0000000000000000000000000000000000000000..d9c296e41f2833d01e2979dfa4250af634020628 Binary files /dev/null and b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/font/Material-Design-Icons.eot differ diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/font/Material-Design-Icons.svg b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/font/Material-Design-Icons.svg new file mode 100644 index 0000000000000000000000000000000000000000..def1e9b5e9bc656771e3a5e7ac0dac33522e7ec9 --- /dev/null +++ b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/font/Material-Design-Icons.svg @@ -0,0 +1,769 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<svg xmlns="http://www.w3.org/2000/svg"> +<metadata>Generated by IcoMoon</metadata> +<defs> +<font id="Material-Design-Icons" horiz-adv-x="1024"> +<font-face units-per-em="1024" ascent="960" descent="-64" /> +<missing-glyph horiz-adv-x="1024" /> +<glyph unicode=" " d="" horiz-adv-x="512" /> +<glyph unicode="" d="M320.853 22.187c-139.52 65.707-239.36 201.387-254.72 361.813h-64c21.76-262.827 241.493-469.333 509.867-469.333l28.16 1.28-162.56 162.56-56.747-56.32zM358.827 300.374c-8.107 0-15.787 1.28-22.187 3.413-6.827 2.56-12.373 5.547-17.067 10.24-4.693 4.267-8.533 9.387-11.093 15.787-2.56 5.973-3.84 12.8-3.84 20.053h-55.467c0-15.36 2.987-29.013 8.96-40.533s14.080-21.333 23.893-29.44c10.24-7.68 21.76-13.653 34.987-17.493 12.8-4.267 26.453-6.4 40.96-6.4 15.787 0 30.72 2.133 43.947 6.4 13.653 4.267 25.6 10.667 35.413 18.773s17.92 18.347 23.467 30.72c5.547 12.373 8.533 26.027 8.533 41.387 0 8.107-0.853 16.213-2.987 23.893s-5.12 14.933-9.813 21.76c-4.267 6.827-10.24 12.8-17.067 18.347-7.253 5.547-15.787 9.813-26.027 13.227 8.533 3.84 15.787 8.533 22.187 14.080s11.52 11.52 15.787 17.92c4.267 6.4 7.253 12.8 9.387 19.627s2.987 13.653 2.987 20.48c0 15.36-2.56 29.013-7.68 40.96s-12.373 21.76-21.76 29.44c-8.533 8.107-20.053 14.080-32.853 18.347-13.227 3.84-27.733 5.973-43.52 5.973-15.36 0-29.44-2.133-42.667-6.827-12.8-4.693-24.32-11.093-33.707-19.2-8.96-8.107-16.213-17.493-21.76-28.587-5.12-11.093-7.68-23.040-7.68-36.267h55.467c0 7.253 1.28 13.653 3.84 19.2s5.973 10.667 10.667 14.507c4.693 3.84 9.813 7.253 16.213 9.387s12.8 3.413 20.48 3.413c17.067 0 29.867-4.267 37.973-13.227 8.107-8.533 12.373-20.907 12.373-36.693 0-7.68-1.28-14.507-3.413-20.907s-5.973-11.52-10.667-15.787c-4.693-4.267-10.667-7.68-17.493-10.24s-15.36-3.84-24.747-3.84h-32.853v-43.947h32.853c9.387 0 17.92-0.853 25.6-2.987s14.080-5.547 19.2-9.813c5.12-4.693 9.387-10.24 12.373-17.067s4.267-14.933 4.267-24.32c0-17.493-5.12-30.72-14.933-39.68-9.813-9.813-23.467-14.080-40.533-14.080zM723.627 552.96c-13.653 14.080-29.867 25.173-48.64 32.853-18.347 7.68-39.253 11.52-62.293 11.52h-100.693v-341.333h98.133c23.467 0 45.227 3.84 64.427 11.52s35.84 18.347 49.493 32.427c13.653 14.080 24.32 31.147 31.573 50.773 7.253 20.053 11.093 42.24 11.093 66.987v17.067c0 24.747-3.84 46.933-11.093 66.987-7.68 20.053-18.347 37.12-32 51.2zM706.987 418.134c0-17.92-2.133-33.707-5.973-48.213-4.267-14.080-10.24-26.453-18.347-36.267s-18.347-17.493-30.293-22.613c-12.373-5.12-26.453-7.68-42.24-7.68h-38.827v246.187h41.387c30.72 0 54.187-9.813 69.973-29.44 16.213-19.627 24.32-47.787 24.32-84.907v-17.067zM512 938.667l-28.16-1.28 162.56-162.56 56.747 56.747c139.52-66.133 239.36-201.387 254.293-361.813h64c-21.333 262.4-241.067 468.907-509.44 468.907z" /> +<glyph unicode="" d="M512 853.334c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333-85.333 38.4-85.333 85.333 38.4 85.333 85.333 85.333zM896 554.667h-256v-554.667h-85.333v256h-85.333v-256h-85.333v554.667h-256v85.333h768v-85.333z" /> +<glyph unicode="" d="M896 170.667v-42.667c0-46.933-38.4-85.333-85.333-85.333h-597.333c-47.36 0-85.333 38.4-85.333 85.333v597.333c0 46.933 37.973 85.333 85.333 85.333h597.333c46.933 0 85.333-38.4 85.333-85.333v-42.667h-384c-47.36 0-85.333-38.4-85.333-85.333v-341.333c0-46.933 37.973-85.333 85.333-85.333h384zM512 256h426.667v341.333h-426.667v-341.333zM682.667 362.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" /> +<glyph unicode="" d="M170.667 512v-298.667h128v298.667h-128zM426.667 512v-298.667h128v298.667h-128zM85.333-0h810.667v128h-810.667v-128zM682.667 512v-298.667h128v298.667h-128zM490.667 896l-405.333-213.333v-85.333h810.667v85.333l-405.333 213.333z" /> +<glyph unicode="" d="M128 725.334v-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333h-597.333c-47.36 0-85.333-38.4-85.333-85.333zM640 554.667c0-70.827-57.173-128-128-128s-128 57.173-128 128 57.173 128 128 128 128-57.173 128-128zM256 213.334c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-42.667h-512v42.667z" /> +<glyph unicode="" d="M576 363.094c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 746.667c52.907 0 96-43.093 96-96s-43.093-96-96-96-96 43.093-96 96 43.093 96 96 96zM725.333 296.107v-106.667c-19.2-17.493-40.96-32.853-64-44.8v29.013c0 14.507-7.253 27.733-19.627 39.253-27.733 26.453-80.64 43.52-129.707 43.52-40.96 0-83.627-11.947-113.067-31.147l-7.253-5.12-8.96-7.253c33.28-20.053 69.547-30.72 108.373-34.987l56.747-6.4c15.787-1.707 28.16-15.36 28.16-32 0-12.373-6.827-22.613-17.067-28.16-11.947-6.4-27.307-3.84-40.533-3.84-14.933 0-29.44 0.427-43.947 2.133-21.333 2.56-42.24 7.253-62.293 14.080-20.907 6.827-41.387 16.213-60.587 27.307-9.387 5.547-18.773 11.52-27.733 18.347l-13.227 10.24c-1.707 0.853-11.947 7.68-11.947 9.813v182.613c0 67.413 112.213 118.613 213.333 118.613s213.333-51.2 213.333-118.613v-75.947z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 725.334c70.827 0 128-57.173 128-128s-57.173-128-128-128-128 57.173-128 128 57.173 128 128 128zM512 119.467c-106.667 0-200.96 54.613-256 137.387 1.28 84.907 170.667 131.413 256 131.413 84.907 0 254.72-46.507 256-131.413-55.040-82.773-149.333-137.387-256-137.387z" /> +<glyph unicode="" d="M469.333 554.667h85.333v128h128v85.333h-128v128h-85.333v-128h-128v-85.333h128v-128zM298.667 170.667c-46.933 0-84.907-38.4-84.907-85.333s37.973-85.333 84.907-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM725.333 170.667c-46.933 0-84.907-38.4-84.907-85.333s37.973-85.333 84.907-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM305.92 309.334l1.28 5.12 38.4 69.547h317.867c32 0 60.16 17.493 74.667 43.947l164.693 299.093-74.24 40.96h-0.427l-46.933-85.333-117.76-213.333h-299.52l-5.547 11.52-95.573 201.813-40.533 85.333-40.107 85.333h-139.52v-85.333h85.333l153.6-323.84-57.6-104.533c-6.827-11.947-10.667-26.027-10.667-40.96 0-46.933 38.4-85.333 85.333-85.333h512v85.333h-494.080c-5.547 0-10.667 4.693-10.667 10.667z" /> +<glyph unicode="" d="M336.213 794.027l-54.613 65.28-196.267-164.267 55.040-65.28 195.84 164.267zM938.667 694.614l-196.267 164.693-55.040-65.28 196.267-164.693 55.040 65.28zM512 768c-212.053 0-384-171.947-384-384s171.52-384 384-384c212.053 0 384 171.947 384 384s-171.947 384-384 384zM512 85.334c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667zM554.667 554.667h-85.333v-128h-128v-85.333h128v-128h85.333v128h128v85.333h-128v128z" /> +<glyph unicode="" d="M512 682.667c165.12 0 298.667-133.547 298.667-298.667 0-35.84-6.827-70.4-18.347-102.4l64.853-64.853c24.747 50.773 38.827 107.093 38.827 167.253 0 212.053-171.947 384-384 384-60.16 0-116.48-14.080-167.253-38.827l64.853-64.853c32 11.52 66.56 18.347 102.4 18.347zM938.667 694.614l-196.267 164.693-55.040-65.28 196.267-164.693 55.040 65.28zM124.587 840.96l-54.187-54.613 56.747-56.747-47.36-39.68 60.587-60.587 47.36 40.107 34.133-34.133c-58.453-67.413-93.867-155.307-93.867-251.307 0-212.053 171.52-384 384-384 96 0 183.893 35.413 251.307 93.867l93.867-93.867 54.187 54.187-786.773 786.773zM702.72 154.027c-51.627-42.667-118.187-68.693-190.72-68.693-165.12 0-298.667 133.547-298.667 298.667 0 72.533 26.027 139.093 68.693 190.72l420.693-420.693zM342.187 798.72l-60.587 60.587-36.693-30.293 60.587-60.587 36.693 30.293z" /> +<glyph unicode="" d="M938.667 694.614l-196.267 164.693-55.040-65.28 196.267-164.693 55.040 65.28zM336.213 794.027l-54.613 65.28-196.267-164.267 55.040-65.28 195.84 164.267zM512 768c-212.053 0-384-171.947-384-384s171.52-384 384-384c212.053 0 384 171.947 384 384s-171.947 384-384 384zM512 85.334c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667zM449.707 318.72l-90.88 90.88-45.227-45.227 135.68-135.68 256 256-45.227 45.227-210.347-211.2z" /> +<glyph unicode="" d="M938.667 694.614l-196.267 164.693-55.040-65.28 196.267-164.693 55.040 65.28zM336.213 794.027l-54.613 65.28-196.267-164.267 55.040-65.28 195.84 164.267zM533.333 597.334h-64v-256l202.667-121.6 32 52.48-170.667 101.12v224zM512 768c-212.053 0-384-171.947-384-384s171.52-384 384-384c212.053 0 384 171.947 384 384s-171.947 384-384 384zM512 85.334c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667z" /> +<glyph unicode="" d="M256 170.667c0-23.467 19.2-42.667 42.667-42.667h42.667v-149.333c0-35.413 28.587-64 64-64s64 28.587 64 64v149.333h85.333v-149.333c0-35.413 28.587-64 64-64s64 28.587 64 64v149.333h42.667c23.467 0 42.667 19.2 42.667 42.667v426.667h-512v-426.667zM149.333 597.334c-35.413 0-64-28.587-64-64v-298.667c0-35.413 28.587-64 64-64s64 28.587 64 64v298.667c0 35.413-28.587 64-64 64zM874.667 597.334c-35.413 0-64-28.587-64-64v-298.667c0-35.413 28.587-64 64-64s64 28.587 64 64v298.667c0 35.413-28.587 64-64 64zM662.613 846.507l55.467 55.467c8.533 8.533 8.533 21.76 0 30.293s-21.76 8.533-30.293 0l-63.147-63.147c-33.707 17.067-72.107 26.88-112.64 26.88-40.96 0-79.36-9.813-113.493-26.88l-63.573 63.147c-8.533 8.533-21.76 8.533-30.293 0s-8.533-21.76 0-30.293l55.893-55.893c-63.147-46.507-104.533-121.173-104.533-206.080h512c0 84.907-41.387 160-105.387 206.507zM426.667 725.334h-42.667v42.667h42.667v-42.667zM640 725.334h-42.667v42.667h42.667v-42.667z" /> +<glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM554.667 469.334h-85.333v256h85.333v-256zM554.667 298.667h-85.333v85.333h85.333v-85.333z" /> +<glyph unicode="" d="M810.667 426.667h-85.333v-128h-128v-85.333h213.333v213.333zM298.667 554.667h128v85.333h-213.333v-213.333h85.333v128zM896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 127.574h-768v598.187h768v-598.187z" /> +<glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM384 213.334h-85.333v298.667h85.333v-298.667zM554.667 213.334h-85.333v426.667h85.333v-426.667zM725.333 213.334h-85.333v170.667h85.333v-170.667z" /> +<glyph unicode="" d="M810.667 810.667h-178.347c-17.92 49.493-64.853 85.333-120.32 85.333s-102.4-35.84-120.32-85.333h-178.347c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM512 810.667c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM512 640c70.827 0 128-57.173 128-128s-57.173-128-128-128-128 57.173-128 128 57.173 128 128 128zM768 128h-512v59.733c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-59.733z" /> +<glyph unicode="" d="M810.667 810.667h-178.347c-17.92 49.493-64.853 85.333-120.32 85.333s-102.4-35.84-120.32-85.333h-178.347c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM554.667 170.667h-85.333v85.333h85.333v-85.333zM554.667 341.334h-85.333v256h85.333v-256zM512 725.334c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667z" /> +<glyph unicode="" d="M810.667 810.667h-178.347c-17.92 49.493-64.853 85.333-120.32 85.333s-102.4-35.84-120.32-85.333h-178.347c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM512 810.667c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM682.667 298.667h-170.667v-128l-213.333 213.333 213.333 213.333v-128h170.667v-170.667z" /> +<glyph unicode="" d="M810.667 810.667h-178.347c-17.92 49.493-64.853 85.333-120.32 85.333s-102.4-35.84-120.32-85.333h-178.347c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM512 810.667c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM512 170.667l-213.333 213.333h128v170.667h170.667v-170.667h128l-213.333-213.333z" /> +<glyph unicode="" d="M810.667 810.667h-178.347c-17.92 49.493-64.853 85.333-120.32 85.333s-102.4-35.84-120.32-85.333h-178.347c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM512 810.667c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM426.667 213.334l-170.667 170.667 60.16 60.16 110.507-110.080 281.173 281.173 60.16-60.587-341.333-341.333z" /> +<glyph unicode="" d="M810.667 810.667h-178.347c-17.92 49.493-64.853 85.333-120.32 85.333s-102.4-35.84-120.32-85.333h-178.347c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM512 810.667c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM597.333 213.334h-298.667v85.333h298.667v-85.333zM725.333 384h-426.667v85.333h426.667v-85.333zM725.333 554.667h-426.667v85.333h426.667v-85.333z" /> +<glyph unicode="" d="M512 682.667v-128l170.667 170.667-170.667 170.667v-128c-188.587 0-341.333-152.747-341.333-341.333 0-66.987 19.627-129.28 52.907-181.76l62.293 62.293c-19.2 35.413-29.867 76.373-29.867 119.467 0 141.227 114.773 256 256 256zM800.427 608.427l-62.293-62.293c18.773-35.84 29.867-76.373 29.867-119.467 0-141.227-114.773-256-256-256v128l-170.667-170.667 170.667-170.667v128c188.587 0 341.333 152.747 341.333 341.333 0 66.987-19.627 129.28-52.907 181.76z" /> +<glyph unicode="" d="M825.6 510.294c-29.013 147.2-158.293 257.707-313.6 257.707-123.307 0-230.4-69.973-283.733-172.373-128.427-13.653-228.267-122.453-228.267-254.293 0-141.227 114.773-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-198.4 211.627zM597.333 384v-170.667h-170.667v170.667h-128l213.333 213.333 213.333-213.333h-128z" /> +<glyph unicode="" d="M768 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM256 768h213.333v-341.333l-106.667 64-106.667-64v341.333z" /> +<glyph unicode="" d="M725.333 810.667h-426.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-682.667 298.667 128 298.667-128v682.667c0 46.933-38.4 85.333-85.333 85.333zM725.333 170.667l-213.333 93.013-213.333-93.013v554.667h426.667v-554.667z" /> +<glyph unicode="" d="M725.333 810.667h-426.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-682.667 298.667 128 298.667-128v682.667c0 46.933-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M853.333 597.334h-119.893c-19.2 33.28-45.653 61.867-77.653 83.627l69.547 69.547-60.16 60.16-92.587-92.587c-19.627 4.693-39.68 7.253-60.587 7.253s-40.96-2.56-60.16-7.253l-93.013 92.587-60.16-60.16 69.12-69.547c-31.573-21.76-58.027-50.347-77.227-83.627h-119.893v-85.333h89.173c-2.133-14.080-3.84-28.16-3.84-42.667v-42.667h-85.333v-85.333h85.333v-42.667c0-14.507 1.707-28.587 3.84-42.667h-89.173v-85.333h119.893c44.373-76.373 126.72-128 221.44-128s177.067 51.627 221.44 128h119.893v85.333h-89.173c2.133 14.080 3.84 28.16 3.84 42.667v42.667h85.333v85.333h-85.333v42.667c0 14.507-1.707 28.587-3.84 42.667h89.173v85.333zM597.333 256h-170.667v85.333h170.667v-85.333zM597.333 426.667h-170.667v85.333h170.667v-85.333z" /> +<glyph unicode="" d="M810.667 597.334l-170.667-170.667h128c0-141.227-114.773-256-256-256-43.093 0-84.053 10.667-119.467 29.867l-62.293-62.293c52.48-33.28 114.773-52.907 181.76-52.907 188.587 0 341.333 152.747 341.333 341.333h128l-170.667 170.667zM256 426.667c0 141.227 114.773 256 256 256 43.093 0 84.053-10.667 119.467-29.867l62.293 62.293c-52.48 33.28-114.773 52.907-181.76 52.907-188.587 0-341.333-152.747-341.333-341.333h-128l170.667-170.667 170.667 170.667h-128z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM426.667 213.334l-213.333 213.333 60.16 60.16 153.173-152.747 323.84 323.84 60.16-60.587-384-384z" /> +<glyph unicode="" d="M768 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM256 768h213.333v-341.333l-106.667 64-106.667-64v341.333z" /> +<glyph unicode="" d="M853.333 768h-682.667c-47.36 0-84.907-37.973-84.907-85.333l-0.427-512c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v512c0 47.36-37.973 85.333-85.333 85.333zM853.333 170.667h-682.667v256h682.667v-256zM853.333 597.334h-682.667v85.333h682.667v-85.333z" /> +<glyph unicode="" d="M128 384h341.333v426.667h-341.333v-426.667zM128 42.667h341.333v256h-341.333v-256zM554.667 42.667h341.333v426.667h-341.333v-426.667zM554.667 810.667v-256h341.333v256h-341.333z" /> +<glyph unicode="" d="M256 128c0-46.933 38.4-85.333 85.333-85.333h341.333c46.933 0 85.333 38.4 85.333 85.333v512h-512v-512zM810.667 768h-149.333l-42.667 42.667h-213.333l-42.667-42.667h-149.333v-85.333h597.333v85.333z" /> +<glyph unicode="" d="M597.333 853.334h-341.333c-46.933 0-84.907-38.4-84.907-85.333l-0.427-682.667c0-46.933 37.973-85.333 84.907-85.333h512.427c46.933 0 85.333 38.4 85.333 85.333v512l-256 256zM682.667 170.667h-341.333v85.333h341.333v-85.333zM682.667 341.334h-341.333v85.333h341.333v-85.333zM554.667 554.667v234.667l234.667-234.667h-234.667z" /> +<glyph unicode="" d="M853.333 384h-682.667c-23.467 0-42.667-19.2-42.667-42.667v-256c0-23.467 19.2-42.667 42.667-42.667h682.667c23.467 0 42.667 19.2 42.667 42.667v256c0 23.467-19.2 42.667-42.667 42.667zM298.667 128c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333zM853.333 810.667h-682.667c-23.467 0-42.667-19.2-42.667-42.667v-256c0-23.467 19.2-42.667 42.667-42.667h682.667c23.467 0 42.667 19.2 42.667 42.667v256c0 23.467-19.2 42.667-42.667 42.667zM298.667 554.667c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333z" /> +<glyph unicode="" d="M768 640l-60.16 60.16-270.507-270.507 60.16-60.16 270.507 270.507zM948.907 700.16l-451.413-451.413-178.347 177.92-60.16-60.16 238.507-238.507 512 512-60.587 60.16zM17.493 366.507l238.507-238.507 60.16 60.16-238.080 238.507-60.587-60.16z" /> +<glyph unicode="" d="M384 248.747l-177.92 177.92-60.587-60.16 238.507-238.507 512 512-60.16 60.16z" /> +<glyph unicode="" d="M725.333 426.667h-213.333v-213.333h213.333v213.333zM682.667 896v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.36 0-84.907-38.4-84.907-85.333l-0.427-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333h-42.667v85.333h-85.333zM810.667 128h-597.333v469.333h597.333v-469.333z" /> +<glyph unicode="" d="M430.507 273.494l60.16-60.16 213.333 213.333-213.333 213.333-60.16-60.16 110.080-110.507h-412.587v-85.333h412.587l-110.080-110.507zM810.667 810.667h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-170.667h85.333v170.667h597.333v-597.333h-597.333v170.667h-85.333v-170.667c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M512 473.6c-26.027 0-46.933-20.907-46.933-46.933s20.907-46.933 46.933-46.933c26.027 0 46.933 20.907 46.933 46.933s-20.907 46.933-46.933 46.933zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM605.44 333.227l-349.44-162.56 162.56 349.44 349.44 162.56-162.56-349.44z" /> +<glyph unicode="" d="M874.667 469.334h-64v170.667c0 46.933-38.4 85.333-85.333 85.333h-170.667v64c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-64h-170.667c-46.933 0-84.907-38.4-84.907-85.333v-162.133h63.573c63.573 0 115.2-51.627 115.2-115.2s-51.627-115.2-115.2-115.2h-64v-162.133c0-46.933 38.4-85.333 85.333-85.333h162.133v64c0 63.573 51.627 115.2 115.2 115.2s115.2-51.627 115.2-115.2v-64h162.133c46.933 0 85.333 38.4 85.333 85.333v170.667h64c58.88 0 106.667 47.787 106.667 106.667s-47.787 106.667-106.667 106.667z" /> +<glyph unicode="" d="M626.773 209.067c-31.573-24.747-72.533-38.4-114.773-38.4s-83.2 13.653-114.773 38.4c-9.387 7.253-22.613 5.547-29.867-3.84s-5.547-22.613 3.84-29.867c38.827-30.72 89.173-47.36 140.8-47.36s101.973 16.64 141.227 46.933c9.387 7.253 11.093 20.48 3.84 29.867-7.253 9.813-20.907 11.093-30.293 4.267zM405.333 405.334c0-23.564-19.103-42.667-42.667-42.667s-42.667 19.103-42.667 42.667c0 23.564 19.103 42.667 42.667 42.667s42.667-19.103 42.667-42.667zM512 938.667c-282.88 0-512-229.12-512-512s229.12-512 512-512 512 229.12 512 512-229.12 512-512 512zM851.627 306.347c-46.507-159.573-182.187-275.627-343.040-275.627-161.28 0-296.96 116.053-343.040 276.053-50.773 4.693-90.88 50.347-90.88 107.52 0 54.187 36.267 98.56 84.053 106.667 89.173 62.293 162.133 148.907 174.507 215.467v0.427c57.6-112.213 268.8-221.44 504.747-215.893l12.8 1.28c54.613 0 98.56-48.64 98.56-108.373 0-58.88-43.52-107.093-97.707-107.52zM704 405.334c0-23.564-19.103-42.667-42.667-42.667s-42.667 19.103-42.667 42.667c0 23.564 19.103 42.667 42.667 42.667s42.667-19.103 42.667-42.667z" /> +<glyph unicode="" d="M704 810.667c-74.24 0-145.493-34.56-192-89.173-46.507 54.613-117.76 89.173-192 89.173-131.413 0-234.667-103.253-234.667-234.667 0-161.28 145.067-292.693 364.8-492.373l61.867-55.893 61.867 56.32c219.733 199.253 364.8 330.667 364.8 491.947 0 131.413-103.253 234.667-234.667 234.667zM516.267 147.2l-4.267-4.267-4.267 4.267c-203.093 183.893-337.067 305.493-337.067 428.8 0 85.333 64 149.333 149.333 149.333 65.707 0 129.707-42.24 152.32-100.693h79.787c22.187 58.453 86.187 100.693 151.893 100.693 85.333 0 149.333-64 149.333-149.333 0-123.307-133.973-244.907-337.067-428.8z" /> +<glyph unicode="" d="M512 27.734l-61.867 56.32c-219.733 199.253-364.8 330.667-364.8 491.947 0 131.413 103.253 234.667 234.667 234.667 74.24 0 145.493-34.56 192-89.173 46.507 54.613 117.76 89.173 192 89.173 131.413 0 234.667-103.253 234.667-234.667 0-161.28-145.067-292.693-364.8-492.373l-61.867-55.893z" /> +<glyph unicode="" d="M853.333 102.827v494.507l-256 256h-341.333c-46.933 0-84.907-38.4-84.907-85.333l-0.427-682.667c0-46.933 37.973-85.333 84.907-85.333h512.427c19.2 0 36.267 6.4 50.773 17.067l-189.013 189.013c-34.133-22.187-74.24-35.413-117.76-35.413-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333c0-43.52-13.227-83.627-35.413-117.333l163.413-163.84zM384 384c0-70.827 57.173-128 128-128s128 57.173 128 128-57.173 128-128 128-128-57.173-128-128z" /> +<glyph unicode="" d="M469.333 682.667c58.88 0 112.213-23.893 151.040-62.293l-108.373-108.373h256v256l-87.467-87.467c-54.187 54.187-128.853 87.467-211.2 87.467-150.613 0-274.347-111.36-295.253-256h86.187c19.627 97.28 105.813 170.667 209.067 170.667zM709.973 292.694c28.16 38.4 47.787 84.053 54.613 133.973h-86.187c-19.627-97.28-105.813-170.667-209.067-170.667-58.88 0-112.213 23.893-151.040 62.293l108.373 108.373h-256v-256l87.467 87.467c54.187-54.187 128.853-87.467 211.2-87.467 66.133 0 127.147 21.76 176.64 58.027l207.36-206.933 63.573 63.573-206.933 207.36z" /> +<glyph unicode="" d="M384 640h-85.333v-85.333h85.333v85.333zM384 469.334h-85.333v-85.333h85.333v85.333zM384 810.667c-47.36 0-85.333-38.4-85.333-85.333h85.333v85.333zM554.667 298.667h-85.333v-85.333h85.333v85.333zM810.667 810.667v-85.333h85.333c0 46.933-38.4 85.333-85.333 85.333zM554.667 810.667h-85.333v-85.333h85.333v85.333zM384 213.334v85.333h-85.333c0-46.933 37.973-85.333 85.333-85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM810.667 213.334c46.933 0 85.333 38.4 85.333 85.333h-85.333v-85.333zM213.333 640h-85.333v-512c0-46.933 37.973-85.333 85.333-85.333h512v85.333h-512v512zM640 725.334h85.333v85.333h-85.333v-85.333zM640 213.334h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M128 384h85.333v85.333h-85.333v-85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM213.333 42.667v85.333h-85.333c0-46.933 37.973-85.333 85.333-85.333zM128 554.667h85.333v85.333h-85.333v-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM810.667 810.667h-426.667c-47.36 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 37.973-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM810.667 298.667h-426.667v426.667h426.667v-426.667zM469.333 42.667h85.333v85.333h-85.333v-85.333zM298.667 42.667h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M810.667 554.667h-170.667v256h-256v-256h-170.667l298.667-298.667 298.667 298.667zM213.333 170.667v-85.333h597.333v85.333h-597.333z" /> +<glyph unicode="" d="M512 201.814l263.68-159.147-69.973 299.947 232.96 201.813-306.773 26.027-119.893 282.88-119.893-282.88-306.773-26.027 232.96-201.813-69.973-299.947z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM341.333 192c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667 106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667zM405.333 597.334c0 58.88 47.787 106.667 106.667 106.667s106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667-106.667 47.787-106.667 106.667zM682.667 192c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667 106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM554.667 128h-85.333v85.333h85.333v-85.333zM642.987 458.667l-38.4-39.253c-30.72-31.147-49.92-56.747-49.92-120.747h-85.333v21.333c0 46.933 19.2 89.6 49.92 120.747l52.907 53.76c15.787 15.36 25.173 36.693 25.173 60.16 0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333h-85.333c0 94.293 76.373 170.667 170.667 170.667s170.667-76.373 170.667-170.667c0-37.547-15.36-71.68-39.68-96z" /> +<glyph unicode="" d="M622.507 597.334l-110.507-110.507-110.507 110.507-60.16-60.16 110.507-110.507-110.507-110.507 60.16-60.16 110.507 110.507 110.507-110.507 60.16 60.16-110.507 110.507 110.507 110.507-60.16 60.16zM512 853.334c-235.947 0-426.667-190.72-426.667-426.667s190.72-426.667 426.667-426.667 426.667 190.72 426.667 426.667-190.72 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" /> +<glyph unicode="" d="M554.667 810.667c-212.053 0-384-171.947-384-384h-128l165.973-165.973 2.987-5.973 172.373 171.947h-128c0 165.12 133.547 298.667 298.667 298.667s298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667c-82.347 0-157.013 33.707-210.773 87.893l-60.587-60.587c69.547-69.547 165.12-112.64 271.36-112.64 212.053 0 384 171.947 384 384s-171.947 384-384 384zM512 597.334v-213.333l182.613-108.373 30.72 51.627-149.333 88.747v181.333h-64z" /> +<glyph unicode="" d="M426.667 85.334v256h170.667v-256h213.333v341.333h128l-426.667 384-426.667-384h128v-341.333z" /> +<glyph unicode="" d="M768 597.334h-42.667v85.333c0 117.76-95.573 213.333-213.333 213.333s-213.333-95.573-213.333-213.333v-85.333h-42.667c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM512 213.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333zM644.267 597.334h-264.533v85.333c0 72.96 59.307 132.267 132.267 132.267s132.267-59.307 132.267-132.267v-85.333z" /> +<glyph unicode="" d="M469.333 213.334h85.333v256h-85.333v-256zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333zM469.333 554.667h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM554.667 213.334h-85.333v256h85.333v-256zM554.667 554.667h-85.333v85.333h85.333v-85.333z" /> +<glyph unicode="" d="M896 810.24h-768c-46.933 0-85.333-38.4-85.333-85.333v-170.24h85.333v171.093h768v-598.613h-768v171.52h-85.333v-171.093c0-46.933 38.4-84.48 85.333-84.48h768c46.933 0 85.333 37.547 85.333 84.48v597.333c0 47.36-38.4 85.333-85.333 85.333zM469.333 256l170.667 170.667-170.667 170.667v-128h-426.667v-85.333h426.667v-128z" /> +<glyph unicode="" d="M753.493 600.32l-241.493 241.493-241.493-241.493c-133.12-133.12-133.12-349.44 0-482.56 66.56-66.56 154.027-99.84 241.493-99.84s174.933 33.28 241.493 99.84c133.12 133.12 133.12 349.44 0 482.56zM512 102.827c-68.267 0-132.693 26.453-180.907 75.093-48.64 48.64-75.093 112.64-75.093 180.907s26.453 132.693 75.093 180.907l180.907 181.333v-618.24z" /> +<glyph unicode="" d="M752.213 689.494c-15.36 21.76-40.96 35.84-69.547 35.84l-469.333-0.427c-46.933 0-85.333-37.973-85.333-84.907v-426.667c0-46.933 38.4-84.907 85.333-84.907l469.333-0.427c28.587 0 54.187 14.080 69.547 35.84l186.453 262.827-186.453 262.827zM682.667 213.334h-469.333v426.667h469.333l151.467-213.333-151.467-213.333z" /> +<glyph unicode="" d="M752.213 689.494c-15.36 21.76-40.96 35.84-69.547 35.84l-469.333-0.427c-46.933 0-85.333-37.973-85.333-84.907v-426.667c0-46.933 38.4-84.907 85.333-84.907l469.333-0.427c28.587 0 54.187 14.080 69.547 35.84l186.453 262.827-186.453 262.827z" /> +<glyph unicode="" d="M511.573 853.334c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM807.253 597.334h-125.867c-13.653 53.333-33.28 104.533-58.88 151.893 78.507-26.88 143.787-81.493 184.747-151.893zM512 766.294c35.413-51.2 63.147-107.947 81.493-168.96h-162.987c18.347 61.013 46.080 117.76 81.493 168.96zM181.76 341.334c-6.827 27.307-11.093 55.893-11.093 85.333s4.267 58.027 11.093 85.333h144.213c-3.413-28.16-5.973-56.32-5.973-85.333s2.56-57.173 5.973-85.333h-144.213zM216.747 256h125.867c13.653-53.333 33.28-104.533 58.88-151.893-78.507 26.88-143.787 81.067-184.747 151.893zM342.613 597.334h-125.867c40.96 70.827 106.24 125.013 184.747 151.893-25.6-47.36-45.227-98.56-58.88-151.893zM512 87.040c-35.413 51.2-63.147 107.947-81.493 168.96h162.987c-18.347-61.013-46.080-117.76-81.493-168.96zM611.84 341.334h-199.68c-3.84 28.16-6.827 56.32-6.827 85.333s2.987 57.6 6.827 85.333h199.68c3.84-27.733 6.827-56.32 6.827-85.333s-2.987-57.173-6.827-85.333zM622.507 104.107c25.6 47.36 45.227 98.56 58.88 151.893h125.867c-40.96-70.4-106.24-125.013-184.747-151.893zM698.027 341.334c3.413 28.16 5.973 56.32 5.973 85.333s-2.56 57.173-5.973 85.333h144.213c6.827-27.307 11.093-55.893 11.093-85.333s-4.267-58.027-11.093-85.333h-144.213z" /> +<glyph unicode="" d="M810.667 128h-597.333v597.333h298.667v85.333h-298.667c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v298.667h-85.333v-298.667zM597.333 810.667v-85.333h153.173l-419.413-419.413 60.16-60.16 419.413 419.413v-153.173h85.333v298.667h-298.667z" /> +<glyph unicode="" d="M128 384h85.333v85.333h-85.333v-85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM128 554.667h85.333v85.333h-85.333v-85.333zM298.667 384h597.333v85.333h-597.333v-85.333zM298.667 213.334h597.333v85.333h-597.333v-85.333zM298.667 640v-85.333h597.333v85.333h-597.333z" /> +<glyph unicode="" d="M512 213.334c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333zM768 597.334h-42.667v85.333c0 117.76-95.573 213.333-213.333 213.333s-213.333-95.573-213.333-213.333h81.067c0 72.96 59.307 132.267 132.267 132.267s132.267-59.307 132.267-132.267v-85.333h-388.267c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM768 85.334h-512v426.667h512v-426.667z" /> +<glyph unicode="" d="M768 597.334h-42.667v85.333c0 117.76-95.573 213.333-213.333 213.333s-213.333-95.573-213.333-213.333v-85.333h-42.667c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM512 814.934c72.96 0 132.267-59.307 132.267-132.267v-85.333h-260.267v85.333h-4.267c0 72.96 59.307 132.267 132.267 132.267zM768 85.334h-512v426.667h512v-426.667zM512 213.334c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333z" /> +<glyph unicode="" d="M768 597.334h-42.667v85.333c0 117.76-95.573 213.333-213.333 213.333s-213.333-95.573-213.333-213.333v-85.333h-42.667c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM512 213.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333zM644.267 597.334h-264.533v85.333c0 72.96 59.307 132.267 132.267 132.267s132.267-59.307 132.267-132.267v-85.333z" /> +<glyph unicode="" d="M913.493 444.587l-384 384c-15.36 15.36-36.693 24.747-60.16 24.747h-298.667c-46.933 0-85.333-38.4-85.333-85.333v-298.667c0-23.467 9.387-44.8 25.173-60.587l384-384c15.36-15.36 36.693-24.747 60.16-24.747s44.8 9.387 60.16 25.173l298.667 298.667c15.787 15.36 25.173 36.693 25.173 60.16s-9.813 45.227-25.173 60.587zM234.667 640c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM736.853 287.147l-182.187-182.187-182.187 182.187c-19.2 19.627-31.147 46.080-31.147 75.52 0 58.88 47.787 106.667 106.667 106.667 29.44 0 56.32-11.947 75.52-31.573l31.147-30.72 31.147 31.147c19.2 19.2 46.080 31.147 75.52 31.147 58.88 0 106.667-47.787 106.667-106.667 0-29.44-11.947-56.32-31.147-75.52z" /> +<glyph unicode="" d="M853.333 682.667h-426.667v-256h-85.333v341.333h256v170.667h-341.333v-256h-85.333c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M597.333 853.334h-341.333c-46.933 0-84.907-38.4-84.907-85.333l-0.427-682.667c0-46.933 37.973-85.333 84.907-85.333h512.427c46.933 0 85.333 38.4 85.333 85.333v512l-256 256zM682.667 256h-128v-128h-85.333v128h-128v85.333h128v128h85.333v-128h128v-85.333zM554.667 554.667v234.667l234.667-234.667h-234.667z" /> +<glyph unicode="" d="M810.667 768h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-512c0-46.933 37.973-85.333 85.333-85.333h170.667v85.333h-170.667v426.667h597.333v-426.667h-170.667v-85.333h170.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-37.973 85.333-85.333 85.333zM512 512l-170.667-170.667h128v-256h85.333v256h128l-170.667 170.667z" /> +<glyph unicode="" d="M810.667 128h-597.333v597.333h298.667v85.333h-298.667c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v298.667h-85.333v-298.667zM597.333 810.667v-85.333h153.173l-419.413-419.413 60.16-60.16 419.413 419.413v-153.173h85.333v298.667h-298.667z" /> +<glyph unicode="" d="M426.667 554.667h170.667v128h128l-213.333 213.333-213.333-213.333h128v-128zM384 512h-128v128l-213.333-213.333 213.333-213.333v128h128v170.667zM981.333 426.667l-213.333 213.333v-128h-128v-170.667h128v-128l213.333 213.333zM597.333 298.667h-170.667v-128h-128l213.333-213.333 213.333 213.333h-128v128z" /> +<glyph unicode="" d="M469.333 597.334c-70.827 0-128-57.173-128-128s57.173-128 128-128 128 57.173 128 128-57.173 128-128 128zM810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM750.507 128l-163.413 163.413c-34.133-22.187-74.24-35.413-117.76-35.413-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333c0-43.52-13.227-83.627-35.413-117.333l163.413-163.84-60.16-60.16z" /> +<glyph unicode="" d="M853.333 768h-682.667c-47.36 0-84.907-37.973-84.907-85.333l-0.427-512c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v512c0 47.36-37.973 85.333-85.333 85.333zM853.333 170.667h-682.667v256h682.667v-256zM853.333 597.334h-682.667v85.333h682.667v-85.333z" /> +<glyph unicode="" d="M853.333 725.334h-135.253l-78.080 85.333h-256l-78.080-85.333h-135.253c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h298.667v89.173c-120.747 20.48-213.333 125.44-213.333 252.16h85.333c0-94.293 76.373-170.667 170.667-170.667s170.667 76.373 170.667 170.667h85.333c0-126.72-92.587-231.68-213.333-252.16v-89.173h298.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM597.333 384c0-46.933-38.4-85.333-85.333-85.333s-85.333 38.4-85.333 85.333v170.667c0 46.933 38.4 85.333 85.333 85.333s85.333-38.4 85.333-85.333v-170.667z" /> +<glyph unicode="" d="M810.667 810.667h-42.667v85.333h-85.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM512 682.667c70.827 0 128-57.173 128-128s-57.173-128-128-128-128 57.173-128 128 57.173 128 128 128zM768 170.667h-512v42.667c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-42.667z" /> +<glyph unicode="" d="M810.24 448c14.507 0 28.587-1.28 42.667-2.987l0.427 493.653-853.333-853.333h493.227c-1.707 14.080-2.987 28.16-2.987 42.667 0 176.64 143.36 320 320 320zM968.533 107.094c0.853 6.827 1.707 13.653 1.707 20.907s-0.427 14.080-1.707 20.907l45.227 35.413c3.84 3.413 5.12 8.96 2.56 13.653l-42.667 73.813c-2.56 4.693-8.107 6.4-13.227 4.693l-52.907-21.333c-11.093 8.533-23.040 15.787-36.267 20.907l-8.107 56.32c-0.427 5.12-5.12 8.96-10.24 8.96h-85.333c-5.12 0-9.813-3.84-10.667-8.96l-8.107-56.32c-12.8-5.547-25.173-12.373-36.267-20.907l-52.907 21.333c-4.693 1.707-10.24 0-13.227-4.693l-42.667-73.813c-2.56-4.693-1.707-10.24 2.56-13.653l45.227-35.413c-0.853-6.827-1.28-13.653-1.28-20.907s0.427-14.080 1.28-20.907l-45.227-35.413c-3.84-3.413-5.12-8.96-2.56-13.653l42.667-73.813c2.56-4.693 8.107-6.4 13.227-4.693l52.907 21.333c11.093-8.533 23.040-15.787 36.267-20.907l8.107-56.32c0.853-5.12 5.12-8.96 10.667-8.96h85.333c5.12 0 9.813 3.84 10.667 8.96l8.107 56.32c12.8 5.547 25.173 12.373 35.84 20.907l53.333-21.333c4.693-1.707 10.24 0 13.227 4.693l42.667 73.813c2.56 4.693 1.28 10.24-2.56 13.653l-45.653 35.413zM810.24 64c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" /> +<glyph unicode="" d="M554.667 640h-85.333v-85.333h85.333v85.333zM554.667 469.334h-85.333v-256h85.333v256zM725.333 895.574l-426.667 0.427c-46.933 0-85.333-38.4-85.333-85.333v-768c0-46.933 38.4-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v768c0 46.933-38.4 84.907-85.333 84.907zM725.333 128h-426.667v597.333h426.667v-597.333z" /> +<glyph unicode="" d="M512 686.934c49.493 0 89.6-40.107 89.6-89.6s-40.107-89.6-89.6-89.6-89.6 40.107-89.6 89.6 40.107 89.6 89.6 89.6zM512 302.934c126.72 0 260.267-62.293 260.267-89.6v-46.933h-520.533v46.933c0 27.307 133.547 89.6 260.267 89.6zM512 768c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM512 384c-113.92 0-341.333-57.173-341.333-170.667v-128h682.667v128c0 113.493-227.413 170.667-341.333 170.667z" /> +<glyph unicode="" d="M85.333 682.667h-85.333v-213.333h0.427l-0.427-384c0-46.933 38.4-85.333 85.333-85.333h768v85.333h-768v597.333zM938.667 768h-341.333l-85.333 85.333h-256c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM298.667 298.667l192 256 149.333-192.427 106.667 128.427 149.333-192h-597.333z" /> +<glyph unicode="" d="M853.333 277.334c-53.333 0-104.533 8.533-152.32 24.32-14.933 4.693-31.573 1.28-43.52-10.24l-93.867-93.867c-120.747 61.44-219.733 160-281.173 280.747l93.867 94.293c11.947 11.52 15.36 28.16 10.667 43.093-15.787 47.787-24.32 98.987-24.32 152.32 0 23.467-19.2 42.667-42.667 42.667h-149.333c-23.467 0-42.667-19.2-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.467 0 42.667 19.2 42.667 42.667v149.333c0 23.467-19.2 42.667-42.667 42.667zM512 810.667v-426.667l128 128h256v298.667h-384z" /> +<glyph unicode="" d="M512 810.667c-215.467 0-377.6-78.933-512-180.48l512-630.187 512 629.333c-134.4 101.547-296.533 181.333-512 181.333zM554.667 256h-85.333v256h85.333v-256zM469.333 597.334v85.333h85.333v-85.333h-85.333z" /> +<glyph unicode="" d="M810.667 640h-341.333v-256h341.333v256zM896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-84.48 85.333-84.48h768c46.933 0 85.333 37.547 85.333 84.48v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 127.574h-768v598.613h768v-598.613z" /> +<glyph unicode="" d="M810.667 768h-170.667l-336.64-538.88-111.36 197.547 192 341.333h-170.667l-192-341.333 192-341.333h170.667l336.64 538.88 111.36-197.547-192-341.333h170.667l192 341.333z" /> +<glyph unicode="" d="M810.667 597.334h-597.333c-70.827 0-128-57.173-128-128v-256h170.667v-170.667h512v170.667h170.667v256c0 70.827-57.173 128-128 128zM682.667 128h-341.333v213.333h341.333v-213.333zM810.667 426.667c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667zM768 810.667h-512v-170.667h512v170.667z" /> +<glyph unicode="" d="M511.573 853.334c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM533.333 640h-64v-256l224-134.4 32 52.48-192 113.92z" /> +<glyph unicode="" d="M896 682.667h-85.333v-384h-554.667v-85.333c0-23.467 19.2-42.667 42.667-42.667h469.333l170.667-170.667v640c0 23.467-19.2 42.667-42.667 42.667zM725.333 426.667v384c0 23.467-19.2 42.667-42.667 42.667h-554.667c-23.467 0-42.667-19.2-42.667-42.667v-597.333l170.667 170.667h426.667c23.467 0 42.667 19.2 42.667 42.667z" /> +<glyph unicode="" d="M768 213.334h-512v85.333h512v-85.333zM768 384h-512v85.333h512v-85.333zM768 554.667h-512v85.333h512v-85.333zM128-0l64 64 64-64 64 64 64-64 64 64 64-64 64 64 64-64 64 64 64-64 64 64 64-64v853.333l-64-64-64 64-64-64-64 64-64-64-64 64-64-64-64 64-64-64-64 64-64-64-64 64v-853.333z" /> +<glyph unicode="" d="M853.333 682.667h-93.013c4.693 13.227 7.68 27.733 7.68 42.667 0 70.827-57.173 128-128 128-44.8 0-83.627-23.040-106.667-57.6l-21.333-28.587-21.333 29.013c-23.040 34.133-61.867 57.173-106.667 57.173-70.827 0-128-57.173-128-128 0-14.933 2.987-29.44 7.68-42.667h-93.013c-47.36 0-84.907-37.973-84.907-85.333l-0.427-469.333c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v469.333c0 47.36-37.973 85.333-85.333 85.333zM640 768c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM384 768c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM853.333 128h-682.667v85.333h682.667v-85.333zM853.333 341.334h-682.667v256h216.747l-88.747-120.747 69.12-49.92 144.213 196.267 144.213-196.267 69.12 49.92-88.747 120.747h216.747v-256z" /> +<glyph unicode="" d="M128 298.667h768v85.333h-768v-85.333zM128 128h768v85.333h-768v-85.333zM128 469.334h768v85.333h-768v-85.333zM128 725.334v-85.333h768v85.333h-768z" /> +<glyph unicode="" d="M42.667 42.667h938.667l-469.333 810.667-469.333-810.667zM554.667 170.667h-85.333v85.333h85.333v-85.333zM554.667 341.334h-85.333v170.667h85.333v-170.667z" /> +<glyph unicode="" d="M554.667 810.667c-212.053 0-384-171.947-384-384h-128l165.973-165.973 2.987-5.973 172.373 171.947h-128c0 165.12 133.547 298.667 298.667 298.667s298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667c-82.347 0-157.013 33.707-210.773 87.893l-60.587-60.587c69.547-69.547 165.12-112.64 271.36-112.64 212.053 0 384 171.947 384 384s-171.947 384-384 384zM512 597.334v-213.333l182.613-108.373 30.72 51.627-149.333 88.747v181.333h-64z" /> +<glyph unicode="" d="M512 853.334c-165.12 0-298.667-133.547-298.667-298.667 0-224 298.667-554.667 298.667-554.667s298.667 330.667 298.667 554.667c0 165.12-133.547 298.667-298.667 298.667zM512 448c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667 106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667z" /> +<glyph unicode="" d="M511.573 853.334c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM533.333 640h-64v-256l224-134.4 32 52.48-192 113.92z" /> +<glyph unicode="" d="M661.333 341.334h-33.707l-11.947 11.52c41.813 48.64 66.987 111.787 66.987 180.48 0 153.173-124.16 277.333-277.333 277.333s-277.333-124.16-277.333-277.333 124.16-277.333 277.333-277.333c68.693 0 131.84 25.173 180.48 66.987l11.52-11.947v-33.707l213.333-212.907 63.573 63.573-212.907 213.333zM405.333 341.334c-106.24 0-192 85.76-192 192s85.76 192 192 192 192-85.76 192-192-85.76-192-192-192z" /> +<glyph unicode="" d="M512 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM810.667 810.667h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c47.36 0 85.333 38.4 85.333 85.333v597.333c0 46.933-37.973 85.333-85.333 85.333zM736 426.667c0-9.813-0.853-19.627-2.133-29.013l63.147-49.493c5.547-4.693 7.253-12.8 3.413-19.2l-59.733-103.253c-3.84-6.4-11.52-8.96-18.347-6.4l-74.24 29.867c-15.36-11.947-32.427-21.76-50.347-29.44l-11.093-78.933c-1.28-7.253-7.68-12.8-14.933-12.8h-119.467c-7.253 0-13.653 5.547-14.933 12.373l-11.093 78.933c-18.347 7.68-34.987 17.493-50.347 29.44l-74.24-29.867c-6.827-2.56-14.507 0-18.347 6.4l-59.733 103.253c-3.84 6.4-2.133 14.507 3.413 19.2l63.147 49.493c-1.28 9.813-2.133 19.627-2.133 29.44s0.853 19.627 2.133 29.013l-63.147 49.493c-5.547 4.693-7.253 12.8-3.413 19.2l59.733 103.253c3.84 6.4 11.52 8.96 18.347 6.4l74.24-29.867c15.36 11.947 32.427 21.76 50.347 29.44l11.093 78.933c1.28 7.253 7.68 12.8 14.933 12.8h119.467c7.253 0 13.653-5.547 14.933-12.373l11.093-78.933c18.347-7.68 34.987-17.493 50.347-29.44l74.24 29.867c6.827 2.56 14.507 0 18.347-6.4l59.733-103.253c3.84-6.4 2.133-14.507-3.413-19.2l-63.147-49.493c1.28-9.813 2.133-19.627 2.133-29.44z" /> +<glyph unicode="" d="M597.333 426.667c0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333zM512 810.667c-212.053 0-384-171.947-384-384h-128l170.667-170.667 170.667 170.667h-128c0 165.12 133.547 298.667 298.667 298.667s298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667c-64.427 0-124.16 20.907-173.227 55.467l-60.587-61.44c64.853-49.493 145.92-79.36 233.813-79.36 212.053 0 384 171.947 384 384s-171.947 384-384 384z" /> +<glyph unicode="" d="M469.333-85.333h85.333v85.333h-85.333v-85.333zM298.667-85.333h85.333v85.333h-85.333v-85.333zM640-85.333h85.333v85.333h-85.333v-85.333zM755.627 695.040l-243.627 243.627h-42.667v-323.84l-195.84 195.84-60.16-60.16 238.507-238.507-238.507-238.507 60.16-60.16 195.84 195.84v-323.84h42.667l243.627 243.627-183.467 183.040 183.467 183.040zM554.667 775.254l80.213-80.213-80.213-80.213v160.427zM634.88 328.96l-80.213-80.213v160.427l80.213-80.213z" /> +<glyph unicode="" d="M298.667-85.333h85.333v85.333h-85.333v-85.333zM469.333-85.333h85.333v85.333h-85.333v-85.333zM640-85.333h85.333v85.333h-85.333v-85.333zM682.667 938.24l-341.333 0.427c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h341.333c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 84.907-85.333 84.907zM682.667 256h-341.333v512h341.333v-512z" /> +<glyph unicode="" d="M896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 127.574h-768v598.187h768v-598.187zM341.333 256h106.667l64-64 64 64h106.667v106.667l64 64-64 64v106.667h-106.667l-64 64-64-64h-106.667v-106.667l-64-64 64-64v-106.667zM512 554.667c70.827 0 128-57.173 128-128s-57.173-128-128-128v256z" /> +<glyph unicode="" d="M331.52 650.24l-65.707 54.613-230.827-278.187 230.827-278.187 65.707 54.613-185.6 223.573 185.6 223.573zM298.667 384h85.333v85.333h-85.333v-85.333zM725.333 469.334h-85.333v-85.333h85.333v85.333zM469.333 384h85.333v85.333h-85.333v-85.333zM758.187 704.854l-65.707-54.613 185.6-223.573-185.6-223.573 65.707-54.613 230.827 278.187-230.827 278.187z" /> +<glyph unicode="" d="M512 725.334c-165.12 0-298.667-133.547-298.667-298.667h85.333c0 117.76 95.573 213.333 213.333 213.333s213.333-95.573 213.333-213.333h85.333c0 165.12-133.547 298.667-298.667 298.667zM554.667 328.96c37.547 16.64 64 53.76 64 97.707 0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667c0-43.52 26.453-81.067 64-97.707v-140.8l-145.493-145.493 60.16-60.16 128 128 128-128 60.16 60.16-145.493 145.493v140.8zM512 896c-258.987 0-469.333-210.347-469.333-469.333h85.333c0 212.053 171.947 384 384 384s384-171.947 384-384h85.333c0 258.987-210.347 469.333-469.333 469.333z" /> +<glyph unicode="" d="M213.333 853.334c0 23.467-19.2 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333v170.667zM384 256c0-55.467 35.84-102.4 85.333-120.32v-178.347h85.333v178.347c49.493 17.493 85.333 64.427 85.333 120.32v85.333h-256v-85.333zM42.667 256c0-55.467 35.84-102.4 85.333-120.32v-178.347h85.333v178.347c49.493 17.92 85.333 64.853 85.333 120.32v85.333h-256v-85.333zM896 682.667v170.667c0 23.467-19.2 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333zM554.667 853.334c0 23.467-19.2 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333v170.667zM725.333 256c0-55.467 35.84-102.4 85.333-120.32v-178.347h85.333v178.347c49.493 17.493 85.333 64.427 85.333 120.32v85.333h-256v-85.333z" /> +<glyph unicode="" d="M213.333 853.334c0 23.467-19.2 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333v170.667zM384 256c0-55.467 35.84-102.4 85.333-120.32v-178.347h85.333v178.347c49.493 17.493 85.333 64.427 85.333 120.32v85.333h-256v-85.333zM42.667 256c0-55.467 35.84-102.4 85.333-120.32v-178.347h85.333v178.347c49.493 17.92 85.333 64.853 85.333 120.32v85.333h-256v-85.333zM896 682.667v170.667c0 23.467-19.2 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333zM554.667 853.334c0 23.467-19.2 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333v170.667zM725.333 256c0-55.467 35.84-102.4 85.333-120.32v-178.347h85.333v178.347c49.493 17.493 85.333 64.427 85.333 120.32v85.333h-256v-85.333z" /> +<glyph unicode="" d="M768 640v128c0 46.933-38.4 85.333-85.333 85.333h-341.333c-46.933 0-85.333-38.4-85.333-85.333v-128h-42.667v-256l128-256v-128h341.333v128l128 256v256h-42.667zM341.333 768h341.333v-128h-85.333v85.333h-42.667v-85.333h-85.333v85.333h-42.667v-85.333h-85.333v128z" /> +<glyph unicode="" d="M341.333 448c0 35.413-28.587 64-64 64s-64-28.587-64-64 28.587-64 64-64 64 28.587 64 64zM640 661.334c0 35.413-28.587 64-64 64h-128c-35.413 0-64-28.587-64-64s28.587-64 64-64h128c35.413 0 64 28.587 64 64zM362.667 298.667c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM512 896c-258.987 0-469.333-210.347-469.333-469.333s210.347-469.333 469.333-469.333 469.333 210.347 469.333 469.333-210.347 469.333-469.333 469.333zM512 42.667c-211.627 0-384 172.373-384 384s172.373 384 384 384 384-172.373 384-384-172.373-384-384-384zM746.667 512c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM661.333 298.667c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64z" /> +<glyph unicode="" d="M512.427 704l-85.76-106.667h170.667l-84.907 106.667zM768 512v-170.667l106.667 84.907-106.667 85.76zM256 512l-106.667-85.76 106.667-84.907v170.667zM597.333 256h-170.667l85.76-106.667 84.907 106.667zM896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 127.574h-768v598.187h768v-598.187z" /> +<glyph unicode="" d="M554.667 554.667h-85.333v-85.333h85.333v85.333zM725.333 554.667h-85.333v-85.333h85.333v85.333zM853.333 277.334c-53.333 0-104.533 8.533-152.32 24.32-14.933 4.693-31.573 1.28-43.52-10.24l-93.867-93.867c-120.747 61.44-219.733 160-281.173 280.747l93.867 94.293c11.947 11.52 15.36 28.16 10.667 43.093-15.787 47.787-24.32 98.987-24.32 152.32 0 23.467-19.2 42.667-42.667 42.667h-149.333c-23.467 0-42.667-19.2-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.467 0 42.667 19.2 42.667 42.667v149.333c0 23.467-19.2 42.667-42.667 42.667zM810.667 554.667v-85.333h85.333v85.333h-85.333z" /> +<glyph unicode="" d="M298.667-85.333h85.333v85.333h-85.333v-85.333zM469.333-85.333h85.333v85.333h-85.333v-85.333zM554.667 853.334h-85.333v-426.667h85.333v426.667zM706.56 749.227l-61.867-61.867c73.813-44.8 123.307-125.44 123.307-218.027 0-141.227-114.773-256-256-256s-256 114.773-256 256c0 92.587 49.493 173.227 122.88 218.453l-61.44 61.44c-88.747-61.44-146.773-163.84-146.773-279.893 0-188.587 152.747-341.333 341.333-341.333s341.333 152.747 341.333 341.333c0 116.053-58.027 218.453-146.773 279.893zM640-85.333h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M640 554.667h-256c-23.467 0-42.667-19.2-42.667-42.667v-512c0-23.467 19.2-42.667 42.667-42.667h256c23.467 0 42.667 19.2 42.667 42.667v512c0 23.467-19.2 42.667-42.667 42.667zM512 298.667c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333zM300.8 680.534l60.16-60.16c38.827 38.4 92.16 62.293 151.040 62.293s112.213-23.893 151.040-62.293l60.16 60.16c-54.187 54.187-128.853 87.467-211.2 87.467s-157.013-33.28-211.2-87.467zM512 938.667c-129.707 0-247.040-52.48-331.947-137.387l60.16-60.16c69.547 69.12 165.547 112.213 271.787 112.213s202.24-43.093 271.36-112.64l60.16 60.16c-84.48 85.333-201.813 137.813-331.52 137.813z" /> +<glyph unicode="" d="M298.667-85.333h85.333v85.333h-85.333v-85.333zM512 384c70.827 0 127.573 57.173 127.573 128l0.427 256c0 70.827-57.173 128-128 128s-128-57.173-128-128v-256c0-70.827 57.173-128 128-128zM469.333-85.333h85.333v85.333h-85.333v-85.333zM640-85.333h85.333v85.333h-85.333v-85.333zM810.667 512h-72.533c0-128-108.373-217.6-226.133-217.6s-226.133 89.6-226.133 217.6h-72.533c0-145.493 116.053-265.813 256-286.72v-139.947h85.333v139.947c139.947 20.907 256 141.227 256 286.72z" /> +<glyph unicode="" d="M829.013 384.854c1.707 13.653 2.987 27.307 2.987 41.813s-1.28 28.16-2.987 41.813l90.027 70.4c8.107 6.4 10.24 17.92 5.12 27.307l-85.333 147.627c-5.12 9.387-16.64 12.8-26.027 9.387l-106.24-42.667c-22.187 17.067-46.080 31.147-72.107 41.813l-16.213 113.067c-1.28 10.24-10.24 17.92-20.907 17.92h-170.667c-10.667 0-19.627-7.68-20.907-17.92l-16.213-113.067c-26.027-10.667-49.92-25.173-72.107-41.813l-106.24 42.667c-9.813 3.84-20.907 0-26.027-9.387l-85.333-147.627c-5.547-9.387-2.987-20.907 5.12-27.307l90.027-70.4c-1.707-13.653-2.987-27.733-2.987-41.813s1.28-28.16 2.987-41.813l-90.027-70.4c-8.107-6.4-10.24-17.92-5.12-27.307l85.333-147.627c5.12-9.387 16.64-12.8 26.027-9.387l106.24 42.667c22.187-17.067 46.080-31.147 72.107-41.813l16.213-113.067c1.28-10.24 10.24-17.92 20.907-17.92h170.667c10.667 0 19.627 7.68 20.907 17.92l16.213 113.067c26.027 10.667 49.92 25.173 72.107 41.813l106.24-42.667c9.813-3.84 20.907 0 26.027 9.387l85.333 147.627c5.12 9.387 2.987 20.907-5.12 27.307l-90.027 70.4zM512 277.334c-82.347 0-149.333 66.987-149.333 149.333s66.987 149.333 149.333 149.333 149.333-66.987 149.333-149.333-66.987-149.333-149.333-149.333z" /> +<glyph unicode="" d="M128 554.667h-85.333v-469.333c0-47.36 37.973-85.333 85.333-85.333h597.333c47.36 0 85.333 37.973 85.333 85.333h-682.667v469.333zM768 725.334v85.333c0 47.36-37.973 85.333-85.333 85.333h-170.667c-47.36 0-85.333-37.973-85.333-85.333v-85.333h-213.333v-469.333c0-47.36 37.973-85.333 85.333-85.333h597.333c47.36 0 85.333 37.973 85.333 85.333v469.333h-213.333zM512 810.667h170.667v-85.333h-170.667v85.333zM512 298.667v298.667l234.667-128-234.667-170.667z" /> +<glyph unicode="" d="M682.667 682.667v85.333c0 47.36-37.973 85.333-85.333 85.333h-170.667c-47.36 0-85.333-37.973-85.333-85.333v-85.333h-256v-554.667c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v554.667h-256zM426.667 768h170.667v-85.333h-170.667v85.333zM384 170.667v384l320-170.667-320-213.333z" /> +<glyph unicode="" d="M734.293 554.667l-186.88 279.893c-8.107 11.947-21.76 17.92-35.413 17.92s-27.307-5.973-35.413-18.347l-186.88-279.467h-204.373c-23.467 0-42.667-19.2-42.667-42.667 0-3.84 0.427-7.68 1.707-11.52l108.373-395.52c9.813-35.84 42.667-62.293 81.92-62.293h554.667c39.253 0 72.107 26.453 82.347 62.293l108.373 395.52 1.28 11.52c0 23.467-19.2 42.667-42.667 42.667h-204.373zM384 554.667l128 187.733 128-187.733h-256zM512 213.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333z" /> +<glyph unicode="" d="M298.667 170.667c-46.933 0-84.907-38.4-84.907-85.333s37.973-85.333 84.907-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM42.667 853.334v-85.333h85.333l153.6-323.84-57.6-104.533c-6.827-11.947-10.667-26.027-10.667-40.96 0-46.933 38.4-85.333 85.333-85.333h512v85.333h-494.080c-5.973 0-10.667 4.693-10.667 10.667l1.28 5.12 38.4 69.547h317.867c32 0 60.16 17.493 74.667 43.947l152.747 276.907c3.413 5.973 5.12 13.227 5.12 20.48 0 23.467-19.2 42.667-42.667 42.667h-631.040l-40.107 85.333h-139.52zM725.333 170.667c-46.933 0-84.907-38.4-84.907-85.333s37.973-85.333 84.907-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM341.333 341.334h-85.333v85.333h85.333v-85.333zM341.333 469.334h-85.333v85.333h85.333v-85.333zM341.333 597.334h-85.333v85.333h85.333v-85.333zM640 341.334h-213.333v85.333h213.333v-85.333zM768 469.334h-341.333v85.333h341.333v-85.333zM768 597.334h-341.333v85.333h341.333v-85.333z" /> +<glyph unicode="" d="M531.2 256h89.173l-218.027 554.667h-79.36l-218.027-554.667h89.173l47.787 128h240.64l48.64-128zM274.347 469.334l88.32 235.52 88.32-235.52h-176.64zM921.173 444.16l-345.173-345.173-156.587 157.013-60.16-60.16 217.173-217.173 404.907 405.333-60.16 60.16z" /> +<glyph unicode="" d="M512 328.534l158.293-115.2-60.587 186.027 158.293 112.64h-194.133l-61.867 192-61.867-192h-194.133l158.293-112.64-60.587-186.027z" /> +<glyph unicode="" d="M511.573 853.334c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM692.48 170.667l-180.48 108.8-180.48-108.8 47.787 205.227-159.147 137.813 209.92 17.92 81.92 193.707 81.92-193.28 209.92-17.92-159.147-137.813 47.787-205.653z" /> +<glyph unicode="" d="M853.333 768h-682.667v-85.333h682.667v85.333zM896 341.334v85.333l-42.667 213.333h-682.667l-42.667-213.333v-85.333h42.667v-256h426.667v256h170.667v-256h85.333v256h42.667zM512 170.667h-256v170.667h256v-170.667z" /> +<glyph unicode="" d="M597.333 213.334h-426.667v-85.333h426.667v85.333zM853.333 554.667h-682.667v-85.333h682.667v85.333zM170.667 298.667h682.667v85.333h-682.667v-85.333zM170.667 725.334v-85.333h682.667v85.333h-682.667z" /> +<glyph unicode="" d="M704 426.667c58.88 0 106.24 47.787 106.24 106.667s-47.36 106.667-106.24 106.667c-58.88 0-106.667-47.787-106.667-106.667s47.787-106.667 106.667-106.667zM384 469.334c70.827 0 127.573 57.173 127.573 128s-56.747 128-127.573 128c-70.827 0-128-57.173-128-128s57.173-128 128-128zM704 341.334c-78.080 0-234.667-39.253-234.667-117.333v-96h469.333v96c0 78.080-156.587 117.333-234.667 117.333zM384 384c-99.413 0-298.667-49.92-298.667-149.333v-106.667h298.667v96c0 36.267 14.080 99.84 101.12 148.053-37.12 7.68-72.96 11.947-101.12 11.947z" /> +<glyph unicode="" d="M298.24 469.334l-170.24-170.667 170.24-170.667v128h299.093v85.333h-299.093v128zM896 554.667l-170.24 170.667v-128h-299.093v-85.333h299.093v-128l170.24 170.667z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM277.333 554.667l149.333 149.333 149.333-149.333h-106.667v-170.667h-85.333v170.667h-106.667zM746.667 298.667l-149.333-149.333-149.333 149.333h106.667v170.667h85.333v-170.667h106.667z" /> +<glyph unicode="" d="M682.667 212.907v299.093h-85.333v-299.093h-128l170.667-170.24 170.667 170.24h-128zM384 810.667l-170.667-170.24h128v-299.093h85.333v299.093h128l-170.667 170.24z" /> +<glyph unicode="" d="M512 234.667l170.667 170.667h-128v384h-85.333v-384h-128l170.667-170.667zM896 789.334h-256v-84.907h256v-598.613h-768v598.613h256v84.907h-256c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M42.667 554.667h85.333v85.333h-85.333v-85.333zM42.667 384h85.333v85.333h-85.333v-85.333zM42.667 725.334h85.333v85.333c-46.933 0-85.333-38.4-85.333-85.333zM384 42.667h85.333v85.333h-85.333v-85.333zM42.667 213.334h85.333v85.333h-85.333v-85.333zM128 42.667v85.333h-85.333c0-46.933 38.4-85.333 85.333-85.333zM896 810.667h-341.333v-256h426.667v170.667c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h85.333v85.333h-85.333v-85.333zM384 725.334h85.333v85.333h-85.333v-85.333zM213.333 42.667h85.333v85.333h-85.333v-85.333zM213.333 725.334h85.333v85.333h-85.333v-85.333zM896 42.667c46.933 0 85.333 38.4 85.333 85.333h-85.333v-85.333zM896 384h85.333v85.333h-85.333v-85.333zM554.667 42.667h85.333v85.333h-85.333v-85.333zM725.333 42.667h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 128h-768v597.333h426.667v-170.667h341.333v-426.667z" /> +<glyph unicode="" d="M768 810.667v-85.333h-85.333v85.333h-341.333v-85.333h-85.333v85.333h-85.333v-768h85.333v85.333h85.333v-85.333h341.333v85.333h85.333v-85.333h85.333v768h-85.333zM341.333 213.334h-85.333v85.333h85.333v-85.333zM341.333 384h-85.333v85.333h85.333v-85.333zM341.333 554.667h-85.333v85.333h85.333v-85.333zM768 213.334h-85.333v85.333h85.333v-85.333zM768 384h-85.333v85.333h85.333v-85.333zM768 554.667h-85.333v85.333h85.333v-85.333z" /> +<glyph unicode="" d="M640 810.667h-384c-35.413 0-65.707-21.333-78.507-52.053l-128.853-300.8c-3.84-9.813-5.973-20.053-5.973-31.147v-81.493l0.427-0.427-0.427-3.413c0-46.933 38.4-85.333 85.333-85.333h269.227l-40.533-194.987-1.28-13.653c0-17.493 7.253-33.707 18.773-45.227l45.227-44.8 281.173 281.173c15.36 15.36 24.747 36.693 24.747 60.16v426.667c0 46.933-38.4 85.333-85.333 85.333zM810.667 810.667v-512h170.667v512h-170.667z" /> +<glyph unicode="" d="M42.667 42.667h170.667v512h-170.667v-512zM981.333 512c0 46.933-38.4 85.333-85.333 85.333h-269.227l40.533 194.987 1.28 13.653c0 17.493-7.253 33.707-18.773 45.227l-45.227 44.8-280.747-281.173c-15.787-15.36-25.173-36.693-25.173-60.16v-426.667c0-46.933 38.4-85.333 85.333-85.333h384c35.413 0 65.707 21.333 78.507 52.053l128.853 300.8c3.84 9.813 5.973 20.053 5.973 31.147v81.493l-0.427 0.427 0.427 3.413z" /> +<glyph unicode="" d="M512 682.667c0 23.467-19.2 42.667-42.667 42.667h-221.013l28.16 135.68 0.853 9.813c0 13.227-5.547 25.173-14.080 34.133l-33.707 33.707-210.773-210.773c-11.52-11.52-18.773-27.733-18.773-45.227v-277.333c0-35.413 28.587-64 64-64h288c26.453 0 49.067 16.213 58.88 38.827l96.427 225.707c2.987 7.253 4.693 15.36 4.693 23.467v53.333zM960 512h-288c-26.453 0-49.067-16.213-58.88-38.827l-96.427-225.707c-2.987-7.253-4.693-15.36-4.693-23.467v-53.333c0-23.467 19.2-42.667 42.667-42.667h221.013l-28.16-135.68-0.853-10.24c0-13.227 5.547-25.173 14.080-34.133l33.707-33.28 210.773 210.773c11.52 11.52 18.773 27.733 18.773 45.227v277.333c0 35.413-28.587 64-64 64z" /> +<glyph unicode="" d="M128 554.667h597.333v85.333h-597.333v-85.333zM128 384h597.333v85.333h-597.333v-85.333zM128 213.334h597.333v85.333h-597.333v-85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333zM810.667 640v-85.333h85.333v85.333h-85.333zM810.667 384h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M810.667 810.667h-42.667v85.333h-85.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.36 0-84.907-38.4-84.907-85.333l-0.427-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-597.333v469.333h597.333v-469.333zM298.667 512h213.333v-213.333h-213.333z" /> +<glyph unicode="" d="M813.653 728.32l-60.16-60.16c61.44-61.867 99.84-147.2 99.84-241.493 0-188.587-152.747-341.333-341.333-341.333s-341.333 152.747-341.333 341.333c0 174.080 130.133 317.44 298.667 338.347v-86.187c-121.173-20.48-213.333-125.44-213.333-252.16 0-141.227 114.773-256 256-256s256 114.773 256 256c0 70.827-28.587 134.827-75.093 180.907l-60.16-60.16c30.72-31.147 49.92-73.813 49.92-120.747 0-94.293-76.373-170.667-170.667-170.667s-170.667 76.373-170.667 170.667c0 79.36 54.613 145.493 128 164.693v-91.307c-25.6-14.933-42.667-41.813-42.667-73.387 0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333c0 31.573-17.067 58.88-42.667 73.387v353.28h-42.667c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667c0 117.76-47.787 224.427-125.013 301.653z" /> +<glyph unicode="" d="M549.12 295.68l-108.373 107.093 1.28 1.28c74.24 82.773 127.147 177.92 158.293 278.613h125.013v85.333h-298.667v85.333h-85.333v-85.333h-298.667v-84.907h476.587c-28.587-82.347-73.813-160.427-135.253-228.693-39.68 43.947-72.533 92.16-98.56 142.933h-85.333c31.147-69.547 73.813-135.253 127.147-194.56l-217.173-214.187 60.587-60.587 213.333 213.333 132.693-132.693 32.427 87.040zM789.333 512h-85.333l-192-512h85.333l47.787 128h202.667l48.213-128h85.333l-192 512zM677.547 213.334l69.12 184.747 69.12-184.747h-138.24z" /> +<glyph unicode="" d="M682.667 170.667l97.707 97.707-208.213 208.213-170.667-170.667-316.16 316.587 60.16 60.16 256-256 170.667 170.667 268.8-268.373 97.707 97.707v-256z" /> +<glyph unicode="" d="M938.667 426.667l-170.667 170.667v-128h-640v-85.333h640v-128z" /> +<glyph unicode="" d="M682.667 682.667l97.707-97.707-208.213-208.213-170.667 170.667-316.16-316.587 60.16-60.16 256 256 170.667-170.667 268.8 268.373 97.707-97.707v256z" /> +<glyph unicode="" d="M725.333 810.667h-426.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-682.667 298.667 128 298.667-128v682.667c0 46.933-38.4 85.333-85.333 85.333zM725.333 170.667l-213.333 93.013-213.333-93.013v554.667h426.667v-554.667z" /> +<glyph unicode="" d="M725.333 810.667h-426.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-682.667 298.667 128 298.667-128v682.667c0 46.933-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M512 896l-384-170.667v-256c0-236.8 163.84-458.24 384-512 220.16 53.76 384 275.2 384 512v256l-384 170.667zM426.667 213.334l-170.667 170.667 60.16 60.16 110.507-110.080 281.173 281.173 60.16-60.587-341.333-341.333z" /> +<glyph unicode="" d="M853.333 384h-725.333c-23.467 0-42.667-19.2-42.667-42.667v-256c0-23.467 19.2-42.667 42.667-42.667h725.333c23.467 0 42.667 19.2 42.667 42.667v256c0 23.467-19.2 42.667-42.667 42.667zM853.333 810.667h-725.333c-23.467 0-42.667-19.2-42.667-42.667v-256c0-23.467 19.2-42.667 42.667-42.667h725.333c23.467 0 42.667 19.2 42.667 42.667v256c0 23.467-19.2 42.667-42.667 42.667z" /> +<glyph unicode="" d="M170.667 170.667h128v554.667h-128v-554.667zM768 725.334v-554.667h128v554.667h-128zM341.333 170.667h384v554.667h-384v-554.667z" /> +<glyph unicode="" d="M298.667 128h426.667v640h-426.667v-640zM85.333 213.334h170.667v469.333h-170.667v-469.333zM768 682.667v-469.333h170.667v469.333h-170.667z" /> +<glyph unicode="" d="M426.667 170.667h213.333v554.667h-213.333v-554.667zM170.667 170.667h213.333v554.667h-213.333v-554.667zM682.667 725.334v-554.667h213.333v554.667h-213.333z" /> +<glyph unicode="" d="M85.333 42.667h810.667v128h-810.667v-128zM853.333 597.334h-725.333c-23.467 0-42.667-19.2-42.667-42.667v-256c0-23.467 19.2-42.667 42.667-42.667h725.333c23.467 0 42.667 19.2 42.667 42.667v256c0 23.467-19.2 42.667-42.667 42.667zM85.333 810.667v-128h810.667v128h-810.667z" /> +<glyph unicode="" d="M170.667 298.667h725.333v85.333h-725.333v-85.333zM170.667 128h725.333v85.333h-725.333v-85.333zM170.667 469.334h725.333v85.333h-725.333v-85.333zM170.667 725.334v-85.333h725.333v85.333h-725.333z" /> +<glyph unicode="" d="M170.667 341.334h170.667v170.667h-170.667v-170.667zM170.667 128h170.667v170.667h-170.667v-170.667zM170.667 554.667h170.667v170.667h-170.667v-170.667zM384 341.334h512v170.667h-512v-170.667zM384 128h512v170.667h-512v-170.667zM384 725.334v-170.667h512v170.667h-512z" /> +<glyph unicode="" d="M170.667 469.334h213.333v256h-213.333v-256zM170.667 170.667h213.333v256h-213.333v-256zM426.667 170.667h213.333v256h-213.333v-256zM682.667 170.667h213.333v256h-213.333v-256zM426.667 469.334h213.333v256h-213.333v-256zM682.667 725.334v-256h213.333v256h-213.333z" /> +<glyph unicode="" d="M426.667 170.667h213.333v256h-213.333v-256zM170.667 170.667h213.333v554.667h-213.333v-554.667zM682.667 170.667h213.333v256h-213.333v-256zM426.667 725.334v-256h469.333v256h-469.333z" /> +<glyph unicode="" d="M170.667 170.667h725.333v256h-725.333v-256zM170.667 725.334v-256h725.333v256h-725.333z" /> +<glyph unicode="" d="M256 725.334h-128c-23.467 0-42.667-19.2-42.667-42.667v-512c0-23.467 19.2-42.667 42.667-42.667h128c23.467 0 42.667 19.2 42.667 42.667v512c0 23.467-19.2 42.667-42.667 42.667zM853.333 725.334h-128c-23.467 0-42.667-19.2-42.667-42.667v-512c0-23.467 19.2-42.667 42.667-42.667h128c23.467 0 42.667 19.2 42.667 42.667v512c0 23.467-19.2 42.667-42.667 42.667zM554.667 725.334h-128c-23.467 0-42.667-19.2-42.667-42.667v-512c0-23.467 19.2-42.667 42.667-42.667h128c23.467 0 42.667 19.2 42.667 42.667v512c0 23.467-19.2 42.667-42.667 42.667z" /> +<glyph unicode="" d="M512 640c117.76 0 213.333-95.573 213.333-213.333 0-27.733-5.547-53.76-15.36-78.080l124.587-124.587c64.427 53.76 115.2 123.307 146.347 202.667-73.813 187.307-256 320-469.333 320-59.733 0-116.907-10.667-169.813-29.867l92.16-92.16c24.32 9.813 50.347 15.36 78.080 15.36zM85.333 756.48l116.907-116.907c-70.827-55.040-126.293-128.427-159.573-212.907 73.813-187.307 256-320 469.333-320 66.133 0 129.28 12.8 186.88 35.84l17.92-17.92 125.013-124.587 54.187 54.187-756.48 756.48-54.187-54.187zM321.28 520.534l66.133-66.133c-2.133-8.96-3.413-18.347-3.413-27.733 0-70.827 57.173-128 128-128 9.387 0 18.773 1.28 27.733 3.413l66.133-66.133c-28.587-14.080-60.16-22.613-93.867-22.613-117.76 0-213.333 95.573-213.333 213.333 0 33.707 8.533 65.28 22.613 93.867zM505.173 553.814l134.4-134.4 0.853 6.827c0 70.827-57.173 128-128 128l-7.253-0.427z" /> +<glyph unicode="" d="M512 746.667c-213.333 0-395.52-132.693-469.333-320 73.813-187.307 256-320 469.333-320s395.52 132.693 469.333 320c-73.813 187.307-256 320-469.333 320zM512 213.334c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333zM512 554.667c-70.827 0-128-57.173-128-128s57.173-128 128-128 128 57.173 128 128-57.173 128-128 128z" /> +<glyph unicode="" d="M853.333 682.667h-93.013c4.693 13.227 7.68 27.733 7.68 42.667 0 70.827-57.173 128-128 128-44.8 0-83.627-23.040-106.667-57.6l-21.333-28.587-21.333 29.013c-23.040 34.133-61.867 57.173-106.667 57.173-70.827 0-128-57.173-128-128 0-14.933 2.987-29.44 7.68-42.667h-93.013c-47.36 0-84.907-37.973-84.907-85.333l-0.427-469.333c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v469.333c0 47.36-37.973 85.333-85.333 85.333zM640 768c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM384 768c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM853.333 128h-682.667v85.333h682.667v-85.333zM853.333 341.334h-682.667v256h216.747l-88.747-120.747 69.12-49.92 144.213 196.267 144.213-196.267 69.12 49.92-88.747 120.747h216.747v-256z" /> +<glyph unicode="" d="M853.333 853.334h-682.667c-47.36 0-85.333-37.973-85.333-85.333v-469.333c0-47.36 37.973-85.333 85.333-85.333h170.667v-213.333l170.667 85.333 170.667-85.333v213.333h170.667c47.36 0 85.333 37.973 85.333 85.333v469.333c0 47.36-37.973 85.333-85.333 85.333zM853.333 298.667h-682.667v85.333h682.667v-85.333zM853.333 512h-682.667v256h682.667v-256z" /> +<glyph unicode="" d="M853.333 682.667h-128v85.333c0 47.36-37.973 85.333-85.333 85.333h-256c-47.36 0-85.333-37.973-85.333-85.333v-85.333h-128c-47.36 0-85.333-37.973-85.333-85.333v-469.333c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v469.333c0 47.36-37.973 85.333-85.333 85.333zM384 768h256v-85.333h-256v85.333zM853.333 128h-682.667v85.333h682.667v-85.333zM853.333 341.334h-682.667v256h128v-85.333h85.333v85.333h256v-85.333h85.333v85.333h128v-256z" /> +<glyph unicode="" d="M853.333 682.667h-170.667v85.333c0 47.36-37.973 85.333-85.333 85.333h-170.667c-47.36 0-85.333-37.973-85.333-85.333v-85.333h-170.667c-47.36 0-84.907-37.973-84.907-85.333l-0.427-469.333c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v469.333c0 47.36-37.973 85.333-85.333 85.333zM597.333 682.667h-170.667v85.333h170.667v-85.333z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM554.667 213.334h-85.333v85.333h85.333v-85.333zM554.667 384h-85.333v256h85.333v-256z" /> +<glyph unicode="" d="M42.667 42.667h938.667l-469.333 810.667-469.333-810.667zM554.667 170.667h-85.333v85.333h85.333v-85.333zM554.667 341.334h-85.333v170.667h85.333v-170.667z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 234.667c-106.24 0-192 85.76-192 192s85.76 192 192 192 192-85.76 192-192-85.76-192-192-192zM512 469.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667z" /> +<glyph unicode="" d="M810.667 768h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-512c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM469.333 469.334h-64v21.333h-85.333v-128h85.333v21.333h64v-42.667c0-23.467-19.2-42.667-42.667-42.667h-128c-23.467 0-42.667 19.2-42.667 42.667v170.667c0 23.467 19.2 42.667 42.667 42.667h128c23.467 0 42.667-19.2 42.667-42.667v-42.667zM768 469.334h-64v21.333h-85.333v-128h85.333v21.333h64v-42.667c0-23.467-19.2-42.667-42.667-42.667h-128c-23.467 0-42.667 19.2-42.667 42.667v170.667c0 23.467 19.2 42.667 42.667 42.667h128c23.467 0 42.667-19.2 42.667-42.667v-42.667z" /> +<glyph unicode="" d="M426.667 85.334h170.667v682.667h-170.667v-682.667zM170.667 85.334h170.667v341.333h-170.667v-341.333zM682.667 554.667v-469.333h170.667v469.333h-170.667z" /> +<glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM640 554.667h-170.667v-85.333h170.667v-85.333h-170.667v-85.333h170.667v-85.333h-256v426.667h256v-85.333z" /> +<glyph unicode="" d="M170.667 170.667l362.667 256-362.667 256v-512zM554.667 682.667v-512l362.667 256-362.667 256z" /> +<glyph unicode="" d="M469.333 170.667v512l-362.667-256 362.667-256zM490.667 426.667l362.667-256v512l-362.667-256z" /> +<glyph unicode="" d="M640 618.667v234.667h-256v-234.667l128-128 128 128zM320 554.667h-234.667v-256h234.667l128 128-128 128zM384 234.667v-234.667h256v234.667l-128 128-128-128zM704 554.667l-128-128 128-128h234.667v256h-234.667z" /> +<glyph unicode="" d="M725.333 85.334c-12.373 0-23.893 2.56-32.427 6.4-30.293 15.787-51.627 37.547-72.96 101.547-21.76 66.56-62.72 97.707-101.973 128-33.707 26.027-68.693 52.907-98.987 107.947-22.613 40.96-34.987 85.76-34.987 125.44 0 119.467 93.867 213.333 213.333 213.333s213.333-93.867 213.333-213.333h85.333c0 167.68-130.987 298.667-298.667 298.667s-298.667-130.987-298.667-298.667c0-53.76 16.213-113.067 45.653-166.4 38.827-70.4 84.48-105.813 121.6-134.4 34.56-26.453 59.307-45.653 72.96-87.467 25.6-77.653 58.453-121.173 116.48-151.467 21.76-9.813 45.653-14.933 69.973-14.933 94.293 0 170.667 76.373 170.667 170.667h-85.333c0-46.933-38.4-85.333-85.333-85.333zM325.973 826.027l-60.587 60.587c-84.907-84.907-137.387-202.24-137.387-331.947s52.48-247.040 137.387-331.947l60.16 60.16c-69.12 69.547-112.213 165.547-112.213 271.787s43.093 202.24 112.64 271.36zM490.667 554.667c0-58.88 47.787-106.667 106.667-106.667s106.667 47.787 106.667 106.667-47.787 106.667-106.667 106.667-106.667-47.787-106.667-106.667z" /> +<glyph unicode="" d="M810.667 768h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-512c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM469.333 298.667h-64v85.333h-85.333v-85.333h-64v256h64v-106.667h85.333v106.667h64v-256zM768 341.334c0-23.467-19.2-42.667-42.667-42.667h-32v-64h-64v64h-32c-23.467 0-42.667 19.2-42.667 42.667v170.667c0 23.467 19.2 42.667 42.667 42.667h128c23.467 0 42.667-19.2 42.667-42.667v-170.667zM618.667 362.667h85.333v128h-85.333v-128z" /> +<glyph unicode="" d="M512 768v128l-170.667-170.667 170.667-170.667v128c141.227 0 256-114.773 256-256 0-43.093-10.667-84.053-29.867-119.467l62.293-62.293c33.28 52.48 52.907 114.773 52.907 181.76 0 188.587-152.747 341.333-341.333 341.333zM512 170.667c-141.227 0-256 114.773-256 256 0 43.093 10.667 84.053 29.867 119.467l-62.293 62.293c-33.28-52.48-52.907-114.773-52.907-181.76 0-188.587 152.747-341.333 341.333-341.333v-128l170.667 170.667-170.667 170.667v-128z" /> +<glyph unicode="" d="M512 341.334c70.827 0 127.573 57.173 127.573 128l0.427 256c0 70.827-57.173 128-128 128s-128-57.173-128-128v-256c0-70.827 57.173-128 128-128zM460.8 729.6c0 28.16 23.040 51.2 51.2 51.2s51.2-23.040 51.2-51.2l-0.427-264.533c0-28.16-22.613-51.2-50.773-51.2s-51.2 23.040-51.2 51.2v264.533zM738.133 469.334c0-128-108.373-217.6-226.133-217.6s-226.133 89.6-226.133 217.6h-72.533c0-145.493 116.053-265.813 256-286.72v-139.947h85.333v139.947c139.947 20.48 256 140.8 256 286.72h-72.533z" /> +<glyph unicode="" d="M810.667 469.334h-72.533c0-31.573-6.827-61.013-18.347-87.467l52.48-52.48c23.893 41.813 38.4 89.173 38.4 139.947zM639.147 462.080c0 2.56 0.853 4.693 0.853 7.253v256c0 70.827-57.173 128-128 128s-128-57.173-128-128v-7.68l255.147-255.573zM182.187 810.667l-54.187-54.187 256.427-256.427v-30.72c0-70.827 56.747-128 127.573-128 9.387 0 18.773 1.28 27.733 3.413l70.827-70.827c-30.293-14.080-64-22.187-98.56-22.187-117.76 0-226.133 89.6-226.133 217.6h-72.533c0-145.493 116.053-265.813 256-286.72v-139.947h85.333v139.947c38.827 5.547 75.52 19.2 108.373 38.4l178.773-178.347 54.187 54.187-713.813 713.813z" /> +<glyph unicode="" d="M512 341.334c70.827 0 127.573 57.173 127.573 128l0.427 256c0 70.827-57.173 128-128 128s-128-57.173-128-128v-256c0-70.827 57.173-128 128-128zM738.133 469.334c0-128-108.373-217.6-226.133-217.6s-226.133 89.6-226.133 217.6h-72.533c0-145.493 116.053-265.813 256-286.72v-139.947h85.333v139.947c139.947 20.48 256 140.8 256 286.72h-72.533z" /> +<glyph unicode="" d="M768 768l85.333-170.667h-128l-85.333 170.667h-85.333l85.333-170.667h-128l-85.333 170.667h-85.333l85.333-170.667h-128l-85.333 170.667h-42.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v597.333h-170.667z" /> +<glyph unicode="" d="M170.667 682.667h-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333v85.333h-597.333v597.333zM853.333 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM810.667 469.334h-170.667v-170.667h-85.333v170.667h-170.667v85.333h170.667v170.667h85.333v-170.667h170.667v-85.333z" /> +<glyph unicode="" d="M170.667 682.667h-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333v85.333h-597.333v597.333zM853.333 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM810.667 469.334h-426.667v85.333h426.667v-85.333zM640 298.667h-256v85.333h256v-85.333zM810.667 640h-426.667v85.333h426.667v-85.333z" /> +<glyph unicode="" d="M853.333 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM768 640h-128v-234.667c0-58.88-47.787-106.667-106.667-106.667s-106.667 47.787-106.667 106.667 47.787 106.667 106.667 106.667c24.32 0 46.080-8.107 64-21.76v235.093h170.667v-85.333zM170.667 682.667h-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333v85.333h-597.333v597.333z" /> +<glyph unicode="" d="M981.333 426.667l-104.107 118.613 14.507 157.013-154.027 34.987-80.64 135.68-145.067-62.293-145.067 62.293-80.64-135.68-154.027-34.56 14.507-157.013-104.107-119.040 104.107-118.613-14.507-157.44 154.027-34.987 80.64-135.68 145.067 62.72 145.067-62.293 80.64 135.68 154.027 34.987-14.507 157.013 104.107 118.613zM554.667 213.334h-85.333v85.333h85.333v-85.333zM554.667 384h-85.333v256h85.333v-256z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333 0 78.933 26.88 151.467 72.107 209.067l478.293-478.293c-57.6-45.227-130.133-72.107-209.067-72.107zM781.227 217.6l-478.293 478.293c57.6 45.227 130.133 72.107 209.067 72.107 188.587 0 341.333-152.747 341.333-341.333 0-78.933-26.88-151.467-72.107-209.067z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM469.333 256h-85.333v341.333h85.333v-341.333zM640 256h-85.333v341.333h85.333v-341.333z" /> +<glyph unicode="" d="M384 256h85.333v341.333h-85.333v-341.333zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333zM554.667 256h85.333v341.333h-85.333v-341.333z" /> +<glyph unicode="" d="M256 128h170.667v597.333h-170.667v-597.333zM597.333 725.334v-597.333h170.667v597.333h-170.667z" /> +<glyph unicode="" d="M341.333 725.334v-597.333l469.333 298.667z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM426.667 234.667v384l256-192-256-192z" /> +<glyph unicode="" d="M426.667 234.667l256 192-256 192v-384zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" /> +<glyph unicode="" d="M682.667 682.667v85.333c0 47.36-37.973 85.333-85.333 85.333h-170.667c-47.36 0-85.333-37.973-85.333-85.333v-85.333h-256v-554.667c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v554.667h-256zM426.667 768h170.667v-85.333h-170.667v85.333zM384 170.667v384l320-170.667-320-213.333z" /> +<glyph unicode="" d="M597.333 512h-512v-85.333h512v85.333zM597.333 682.667h-512v-85.333h512v85.333zM768 341.334v170.667h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667zM85.333 256h341.333v85.333h-341.333v-85.333z" /> +<glyph unicode="" d="M640 682.667h-512v-85.333h512v85.333zM640 512h-512v-85.333h512v85.333zM128 256h341.333v85.333h-341.333v-85.333zM725.333 682.667v-349.013c-13.227 4.693-27.733 7.68-42.667 7.68-70.827 0-128-57.173-128-128s57.173-128 128-128 128 57.173 128 128v384h128v85.333h-213.333z" /> +<glyph unicode="" d="M170.667 682.667h-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333v85.333h-597.333v597.333zM853.333 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM810.667 469.334h-170.667v-170.667h-85.333v170.667h-170.667v85.333h170.667v170.667h85.333v-170.667h170.667v-85.333z" /> +<glyph unicode="" d="M138.24 676.267c-31.147-11.947-52.907-43.52-52.907-78.933v-512c0-46.933 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 38.4 85.333 85.333v512c0 47.36-37.973 85.333-85.333 85.333h-499.2l352.427 142.507-29.013 70.827-539.307-219.733zM298.667 85.334c-70.827 0-128 57.173-128 128s57.173 128 128 128 128-57.173 128-128-57.173-128-128-128zM853.333 426.667h-85.333v85.333h-85.333v-85.333h-512v170.667h682.667v-170.667z" /> +<glyph unicode="" d="M896 725.334v-597.333h85.333v597.333h-85.333zM725.333 128h85.333v597.333h-85.333v-597.333zM597.333 725.334h-512c-23.467 0-42.667-19.2-42.667-42.667v-512c0-23.467 19.2-42.667 42.667-42.667h512c23.467 0 42.667 19.2 42.667 42.667v512c0 23.467-19.2 42.667-42.667 42.667zM341.333 608c52.907 0 96-43.093 96-96s-43.093-96-96-96-96 43.093-96 96 43.093 96 96 96zM533.333 213.334h-384v32c0 64 128 96 192 96s192-32 192-96v-32z" /> +<glyph unicode="" d="M298.667 640h426.667v-128l170.667 170.667-170.667 170.667v-128h-512v-256h85.333v170.667zM725.333 213.334h-426.667v128l-170.667-170.667 170.667-170.667v128h512v256h-85.333v-170.667zM554.667 298.667v256h-42.667l-85.333-42.667v-42.667h64v-170.667h64z" /> +<glyph unicode="" d="M298.667 640h426.667v-128l170.667 170.667-170.667 170.667v-128h-512v-256h85.333v170.667zM725.333 213.334h-426.667v128l-170.667-170.667 170.667-170.667v128h512v256h-85.333v-170.667z" /> +<glyph unicode="" d="M512 725.334v170.667l-213.333-213.333 213.333-213.333v170.667c141.227 0 256-114.773 256-256s-114.773-256-256-256-256 114.773-256 256h-85.333c0-188.587 152.747-341.333 341.333-341.333s341.333 152.747 341.333 341.333-152.747 341.333-341.333 341.333z" /> +<glyph unicode="" d="M451.84 547.414l-221.013 220.587-60.16-60.16 220.587-220.587 60.587 60.16zM618.667 768l87.040-87.040-535.040-535.467 60.16-60.16 535.467 535.040 87.040-87.040v234.667h-234.667zM632.747 366.507l-60.16-60.16 133.547-133.547-87.467-87.467h234.667v234.667l-87.040-87.040-133.547 133.547z" /> +<glyph unicode="" d="M256 170.667l362.667 256-362.667 256v-512zM682.667 682.667v-512h85.333v512h-85.333z" /> +<glyph unicode="" d="M256 682.667h85.333v-512h-85.333zM405.333 426.667l362.667-256v512z" /> +<glyph unicode="" d="M336.213 794.027l-54.613 65.28-196.267-164.267 55.040-65.28 195.84 164.267zM938.667 694.614l-196.267 164.693-55.040-65.28 196.267-164.693 55.040 65.28zM512 768c-212.053 0-384-171.947-384-384s171.52-384 384-384c212.053 0 384 171.947 384 384s-171.947 384-384 384zM512 85.334c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667zM384 469.334h154.88l-154.88-179.2v-76.8h256v85.333h-154.88l154.88 179.2v76.8h-256v-85.333z" /> +<glyph unicode="" d="M256 682.667h512v-512h-512z" /> +<glyph unicode="" d="M853.333 768h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM170.667 426.667h170.667v-85.333h-170.667v85.333zM597.333 170.667h-426.667v85.333h426.667v-85.333zM853.333 170.667h-170.667v85.333h170.667v-85.333zM853.333 341.334h-426.667v85.333h426.667v-85.333z" /> +<glyph unicode="" d="M853.333 768h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM331.093 245.76l-60.16-60.16c-66.987 66.133-100.267 153.6-100.267 241.067s33.28 174.933 99.84 241.493l60.16-60.16c-49.493-50.347-74.667-115.627-74.667-181.333s25.173-130.987 75.093-180.907zM512 256c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667 170.667-76.373 170.667-170.667-76.373-170.667-170.667-170.667zM753.493 185.174l-60.16 60.16c49.493 50.347 74.667 115.627 74.667 181.333s-25.173 130.987-75.093 180.907l60.16 60.16c66.987-66.133 100.267-153.6 100.267-241.067s-33.28-174.933-99.84-241.493zM512 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M469.333 213.334c0-23.467 19.2-42.667 42.667-42.667s42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667zM469.333 810.667v-170.667h85.333v81.92c144.64-20.907 256-144.64 256-295.253 0-165.12-133.547-298.667-298.667-298.667s-298.667 133.547-298.667 298.667c0 71.68 25.173 137.387 67.413 188.587l231.253-231.253 60.16 60.16-290.133 290.133v-0.853c-93.44-69.973-154.027-180.907-154.027-306.773 0-212.053 171.52-384 384-384 212.053 0 384 171.947 384 384s-171.947 384-384 384h-42.667zM768 426.667c0 23.467-19.2 42.667-42.667 42.667s-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667zM256 426.667c0-23.467 19.2-42.667 42.667-42.667s42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667z" /> +<glyph unicode="" d="M170.667 682.667h-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333v85.333h-597.333v597.333zM853.333 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM512 320v384l256-192-256-192z" /> +<glyph unicode="" d="M896 661.334l-170.667-170.667v149.333c0 23.467-19.2 42.667-42.667 42.667h-263.68l477.013-477.013v455.68zM139.52 853.334l-54.187-54.187 116.48-116.48h-31.147c-23.467 0-42.667-19.2-42.667-42.667v-426.667c0-23.467 19.2-42.667 42.667-42.667h512c8.96 0 16.64 3.413 23.040 7.68l136.107-135.68 54.187 54.187-756.48 756.48z" /> +<glyph unicode="" d="M725.333 490.667v149.333c0 23.467-19.2 42.667-42.667 42.667h-512c-23.467 0-42.667-19.2-42.667-42.667v-426.667c0-23.467 19.2-42.667 42.667-42.667h512c23.467 0 42.667 19.2 42.667 42.667v149.333l170.667-170.667v469.333l-170.667-170.667z" /> +<glyph unicode="" d="M789.333 426.667c0 75.52-43.52 140.373-106.667 171.947v-343.467c63.147 31.147 106.667 96 106.667 171.52zM213.333 554.667v-256h170.667l213.333-213.333v682.667l-213.333-213.333h-170.667z" /> +<glyph unicode="" d="M298.667 554.667v-256h170.667l213.333-213.333v682.667l-213.333-213.333h-170.667z" /> +<glyph unicode="" d="M704 426.667c0 75.52-43.52 140.373-106.667 171.947v-94.293l104.533-104.533c1.28 8.533 2.133 17.493 2.133 26.88zM810.667 426.667c0-40.107-8.533-77.653-23.040-112.64l64.427-64.427c28.16 52.907 43.947 113.067 43.947 177.067 0 182.613-127.573 335.36-298.667 374.187v-87.893c123.307-36.693 213.333-151.040 213.333-286.293zM182.187 810.667l-54.187-54.187 201.813-201.813h-201.813v-256h170.667l213.333-213.333v287.147l181.333-181.333c-28.587-22.187-60.587-39.68-96-50.347v-87.893c58.88 13.227 112.213 40.533 157.44 77.227l87.040-87.467 54.187 54.187-713.813 713.813zM512 768l-89.173-89.173 89.173-89.173v178.347z" /> +<glyph unicode="" d="M128 554.667v-256h170.667l213.333-213.333v682.667l-213.333-213.333h-170.667zM704 426.667c0 75.52-43.52 140.373-106.667 171.947v-343.467c63.147 31.147 106.667 96 106.667 171.52zM597.333 800.854v-87.893c123.307-36.693 213.333-151.040 213.333-286.293s-90.027-249.6-213.333-286.293v-87.893c171.093 38.827 298.667 191.573 298.667 374.187s-127.573 335.36-298.667 374.187z" /> +<glyph unicode="" d="M853.333 768h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM640 170.667h-469.333v170.667h469.333v-170.667zM640 384h-469.333v170.667h469.333v-170.667zM853.333 170.667h-170.667v384h170.667v-384z" /> +<glyph unicode="" d="M512 640v170.667h-426.667v-768h853.333v597.333h-426.667zM256 128h-85.333v85.333h85.333v-85.333zM256 298.667h-85.333v85.333h85.333v-85.333zM256 469.334h-85.333v85.333h85.333v-85.333zM256 640h-85.333v85.333h85.333v-85.333zM426.667 128h-85.333v85.333h85.333v-85.333zM426.667 298.667h-85.333v85.333h85.333v-85.333zM426.667 469.334h-85.333v85.333h85.333v-85.333zM426.667 640h-85.333v85.333h85.333v-85.333zM853.333 128h-341.333v85.333h85.333v85.333h-85.333v85.333h85.333v85.333h-85.333v85.333h341.333v-426.667zM768 469.334h-85.333v-85.333h85.333v85.333zM768 298.667h-85.333v-85.333h85.333v85.333z" /> +<glyph unicode="" d="M512 554.667c-68.267 0-134.4-10.667-196.267-30.72v-132.267c0-16.64-9.813-31.573-23.893-38.4-41.813-20.907-79.787-47.787-113.493-78.933-7.68-7.68-18.347-11.947-29.867-11.947-11.947 0-22.613 4.693-30.293 12.373l-105.813 105.813c-7.68 7.253-12.373 17.92-12.373 29.867s4.693 22.613 12.373 30.293c130.133 123.307 305.92 199.253 499.627 199.253s369.493-75.947 499.627-199.253c7.68-7.68 12.373-18.347 12.373-30.293s-4.693-22.613-12.373-30.293l-105.813-105.813c-7.68-7.68-18.347-12.373-30.293-12.373-11.52 0-22.187 4.693-29.867 11.947-33.707 31.573-72.107 58.027-113.92 78.933-14.080 6.827-23.893 21.333-23.893 38.4v132.267c-61.44 20.48-127.573 31.147-195.84 31.147z" /> +<glyph unicode="" d="M384 725.334v-85.333h281.173l-494.507-494.507 60.16-60.16 494.507 494.507v-281.173h85.333v426.667z" /> +<glyph unicode="" d="M725.333 67.84l60.16 60.16-145.493 145.493-60.16-60.16 145.493-145.493zM320 597.334h149.333v-238.507l-230.827-230.827 60.16-60.16 256 256v273.493h149.333l-192 192-192-192z" /> +<glyph unicode="" d="M835.84 640l-323.84-323.84-238.507 238.507h195.84v85.333h-341.333v-341.333h85.333v195.84l298.667-298.667 384 384z" /> +<glyph unicode="" d="M853.333 707.84l-60.16 60.16-494.507-494.507v281.173h-85.333v-426.667h426.667v85.333h-281.173z" /> +<glyph unicode="" d="M597.333 768l97.707-97.707-122.88-122.88 60.587-60.587 122.88 122.88 97.707-97.707v256zM426.667 768h-256v-256l97.707 97.707 200.96-200.533v-323.84h85.333v358.827l-225.707 226.133z" /> +<glyph unicode="" d="M282.453 478.294c61.44-120.747 160.427-219.307 281.173-281.173l93.867 93.867c11.52 11.52 28.587 15.36 43.52 10.24 47.787-15.787 99.413-24.32 152.32-24.32 23.467 0 42.667-19.2 42.667-42.667v-148.907c0-23.467-19.2-42.667-42.667-42.667-400.64 0-725.333 324.693-725.333 725.333 0 23.467 19.2 42.667 42.667 42.667h149.333c23.467 0 42.667-19.2 42.667-42.667 0-53.333 8.533-104.533 24.32-152.32 4.693-14.933 1.28-31.573-10.667-43.52l-93.867-93.867z" /> +<glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM256 554.667h512v-85.333h-512v85.333zM597.333 341.334h-341.333v85.333h341.333v-85.333zM768 597.334h-512v85.333h512v-85.333z" /> +<glyph unicode="" d="M213.333 384h597.333v85.333h-597.333v-85.333zM128 213.334h597.333v85.333h-597.333v-85.333zM298.667 640v-85.333h597.333v85.333h-597.333z" /> +<glyph unicode="" d="M938.24 768c0 46.933-37.973 85.333-84.907 85.333h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h597.333l170.667-170.667-0.427 768zM768 341.334h-512v85.333h512v-85.333zM768 469.334h-512v85.333h512v-85.333zM768 597.334h-512v85.333h512v-85.333z" /> +<glyph unicode="" d="M853.333 938.667h-682.667v-85.333h682.667v85.333zM170.667-85.333h682.667v85.333h-682.667v-85.333zM853.333 768h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM512 650.667c52.907 0 96-43.093 96-96s-43.093-96-96-96-96 43.093-96 96 43.093 96 96 96zM725.333 213.334h-426.667v64c0 71.253 142.080 106.667 213.333 106.667s213.333-35.413 213.333-106.667v-64z" /> +<glyph unicode="" d="M725.333 810.667h-42.667v-213.333h42.667v213.333zM640 725.334h-85.333v42.667h85.333v42.667h-128v-128h85.333v-42.667h-85.333v-42.667h128v128zM768 810.667v-213.333h42.667v85.333h85.333v128h-128zM853.333 725.334h-42.667v42.667h42.667v-42.667zM853.333 277.334c-53.333 0-104.533 8.533-152.32 24.32-14.933 4.693-31.573 1.28-43.093-10.24l-93.867-93.867c-120.747 61.44-219.733 160-281.173 281.173l93.867 94.293c11.52 11.093 14.933 27.733 10.24 42.667-15.787 47.787-24.32 98.987-24.32 152.32 0 23.467-19.2 42.667-42.667 42.667h-149.333c-23.467 0-42.667-19.2-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.467 0 42.667 19.2 42.667 42.667v149.333c0 23.467-19.2 42.667-42.667 42.667z" /> +<glyph unicode="" d="M512 128c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM256 896c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM256 640c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM256 384c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 725.334c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333zM512 384c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 384c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 640c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM512 640c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM512 896c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333 0 78.933 26.88 151.467 72.107 209.067l478.293-478.293c-57.6-45.227-130.133-72.107-209.067-72.107zM781.227 217.6l-478.293 478.293c57.6 45.227 130.133 72.107 209.067 72.107 188.587 0 341.333-152.747 341.333-341.333 0-78.933-26.88-151.467-72.107-209.067z" /> +<glyph unicode="" d="M853.333 768h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM853.333 597.334l-341.333-213.333-341.333 213.333v85.333l341.333-213.333 341.333 213.333v-85.333z" /> +<glyph unicode="" d="M896 682.667h-85.333v-384h-554.667v-85.333c0-23.467 19.2-42.667 42.667-42.667h469.333l170.667-170.667v640c0 23.467-19.2 42.667-42.667 42.667zM725.333 426.667v384c0 23.467-19.2 42.667-42.667 42.667h-554.667c-23.467 0-42.667-19.2-42.667-42.667v-597.333l170.667 170.667h426.667c23.467 0 42.667 19.2 42.667 42.667z" /> +<glyph unicode="" d="M384 810.667l-170.667-170.24h128v-299.093h85.333v299.093h128l-170.667 170.24zM682.667 212.907v299.093h-85.333v-299.093h-128l170.667-170.24 170.667 170.24h-128z" /> +<glyph unicode="" d="M881.067 48.214l-100.267 100.267-268.8 268.373-151.893 152.32-60.587 60.16-117.333 117.333-54.187-54.187 118.613-118.613c-108.8-133.973-100.693-331.093 23.893-456.107 66.56-66.56 154.027-99.84 241.493-99.84 76.373 0 152.32 25.173 214.613 75.947l115.2-115.2 54.187 54.187-14.933 15.36zM512 102.827c-68.267 0-132.693 26.453-180.907 75.093-48.64 48.64-75.093 112.64-75.093 180.907 0 56.32 18.347 109.653 51.627 153.6l204.373-203.947v-205.653zM512 721.067v-195.413l309.333-309.76c58.453 126.293 35.84 280.32-68.267 384.427l-241.067 241.493-157.867-157.867 60.16-60.16 97.707 97.28z" /> +<glyph unicode="" d="M753.493 600.32l-241.493 241.493-241.493-241.493c-133.12-133.12-133.12-349.44 0-482.56 66.56-66.56 154.027-99.84 241.493-99.84s174.933 33.28 241.493 99.84c133.12 133.12 133.12 349.44 0 482.56zM512 102.827c-68.267 0-132.693 26.453-180.907 75.093-48.64 48.64-75.093 112.64-75.093 180.907s26.453 132.693 75.093 180.907l180.907 181.333v-618.24z" /> +<glyph unicode="" d="M810.667 853.334h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h170.667l128-128 128 128h170.667c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM554.667 170.667h-85.333v85.333h85.333v-85.333zM642.987 501.334l-38.4-39.253c-30.72-31.147-49.92-56.747-49.92-120.747h-85.333v21.333c0 46.933 19.2 89.6 49.92 120.747l52.907 53.76c15.787 15.36 25.173 36.693 25.173 60.16 0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333h-85.333c0 94.293 76.373 170.667 170.667 170.667s170.667-76.373 170.667-170.667c0-37.547-15.36-71.68-39.68-96z" /> +<glyph unicode="" d="M512 661.334c58.88 0 106.667-47.787 106.667-106.667 0-31.573-14.080-59.307-35.413-78.933l154.88-154.88c41.813 79.36 72.533 162.133 72.533 233.813 0 165.12-133.547 298.667-298.667 298.667-84.48 0-160.427-35.413-215.040-91.733l136.107-136.107c19.627 22.187 47.36 35.84 78.933 35.84zM698.453 251.734l-558.933 558.933-54.187-54.187 135.68-135.68c-4.693-21.333-7.68-43.52-7.68-66.133 0-224 298.667-554.667 298.667-554.667s71.253 78.933 144.213 185.6l142.933-142.933 54.187 54.187-154.88 154.88z" /> +<glyph unicode="" d="M512 853.334c-165.12 0-298.667-133.547-298.667-298.667 0-224 298.667-554.667 298.667-554.667s298.667 330.667 298.667 554.667c0 165.12-133.547 298.667-298.667 298.667zM512 448c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667 106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667z" /> +<glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM768 341.334h-512v85.333h512v-85.333zM768 469.334h-512v85.333h512v-85.333zM768 597.334h-512v85.333h512v-85.333z" /> +<glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-768l170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M810.24 725.334c0 46.933-37.973 85.333-84.907 85.333h-298.667l-99.84-99.84 483.84-483.84-0.427 498.347zM155.733 773.12l-54.187-54.187 111.787-111.787v-479.147c0-46.933 38.4-85.333 85.333-85.333h427.093c14.933 0 28.587 4.267 40.96 11.093l80.213-80.213 54.187 54.187-745.387 745.387z" /> +<glyph unicode="" d="M282.453 478.294c61.44-120.747 160.427-219.307 281.173-281.173l93.867 93.867c11.52 11.52 28.587 15.36 43.52 10.24 47.787-15.787 99.413-24.32 152.32-24.32 23.467 0 42.667-19.2 42.667-42.667v-148.907c0-23.467-19.2-42.667-42.667-42.667-400.64 0-725.333 324.693-725.333 725.333 0 23.467 19.2 42.667 42.667 42.667h149.333c23.467 0 42.667-19.2 42.667-42.667 0-53.333 8.533-104.533 24.32-152.32 4.693-14.933 1.28-31.573-10.667-43.52l-93.867-93.867z" /> +<glyph unicode="" d="M749.227 331.094c11.947 29.44 18.773 61.867 18.773 95.573 0 141.227-114.773 256-256 256-33.707 0-66.133-6.827-95.573-18.773l69.12-69.12c8.533 1.28 17.493 2.56 26.453 2.56 94.293 0 170.667-76.373 170.667-170.667 0-8.96-0.853-17.92-2.133-26.88l68.693-68.693zM512 768c188.587 0 341.333-152.747 341.333-341.333 0-57.6-14.933-111.787-40.533-159.573l62.72-62.72c40.107 64.853 63.147 140.8 63.147 222.293 0 235.52-191.147 426.667-426.667 426.667-81.493 0-157.44-23.467-222.293-62.72l62.293-62.293c47.787 25.173 102.4 39.68 160 39.68zM139.52 832l-54.187-54.187 89.6-89.6c-55.893-72.533-89.6-162.987-89.6-261.547 0-157.867 85.76-295.253 212.907-369.067l42.667 73.813c-101.547 59.307-170.24 168.96-170.24 295.253 0 75.093 24.32 144.213 65.28 200.107l61.013-61.44c-25.6-39.68-40.96-87.467-40.96-138.667 0-94.72 51.627-177.067 128-221.44l42.667 74.24c-50.773 29.867-85.333 84.053-85.333 147.2 0 27.733 7.253 53.333 18.773 76.373l67.413-67.413-0.853-8.96c0-46.933 38.4-85.333 85.333-85.333l8.96 0.853 320.853-320.853 54.187 54.187-756.48 756.48z" /> +<glyph unicode="" d="M938.667 810.667h-853.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h853.333c46.933 0 84.907 38.4 84.907 85.333l0.427 597.333c0 46.933-38.4 85.333-85.333 85.333zM341.333 682.667c70.827 0 128-57.173 128-128s-57.173-128-128-128-128 57.173-128 128 57.173 128 128 128zM597.333 170.667h-512v42.667c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-42.667zM761.6 341.334h69.973l64.427-85.333-84.907-84.907c-55.893 41.813-97.28 101.547-116.48 170.24-7.68 27.307-11.947 55.893-11.947 85.333s4.267 58.027 11.947 85.333c19.2 69.12 60.587 128.427 116.48 170.24l84.907-84.907-64.427-85.333h-69.973c-9.387-26.88-14.933-55.467-14.933-85.333s5.547-58.453 14.933-85.333z" /> +<glyph unicode="" d="M896 597.334v42.667l-128-85.333-128 85.333v-42.667l128-85.333 128 85.333zM938.667 810.667h-853.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h853.333c46.933 0 84.907 38.4 84.907 85.333l0.427 597.333c0 46.933-38.4 85.333-85.333 85.333zM341.333 682.667c70.827 0 128-57.173 128-128s-57.173-128-128-128-128 57.173-128 128 57.173 128 128 128zM597.333 170.667h-512v42.667c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-42.667zM938.667 426.667h-341.333v256h341.333v-256z" /> +<glyph unicode="" d="M1011.627 227.414c-130.133 123.307-305.92 199.253-499.627 199.253s-369.493-75.947-499.627-199.253c-7.68-7.68-12.373-18.347-12.373-30.293s4.693-22.613 12.373-30.293l105.813-105.813c7.68-7.68 18.347-12.373 30.293-12.373 11.52 0 22.187 4.693 29.867 11.947 33.707 31.573 72.107 58.027 113.493 78.933 14.080 6.827 23.893 21.333 23.893 38.4v132.267c61.867 20.48 128 31.147 196.267 31.147s134.4-10.667 196.267-30.72v-132.267c0-16.64 9.813-31.573 23.893-38.4 41.813-20.907 79.787-47.787 113.493-78.933 7.68-7.68 18.347-11.947 29.867-11.947 11.947 0 22.613 4.693 30.293 12.373l105.813 105.813c7.68 7.68 12.373 18.347 12.373 30.293 0 11.52-4.693 22.187-12.373 29.867zM902.827 671.574l-60.16 60.16-151.893-151.467 60.16-60.16s147.2 150.187 151.893 151.467zM554.667 853.334h-85.333v-213.333h85.333v213.333zM273.067 520.107l60.16 60.16-151.467 151.893-60.587-60.587c4.693-1.28 151.893-151.467 151.893-151.467z" /> +<glyph unicode="" d="M43.093 640l-0.427-426.667c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333h-768c-46.933 0-84.907-38.4-84.907-85.333zM810.667 640v-426.667h-597.333v426.667h597.333z" /> +<glyph unicode="" d="M725.333 895.574l-426.667 0.427c-46.933 0-84.907-38.4-84.907-85.333v-768c0-46.933 37.973-85.333 84.907-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v768c0 46.933-38.4 84.907-85.333 84.907zM725.333 128h-426.667v597.333h426.667v-597.333z" /> +<glyph unicode="" d="M43.093 640l-0.427-426.667c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333h-768c-46.933 0-84.907-38.4-84.907-85.333zM810.667 640v-426.667h-597.333v426.667h597.333z" /> +<glyph unicode="" d="M725.333 895.574l-426.667 0.427c-46.933 0-84.907-38.4-84.907-85.333v-768c0-46.933 37.973-85.333 84.907-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v768c0 46.933-38.4 84.907-85.333 84.907zM725.333 128h-426.667v597.333h426.667v-597.333z" /> +<glyph unicode="" d="M768 768l-170.667-170.667h128v-298.667c0-46.933-38.4-85.333-85.333-85.333s-85.333 38.4-85.333 85.333v298.667c0 94.293-76.373 170.667-170.667 170.667s-170.667-76.373-170.667-170.667v-298.667h-128l170.667-170.667 170.667 170.667h-128v298.667c0 46.933 38.4 85.333 85.333 85.333s85.333-38.4 85.333-85.333v-298.667c0-94.293 76.373-170.667 170.667-170.667s170.667 76.373 170.667 170.667v298.667h128l-170.667 170.667z" /> +<glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM384 469.334h-85.333v85.333h85.333v-85.333zM554.667 469.334h-85.333v85.333h85.333v-85.333zM725.333 469.334h-85.333v85.333h85.333v-85.333z" /> +<glyph unicode="" d="M789.333 682.667c-129.707 0-234.667-104.96-234.667-234.667 0-56.747 20.053-108.8 53.76-149.333h-192.853c33.707 40.533 53.76 92.587 53.76 149.333 0 129.707-104.96 234.667-234.667 234.667s-234.667-104.96-234.667-234.667 104.96-234.667 234.667-234.667h554.667c129.707 0 234.667 104.96 234.667 234.667s-104.96 234.667-234.667 234.667zM234.667 298.667c-82.347 0-149.333 66.987-149.333 149.333s66.987 149.333 149.333 149.333 149.333-66.987 149.333-149.333-66.987-149.333-149.333-149.333zM789.333 298.667c-82.347 0-149.333 66.987-149.333 149.333s66.987 149.333 149.333 149.333 149.333-66.987 149.333-149.333-66.987-149.333-149.333-149.333z" /> +<glyph unicode="" d="M539.733 512c-34.987 99.413-129.707 170.667-241.067 170.667-141.227 0-256-114.773-256-256s114.773-256 256-256c111.36 0 206.080 71.253 241.067 170.667h185.6v-170.667h170.667v170.667h85.333v170.667h-441.6zM298.667 341.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333z" /> +<glyph unicode="" d="M810.667 810.667h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM725.333 384h-170.667v-170.667h-85.333v170.667h-170.667v85.333h170.667v170.667h85.333v-170.667h170.667v-85.333z" /> +<glyph unicode="" d="M554.667 640h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667v170.667zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM725.333 384h-170.667v-170.667h-85.333v170.667h-170.667v85.333h170.667v170.667h85.333v-170.667h170.667v-85.333z" /> +<glyph unicode="" d="M810.667 384h-256v-256h-85.333v256h-256v85.333h256v256h85.333v-256h256v-85.333z" /> +<glyph unicode="" d="M876.373 715.52l-59.307 71.68c-11.52 14.507-29.013 23.467-49.067 23.467h-512c-20.053 0-37.547-8.96-49.493-23.467l-58.88-71.68c-12.373-14.507-19.627-33.707-19.627-54.187v-533.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v533.333c0 20.48-7.253 39.68-19.627 54.187zM512 192l-234.667 234.667h149.333v85.333h170.667v-85.333h149.333l-234.667-234.667zM218.453 725.334l34.56 42.667h512l40.107-42.667h-586.667z" /> +<glyph unicode="" d="M938.667 810.667h-640c-29.44 0-52.48-14.933-67.84-37.547l-230.827-346.453 230.827-346.027c15.36-22.613 38.4-37.973 67.84-37.973h640c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 273.494l-60.16-60.16-153.173 153.173-153.173-153.173-60.16 60.16 153.173 153.173-153.173 153.173 60.16 60.16 153.173-153.173 153.173 153.173 60.16-60.16-153.173-153.173 153.173-153.173z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM170.667 426.667c0 188.587 152.747 341.333 341.333 341.333 78.933 0 151.467-26.88 209.067-72.107l-478.293-478.293c-45.227 57.6-72.107 130.133-72.107 209.067zM512 85.334c-78.933 0-151.467 26.88-209.067 72.107l478.293 478.293c45.227-57.6 72.107-130.133 72.107-209.067 0-188.587-152.747-341.333-341.333-341.333z" /> +<glyph unicode="" d="M810.667 665.174l-60.16 60.16-238.507-238.507-238.507 238.507-60.16-60.16 238.507-238.507-238.507-238.507 60.16-60.16 238.507 238.507 238.507-238.507 60.16 60.16-238.507 238.507z" /> +<glyph unicode="" d="M682.667 896h-512c-46.933 0-85.333-38.4-85.333-85.333v-597.333h85.333v597.333h512v85.333zM810.667 725.334h-469.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h469.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 42.667h-469.333v597.333h469.333v-597.333z" /> +<glyph unicode="" d="M411.307 612.694c9.813 21.333 15.36 44.8 15.36 69.973 0 94.293-76.373 170.667-170.667 170.667s-170.667-76.373-170.667-170.667 76.373-170.667 170.667-170.667c25.173 0 48.64 5.547 69.973 15.36l100.693-100.693-100.693-100.693c-21.333 9.813-44.8 15.36-69.973 15.36-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667c0 25.173-5.547 48.64-15.36 69.973l100.693 100.693 298.667-298.667h128v42.667l-527.36 527.36zM256 597.334c-46.933 0-85.333 37.973-85.333 85.333s38.4 85.333 85.333 85.333 85.333-37.973 85.333-85.333-38.4-85.333-85.333-85.333zM256 85.334c-46.933 0-85.333 37.973-85.333 85.333s38.4 85.333 85.333 85.333 85.333-37.973 85.333-85.333-38.4-85.333-85.333-85.333zM512 405.334c-11.947 0-21.333 9.387-21.333 21.333s9.387 21.333 21.333 21.333 21.333-9.387 21.333-21.333-9.387-21.333-21.333-21.333zM810.667 810.667l-256-256 85.333-85.333 298.667 298.667v42.667z" /> +<glyph unicode="" d="M810.667 853.334h-178.347c-17.92 49.493-64.853 85.333-120.32 85.333s-102.4-35.84-120.32-85.333h-178.347c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM512 853.334c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM810.667 85.334h-597.333v682.667h85.333v-128h426.667v128h85.333v-682.667z" /> +<glyph unicode="" d="M128 202.667v-160h160l471.893 471.893-160 160-471.893-471.893zM883.627 638.294c16.64 16.64 16.64 43.52 0 60.16l-99.84 99.84c-16.64 16.64-43.52 16.64-60.16 0l-78.080-78.080 160-160 78.080 78.080z" /> +<glyph unicode="" d="M938.24 597.334c0 30.72-15.787 57.6-40.107 72.533l-386.133 226.133-386.133-226.133c-24.32-14.933-40.533-41.813-40.533-72.533v-426.667c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333l-0.427 426.667zM512 384l-352.427 220.16 352.427 206.507 352.427-206.507-352.427-220.16z" /> +<glyph unicode="" d="M426.667 170.667h170.667v85.333h-170.667v-85.333zM128 682.667v-85.333h768v85.333h-768zM256 384h512v85.333h-512v-85.333z" /> +<glyph unicode="" d="M614.4 682.667l-17.067 85.333h-384v-725.333h85.333v298.667h238.933l17.067-85.333h298.667v426.667z" /> +<glyph unicode="" d="M512 597.334v170.667l341.333-341.333-341.333-341.333v170.667h-341.333v341.333z" /> +<glyph unicode="" d="M195.84 644.694c29.867 30.293 59.733 57.6 72.96 52.053 21.333-8.533 0-43.947-12.8-64.853-10.667-17.92-122.027-165.973-122.027-269.227 0-54.613 20.48-99.84 57.173-127.147 32-23.893 74.24-31.147 112.64-19.627 45.653 13.227 83.2 59.733 130.56 118.187 51.627 63.573 120.747 146.773 174.080 146.773 69.547 0 70.4-43.093 75.093-76.373-161.28-27.307-229.547-156.587-229.547-229.12s61.44-131.84 136.96-131.84c69.547 0 183.040 56.747 200.107 260.267h104.96v106.667h-105.387c-6.4 70.4-46.507 179.2-171.947 179.2-96 0-178.347-81.493-210.773-121.173-24.747-31.147-87.893-105.813-97.707-116.053-10.667-12.8-29.013-35.84-47.36-35.84-19.2 0-30.72 35.413-15.36 81.92 14.933 46.507 59.733 122.027 78.933 150.187 33.28 48.64 55.467 81.92 55.467 139.947 0 92.587-69.973 122.027-107.093 122.027-56.32 0-105.387-42.667-116.053-53.333-15.36-15.36-28.16-28.16-37.547-39.68l74.667-72.96zM592.213 147.2c-13.227 0-31.573 11.093-31.573 30.72 0 25.6 31.147 93.867 122.453 117.76-12.8-114.773-61.013-148.48-90.88-148.48z" /> +<glyph unicode="" d="M810.667 810.667h-597.76c-46.933 0-84.48-38.4-84.48-85.333l-0.427-597.333c0-46.933 37.973-85.333 84.907-85.333h597.76c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 298.667h-170.667c0-70.827-57.173-128-128-128s-128 57.173-128 128h-171.093v426.667h597.76v-426.667zM682.667 512h-85.333v128h-170.667v-128h-85.333l170.667-170.667 170.667 170.667z" /> +<glyph unicode="" d="M166.4 426.667c0 72.96 59.307 132.267 132.267 132.267h170.667v81.067h-170.667c-117.76 0-213.333-95.573-213.333-213.333s95.573-213.333 213.333-213.333h170.667v81.067h-170.667c-72.96 0-132.267 59.307-132.267 132.267zM341.333 384h341.333v85.333h-341.333v-85.333zM725.333 640h-170.667v-81.067h170.667c72.96 0 132.267-59.307 132.267-132.267s-59.307-132.267-132.267-132.267h-170.667v-81.067h170.667c117.76 0 213.333 95.573 213.333 213.333s-95.573 213.333-213.333 213.333z" /> +<glyph unicode="" d="M853.333 768h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM853.333 597.334l-341.333-213.333-341.333 213.333v85.333l341.333-213.333 341.333 213.333v-85.333z" /> +<glyph unicode="" d="M853.333 768h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM853.333 597.334l-341.333-213.333-341.333 213.333v85.333l341.333-213.333 341.333 213.333v-85.333z" /> +<glyph unicode="" d="M785.067 486.4c-78.933 68.693-181.333 110.933-294.4 110.933-198.4 0-366.080-129.28-424.96-308.053l100.693-33.28c44.8 136.107 172.8 234.667 324.267 234.667 83.2 0 159.147-30.72 218.453-80.213l-154.453-154.453h384v384l-153.6-153.6z" /> +<glyph unicode="" d="M298.667 469.334v-85.333h426.667v85.333h-426.667zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM725.333 384h-426.667v85.333h426.667v-85.333z" /> +<glyph unicode="" d="M810.667 384h-597.333v85.333h597.333v-85.333z" /> +<glyph unicode="" d="M298.667 597.334v128l-298.667-298.667 298.667-298.667v128l-170.667 170.667 170.667 170.667zM554.667 554.667v170.667l-298.667-298.667 298.667-298.667v174.933c213.333 0 362.667-68.267 469.333-217.6-42.667 213.333-170.667 426.667-469.333 469.333z" /> +<glyph unicode="" d="M426.667 554.667v170.667l-298.667-298.667 298.667-298.667v174.933c213.333 0 362.667-68.267 469.333-217.6-42.667 213.333-170.667 426.667-469.333 469.333z" /> +<glyph unicode="" d="M671.147 810.667h-318.293l-224.853-224.853v-318.293l224.853-224.853h318.293l224.853 224.853v318.293l-224.853 224.853zM512 200.534c-30.72 0-55.467 24.747-55.467 55.467s24.747 55.467 55.467 55.467c30.72 0 55.467-24.747 55.467-55.467s-24.747-55.467-55.467-55.467zM554.667 384h-85.333v256h85.333v-256z" /> +<glyph unicode="" d="M725.333 810.667h-512c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v512l-170.667 170.667zM512 128c-70.827 0-128 57.173-128 128s57.173 128 128 128 128-57.173 128-128-57.173-128-128-128zM640 554.667h-426.667v170.667h426.667v-170.667z" /> +<glyph unicode="" d="M128 725.334h85.333v85.333c-46.933 0-85.333-38.4-85.333-85.333zM128 384h85.333v85.333h-85.333v-85.333zM298.667 42.667h85.333v85.333h-85.333v-85.333zM128 554.667h85.333v85.333h-85.333v-85.333zM554.667 810.667h-85.333v-85.333h85.333v85.333zM810.667 810.667v-85.333h85.333c0 46.933-38.4 85.333-85.333 85.333zM213.333 42.667v85.333h-85.333c0-46.933 38.4-85.333 85.333-85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM384 810.667h-85.333v-85.333h85.333v85.333zM469.333 42.667h85.333v85.333h-85.333v-85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM810.667 42.667c46.933 0 85.333 38.4 85.333 85.333h-85.333v-85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM640 725.334h85.333v85.333h-85.333v-85.333zM298.667 213.334h426.667v426.667h-426.667v-426.667zM384 554.667h256v-256h-256v256z" /> +<glyph unicode="" d="M85.76 42.667l895.573 384-895.573 384-0.427-298.667 640-85.333-640-85.333z" /> +<glyph unicode="" d="M128 170.667h256v85.333h-256v-85.333zM128 682.667v-85.333h768v85.333h-768zM128 384h512v85.333h-512v-85.333z" /> +<glyph unicode="" d="M213.333 213.334v-85.333h597.333v85.333h-597.333zM405.333 392.534h213.333l38.4-93.867h89.6l-202.667 469.333h-64l-202.667-469.333h89.6l38.4 93.867zM512 683.52l79.787-214.187h-159.573l79.787 214.187z" /> +<glyph unicode="" d="M533.333 597.334c-113.067 0-215.467-42.24-294.4-110.933l-153.6 153.6v-384h384l-154.453 154.453c59.307 49.493 134.827 80.213 218.453 80.213 151.040 0 279.467-98.56 324.267-234.667l101.12 33.28c-59.307 178.773-226.987 308.053-425.387 308.053z" /> +<glyph unicode="" d="M938.667 694.614l-196.267 164.693-55.040-65.28 196.267-164.693 55.040 65.28zM336.213 794.027l-54.613 65.28-196.267-164.267 55.040-65.28 195.84 164.267zM533.333 597.334h-64v-256l202.667-121.6 32 52.48-170.667 101.12v224zM512 768c-212.053 0-384-171.947-384-384s171.52-384 384-384c212.053 0 384 171.947 384 384s-171.947 384-384 384zM512 85.334c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667z" /> +<glyph unicode="" d="M938.667 695.467l-196.267 166.4-55.467-64 196.267-166.4 55.467 64zM337.067 793.6l-55.467 64-196.267-162.133 55.467-64 196.267 162.133zM533.333 597.334h-64v-256l200.533-123.733 34.133 51.2-170.667 102.4v226.133zM512 768c-213.333 0-384-170.667-384-384s170.667-384 384-384 384 170.667 384 384-170.667 384-384 384zM512 85.334c-166.4 0-298.667 132.267-298.667 298.667s132.267 298.667 298.667 298.667 298.667-132.267 298.667-298.667-132.267-298.667-298.667-298.667z" /> +<glyph unicode="" d="M511.573 853.334c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM533.333 640h-64v-256l224-134.4 32 52.48-192 113.92z" /> +<glyph unicode="" d="M336.213 794.027l-54.613 65.28-196.267-164.267 55.040-65.28 195.84 164.267zM938.667 694.614l-196.267 164.693-55.040-65.28 196.267-164.693 55.040 65.28zM512 768c-212.053 0-384-171.947-384-384s171.52-384 384-384c212.053 0 384 171.947 384 384s-171.947 384-384 384zM512 85.334c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667zM554.667 554.667h-85.333v-128h-128v-85.333h128v-128h85.333v128h128v85.333h-128v128z" /> +<glyph unicode="" d="M554.667 554.667v234.667c0 35.413-28.587 64-64 64s-64-28.587-64-64v-157.013l334.080-334.080 135.253-42.24v85.333l-341.333 213.333zM128 713.814l212.907-212.907-255.573-159.573v-85.333l341.333 106.667v-234.667l-85.333-64v-64l149.333 42.667 149.333-42.667v64l-85.333 64v159.147l244.48-244.48 54.187 54.187-671.147 671.147-54.187-54.187z" /> +<glyph unicode="" d="M896 256v85.333l-341.333 213.333v234.667c0 35.413-28.587 64-64 64s-64-28.587-64-64v-234.667l-341.333-213.333v-85.333l341.333 106.667v-234.667l-85.333-64v-64l149.333 42.667 149.333-42.667v64l-85.333 64v234.667l341.333-106.667z" /> +<glyph unicode="" d="M298.667 213.334v-157.867c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v157.867h-426.667z" /> +<glyph unicode="" d="M298.667 298.667v-243.2c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v243.2h-426.667z" /> +<glyph unicode="" d="M298.667 384v-328.533c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v328.533h-426.667z" /> +<glyph unicode="" d="M298.667 469.334v-413.867c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v413.867h-426.667z" /> +<glyph unicode="" d="M298.667 554.667v-499.2c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v499.2h-426.667z" /> +<glyph unicode="" d="M298.667 597.334v-541.867c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v541.867h-426.667z" /> +<glyph unicode="" d="M668.587 768h-71.253v85.333h-170.667v-85.333h-71.253c-31.147 0-56.747-25.6-56.747-56.747v-654.080c0-31.573 25.6-57.173 56.747-57.173h312.747c31.573 0 57.173 25.6 57.173 56.747v654.507c0 31.147-25.6 56.747-56.747 56.747zM554.667 170.667h-85.333v85.333h85.333v-85.333zM554.667 341.334h-85.333v213.333h85.333v-213.333z" /> +<glyph unicode="" d="M469.333 85.334v128h-170.667v-157.867c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v157.867h-192l-64-128z" /> +<glyph unicode="" d="M469.333 85.334v234.667h-170.667v-264.533c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v264.533h-136.533l-119.467-234.667z" /> +<glyph unicode="" d="M618.667 362.667l-149.333-277.333v234.667h-85.333l21.333 42.667h-106.667v-307.2c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v307.2h-106.667z" /> +<glyph unicode="" d="M554.667 405.334h85.333l-170.667-320v234.667h-85.333l81.067 149.333h-166.4v-413.867c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v413.867h-170.667v-64z" /> +<glyph unicode="" d="M558.933 405.334h81.067l-170.667-320v234.667h-85.333l123.733 234.667h-209.067v-499.2c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v499.2h-170.667v-149.333h4.267z" /> +<glyph unicode="" d="M640 405.334l-170.667-320v234.667h-85.333l149.333 277.333h-234.667v-541.867c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v541.867h-170.667v-192h85.333z" /> +<glyph unicode="" d="M668.587 768h-71.253v85.333h-170.667v-85.333h-71.253c-31.147 0-56.747-25.6-56.747-56.747v-654.080c0-31.573 25.6-57.173 56.747-57.173h312.747c31.573 0 57.173 25.6 57.173 56.747v654.507c0 31.147-25.6 56.747-56.747 56.747zM469.333 85.334v234.667h-85.333l170.667 320v-234.667h85.333l-170.667-320z" /> +<glyph unicode="" d="M668.587 768h-71.253v85.333h-170.667v-85.333h-71.253c-31.147 0-56.747-25.6-56.747-56.747v-654.080c0-31.573 25.6-57.173 56.747-57.173h312.747c31.573 0 57.173 25.6 57.173 56.747v654.507c0 31.147-25.6 56.747-56.747 56.747z" /> +<glyph unicode="" d="M668.587 768h-71.253v85.333h-170.667v-85.333h-71.253c-31.147 0-56.747-25.6-56.747-56.747v-654.080c0-31.573 25.6-57.173 56.747-57.173h312.747c31.573 0 57.173 25.6 57.173 56.747v654.507c0 31.147-25.6 56.747-56.747 56.747z" /> +<glyph unicode="" d="M668.587 768h-71.253v85.333h-170.667v-85.333h-71.253c-31.147 0-56.747-25.6-56.747-56.747v-654.080c0-31.573 25.6-57.173 56.747-57.173h312.747c31.573 0 57.173 25.6 57.173 56.747v654.507c0 31.147-25.6 56.747-56.747 56.747zM552.533 172.8h-81.067v81.067h81.067v-81.067zM610.133 397.227s-16.213-17.92-28.587-30.293c-20.48-20.48-35.413-49.067-35.413-68.267h-68.267c0 35.413 19.627 64.853 39.68 85.333l39.68 40.107c11.52 11.52 18.773 27.733 18.773 45.227 0 35.413-28.587 64-64 64s-64-28.587-64-64h-64c0 70.827 57.173 128 128 128s128-57.173 128-128c0-28.16-11.52-53.76-29.867-72.107z" /> +<glyph unicode="" d="M298.667 426.667l-85.333 85.333-85.333-85.333 85.333-85.333 85.333 85.333zM755.627 609.707l-243.627 243.627h-42.667v-323.84l-195.84 195.84-60.16-60.16 238.507-238.507-238.507-238.507 60.16-60.16 195.84 195.84v-323.84h42.667l243.627 243.627-183.467 183.040 183.467 183.040zM554.667 689.92l80.213-80.213-80.213-80.213v160.427zM634.88 243.627l-80.213-80.213v160.427l80.213-80.213zM810.667 512l-85.333-85.333 85.333-85.333 85.333 85.333-85.333 85.333z" /> +<glyph unicode="" d="M554.667 689.92l80.213-80.213-68.267-68.267 60.16-60.16 128.853 128.853-243.627 243.2h-42.667v-214.613l85.333-85.333v136.533zM230.827 768l-60.16-60.16 281.173-281.173-238.507-238.507 60.16-60.16 195.84 195.84v-323.84h42.667l183.040 183.040 98.133-97.707 60.16 60.16-622.507 622.507zM554.667 163.414v160.427l80.213-80.213-80.213-80.213z" /> +<glyph unicode="" d="M607.573 426.24l98.987-98.987c11.947 30.72 18.773 64.427 18.773 99.413s-6.827 67.84-18.347 98.56l-99.413-98.987zM833.28 652.374l-53.76-53.76c26.88-51.627 41.813-109.653 41.813-171.52s-15.36-120.32-41.813-171.52l51.2-51.2c41.387 65.707 65.707 143.36 65.707 226.56-0.427 80.64-23.467 156.587-63.147 221.44zM670.293 609.707l-243.627 243.627h-42.667v-323.84l-195.84 195.84-60.16-60.16 238.507-238.507-238.507-238.507 60.16-60.16 195.84 195.84v-323.84h42.667l243.627 243.627-183.467 183.040 183.467 183.040zM469.333 689.92l80.213-80.213-80.213-80.213v160.427zM549.547 243.627l-80.213-80.213v160.427l80.213-80.213z" /> +<glyph unicode="" d="M755.627 609.707l-243.627 243.627h-42.667v-323.84l-195.84 195.84-60.16-60.16 238.507-238.507-238.507-238.507 60.16-60.16 195.84 195.84v-323.84h42.667l243.627 243.627-183.467 183.040 183.467 183.040zM554.667 689.92l80.213-80.213-80.213-80.213v160.427zM634.88 243.627l-80.213-80.213v160.427l80.213-80.213z" /> +<glyph unicode="" d="M462.933 398.934h98.133l-49.067 155.733-49.067-155.733zM853.333 567.894v200.107h-200.107l-141.227 141.227-141.227-141.227h-200.107v-200.107l-141.227-141.227 141.227-141.227v-200.107h200.107l141.227-141.227 141.227 141.227h200.107v200.107l141.227 141.227-141.227 141.227zM610.133 256l-29.867 85.333h-136.533l-29.867-85.333h-81.067l136.533 384h85.333l136.533-384h-81.067z" /> +<glyph unicode="" d="M853.333 567.894v200.107h-200.107l-141.227 141.227-141.227-141.227h-200.107v-200.107l-141.227-141.227 141.227-141.227v-200.107h200.107l141.227-141.227 141.227 141.227h200.107v200.107l141.227 141.227-141.227 141.227zM512 170.667c-141.227 0-256 114.773-256 256s114.773 256 256 256 256-114.773 256-256-114.773-256-256-256zM512 597.334c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667z" /> +<glyph unicode="" d="M853.333 285.44l141.227 141.227-141.227 141.227v200.107h-200.107l-141.227 141.227-141.227-141.227h-200.107v-200.107l-141.227-141.227 141.227-141.227v-200.107h200.107l141.227-141.227 141.227 141.227h200.107v200.107zM512 170.667c-141.227 0-256 114.773-256 256s114.773 256 256 256 256-114.773 256-256-114.773-256-256-256z" /> +<glyph unicode="" d="M853.333 285.44l141.227 141.227-141.227 141.227v200.107h-200.107l-141.227 141.227-141.227-141.227h-200.107v-200.107l-141.227-141.227 141.227-141.227v-200.107h200.107l141.227-141.227 141.227 141.227h200.107v200.107zM512 170.667v512c141.227 0 256-114.773 256-256s-114.773-256-256-256z" /> +<glyph unicode="" d="M554.667 851.2v-129.28c144.64-20.907 256-144.64 256-295.253 0-38.4-7.68-74.667-20.48-108.373l110.933-65.28c23.893 52.907 37.547 111.787 37.547 173.653 0 221.013-168.533 403.2-384 424.533zM512 128c-165.12 0-298.667 133.547-298.667 298.667 0 150.613 111.36 274.347 256 295.253v129.28c-215.893-21.333-384-203.093-384-424.533 0-235.52 190.72-426.667 426.24-426.667 141.227 0 266.24 68.693 343.893 174.507l-110.933 65.28c-54.613-68.267-138.24-111.787-232.533-111.787z" /> +<glyph unicode="" d="M298.667 725.334h426.667v-85.333h85.333v170.667c0 46.933-38.4 84.907-85.333 84.907l-426.667 0.427c-46.933 0-85.333-38.4-85.333-85.333v-170.667h85.333v85.333zM657.493 230.827l195.84 195.84-195.84 195.84-60.16-60.587 135.253-135.253-135.253-135.253 60.16-60.587zM426.667 291.414l-135.253 135.253 135.253 135.253-60.16 60.587-195.84-195.84 195.84-195.84 60.16 60.587zM725.333 128h-426.667v85.333h-85.333v-170.667c0-46.933 38.4-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v170.667h-85.333v-85.333z" /> +<glyph unicode="" d="M170.667 682.667h768v85.333h-768c-46.933 0-85.333-38.4-85.333-85.333v-469.333h-85.333v-128h597.333v128h-426.667v469.333zM981.333 597.334h-256c-23.467 0-42.667-19.2-42.667-42.667v-426.667c0-23.467 19.2-42.667 42.667-42.667h256c23.467 0 42.667 19.2 42.667 42.667v426.667c0 23.467-19.2 42.667-42.667 42.667zM938.667 213.334h-170.667v298.667h170.667v-298.667z" /> +<glyph unicode="" d="M896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h213.333v-85.333h341.333v85.333h213.333c46.933 0 84.907 38.4 84.907 85.333l0.427 512c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-768v512h768v-512zM810.667 597.334h-469.333v-85.333h469.333v85.333zM810.667 426.667h-469.333v-85.333h469.333v85.333zM298.667 597.334h-85.333v-85.333h85.333v85.333zM298.667 426.667h-85.333v-85.333h85.333v85.333z" /> +<glyph unicode="" d="M512 597.334c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM893.44 469.334c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-177.92-19.627-319.147-160.853-338.773-338.773h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c177.92 19.627 319.147 160.853 338.773 338.773h87.893v85.333h-87.893zM512 128c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667z" /> +<glyph unicode="" d="M893.44 469.334c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-177.92-19.627-319.147-160.853-338.773-338.773h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c177.92 19.627 319.147 160.853 338.773 338.773h87.893v85.333h-87.893zM512 128c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667z" /> +<glyph unicode="" d="M893.44 469.334c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-48.213-5.12-93.44-19.627-134.827-41.387l64-64c34.987 14.507 73.387 22.613 113.493 22.613 165.12 0 298.667-133.547 298.667-298.667 0-40.107-8.107-78.507-22.187-113.067l64-64c21.333 40.96 35.84 86.187 41.387 134.4h87.467v85.333h-87.893zM128 756.48l87.040-87.040c-45.653-55.893-76.373-124.587-84.48-200.107h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c75.52 8.533 144.213 38.827 200.107 84.48l87.040-87.040 54.187 54.187-713.813 713.813-54.187-54.187zM694.187 190.294c-50.347-38.827-113.493-62.293-182.187-62.293-165.12 0-298.667 133.547-298.667 298.667 0 68.693 23.467 131.84 62.293 182.187l418.56-418.56z" /> +<glyph unicode="" d="M893.44 469.334c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-48.213-5.12-93.44-19.627-134.827-41.387l64-64c34.987 14.507 73.387 22.613 113.493 22.613 165.12 0 298.667-133.547 298.667-298.667 0-40.107-8.107-78.507-22.187-113.067l64-64c21.333 40.96 35.84 86.187 41.387 134.4h87.467v85.333h-87.893zM128 756.48l87.040-87.040c-45.653-55.893-76.373-124.587-84.48-200.107h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c75.52 8.533 144.213 38.827 200.107 84.48l87.040-87.040 54.187 54.187-713.813 713.813-54.187-54.187zM694.187 190.294c-50.347-38.827-113.493-62.293-182.187-62.293-165.12 0-298.667 133.547-298.667 298.667 0 68.693 23.467 131.84 62.293 182.187l418.56-418.56z" /> +<glyph unicode="" d="M893.44 469.334c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-177.92-19.627-319.147-160.853-338.773-338.773h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c177.92 19.627 319.147 160.853 338.773 338.773h87.893v85.333h-87.893zM512 128c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667z" /> +<glyph unicode="" d="M298.667 170.667h85.333v512h-85.333v-512zM469.333-0h85.333v853.333h-85.333v-853.333zM128 341.334h85.333v170.667h-85.333v-170.667zM640 170.667h85.333v512h-85.333v-512zM810.667 512v-170.667h85.333v170.667h-85.333z" /> +<glyph unicode="" d="M85.333-0h853.333v853.333zM725.333 640l-640-640h640z" /> +<glyph unicode="" d="M149.333 473.6l362.667-452.267 362.667 448c-21.333 17.067-157.867 128-362.667 128s-341.333-110.933-362.667-123.733z" /> +<glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM853.333 85.334h-682.667v682.667h682.667v-682.667zM768 682.667h-213.333c-46.933 0-85.333-38.4-85.333-85.333v-97.28c-25.6-14.933-42.667-41.813-42.667-73.387 0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333c0 31.573-17.067 58.88-42.667 73.387v97.28h128v-341.333h-341.333v341.333h85.333v85.333h-170.667v-512h512v512z" /> +<glyph unicode="" d="M170.667 768h298.667v85.333h-298.667c-46.933 0-85.333-38.4-85.333-85.333v-298.667h85.333v298.667zM426.667 384l-170.667-213.333h512l-128 170.667-86.613-115.627-126.72 158.293zM725.333 576c0 35.413-28.587 64-64 64s-64-28.587-64-64 28.587-64 64-64 64 28.587 64 64zM853.333 853.334h-298.667v-85.333h298.667v-298.667h85.333v298.667c0 46.933-38.4 85.333-85.333 85.333zM853.333 85.334h-298.667v-85.333h298.667c46.933 0 85.333 38.4 85.333 85.333v298.667h-85.333v-298.667zM170.667 384h-85.333v-298.667c0-46.933 38.4-85.333 85.333-85.333h298.667v85.333h-298.667v298.667z" /> +<glyph unicode="" d="M554.667 384v-341.333h341.333v341.333h-341.333zM128 42.667h341.333v341.333h-341.333v-341.333zM128 810.667v-341.333h341.333v341.333h-341.333zM710.827 866.56l-241.493-241.067 241.493-241.493 241.493 241.493-241.493 241.067z" /> +<glyph unicode="" d="M896 725.334h-768c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM810.667 213.334h-597.333v426.667h597.333v-426.667zM426.667 256h170.667c23.467 0 42.667 19.2 42.667 42.667v128c0 23.467-19.2 42.667-42.667 42.667v42.667c0 47.36-38.4 85.333-85.333 85.333-47.36 0-85.333-38.4-85.333-85.333v-42.667c-23.467 0-42.667-19.2-42.667-42.667v-128c0-23.467 19.2-42.667 42.667-42.667zM460.8 512c0 28.16 23.040 51.2 51.2 51.2s51.2-23.040 51.2-51.2v-42.667h-102.4v42.667z" /> +<glyph unicode="" d="M426.667 256h170.667c23.467 0 42.667 19.2 42.667 42.667v128c0 23.467-19.2 42.667-42.667 42.667v42.667c0 47.36-38.4 85.333-85.333 85.333-47.36 0-85.333-38.4-85.333-85.333v-42.667c-23.467 0-42.667-19.2-42.667-42.667v-128c0-23.467 19.2-42.667 42.667-42.667zM460.8 512c0 28.16 23.040 51.2 51.2 51.2s51.2-23.040 51.2-51.2v-42.667h-102.4v42.667zM725.333 896h-426.667c-46.933 0-85.333-38.4-85.333-85.333v-768c0-46.933 38.4-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v768c0 46.933-38.4 85.333-85.333 85.333zM725.333 128h-426.667v597.333h426.667v-597.333z" /> +<glyph unicode="" d="M992 393.814l-109.653 109.653-60.16-60.16 94.72-94.72-241.493-241.493-482.987 482.987 241.493 241.493 89.6-89.6 60.16 60.16-104.533 104.533c-25.173 25.173-65.707 25.173-90.453 0l-271.36-271.36c-25.173-25.173-25.173-65.707 0-90.453l512.853-512.853c25.173-25.173 65.707-25.173 90.453 0l271.36 271.36c25.173 25.173 25.173 65.707 0 90.453zM361.387 64.854c-139.52 65.707-239.36 201.387-254.72 361.813h-64c21.76-262.827 241.493-469.333 509.867-469.333l28.16 1.28-162.56 162.987-56.747-56.747zM682.667 554.667h213.333c23.467 0 42.667 19.2 42.667 42.667v170.667c0 23.467-19.2 42.667-42.667 42.667v21.333c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-21.333c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667zM716.8 832c0 40.107 32.427 72.533 72.533 72.533s72.533-32.427 72.533-72.533v-21.333h-145.067v21.333z" /> +<glyph unicode="" d="M703.147 831.147c139.52-66.133 239.36-201.387 254.72-361.813h64c-21.76 262.827-241.493 469.333-509.867 469.333l-28.16-1.28 162.56-162.56 56.747 56.32zM436.48 864c-25.173 25.173-65.707 25.173-90.453 0l-271.36-271.36c-25.173-25.173-25.173-65.707 0-90.453l512.853-512.853c25.173-25.173 65.707-25.173 90.453 0l271.36 271.36c25.173 25.173 25.173 65.707 0 90.453l-512.853 512.853zM632.747 34.56l-512.853 512.853 271.36 271.36 512.853-512.853-271.36-271.36zM320.853 22.187c-139.52 65.707-239.36 201.387-254.72 361.813h-64c21.76-262.827 241.493-469.333 509.867-469.333l28.16 1.28-162.56 162.56-56.747-56.32z" /> +<glyph unicode="" d="M768 853.334h-341.333l-255.147-256-0.853-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM512 597.334h-85.333v170.667h85.333v-170.667zM640 597.334h-85.333v170.667h85.333v-170.667zM768 597.334h-85.333v170.667h85.333v-170.667z" /> +<glyph unicode="" d="M384 256h277.333c58.88 0 106.667 47.787 106.667 106.667s-47.787 106.667-106.667 106.667h-2.133c-10.24 72.107-72.107 128-147.2 128-59.733 0-110.933-35.413-134.827-86.187h-6.827c-64.427-6.827-114.347-61.013-114.347-127.147 0-70.827 57.173-128 128-128zM896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 127.574h-768v598.187h768v-598.187z" /> +<glyph unicode="" d="M512 426.667l-426.667-426.667h426.667v426.667z" /> +<glyph unicode="" d="M597.333 512l-512-512h512v512z" /> +<glyph unicode="" d="M725.333 640l-640-640h640v640z" /> +<glyph unicode="" d="M85.333-0h853.333v853.333z" /> +<glyph unicode="" d="M853.333-0h85.333v85.333h-85.333v-85.333zM853.333 512v-341.333h85.333v341.333h-85.333z" /> +<glyph unicode="" d="M853.333 512v-341.333h85.333v341.333h-85.333zM512-0v426.667l-426.667-426.667h426.667zM853.333-0h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M597.333-0v512l-512-512h512zM853.333 512v-341.333h85.333v341.333h-85.333zM853.333-0h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M725.333-0v640l-640-640h640zM853.333 512v-341.333h85.333v341.333h-85.333zM853.333-0h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M853.333 170.667h85.333v341.333h-85.333v-341.333zM853.333-0h85.333v85.333h-85.333v-85.333zM85.333-0h682.667v597.333h170.667v256l-853.333-853.333z" /> +<glyph unicode="" d="M810.24 725.334c0 46.933-37.973 85.333-84.907 85.333h-298.667l-99.84-99.84 483.84-483.84-0.427 498.347zM155.733 773.12l-54.187-54.187 111.787-111.787v-479.147c0-46.933 38.4-85.333 85.333-85.333h427.093c14.933 0 28.587 4.267 40.96 11.093l80.213-80.213 54.187 54.187-745.387 745.387z" /> +<glyph unicode="" d="M853.333 647.254v-561.92h-561.92l561.92 561.92zM938.667 853.334l-853.333-853.333h853.333v853.333z" /> +<glyph unicode="" d="M896 896l-366.507-366.507 366.507-366.507v733.013zM203.52 746.667l-54.187-54.187 271.36-271.36-378.027-378.453h756.48l85.333-85.333 54.187 54.187-735.147 735.147z" /> +<glyph unicode="" d="M285.867 302.934l226.133-281.6 226.133 281.6c-8.533 12.8-98.133 81.067-226.133 81.067s-217.6-68.267-226.133-81.067z" /> +<glyph unicode="" d="M204.8 405.334l307.2-384 307.2 384c-17.067 12.8-132.267 106.667-307.2 106.667s-294.4-93.867-307.2-106.667z" /> +<glyph unicode="" d="M149.333 473.6l362.667-452.267 362.667 448c-21.333 17.067-157.867 128-362.667 128s-341.333-110.933-362.667-123.733z" /> +<glyph unicode="" d="M512 21.334l494.933 618.667c-17.067 12.8-209.067 170.667-494.933 170.667s-477.867-157.867-494.933-170.667l494.933-618.667c0 0 0 0 0 0z" /> +<glyph unicode="" d="M1008.64 640c-19.2 14.507-210.347 170.667-496.64 170.667-64 0-123.307-8.107-177.067-20.48l440.747-440.32 232.96 290.133zM727.040 289.28l-587.52 587.947-54.187-54.613 87.467-87.893c-91.307-41.813-147.627-87.040-157.44-94.72l496.64-618.667 0.427 0.427 166.4 207.36 141.653-141.653 54.187 54.187-147.627 147.627z" /> +<glyph unicode="" d="M554.667-0l243.2 302.933c-12.8 4.267-102.4 81.067-243.2 81.067s-230.4-76.8-243.2-81.067l243.2-302.933z" horiz-adv-x="1109" /> +<glyph unicode="" d="M554.667-0l320 401.067c-8.533 8.533-132.267 110.933-320 110.933s-311.467-102.4-324.267-110.933l324.267-401.067c0 0 0 0 0 0z" horiz-adv-x="1109" /> +<glyph unicode="" d="M554.667-0l401.067 503.467c-12.8 8.533-170.667 136.533-401.067 136.533s-388.267-128-401.067-136.533l401.067-503.467c0 0 0 0 0 0z" horiz-adv-x="1109" /> +<glyph unicode="" d="M554.667-0l537.6 669.867c-21.333 12.8-226.133 183.467-537.6 183.467s-516.267-170.667-537.6-183.467l537.6-669.867z" horiz-adv-x="1109" /> +<glyph unicode="" d="M938.667-0h85.333v85.333h-85.333v-85.333zM938.667 512v-341.333h85.333v341.333h-85.333z" horiz-adv-x="1109" /> +<glyph unicode="" d="M230.4 401.067l324.267-401.067 298.667 371.2v46.933c-46.933 29.867-153.6 93.867-298.667 93.867-187.733 0-311.467-102.4-324.267-110.933zM938.667 512v-341.333h85.333v341.333h-85.333zM938.667-0h85.333v85.333h-85.333v-85.333z" horiz-adv-x="1109" /> +<glyph unicode="" d="M853.333 371.2v196.267c-68.267 34.133-174.933 72.533-298.667 72.533-230.4 0-388.267-128-401.067-136.533l401.067-503.467c0 0 298.667 371.2 298.667 371.2zM938.667-0h85.333v85.333h-85.333v-85.333zM938.667 512v-341.333h85.333v341.333h-85.333z" horiz-adv-x="1109" /> +<glyph unicode="" d="M938.667-0h85.333v85.333h-85.333v-85.333zM554.667 853.334c-311.467 0-516.267-170.667-537.6-183.467l537.6-669.867 298.667 371.2v226.133h179.2l59.733 72.533c-21.333 12.8-226.133 183.467-537.6 183.467zM938.667 170.667h85.333v341.333h-85.333v-341.333z" horiz-adv-x="1109" /> +<glyph unicode="" d="M311.467 302.934l243.2-298.667 243.2 302.933c-12.8 0-102.4 76.8-243.2 76.8s-230.4-76.8-243.2-81.067zM938.667-0h85.333v85.333h-85.333v-85.333zM938.667 512v-341.333h85.333v341.333h-85.333z" horiz-adv-x="1109" /> +<glyph unicode="" d="M891.733 499.2c-81.067 0-149.333-68.267-149.333-149.333h76.8c0 42.667 34.133 76.8 76.8 76.8s76.8-34.133 76.8-76.8c0-21.333-8.533-38.4-21.333-51.2l-46.933-46.933c-25.6-25.6-42.667-64-42.667-106.667v-17.067h76.8c0 55.467 17.067 76.8 42.667 106.667l34.133 34.133c21.333 21.333 34.133 51.2 34.133 85.333-8.533 76.8-76.8 145.067-157.867 145.067zM853.333-0h85.333v85.333h-85.333v-85.333z" horiz-adv-x="1109" /> +<glyph unicode="" d="M554.667 768c181.333 0 325.12-64.427 413.013-117.333l-413.013-514.133-412.587 514.133c87.467 52.907 231.253 117.333 412.587 117.333zM554.667 853.334c-309.76 0-516.267-168.96-536.747-184.32l536.747-669.013 0.427 0.427 536.32 668.587c-20.48 15.36-226.987 184.32-536.747 184.32z" horiz-adv-x="1109" /> +<glyph unicode="" d="M85.333 85.334h853.333v170.667h-853.333v-170.667zM170.667 213.334h85.333v-85.333h-85.333v85.333zM85.333 768v-170.667h853.333v170.667h-853.333zM256 640h-85.333v85.333h85.333v-85.333zM85.333 341.334h853.333v170.667h-853.333v-170.667zM170.667 469.334h85.333v-85.333h-85.333v85.333z" /> +<glyph unicode="" d="M640 640v-170.667h42.667v-85.333h-128v341.333h85.333l-128 170.667-128-170.667h85.333v-341.333h-128v88.32c29.867 15.787 51.2 46.080 51.2 82.347 0 51.627-42.24 93.867-93.867 93.867s-93.867-42.24-93.867-93.867c0-36.267 21.333-66.56 51.2-82.347v-88.32c0-47.36 37.973-85.333 85.333-85.333h128v-130.133c-30.293-15.787-51.2-46.933-51.2-83.2 0-52.053 42.24-93.867 93.867-93.867s93.867 41.813 93.867 93.867c0 36.267-20.907 67.413-51.2 83.2v130.133h128c47.36 0 85.333 37.973 85.333 85.333v85.333h42.667v170.667h-170.667z" /> +<glyph unicode="" d="M874.667 533.334c11.947 0 23.467-1.707 34.56-3.413l114.773 152.747c-142.507 107.093-320 170.667-512 170.667s-369.493-63.573-512-170.667l512-682.667 149.333 199.253v120.747c0 117.76 95.573 213.333 213.333 213.333zM981.333 256v64c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-64c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667h213.333c23.467 0 42.667 19.2 42.667 42.667v170.667c0 23.467-19.2 42.667-42.667 42.667zM938.667 256h-128v64c0 35.413 28.587 64 64 64s64-28.587 64-64v-64z" /> +<glyph unicode="" d="M512 469.334c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 384c0 141.227-114.773 256-256 256s-256-114.773-256-256c0-94.72 51.627-177.067 128-221.44l42.667 74.24c-50.773 29.867-85.333 84.053-85.333 147.2 0 94.293 76.373 170.667 170.667 170.667s170.667-76.373 170.667-170.667c0-63.147-34.56-117.333-85.333-147.2l42.667-74.24c76.373 44.373 128 126.72 128 221.44zM512 810.667c-235.52 0-426.667-191.147-426.667-426.667 0-157.867 85.76-295.253 212.907-369.067l42.667 73.813c-101.547 59.307-170.24 168.96-170.24 295.253 0 188.587 152.747 341.333 341.333 341.333s341.333-152.747 341.333-341.333c0-126.293-68.693-235.947-170.667-295.253l42.667-73.813c127.573 73.813 213.333 211.2 213.333 369.067 0 235.52-191.147 426.667-426.667 426.667z" /> +<glyph unicode="" d="M704 682.667v-490.667c0-94.293-76.373-170.667-170.667-170.667s-170.667 76.373-170.667 170.667v533.333c0 58.88 47.787 106.667 106.667 106.667s106.667-47.787 106.667-106.667v-448c0-23.467-19.2-42.667-42.667-42.667s-42.667 19.2-42.667 42.667v405.333h-64v-405.333c0-58.88 47.787-106.667 106.667-106.667s106.667 47.787 106.667 106.667v448c0 94.293-76.373 170.667-170.667 170.667s-170.667-76.373-170.667-170.667v-533.333c0-129.707 104.96-234.667 234.667-234.667s234.667 104.96 234.667 234.667v490.667h-64z" /> +<glyph unicode="" d="M503.467 473.6c-96.853 25.173-128 51.2-128 91.733 0 46.507 43.093 78.933 115.2 78.933 75.947 0 104.107-36.267 106.667-89.6h94.293c-2.987 73.387-47.787 140.8-136.96 162.56v93.44h-128v-92.16c-82.773-17.92-149.333-71.68-149.333-154.027 0-98.56 81.493-147.627 200.533-176.213 106.667-25.6 128-63.147 128-102.827 0-29.44-20.907-76.373-115.2-76.373-87.893 0-122.453 39.253-127.147 89.6h-93.867c5.12-93.44 75.093-145.92 157.013-163.413v-92.587h128v91.733c83.2 15.787 149.333 64 149.333 151.467 0 121.173-103.68 162.56-200.533 187.733z" /> +<glyph unicode="" d="M128 810.667v-768h768v768h-768zM469.333 128h-256v256h256v-256zM469.333 469.334h-256v256h256v-256zM810.667 128h-256v256h256v-256zM810.667 469.334h-256v256h256v-256z" /> +<glyph unicode="" d="M384 469.334h-85.333v-85.333h85.333v85.333zM554.667 298.667h-85.333v-85.333h85.333v85.333zM384 810.667h-85.333v-85.333h85.333v85.333zM554.667 469.334h-85.333v-85.333h85.333v85.333zM213.333 810.667h-85.333v-85.333h85.333v85.333zM554.667 640h-85.333v-85.333h85.333v85.333zM725.333 469.334h-85.333v-85.333h85.333v85.333zM554.667 810.667h-85.333v-85.333h85.333v85.333zM725.333 810.667h-85.333v-85.333h85.333v85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333zM213.333 640h-85.333v-85.333h85.333v85.333zM810.667 810.667v-85.333h85.333v85.333h-85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM213.333 469.334h-85.333v-85.333h85.333v85.333zM128 42.667h768v85.333h-768v-85.333zM213.333 298.667h-85.333v-85.333h85.333v85.333z" /> +<glyph unicode="" d="M298.667 725.334h85.333v85.333h-85.333v-85.333zM298.667 384h85.333v85.333h-85.333v-85.333zM298.667 42.667h85.333v85.333h-85.333v-85.333zM469.333 213.334h85.333v85.333h-85.333v-85.333zM469.333 42.667h85.333v85.333h-85.333v-85.333zM128 42.667h85.333v85.333h-85.333v-85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM128 384h85.333v85.333h-85.333v-85.333zM128 554.667h85.333v85.333h-85.333v-85.333zM128 725.334h85.333v85.333h-85.333v-85.333zM469.333 384h85.333v85.333h-85.333v-85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM810.667 42.667h85.333v85.333h-85.333v-85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM469.333 554.667h85.333v85.333h-85.333v-85.333zM810.667 810.667v-85.333h85.333v85.333h-85.333zM469.333 725.334h85.333v85.333h-85.333v-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM640 384h85.333v85.333h-85.333v-85.333zM640 725.334h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M757.333 640l-160 160-426.667-426.667v-160h160l426.667 426.667zM883.627 766.294c16.64 16.64 16.64 43.52 0 60.16l-99.84 99.84c-16.64 16.64-43.52 16.64-60.16 0l-83.627-83.627 160-160 83.627 83.627zM0 85.334h1024v-170.667h-1024z" /> +<glyph unicode="" d="M128 42.667h85.333v85.333h-85.333v-85.333zM213.333 640h-85.333v-85.333h85.333v85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM298.667 42.667h85.333v85.333h-85.333v-85.333zM213.333 810.667h-85.333v-85.333h85.333v85.333zM384 810.667h-85.333v-85.333h85.333v85.333zM725.333 810.667h-85.333v-85.333h85.333v85.333zM554.667 640h-85.333v-85.333h85.333v85.333zM554.667 810.667h-85.333v-85.333h85.333v85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333zM469.333 42.667h85.333v85.333h-85.333v-85.333zM128 384h768v85.333h-768v-85.333zM810.667 810.667v-85.333h85.333v85.333h-85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM469.333 213.334h85.333v85.333h-85.333v-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM810.667 42.667h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M128 42.667h85.333v85.333h-85.333v-85.333zM298.667 42.667h85.333v85.333h-85.333v-85.333zM213.333 640h-85.333v-85.333h85.333v85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM384 810.667h-85.333v-85.333h85.333v85.333zM213.333 810.667h-85.333v-85.333h85.333v85.333zM725.333 810.667h-85.333v-85.333h85.333v85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM810.667 810.667v-85.333h85.333v85.333h-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM554.667 810.667h-85.333v-341.333h-341.333v-85.333h341.333v-341.333h85.333v341.333h341.333v85.333h-341.333v341.333zM810.667 42.667h85.333v85.333h-85.333v-85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M469.333 42.667h85.333v85.333h-85.333v-85.333zM469.333 213.334h85.333v85.333h-85.333v-85.333zM469.333 725.334h85.333v85.333h-85.333v-85.333zM469.333 554.667h85.333v85.333h-85.333v-85.333zM469.333 384h85.333v85.333h-85.333v-85.333zM298.667 42.667h85.333v85.333h-85.333v-85.333zM298.667 725.334h85.333v85.333h-85.333v-85.333zM298.667 384h85.333v85.333h-85.333v-85.333zM128 42.667h85.333v768h-85.333v-768zM810.667 554.667h85.333v85.333h-85.333v-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333zM810.667 810.667v-85.333h85.333v85.333h-85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM810.667 42.667h85.333v85.333h-85.333v-85.333zM640 384h85.333v85.333h-85.333v-85.333zM640 725.334h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M554.667 640h-85.333v-85.333h85.333v85.333zM554.667 469.334h-85.333v-85.333h85.333v85.333zM725.333 469.334h-85.333v-85.333h85.333v85.333zM128 810.667v-768h768v768h-768zM810.667 128h-597.333v597.333h597.333v-597.333zM554.667 298.667h-85.333v-85.333h85.333v85.333zM384 469.334h-85.333v-85.333h85.333v85.333z" /> +<glyph unicode="" d="M298.667 42.667h85.333v85.333h-85.333v-85.333zM128 725.334h85.333v85.333h-85.333v-85.333zM298.667 725.334h85.333v85.333h-85.333v-85.333zM298.667 384h85.333v85.333h-85.333v-85.333zM128 42.667h85.333v85.333h-85.333v-85.333zM469.333 42.667h85.333v85.333h-85.333v-85.333zM128 384h85.333v85.333h-85.333v-85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM128 554.667h85.333v85.333h-85.333v-85.333zM469.333 213.334h85.333v85.333h-85.333v-85.333zM640 384h85.333v85.333h-85.333v-85.333zM810.667 810.667v-768h85.333v768h-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM640 725.334h85.333v85.333h-85.333v-85.333zM469.333 384h85.333v85.333h-85.333v-85.333zM469.333 725.334h85.333v85.333h-85.333v-85.333zM469.333 554.667h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M640 42.667h85.333v85.333h-85.333v-85.333zM810.667 42.667h85.333v85.333h-85.333v-85.333zM298.667 42.667h85.333v85.333h-85.333v-85.333zM469.333 42.667h85.333v85.333h-85.333v-85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM128 810.667v-768h85.333v682.667h682.667v85.333h-768zM810.667 554.667h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M298.667 42.667h85.333v85.333h-85.333v-85.333zM298.667 384h85.333v85.333h-85.333v-85.333zM469.333 384h85.333v85.333h-85.333v-85.333zM469.333 42.667h85.333v85.333h-85.333v-85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM128 42.667h85.333v85.333h-85.333v-85.333zM128 384h85.333v85.333h-85.333v-85.333zM128 554.667h85.333v85.333h-85.333v-85.333zM469.333 213.334h85.333v85.333h-85.333v-85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM128 810.667v-85.333h768v85.333h-768zM810.667 213.334h85.333v85.333h-85.333v-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM469.333 554.667h85.333v85.333h-85.333v-85.333zM810.667 42.667h85.333v85.333h-85.333v-85.333zM640 384h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M128 554.667h85.333v85.333h-85.333v-85.333zM128 725.334h85.333v85.333h-85.333v-85.333zM298.667 42.667h85.333v85.333h-85.333v-85.333zM298.667 384h85.333v85.333h-85.333v-85.333zM128 384h85.333v85.333h-85.333v-85.333zM128 42.667h85.333v85.333h-85.333v-85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM298.667 725.334h85.333v85.333h-85.333v-85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333zM469.333 42.667h85.333v768h-85.333v-768zM810.667 42.667h85.333v85.333h-85.333v-85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM810.667 810.667v-85.333h85.333v85.333h-85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM640 725.334h85.333v85.333h-85.333v-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM640 384h85.333v85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M298.667 298.667v-85.333h426.667v85.333h-426.667zM128 42.667h768v85.333h-768v-85.333zM128 384h768v85.333h-768v-85.333zM298.667 640v-85.333h426.667v85.333h-426.667zM128 810.667v-85.333h768v85.333h-768z" /> +<glyph unicode="" d="M128 42.667h768v85.333h-768v-85.333zM128 213.334h768v85.333h-768v-85.333zM128 384h768v85.333h-768v-85.333zM128 554.667h768v85.333h-768v-85.333zM128 810.667v-85.333h768v85.333h-768z" /> +<glyph unicode="" d="M640 298.667h-512v-85.333h512v85.333zM640 640h-512v-85.333h512v85.333zM128 384h768v85.333h-768v-85.333zM128 42.667h768v85.333h-768v-85.333zM128 810.667v-85.333h768v85.333h-768z" /> +<glyph unicode="" d="M128 42.667h768v85.333h-768v-85.333zM384 213.334h512v85.333h-512v-85.333zM128 384h768v85.333h-768v-85.333zM384 554.667h512v85.333h-512v-85.333zM128 810.667v-85.333h768v85.333h-768z" /> +<glyph unicode="" d="M665.6 478.294c41.387 28.587 70.4 75.52 70.4 119.040 0 96.427-74.667 170.667-170.667 170.667h-266.667v-597.333h300.373c89.173 0 158.293 72.533 158.293 161.707 0 64.853-36.693 120.32-91.733 145.92zM426.667 661.334h128c35.413 0 64-28.587 64-64s-28.587-64-64-64h-128v128zM576 277.334h-149.333v128h149.333c35.413 0 64-28.587 64-64s-28.587-64-64-64z" /> +<glyph unicode="" d="M139.52 725.334l-54.187-54.187 297.387-297.387-105.387-245.76h128l66.987 156.16 241.493-241.493 54.187 54.187-628.48 628.48zM256 725.334v-7.68l120.32-120.32h102.4l-30.72-71.68 89.6-89.6 68.693 161.28h247.040v128h-597.333z" /> +<glyph unicode="" d="M706.56 557.227l-381.44 381.44-60.16-60.16 101.547-101.547-219.733-219.733c-25.173-25.173-25.173-65.707 0-90.453l234.667-234.667c12.373-12.373 29.013-18.773 45.227-18.773s32.853 6.4 45.227 18.773l234.667 234.667c25.173 24.747 25.173 65.28 0 90.453zM222.293 512l204.373 204.373 204.373-204.373h-408.747zM810.667 448s-85.333-92.587-85.333-149.333c0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333c0 56.747-85.333 149.333-85.333 149.333zM0 85.334h1024v-170.667h-1024z" /> +<glyph unicode="" d="M768 341.334c0 170.667-256 460.8-256 460.8s-56.747-64.427-116.48-150.187l366.507-366.507c3.84 17.92 5.973 36.693 5.973 55.893zM730.453 208.214l-505.6 505.6-54.187-54.613 141.653-141.653c-32.853-61.867-56.32-124.587-56.32-176.213 0-141.227 114.773-256 256-256 64.853 0 123.733 24.32 168.96 64l112.213-112.213 54.187 54.187-116.907 116.907z" /> +<glyph unicode="" d="M0 85.334h1024v-170.667h-1024zM469.333 810.667l-234.667-597.333h96l47.787 128h266.667l47.787-128h96l-234.24 597.333h-85.333zM410.453 426.667l101.547 270.080 101.547-270.080h-203.093z" /> +<glyph unicode="" d="M469.333 213.334h426.667v85.333h-426.667v-85.333zM128 426.667l170.667-170.667v341.333l-170.667-170.667zM128 42.667h768v85.333h-768v-85.333zM128 810.667v-85.333h768v85.333h-768zM469.333 554.667h426.667v85.333h-426.667v-85.333zM469.333 384h426.667v85.333h-426.667v-85.333z" /> +<glyph unicode="" d="M128 42.667h768v85.333h-768v-85.333zM128 597.334v-341.333l170.667 170.667-170.667 170.667zM469.333 213.334h426.667v85.333h-426.667v-85.333zM128 810.667v-85.333h768v85.333h-768zM469.333 554.667h426.667v85.333h-426.667v-85.333zM469.333 384h426.667v85.333h-426.667v-85.333z" /> +<glyph unicode="" d="M426.667 768v-128h94.293l-145.92-341.333h-119.040v-128h341.333v128h-94.293l145.92 341.333h119.040v128z" /> +<glyph unicode="" d="M256 640h106.667l-149.333 149.333-149.333-149.333h106.667v-426.667h-106.667l149.333-149.333 149.333 149.333h-106.667v426.667zM426.667 725.334v-85.333h512v85.333h-512zM426.667 128h512v85.333h-512v-85.333zM426.667 384h512v85.333h-512v-85.333z" /> +<glyph unicode="" d="M170.667 490.667c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM170.667 746.667c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM170.667 227.414c-31.573 0-56.747-25.6-56.747-56.747s25.6-56.747 56.747-56.747 56.747 25.6 56.747 56.747-25.173 56.747-56.747 56.747zM298.667 128h597.333v85.333h-597.333v-85.333zM298.667 384h597.333v85.333h-597.333v-85.333zM298.667 725.334v-85.333h597.333v85.333h-597.333z" /> +<glyph unicode="" d="M85.333 213.334h85.333v-21.333h-42.667v-42.667h42.667v-21.333h-85.333v-42.667h128v170.667h-128v-42.667zM128 597.334h42.667v170.667h-85.333v-42.667h42.667v-128zM85.333 469.334h76.8l-76.8-89.6v-38.4h128v42.667h-76.8l76.8 89.6v38.4h-128v-42.667zM298.667 725.334v-85.333h597.333v85.333h-597.333zM298.667 128h597.333v85.333h-597.333v-85.333zM298.667 384h597.333v85.333h-597.333v-85.333z" /> +<glyph unicode="" d="M768 768v42.667c0 23.467-19.2 42.667-42.667 42.667h-512c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667h512c23.467 0 42.667 19.2 42.667 42.667v42.667h42.667v-170.667h-426.667v-469.333c0-23.467 19.2-42.667 42.667-42.667h85.333c23.467 0 42.667 19.2 42.667 42.667v384h341.333v341.333h-128z" /> +<glyph unicode="" d="M256 213.334h128l85.333 170.667v256h-256v-256h128zM597.333 213.334h128l85.333 170.667v256h-256v-256h128z" /> +<glyph unicode="" d="M384 768v-128h213.333v-512h128v512h213.333v128h-554.667zM128 426.667h128v-298.667h128v298.667h128v128h-384v-128z" /> +<glyph unicode="" d="M426.667 128h170.667v128h-170.667v-128zM213.333 768v-128h213.333v-128h170.667v128h213.333v128h-597.333zM128 341.334h768v85.333h-768v-85.333z" /> +<glyph unicode="" d="M384 512v-213.333h85.333v469.333h85.333v-469.333h85.333v469.333h85.333v85.333h-341.333c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667zM896 170.667l-170.667 170.667v-128h-512v-85.333h512v-128l170.667 170.667z" /> +<glyph unicode="" d="M426.667 512v-213.333h85.333v469.333h85.333v-469.333h85.333v469.333h85.333v85.333h-341.333c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667zM341.333 213.334v128l-170.667-170.667 170.667-170.667v128h512v85.333h-512z" /> +<glyph unicode="" d="M512 213.334c141.227 0 256 114.773 256 256v341.333h-106.667v-341.333c0-82.347-66.987-149.333-149.333-149.333s-149.333 66.987-149.333 149.333v341.333h-106.667v-341.333c0-141.227 114.773-256 256-256zM213.333 128v-85.333h597.333v85.333h-597.333z" /> +<glyph unicode="" d="M768 768h-512v-85.333l277.333-256-277.333-256v-85.333h512v128h-298.667l213.333 213.333-213.333 213.333h298.667z" /> +<glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM384 213.334h-85.333v298.667h85.333v-298.667zM554.667 213.334h-85.333v426.667h85.333v-426.667zM725.333 213.334h-85.333v170.667h85.333v-170.667z" /> +<glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h597.333l170.667-170.667v768c0 46.933-38.4 85.333-85.333 85.333zM768 341.334h-512v85.333h512v-85.333zM768 469.334h-512v85.333h512v-85.333zM768 597.334h-512v85.333h512v-85.333z" /> +<glyph unicode="" d="M256 853.334c-46.933 0-84.907-38.4-84.907-85.333l-0.427-682.667c0-46.933 37.973-85.333 84.907-85.333h512.427c46.933 0 85.333 38.4 85.333 85.333v512l-256 256h-341.333zM554.667 554.667v234.667l234.667-234.667h-234.667z" /> +<glyph unicode="" d="M511.573 853.334c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM661.333 469.334c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM362.667 469.334c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM512 192c99.413 0 183.893 62.293 218.027 149.333h-436.053c34.133-87.040 118.613-149.333 218.027-149.333z" /> +<glyph unicode="" d="M725.333 426.667h-213.333v-213.333h213.333v213.333zM682.667 896v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.36 0-84.907-38.4-84.907-85.333l-0.427-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333h-42.667v85.333h-85.333zM810.667 128h-597.333v469.333h597.333v-469.333z" /> +<glyph unicode="" d="M166.4 426.667c0 72.96 59.307 132.267 132.267 132.267h170.667v81.067h-170.667c-117.76 0-213.333-95.573-213.333-213.333s95.573-213.333 213.333-213.333h170.667v81.067h-170.667c-72.96 0-132.267 59.307-132.267 132.267zM341.333 384h341.333v85.333h-341.333v-85.333zM725.333 640h-170.667v-81.067h170.667c72.96 0 132.267-59.307 132.267-132.267s-59.307-132.267-132.267-132.267h-170.667v-81.067h170.667c117.76 0 213.333 95.573 213.333 213.333s-95.573 213.333-213.333 213.333z" /> +<glyph unicode="" d="M896 128v597.333c0 46.933-38.4 85.333-85.333 85.333h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333zM362.667 362.667l106.667-128.427 149.333 192.427 192-256h-597.333l149.333 192z" /> +<glyph unicode="" d="M725.333 67.84l60.16 60.16-145.493 145.493-60.16-60.16 145.493-145.493zM320 597.334h149.333v-238.507l-230.827-230.827 60.16-60.16 256 256v273.493h149.333l-192 192-192-192z" /> +<glyph unicode="" d="M938.24 768c0 46.933-37.973 85.333-84.907 85.333h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h597.333l170.667-170.667-0.427 768z" /> +<glyph unicode="" d="M128 202.667v-160h160l471.893 471.893-160 160-471.893-471.893zM883.627 638.294c16.64 16.64 16.64 43.52 0 60.16l-99.84 99.84c-16.64 16.64-43.52 16.64-60.16 0l-78.080-78.080 160-160 78.080 78.080z" /> +<glyph unicode="" d="M213.333 768v-85.333h597.333v85.333h-597.333zM213.333 341.334h170.667v-256h256v256h170.667l-298.667 298.667-298.667-298.667z" /> +<glyph unicode="" d="M682.667 384h-128v426.667h-85.333v-426.667h-128l170.667-170.667 170.667 170.667zM170.667 128v-85.333h682.667v85.333h-682.667z" /> +<glyph unicode="" d="M341.333 128h128v-170.667h85.333v170.667h128l-170.667 170.667-170.667-170.667zM682.667 725.334h-128v170.667h-85.333v-170.667h-128l170.667-170.667 170.667 170.667zM170.667 469.334v-85.333h682.667v85.333h-682.667z" /> +<glyph unicode="" d="M341.333 469.334h128v-426.667h85.333v426.667h128l-170.667 170.667-170.667-170.667zM170.667 810.667v-85.333h682.667v85.333h-682.667z" /> +<glyph unicode="" d="M170.667 128h256v85.333h-256v-85.333zM853.333 725.334h-682.667v-85.333h682.667v85.333zM725.333 469.334h-554.667v-85.333h565.333c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333h-96v85.333l-128-128 128-128v85.333h85.333c94.293 0 170.667 76.373 170.667 170.667s-76.373 170.667-170.667 170.667z" /> +<glyph unicode="" d="M320 170.667c-129.707 0-234.667 104.96-234.667 234.667s104.96 234.667 234.667 234.667h448c94.293 0 170.667-76.373 170.667-170.667s-76.373-170.667-170.667-170.667h-362.667c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667h320v-64h-320c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667h362.667c58.88 0 106.667 47.787 106.667 106.667s-47.787 106.667-106.667 106.667h-448c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667h405.333v-64h-405.333z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM704 256h-362.667c-70.827 0-128 57.173-128 128s57.173 128 128 128l5.973-0.427c18.773 73.813 84.907 128.427 164.693 128.427 94.293 0 170.667-76.373 170.667-170.667h21.333c58.88 0 106.667-47.787 106.667-106.667s-47.787-106.667-106.667-106.667z" /> +<glyph unicode="" d="M825.6 510.294c-29.013 147.2-158.293 257.707-313.6 257.707-123.307 0-230.4-69.973-283.733-172.373-128.427-13.653-228.267-122.453-228.267-254.293 0-141.227 114.773-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-198.4 211.627zM426.667 213.334l-149.333 149.333 60.16 60.16 89.173-88.747 221.013 220.587 60.16-60.16-281.173-281.173z" /> +<glyph unicode="" d="M825.6 510.294c-29.013 147.2-158.293 257.707-313.6 257.707-123.307 0-230.4-69.973-283.733-172.373-128.427-13.653-228.267-122.453-228.267-254.293 0-141.227 114.773-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-198.4 211.627zM725.333 384l-213.333-213.333-213.333 213.333h128v170.667h170.667v-170.667h128z" /> +<glyph unicode="" d="M825.6 510.294c-29.013 147.2-158.293 257.707-313.6 257.707-63.147 0-121.6-18.347-171.093-49.92l62.293-62.293c32.427 17.067 69.547 26.88 108.8 26.88 129.707 0 234.667-104.96 234.667-234.667v-21.333h64c70.827 0 128-57.173 128-128 0-48.213-27.307-90.027-66.56-111.787l61.867-61.867c54.187 38.827 90.027 101.973 90.027 173.653 0 112.64-87.467 203.947-198.4 211.627zM128 713.814l117.333-116.907c-136.107-5.973-245.333-117.76-245.333-255.573 0-141.227 114.773-256 256-256h500.48l85.333-85.333 54.187 54.187-713.813 713.813-54.187-54.187zM329.813 512l341.333-341.333h-415.147c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667h73.813z" /> +<glyph unicode="" d="M825.6 510.294c-29.013 147.2-158.293 257.707-313.6 257.707-123.307 0-230.4-69.973-283.733-172.373-128.427-13.653-228.267-122.453-228.267-254.293 0-141.227 114.773-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-198.4 211.627zM810.667 170.667h-554.667c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667h30.293c28.16 98.56 118.187 170.667 225.707 170.667 129.707 0 234.667-104.96 234.667-234.667v-21.333h64c70.827 0 128-57.173 128-128s-57.173-128-128-128z" /> +<glyph unicode="" d="M825.6 510.294c-29.013 147.2-158.293 257.707-313.6 257.707-123.307 0-230.4-69.973-283.733-172.373-128.427-13.653-228.267-122.453-228.267-254.293 0-141.227 114.773-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-198.4 211.627zM597.333 384v-170.667h-170.667v170.667h-128l213.333 213.333 213.333-213.333h-128z" /> +<glyph unicode="" d="M825.6 510.294c-29.013 147.2-158.293 257.707-313.6 257.707-123.307 0-230.4-69.973-283.733-172.373-128.427-13.653-228.267-122.453-228.267-254.293 0-141.227 114.773-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-198.4 211.627z" /> +<glyph unicode="" d="M810.667 554.667h-170.667v256h-256v-256h-170.667l298.667-298.667 298.667 298.667zM213.333 170.667v-85.333h597.333v85.333h-597.333z" /> +<glyph unicode="" d="M384 256h256v256h170.667l-298.667 298.667-298.667-298.667h170.667zM213.333 170.667h597.333v-85.333h-597.333z" /> +<glyph unicode="" d="M853.333 682.667h-341.333l-85.333 85.333h-256c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM853.333 170.667h-682.667v426.667h682.667v-426.667z" /> +<glyph unicode="" d="M853.333 682.667h-341.333l-85.333 85.333h-256c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM640 554.667c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333-85.333 38.4-85.333 85.333 38.4 85.333 85.333 85.333zM810.667 213.334h-341.333v42.667c0 56.747 113.92 85.333 170.667 85.333s170.667-28.587 170.667-85.333v-42.667z" /> +<glyph unicode="" d="M426.667 768h-256c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333h-341.333l-85.333 85.333z" /> +<glyph unicode="" d="M42.667 170.667v-128h128c0 70.827-57.173 128-128 128zM42.667 341.334v-85.333c117.76 0 213.333-95.573 213.333-213.333h85.333c0 165.12-133.547 298.667-298.667 298.667zM810.667 640h-597.333v-69.547c168.96-54.613 302.507-188.16 357.12-357.12h240.213v426.667zM42.667 512v-85.333c212.053 0 384-171.947 384-384h85.333c0 259.413-210.347 469.333-469.333 469.333zM896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-128h85.333v128h768v-597.333h-298.667v-85.333h298.667c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-128h85.333v128h768v-597.333h-298.667v-85.333h298.667c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM42.667 170.667v-128h128c0 70.827-57.173 128-128 128zM42.667 341.334v-85.333c117.76 0 213.333-95.573 213.333-213.333h85.333c0 165.12-133.547 298.667-298.667 298.667zM42.667 512v-85.333c212.053 0 384-171.947 384-384h85.333c0 259.413-210.347 469.333-469.333 469.333z" /> +<glyph unicode="" d="M853.333 170.667c46.933 0 84.907 38.4 84.907 85.333l0.427 426.667c0 46.933-38.4 85.333-85.333 85.333h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h-170.667v-85.333h1024v85.333h-170.667zM170.667 682.667h682.667v-426.667h-682.667v426.667z" /> +<glyph unicode="" d="M896 853.334h-768c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h298.667l-85.333-128v-42.667h341.333v42.667l-85.333 128h298.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM896 341.334h-768v426.667h768v-426.667z" /> +<glyph unicode="" d="M896 853.334h-768c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h298.667v-85.333h-85.333v-85.333h341.333v85.333h-85.333v85.333h298.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM896 256h-768v512h768v-512z" /> +<glyph unicode="" d="M341.333-42.666h341.333v85.333h-341.333v-85.333zM682.667 895.574l-341.333 0.427c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h341.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 84.907-85.333 84.907zM682.667 298.667h-341.333v426.667h341.333v-426.667z" /> +<glyph unicode="" d="M640 618.667v234.667h-256v-234.667l128-128 128 128zM320 554.667h-234.667v-256h234.667l128 128-128 128zM384 234.667v-234.667h256v234.667l-128 128-128-128zM704 554.667l-128-128 128-128h234.667v256h-234.667z" /> +<glyph unicode="" d="M512 896c-212.053 0-384-171.947-384-384v-298.667c0-70.827 57.173-128 128-128h128v341.333h-170.667v85.333c0 165.12 133.547 298.667 298.667 298.667s298.667-133.547 298.667-298.667v-85.333h-170.667v-341.333h170.667v-42.667h-298.667v-85.333h256c70.827 0 128 57.173 128 128v426.667c0 212.053-171.947 384-384 384z" /> +<glyph unicode="" d="M512 896c-212.053 0-384-171.947-384-384v-298.667c0-70.827 57.173-128 128-128h128v341.333h-170.667v85.333c0 165.12 133.547 298.667 298.667 298.667s298.667-133.547 298.667-298.667v-85.333h-170.667v-341.333h128c70.827 0 128 57.173 128 128v298.667c0 212.053-171.947 384-384 384z" /> +<glyph unicode="" d="M661.333 512c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM362.667 512c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM512 213.334c111.36 0 206.080 71.253 241.067 170.667h-482.133c34.987-99.413 129.707-170.667 241.067-170.667zM511.573 896c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM512 128c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333z" /> +<glyph unicode="" d="M316.16 604.16l195.84-195.413 195.84 195.413 60.16-60.16-256-256-256 256z" /> +<glyph unicode="" d="M657.493 252.16l-195.413 195.84 195.413 195.84-60.16 60.16-256-256 256-256z" /> +<glyph unicode="" d="M366.507 241.494l195.413 195.84-195.413 195.84 60.16 60.16 256-256-256-256z" /> +<glyph unicode="" d="M316.16 281.174l195.84 195.413 195.84-195.413 60.16 60.16-256 256-256-256z" /> +<glyph unicode="" d="M896 469.334h-604.587l152.747 153.173-60.16 60.16-256-256 256-256 60.16 60.16-152.747 153.173h604.587z" /> +<glyph unicode="" d="M512 579.84l195.84-195.84 60.16 60.16-256 256-256-256 60.16-60.16 195.84 195.84zM256 170.667h512v85.333h-512v-85.333z" /> +<glyph unicode="" d="M256 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM512 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M853.333 810.667h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-426.667c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM469.333 682.667h85.333v-85.333h-85.333v85.333zM469.333 554.667h85.333v-85.333h-85.333v85.333zM341.333 682.667h85.333v-85.333h-85.333v85.333zM341.333 554.667h85.333v-85.333h-85.333v85.333zM298.667 469.334h-85.333v85.333h85.333v-85.333zM298.667 597.334h-85.333v85.333h85.333v-85.333zM682.667 298.667h-341.333v85.333h341.333v-85.333zM682.667 469.334h-85.333v85.333h85.333v-85.333zM682.667 597.334h-85.333v85.333h85.333v-85.333zM810.667 469.334h-85.333v85.333h85.333v-85.333zM810.667 597.334h-85.333v85.333h85.333v-85.333zM512-42.666l170.667 170.667h-341.333l170.667-170.667z" /> +<glyph unicode="" d="M810.667 640v-170.667h-561.92l152.747 153.173-60.16 60.16-256-256 256-256 60.16 60.16-152.747 153.173h647.253v256z" /> +<glyph unicode="" d="M494.507 622.507l152.747-153.173h-604.587v-85.333h604.587l-153.173-153.173 60.587-60.16 256 256-256 256-60.16-60.16zM853.333 682.667v-512h85.333v512h-85.333z" /> +<glyph unicode="" d="M512 298.667c70.827 0 127.573 57.173 127.573 128l0.427 256c0 70.827-57.173 128-128 128s-128-57.173-128-128v-256c0-70.827 57.173-128 128-128zM738.133 426.667c0-128-108.373-217.6-226.133-217.6s-226.133 89.6-226.133 217.6h-72.533c0-145.92 116.053-265.813 256-286.72v-139.947h85.333v139.947c139.947 20.48 256 140.8 256 286.72h-72.533z" /> +<glyph unicode="" d="M853.333 725.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-426.667c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM469.333 597.334h85.333v-85.333h-85.333v85.333zM469.333 469.334h85.333v-85.333h-85.333v85.333zM341.333 597.334h85.333v-85.333h-85.333v85.333zM341.333 469.334h85.333v-85.333h-85.333v85.333zM298.667 384h-85.333v85.333h85.333v-85.333zM298.667 512h-85.333v85.333h85.333v-85.333zM682.667 213.334h-341.333v85.333h341.333v-85.333zM682.667 384h-85.333v85.333h85.333v-85.333zM682.667 512h-85.333v85.333h85.333v-85.333zM810.667 384h-85.333v85.333h85.333v-85.333zM810.667 512h-85.333v85.333h85.333v-85.333z" /> +<glyph unicode="" d="M938.667 170.667v640h-853.333v-640h-85.333v-85.333h1024v85.333h-85.333zM597.333 170.667h-170.667v42.667h170.667v-42.667zM853.333 298.667h-682.667v426.667h682.667v-426.667z" /> +<glyph unicode="" d="M853.333 170.667c46.933 0 84.907 38.4 84.907 85.333l0.427 469.333c0 46.933-38.4 85.333-85.333 85.333h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-469.333c0-46.933 38.4-85.333 85.333-85.333h-170.667c0-46.933 38.4-85.333 85.333-85.333h853.333c46.933 0 85.333 38.4 85.333 85.333h-170.667zM170.667 725.334h682.667v-469.333h-682.667v469.333zM512 128c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667z" /> +<glyph unicode="" d="M853.333 170.667v42.667c46.933 0 84.907 38.4 84.907 85.333l0.427 426.667c0 46.933-38.4 85.333-85.333 85.333h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333v-42.667h-170.667v-85.333h1024v85.333h-170.667zM170.667 725.334h682.667v-426.667h-682.667v426.667z" /> +<glyph unicode="" d="M853.333 170.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h-170.667v-85.333h1024v85.333h-170.667zM170.667 682.667h682.667v-426.667h-682.667v426.667z" /> +<glyph unicode="" d="M640 554.667h-256v-256h256v256zM554.667 384h-85.333v85.333h85.333v-85.333zM896 469.334v85.333h-85.333v85.333c0 46.933-38.4 85.333-85.333 85.333h-85.333v85.333h-85.333v-85.333h-85.333v85.333h-85.333v-85.333h-85.333c-46.933 0-85.333-38.4-85.333-85.333v-85.333h-85.333v-85.333h85.333v-85.333h-85.333v-85.333h85.333v-85.333c0-46.933 38.4-85.333 85.333-85.333h85.333v-85.333h85.333v85.333h85.333v-85.333h85.333v85.333h85.333c46.933 0 85.333 38.4 85.333 85.333v85.333h85.333v85.333h-85.333v85.333h85.333zM725.333 213.334h-426.667v426.667h426.667v-426.667z" /> +<glyph unicode="" d="M554.667 893.014v-338.347h298.667c0 174.080-130.133 317.44-298.667 338.347zM170.667 298.667c0-188.587 152.747-341.333 341.333-341.333s341.333 152.747 341.333 341.333v170.667h-682.667v-170.667zM469.333 893.014c-168.533-20.907-298.667-164.267-298.667-338.347h298.667v338.347z" /> +<glyph unicode="" d="M682.667 896h-341.333c-70.827 0-128-57.173-128-128v-682.667c0-70.827 57.173-128 128-128h341.333c70.827 0 128 57.173 128 128v682.667c0 70.827-57.173 128-128 128zM597.333 42.667h-170.667v42.667h170.667v-42.667zM736 170.667h-448v597.333h448v-597.333z" /> +<glyph unicode="" d="M661.333 896h-341.333c-58.88 0-106.667-47.787-106.667-106.667v-725.333c0-58.88 47.787-106.667 106.667-106.667h341.333c58.88 0 106.667 47.787 106.667 106.667v725.333c0 58.88-47.787 106.667-106.667 106.667zM490.667-0c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM682.667 170.667h-384v597.333h384v-597.333z" /> +<glyph unicode="" d="M938.667 682.667v85.333h-647.68l85.333-85.333h562.347zM81.92 868.267l-54.187-54.187 77.653-77.653c-12.373-14.507-20.053-33.28-20.053-53.76v-469.333h-85.333v-128h756.48l100.267-100.267 54.187 54.187-829.013 829.013zM170.667 671.147l457.813-457.813h-457.813v457.813zM981.333 597.334h-256c-23.467 0-42.667-19.2-42.667-42.667v-178.347l85.333-85.333v221.013h170.667v-298.667h-93.013l128-128h7.68c23.467 0 42.667 19.2 42.667 42.667v426.667c0 23.467-19.2 42.667-42.667 42.667z" /> +<glyph unicode="" d="M170.667 682.667h768v85.333h-768c-46.933 0-85.333-38.4-85.333-85.333v-469.333h-85.333v-128h597.333v128h-426.667v469.333zM981.333 597.334h-256c-23.467 0-42.667-19.2-42.667-42.667v-426.667c0-23.467 19.2-42.667 42.667-42.667h256c23.467 0 42.667 19.2 42.667 42.667v426.667c0 23.467-19.2 42.667-42.667 42.667zM938.667 213.334h-170.667v298.667h170.667v-298.667z" /> +<glyph unicode="" d="M512 896l-384-170.667v-256c0-236.8 163.84-458.24 384-512 220.16 53.76 384 275.2 384 512v256l-384 170.667zM512 427.094h298.667c-22.613-175.787-139.947-332.373-298.667-381.44v381.013h-298.667v243.2l298.667 132.693v-375.467z" /> +<glyph unicode="" d="M852.907 768c0 46.933-37.973 85.333-84.907 85.333h-341.333l-256-256v-512c0-46.933 38.4-85.333 85.333-85.333h512.427c46.933 0 84.907 38.4 84.907 85.333l-0.427 682.667zM384 128h-85.333v85.333h85.333v-85.333zM725.333 128h-85.333v85.333h85.333v-85.333zM384 298.667h-85.333v170.667h85.333v-170.667zM554.667 128h-85.333v170.667h85.333v-170.667zM554.667 384h-85.333v85.333h85.333v-85.333zM725.333 298.667h-85.333v170.667h85.333v-170.667z" /> +<glyph unicode="" d="M725.333 895.574l-426.667 0.427c-46.933 0-85.333-38.4-85.333-85.333v-768c0-46.933 38.4-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v768c0 46.933-38.4 84.907-85.333 84.907zM725.333 128h-426.667v597.333h426.667v-597.333z" /> +<glyph unicode="" d="M725.333 853.334h-426.667c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-84.907 85.333-84.907l426.667-0.427c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM512 768c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333c-47.36 0-85.333 38.4-85.333 85.333s37.973 85.333 85.333 85.333zM512 85.334c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333zM512 426.667c-70.827 0-128-57.173-128-128s57.173-128 128-128 128 57.173 128 128-57.173 128-128 128z" /> +<glyph unicode="" d="M768 938.667h-512c-70.827 0-128-57.173-128-128v-768c0-70.827 57.173-128 128-128h512c70.827 0 128 57.173 128 128v768c0 70.827-57.173 128-128 128zM597.333-0h-170.667v42.667h170.667v-42.667zM821.333 128h-618.667v682.667h618.667v-682.667z" /> +<glyph unicode="" d="M789.333 938.667h-597.333c-58.88 0-106.667-47.787-106.667-106.667v-810.667c0-58.88 47.787-106.667 106.667-106.667h597.333c58.88 0 106.667 47.787 106.667 106.667v810.667c0 58.88-47.787 106.667-106.667 106.667zM490.667-42.666c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM810.667 128h-640v682.667h640v-682.667z" /> +<glyph unicode="" d="M896 768h-768c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 84.907 38.4 84.907 85.333l0.427 512c0 46.933-38.4 85.333-85.333 85.333zM810.667 170.667h-597.333v512h597.333v-512z" /> +<glyph unicode="" d="M896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h213.333v-85.333h341.333v85.333h213.333c46.933 0 84.907 38.4 84.907 85.333l0.427 512c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-768v512h768v-512z" /> +<glyph unicode="" d="M853.333 426.667c0 108.373-50.773 205.227-129.707 267.52l-40.96 244.48h-341.333l-40.533-244.48c-79.36-62.293-130.133-158.72-130.133-267.52s50.773-205.227 130.133-267.52l40.533-244.48h341.333l40.96 244.48c78.933 62.293 129.707 159.147 129.707 267.52zM256 426.667c0 141.227 114.773 256 256 256s256-114.773 256-256-114.773-256-256-256-256 114.773-256 256z" /> +<glyph unicode="" d="M170.667 682.667h-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333v85.333h-597.333v597.333zM853.333 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM810.667 469.334h-170.667v-170.667h-85.333v170.667h-170.667v85.333h170.667v170.667h85.333v-170.667h170.667v-85.333z" /> +<glyph unicode="" d="M512 853.334c-235.093 0-426.667-191.573-426.667-426.667s191.573-426.667 426.667-426.667 426.667 191.573 426.667 426.667-191.573 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333zM640 426.667c0-70.827-57.173-128-128-128s-128 57.173-128 128 57.173 128 128 128 128-57.173 128-128z" /> +<glyph unicode="" d="M614.4 682.667l-17.067 85.333h-384v-725.333h85.333v298.667h238.933l17.067-85.333h298.667v426.667z" /> +<glyph unicode="" d="M512 810.667v-395.947c-20.053 7.253-41.387 11.947-64 11.947-106.24 0-192-85.76-192-192s85.76-192 192-192c98.56 0 179.2 74.667 189.867 170.667h2.133v469.333h170.667v128h-298.667z" /> +<glyph unicode="" d="M426.667 554.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM426.667 384c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM298.667 533.334c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM426.667 234.667c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM298.667 362.667c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM426.667 618.667c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM597.333 554.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM597.333 618.667c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM725.333 362.667c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM725.333 533.334c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM597.333 234.667c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM597.333 384c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667z" /> +<glyph unicode="" d="M213.333 192c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM384 384c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM384 554.667c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM128 42.667h768v85.333h-768v-85.333zM213.333 533.334c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM213.333 362.667c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM384 213.334c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM725.333 234.667c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM128 810.667v-85.333h768v85.333h-768zM725.333 576c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM725.333 405.334c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM554.667 554.667c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM554.667 384c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM554.667 213.334c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667z" /> +<glyph unicode="" d="M597.333 640c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM588.8 448.854l8.533-0.853c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64l0.853-8.533c3.84-28.587 26.027-50.773 54.613-54.613zM597.333 789.334c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM426.667 789.334c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM896 490.667c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM426.667 640c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM768 298.667c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM768 469.334c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM768 640c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM597.333 64c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM106.667 713.814l161.28-161.28-11.947 2.133c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667c0 4.267-1.28 8.107-2.56 11.947l119.893-119.893c-30.293-4.693-53.333-31.147-53.333-62.72 0-35.413 28.587-64 64-64 31.573 0 58.027 23.040 62.72 53.333l119.893-119.893c-3.84 1.28-7.68 2.56-11.947 2.56-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667c0 4.267-1.28 8.107-2.56 11.947l161.28-161.28 54.613 54.187-692.48 692.48-54.187-54.187zM426.667 213.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM896 362.667c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM256 384c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM128 533.334c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM426.667 64c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM256 213.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM128 362.667c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333z" /> +<glyph unicode="" d="M256 384c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM256 213.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM256 554.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM128 533.334c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM256 725.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM896 490.667c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM597.333 640c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM597.333 789.334c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM128 362.667c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM426.667 64c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM426.667 789.334c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM426.667 640c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM426.667 405.334c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM768 384c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM768 213.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM768 554.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM768 725.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM896 362.667c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM597.333 213.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM597.333 64c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM426.667 576c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM426.667 213.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM597.333 405.334c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM597.333 576c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64z" /> +<glyph unicode="" d="M938.667 426.667c0-235.641-191.025-426.667-426.667-426.667s-426.667 191.025-426.667 426.667c0 235.641 191.025 426.667 426.667 426.667s426.667-191.025 426.667-426.667z" /> +<glyph unicode="" d="M426.667 853.334c-77.653 0-150.613-21.333-213.333-57.6 127.573-73.813 213.333-211.2 213.333-369.067s-85.76-295.253-213.333-369.067c62.72-36.267 135.68-57.6 213.333-57.6 235.52 0 426.667 191.147 426.667 426.667s-191.147 426.667-426.667 426.667z" /> +<glyph unicode="" d="M384 853.334c-44.8 0-87.467-6.827-128-19.627 173.227-54.187 298.667-215.893 298.667-407.040s-125.44-352.853-298.667-407.040c40.533-12.8 83.2-19.627 128-19.627 235.52 0 426.667 191.147 426.667 426.667s-191.147 426.667-426.667 426.667z" /> +<glyph unicode="" d="M853.333 567.894v200.107h-200.107l-141.227 141.227-141.227-141.227h-200.107v-200.107l-141.227-141.227 141.227-141.227v-200.107h200.107l141.227-141.227 141.227 141.227h200.107v200.107l141.227 141.227-141.227 141.227zM512 170.667c-37.973 0-74.24 8.533-106.667 23.467 87.893 40.533 149.333 129.28 149.333 232.533s-61.44 192-149.333 232.533c32.427 14.933 68.693 23.467 106.667 23.467 141.227 0 256-114.773 256-256s-114.773-256-256-256z" /> +<glyph unicode="" d="M853.333 285.44l141.227 141.227-141.227 141.227v200.107h-200.107l-141.227 141.227-141.227-141.227h-200.107v-200.107l-141.227-141.227 141.227-141.227v-200.107h200.107l141.227-141.227 141.227 141.227h200.107v200.107zM512 170.667c-141.227 0-256 114.773-256 256s114.773 256 256 256 256-114.773 256-256-114.773-256-256-256z" /> +<glyph unicode="" d="M853.333 285.44l141.227 141.227-141.227 141.227v200.107h-200.107l-141.227 141.227-141.227-141.227h-200.107v-200.107l-141.227-141.227 141.227-141.227v-200.107h200.107l141.227-141.227 141.227 141.227h200.107v200.107zM512 170.667v512c141.227 0 256-114.773 256-256s-114.773-256-256-256z" /> +<glyph unicode="" d="M853.333 567.894v200.107h-200.107l-141.227 141.227-141.227-141.227h-200.107v-200.107l-141.227-141.227 141.227-141.227v-200.107h200.107l141.227-141.227 141.227 141.227h200.107v200.107l141.227 141.227-141.227 141.227zM512 170.667c-141.227 0-256 114.773-256 256s114.773 256 256 256 256-114.773 256-256-114.773-256-256-256zM512 597.334c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667z" /> +<glyph unicode="" d="M298.667 341.334c-70.827 0-128-57.173-128-128 0-55.893-49.493-85.333-85.333-85.333 39.253-52.053 106.24-85.333 170.667-85.333 94.293 0 170.667 76.373 170.667 170.667 0 70.827-57.173 128-128 128zM883.627 741.12l-57.173 57.173c-16.64 16.64-43.52 16.64-60.16 0l-382.293-382.293 117.333-117.333 382.293 382.293c16.64 16.64 16.64 43.52 0 60.16z" /> +<glyph unicode="" d="M648.533 426.667c0-75.405-61.128-136.533-136.533-136.533s-136.533 61.128-136.533 136.533c0 75.405 61.128 136.533 136.533 136.533s136.533-61.128 136.533-136.533zM384 853.334l-78.080-85.333h-135.253c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333h-135.253l-78.080 85.333h-256zM512 213.334c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333z" /> +<glyph unicode="" d="M426.667 85.334h-213.333v-85.333h213.333v-85.333l128 128-128 128v-85.333zM597.333 85.334v-85.333h213.333v85.333h-213.333zM512 597.334c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333-84.907-38.4-84.907-85.333 37.973-85.333 84.907-85.333zM725.333 938.667h-426.667c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM298.667 853.334h426.667v-448c0 71.253-142.080 106.667-213.333 106.667s-213.333-35.413-213.333-106.667v448z" /> +<glyph unicode="" d="M426.667 85.334h-213.333v-85.333h213.333v-85.333l128 128-128 128v-85.333zM597.333 85.334v-85.333h213.333v85.333h-213.333zM725.333 938.667h-426.667c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM512 682.667c-47.36 0-85.333 38.4-85.333 85.333s37.973 85.333 84.907 85.333 85.333-38.4 85.333-85.333c0.427-46.933-37.973-85.333-84.907-85.333z" /> +<glyph unicode="" d="M597.333 725.334c0 46.933-38.4 85.333-85.333 85.333h-42.667v42.667c0 23.467-19.2 42.667-42.667 42.667h-170.667c-23.467 0-42.667-19.2-42.667-42.667v-42.667h-42.667c-46.933 0-85.333-38.4-85.333-85.333v-640c0-46.933 38.4-85.333 85.333-85.333h341.333c46.933 0 85.333 38.4 85.333 85.333h341.333v640h-341.333zM512 170.667h-85.333v85.333h85.333v-85.333zM512 554.667h-85.333v85.333h85.333v-85.333zM682.667 170.667h-85.333v85.333h85.333v-85.333zM682.667 554.667h-85.333v85.333h85.333v-85.333zM853.333 170.667h-85.333v85.333h85.333v-85.333zM853.333 554.667h-85.333v85.333h85.333v-85.333z" /> +<glyph unicode="" d="M401.067 490.667l203.52 352.427c-29.867 6.4-60.587 10.24-92.587 10.24-102.4 0-196.267-36.267-269.653-96l156.16-270.933 2.56 4.267zM919.040 554.667c-39.253 124.587-134.4 224.427-256 270.507l-156.16-270.507h412.16zM930.133 512h-319.573l12.373-21.333 203.093-352c69.973 75.947 112.64 176.64 112.64 288 0 29.44-2.987 57.6-8.533 85.333zM364.373 426.667l-166.4 288c-69.547-75.947-112.64-176.64-112.64-288 0-29.44 2.987-57.6 8.533-85.333h319.573l-49.067 85.333zM104.96 298.667c39.253-124.587 134.4-224.427 256-270.507l156.16 270.507h-412.16zM585.813 298.667l-166.4-288.427c29.867-6.4 60.587-10.24 92.587-10.24 102.4 0 196.267 36.267 269.653 96l-156.16 270.933-39.68-68.267z" /> +<glyph unicode="" d="M512 597.334c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM213.333 298.667h-85.333v-170.667c0-46.933 38.4-85.333 85.333-85.333h170.667v85.333h-170.667v170.667zM213.333 725.334h170.667v85.333h-170.667c-46.933 0-85.333-38.4-85.333-85.333v-170.667h85.333v170.667zM810.667 810.667h-170.667v-85.333h170.667v-170.667h85.333v170.667c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-170.667v-85.333h170.667c46.933 0 85.333 38.4 85.333 85.333v170.667h-85.333v-170.667z" /> +<glyph unicode="" d="M213.333 298.667h-85.333v-170.667c0-46.933 38.4-85.333 85.333-85.333h170.667v85.333h-170.667v170.667zM213.333 725.334h170.667v85.333h-170.667c-46.933 0-85.333-38.4-85.333-85.333v-170.667h85.333v170.667zM810.667 810.667h-170.667v-85.333h170.667v-170.667h85.333v170.667c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-170.667v-85.333h170.667c46.933 0 85.333 38.4 85.333 85.333v170.667h-85.333v-170.667zM512 597.334c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM512 341.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333z" /> +<glyph unicode="" d="M938.667 256v512c0 46.933-38.4 85.333-85.333 85.333h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333zM469.333 426.667l86.613-115.627 126.72 158.293 170.667-213.333h-512l128 170.667zM85.333 682.667v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333v85.333h-597.333v597.333h-85.333z" /> +<glyph unicode="" d="M512 810.667c-212.053 0-384-171.947-384-384s171.947-384 384-384c35.413 0 64 28.587 64 64 0 16.64-6.4 31.573-16.64 43.093-9.813 11.093-16.213 26.027-16.213 42.24 0 35.413 28.587 64 64 64h75.52c117.76 0 213.333 95.573 213.333 213.333 0 188.587-171.947 341.333-384 341.333zM277.333 426.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM405.333 597.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM618.667 597.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 426.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" /> +<glyph unicode="" d="M883.627 698.454l-99.84 99.84c-16.64 16.64-43.52 16.64-60.16 0l-133.12-133.12-82.347 81.493-60.16-60.16 60.587-60.587-380.587-380.587v-202.667h202.667l380.587 380.587 60.587-60.587 60.16 60.16-81.92 81.92 133.12 133.12c17.067 17.067 17.067 43.947 0.427 60.587zM295.253 128l-81.92 81.92 343.893 343.893 81.92-81.92-343.893-343.893z" /> +<glyph unicode="" d="M426.667 810.667h-213.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h213.333v-85.333h85.333v938.667h-85.333v-85.333zM426.667 170.667h-213.333l213.333 256v-256zM810.667 810.667h-213.333v-85.333h213.333v-554.667l-213.333 256v-384h213.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M682.667 597.334h-85.333v-128h-128v-85.333h128v-128h85.333v128h128v85.333h-128zM85.333 426.667c0 119.040 69.973 221.867 171.093 269.653v92.16c-148.907-52.907-256.427-194.987-256.427-361.813s107.52-308.907 256.427-361.813v92.16c-101.12 47.787-171.093 150.613-171.093 269.653zM640 810.667c-211.627 0-384-172.373-384-384s172.373-384 384-384 384 172.373 384 384-172.373 384-384 384zM640 128c-164.693 0-298.667 133.973-298.667 298.667s133.973 298.667 298.667 298.667 298.667-133.973 298.667-298.667-133.973-298.667-298.667-298.667z" /> +<glyph unicode="" d="M554.667 640h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667v170.667zM512 853.334c-235.093 0-426.667-191.573-426.667-426.667s191.573-426.667 426.667-426.667 426.667 191.573 426.667 426.667-191.573 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" /> +<glyph unicode="" d="M810.667 768h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM810.667 170.667h-597.333v512h597.333v-512z" /> +<glyph unicode="" d="M810.667 725.334h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM810.667 213.334h-597.333v426.667h597.333v-426.667z" /> +<glyph unicode="" d="M810.667 640h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-256c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v256c0 46.933-38.4 85.333-85.333 85.333zM810.667 298.667h-597.333v256h597.333v-256z" /> +<glyph unicode="" d="M810.667 682.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-341.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v341.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 256h-597.333v341.333h597.333v-341.333z" /> +<glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-597.333v597.333h597.333v-597.333z" /> +<glyph unicode="" d="M128 725.334v-170.667h85.333v170.667h170.667v85.333h-170.667c-46.933 0-85.333-38.4-85.333-85.333zM213.333 298.667h-85.333v-170.667c0-46.933 38.4-85.333 85.333-85.333h170.667v85.333h-170.667v170.667zM810.667 128h-170.667v-85.333h170.667c46.933 0 85.333 38.4 85.333 85.333v170.667h-85.333v-170.667zM810.667 810.667h-170.667v-85.333h170.667v-170.667h85.333v170.667c0 46.933-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M810.667 725.334h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM810.667 213.334h-597.333v426.667h597.333v-426.667z" /> +<glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-597.333v597.333h597.333v-597.333zM595.627 414.294l-117.333-151.040-83.627 100.693-117.333-150.613h469.333l-151.040 200.96z" /> +<glyph unicode="" d="M725.333 810.667h-426.667c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM725.333 128h-426.667v597.333h426.667v-597.333z" /> +<glyph unicode="" d="M768 768h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM768 170.667h-512v512h512v-512z" /> +<glyph unicode="" d="M725.333 298.667h85.333v341.333c0 46.933-38.4 85.333-85.333 85.333h-341.333v-85.333h341.333v-341.333zM298.667 213.334v682.667h-85.333v-170.667h-170.667v-85.333h170.667v-426.667c0-46.933 38.4-85.333 85.333-85.333h426.667v-170.667h85.333v170.667h170.667v85.333h-682.667z" /> +<glyph unicode="" d="M85.333 277.334v-85.333h853.333v85.333h-853.333zM85.333 490.667v-85.333h853.333v85.333h-853.333zM85.333 704v-85.333h853.333v85.333h-853.333z" /> +<glyph unicode="" d="M128 768l384-682.667 384 682.667h-768zM272.213 682.667h480l-240.213-426.667-239.787 426.667z" /> +<glyph unicode="" d="M128 202.667v-160h160l471.893 471.893-160 160-471.893-471.893zM883.627 638.294c16.64 16.64 16.64 43.52 0 60.16l-99.84 99.84c-16.64 16.64-43.52 16.64-60.16 0l-78.080-78.080 160-160 78.080 78.080z" /> +<glyph unicode="" d="M170.667 469.334v-85.333h341.333v85.333h-341.333zM810.667 170.667h-85.333v453.12l-128-43.52v72.533l200.533 72.533h12.8v-554.667z" /> +<glyph unicode="" d="M642.133 243.627l122.027 130.987c16.213 16.64 30.72 33.707 44.373 50.347s25.173 33.28 34.987 49.92c9.813 16.64 17.493 33.28 23.040 49.92s8.107 33.707 8.107 50.347c0 22.613-3.84 43.52-11.52 62.293s-18.773 34.56-33.28 47.36c-14.507 13.227-32.853 23.040-53.76 30.293-21.76 6.827-46.080 10.24-73.387 10.24-29.44 0-55.893-4.693-78.933-13.653s-42.667-21.76-58.027-37.547c-15.787-15.787-27.733-34.133-35.84-55.467-7.68-20.053-11.52-41.387-11.947-64h91.307c0.427 13.227 2.133 25.6 5.547 37.12 3.84 12.373 9.813 23.040 17.067 32 7.68 8.96 17.493 15.787 29.013 20.907s25.6 7.68 40.96 7.68c13.227 0 24.747-2.133 34.56-6.4s18.347-10.667 25.173-18.347c6.827-7.68 11.947-17.067 15.787-27.733 3.413-10.667 5.547-22.187 5.547-34.56 0-9.387-1.28-18.347-3.413-27.733-2.56-9.387-6.4-19.2-12.373-29.867s-13.653-22.613-23.893-35.413c-9.813-12.8-22.187-27.733-37.547-43.947l-177.92-194.133v-63.573h368.213v72.96h-253.867zM85.333 469.334v-85.333h341.333v85.333h-341.333z" /> +<glyph unicode="" d="M426.667 640h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667v170.667zM853.333 170.667h-85.333v453.12l-128-43.52v72.533l200.533 72.533h12.8v-554.667z" /> +<glyph unicode="" d="M684.8 243.627l122.027 130.987c16.213 16.64 30.72 33.707 44.373 50.347s25.173 33.28 34.987 49.92c9.813 16.64 17.493 33.28 23.040 49.92s8.107 33.707 8.107 50.347c0 22.613-3.84 43.52-11.52 62.293s-18.773 34.56-33.28 47.36c-14.507 13.227-32.853 23.040-53.76 30.293-21.76 6.827-46.080 10.24-73.387 10.24-29.44 0-55.893-4.693-78.933-13.653s-42.667-21.76-58.027-37.547c-15.787-15.787-27.733-34.133-35.84-55.467-7.68-20.053-11.52-41.387-11.947-64h91.307c0.427 13.227 2.133 25.6 5.547 37.12 3.84 12.373 9.813 23.040 17.067 32 7.68 8.96 17.493 15.787 29.013 20.907s25.6 7.68 40.96 7.68c13.227 0 24.747-2.133 34.56-6.4s18.347-10.667 25.173-18.347c6.827-7.68 11.947-17.067 15.787-27.733 3.413-10.667 5.547-22.187 5.547-34.56 0-9.387-1.28-18.347-3.413-27.733-2.56-9.387-6.4-19.2-12.373-29.867s-13.653-22.613-23.893-35.413c-9.813-12.8-22.187-27.733-37.547-43.947l-177.92-194.133v-63.573h368.213v72.96h-253.867zM341.333 640h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667v170.667z" /> +<glyph unicode="" d="M688.64 405.334c0-42.667-4.267-78.933-12.8-108.8s-20.48-54.187-35.413-72.533c-15.36-18.773-33.707-32-55.467-40.533s-45.653-12.8-72.533-12.8c-26.453 0-50.347 4.267-72.107 12.8s-40.533 21.76-55.893 40.533c-15.36 18.773-27.733 43.093-36.267 72.533-8.533 29.867-12.8 66.133-12.8 108.8v87.040c0 42.667 4.267 78.933 12.8 108.8s20.48 53.76 35.84 72.107c15.36 18.347 34.133 31.573 55.893 39.68 21.333 8.107 45.653 12.373 72.107 12.373 26.88 0 50.773-4.267 72.533-12.373s40.533-21.333 55.893-39.68c15.36-18.347 27.307-42.24 35.84-72.107s12.8-65.707 12.8-108.8v-87.040zM598.613 506.027c0 27.307-2.133 50.347-5.547 69.12-3.84 18.773-9.387 33.707-17.067 45.227-7.253 11.52-16.64 19.627-27.307 24.747-10.667 5.547-23.040 8.107-36.693 8.107s-26.027-2.56-36.693-7.68-20.053-13.227-27.307-24.747c-7.253-11.52-13.227-26.453-17.067-45.227s-5.547-41.813-5.547-69.12v-113.92c0-27.307 2.133-50.347 5.973-69.12 3.84-19.2 9.813-34.56 17.067-46.507s16.64-20.48 27.307-26.027 23.040-8.107 37.12-8.107c14.080 0 26.453 2.56 37.12 8.107s19.627 14.080 26.88 26.027c7.253 11.947 12.8 27.307 16.64 46.507s5.547 42.24 5.547 69.12v113.493z" /> +<glyph unicode="" d="M640 213.334v-85.333h85.333v85.333h85.333v85.333h-85.333v85.333h-85.333v-85.333h-85.333v-85.333h85.333zM853.333 853.334h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM213.333 725.334h256v-85.333h-256v85.333zM853.333 85.334h-682.667l682.667 682.667v-682.667z" /> +<glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM597.333 298.667h85.333v426.667h-170.667v-85.333h85.333v-341.333zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333z" /> +<glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333zM725.333 384h-170.667v85.333h85.333c46.933 0 85.333 37.973 85.333 85.333v85.333c0 47.36-38.4 85.333-85.333 85.333h-170.667v-85.333h170.667v-85.333h-85.333c-46.933 0-85.333-37.973-85.333-85.333v-170.667h256v85.333z" /> +<glyph unicode="" d="M896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333zM128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM725.333 384v64c0 35.413-28.587 64-64 64 35.413 0 64 28.587 64 64v64c0 47.36-38.4 85.333-85.333 85.333h-170.667v-85.333h170.667v-85.333h-85.333v-85.333h85.333v-85.333h-170.667v-85.333h170.667c46.933 0 85.333 37.973 85.333 85.333z" /> +<glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM640 298.667h85.333v426.667h-85.333v-170.667h-85.333v170.667h-85.333v-256h170.667v-170.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333z" /> +<glyph unicode="" d="M896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333zM128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM725.333 384v85.333c0 47.36-38.4 85.333-85.333 85.333h-85.333v85.333h170.667v85.333h-256v-256h170.667v-85.333h-170.667v-85.333h170.667c46.933 0 85.333 37.973 85.333 85.333z" /> +<glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333zM554.667 298.667h85.333c46.933 0 85.333 37.973 85.333 85.333v85.333c0 47.36-38.4 85.333-85.333 85.333h-85.333v85.333h170.667v85.333h-170.667c-46.933 0-85.333-37.973-85.333-85.333v-256c0-47.36 38.4-85.333 85.333-85.333zM554.667 469.334h85.333v-85.333h-85.333v85.333z" /> +<glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333zM554.667 298.667l170.667 341.333v85.333h-256v-85.333h170.667l-170.667-341.333h85.333z" /> +<glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333zM554.667 298.667h85.333c46.933 0 85.333 37.973 85.333 85.333v64c0 35.413-28.587 64-64 64 35.413 0 64 28.587 64 64v64c0 47.36-38.4 85.333-85.333 85.333h-85.333c-46.933 0-85.333-37.973-85.333-85.333v-64c0-35.413 28.587-64 64-64-35.413 0-64-28.587-64-64v-64c0-47.36 38.4-85.333 85.333-85.333zM554.667 640h85.333v-85.333h-85.333v85.333zM554.667 469.334h85.333v-85.333h-85.333v85.333z" /> +<glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM597.333 426.667v170.667c0 47.36-38.4 85.333-85.333 85.333h-42.667c-46.933 0-85.333-37.973-85.333-85.333v-42.667c0-47.36 38.4-85.333 85.333-85.333h42.667v-42.667h-128v-85.333h128c46.933 0 85.333 37.973 85.333 85.333zM469.333 554.667v42.667h42.667v-42.667h-42.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 554.667h-85.333v85.333h-85.333v-85.333h-85.333v-85.333h85.333v-85.333h85.333v85.333h85.333v-256h-597.333v597.333h597.333v-256z" /> +<glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333zM640 725.334h-85.333c-46.933 0-85.333-37.973-85.333-85.333v-85.333c0-47.36 38.4-85.333 85.333-85.333h85.333v-85.333h-170.667v-85.333h170.667c46.933 0 85.333 37.973 85.333 85.333v256c0 47.36-38.4 85.333-85.333 85.333zM640 554.667h-85.333v85.333h85.333v-85.333z" /> +<glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128l-298.667 341.333v-341.333h-298.667l298.667 341.333v256h298.667v-597.333z" /> +<glyph unicode="" d="M213.333 298.667h-85.333v-170.667c0-46.933 38.4-85.333 85.333-85.333h170.667v85.333h-170.667v170.667zM213.333 725.334h170.667v85.333h-170.667c-46.933 0-85.333-38.4-85.333-85.333v-170.667h85.333v170.667zM810.667 810.667h-170.667v-85.333h170.667v-170.667h85.333v170.667c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-170.667v-85.333h170.667c46.933 0 85.333 38.4 85.333 85.333v170.667h-85.333v-170.667zM512 554.667c-70.827 0-128-57.173-128-128s57.173-128 128-128 128 57.173 128 128-57.173 128-128 128z" /> +<glyph unicode="" d="M825.6 510.294c-29.013 147.2-158.293 257.707-313.6 257.707-123.307 0-229.973-69.973-283.307-172.373-128.427-13.653-228.693-122.027-228.693-254.293 0-141.227 114.773-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-198.4 211.627zM810.667 170.667h-554.667c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667 170.667-76.373 170.667-170.667h85.333c0 117.76-79.36 216.747-187.733 246.613 43.093 57.173 110.933 94.72 187.733 94.72 129.28 0 234.667-105.387 234.667-234.667v-21.333h64c70.4 0 128-57.6 128-128s-57.6-128-128-128z" /> +<glyph unicode="" d="M853.333 768h-170.667l-170.667 170.667-170.667-170.667h-170.667c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM853.333 85.334h-682.667v597.333h192.853l150.187 149.333 148.48-149.333h191.147v-597.333zM768 597.334h-512v-426.667h512z" /> +<glyph unicode="" d="M597.333 682.667l-160-213.333 121.6-162.133-68.267-51.2c-72.107 96-192 256-192 256l-256-341.333h938.667l-384 512z" /> +<glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333z" /> +<glyph unicode="" d="M469.333 765.014v86.187c-85.76-8.533-163.84-42.667-226.987-94.293l60.587-61.013c47.36 36.693 104.107 61.44 166.4 69.12zM781.653 756.907c-63.147 51.627-141.227 85.76-226.987 94.293v-86.187c62.293-7.68 119.040-32.427 166.4-69.12l60.587 61.013zM850.347 469.334h86.187c-8.533 85.76-42.667 163.84-94.293 226.987l-61.013-60.587c36.693-47.36 61.44-104.107 69.12-166.4zM242.773 635.734l-61.013 60.587c-51.627-63.147-85.76-141.227-94.293-226.987h86.187c7.68 62.293 32.427 119.040 69.12 166.4zM173.653 384h-86.187c8.533-85.76 42.667-163.84 94.293-226.987l61.013 61.013c-36.693 46.933-61.44 103.68-69.12 165.973zM640 426.667c0 70.827-57.173 128-128 128s-128-57.173-128-128 57.173-128 128-128 128 57.173 128 128zM781.227 217.6l61.013-61.013c51.627 63.147 85.76 141.653 94.293 226.987h-86.187c-7.68-61.867-32.427-118.613-69.12-165.973zM554.667 88.32v-86.187c85.76 8.533 163.84 42.667 226.987 94.293l-61.013 61.013c-46.933-36.693-103.68-61.44-165.973-69.12zM242.347 96.427c63.147-51.627 141.653-85.76 226.987-94.293v86.187c-62.293 7.68-119.040 32.427-166.4 69.12l-60.587-61.013z" /> +<glyph unicode="" d="M797.867 409.6c-11.947 6.827-24.32 12.373-36.693 17.067 12.373 4.693 24.747 10.24 36.693 17.067 81.92 47.36 127.573 133.12 128 221.44-76.373 43.947-173.653 47.36-256 0-11.947-6.827-23.040-14.933-33.28-23.040 2.133 13.227 3.413 26.88 3.413 40.533 0 94.72-51.627 177.067-128 221.44-76.373-44.373-128-126.72-128-221.44 0-13.653 1.28-27.307 3.413-40.533-10.24 8.533-21.333 16.64-33.28 23.467-81.92 47.36-179.2 43.947-256 0 0-88.32 45.653-174.080 128-221.44 11.947-6.827 24.32-12.373 36.693-17.067-12.373-4.693-24.747-10.24-36.693-17.067-81.92-47.36-127.573-133.12-128-221.44 76.373-43.947 173.653-47.36 256 0 11.947 6.827 23.040 14.933 33.28 23.040-2.133-13.653-3.413-27.307-3.413-40.96 0-94.72 51.627-177.067 128-221.44 76.373 44.373 128 126.72 128 221.44 0 13.653-1.28 27.307-3.413 40.533 10.24-8.533 21.333-16.213 33.28-23.040 81.92-47.36 179.2-43.947 256 0-0.427 88.32-46.080 174.080-128 221.44zM512 256c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667 170.667-76.373 170.667-170.667-76.373-170.667-170.667-170.667z" /> +<glyph unicode="" d="M680.96 499.627l-117.333-151.040-83.627 100.693-117.333-150.613h469.333l-151.040 200.96zM128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333z" /> +<glyph unicode="" d="M298.667 469.334h-256v-85.333h256v85.333zM391.253 607.574l-90.453 90.453-60.16-60.16 90.453-90.453 60.16 60.16zM554.667 896h-85.333v-256h85.333v256zM783.36 637.867l-60.16 60.16-90.453-90.453 60.16-60.16 90.453 90.453zM725.333 469.334v-85.333h256v85.333h-256zM512 554.667c-70.827 0-128-57.173-128-128s57.173-128 128-128 128 57.173 128 128-57.173 128-128 128zM632.747 245.76l90.453-90.453 60.16 60.16-90.453 90.453-60.16-60.16zM240.64 215.467l60.16-60.16 90.453 90.453-60.16 60.16-90.453-90.453zM469.333-42.666h85.333v256h-85.333v-256z" /> +<glyph unicode="" d="M128 853.334v-512h128v-384l298.667 512h-170.667l170.667 384h-426.667zM810.667 853.334h-85.333l-136.533-384h81.067l29.867 85.333h136.533l29.867-85.333h81.067l-136.533 384zM718.933 612.267l49.067 155.733 49.067-155.733h-98.133z" /> +<glyph unicode="" d="M139.52 810.667l-54.187-54.187 213.333-213.333v-159.147h128v-384l152.747 261.973 177.067-176.64 54.187 54.187-671.147 671.147zM725.333 512h-170.667l170.667 341.333h-426.667v-93.013l360.96-360.96 65.707 112.64z" /> +<glyph unicode="" d="M298.667 853.334v-469.333h128v-384l298.667 512h-170.667l170.667 341.333z" /> +<glyph unicode="" d="M640 42.667h85.333v85.333h-85.333v-85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM128 725.334v-597.333c0-46.933 38.4-85.333 85.333-85.333h170.667v85.333h-170.667v597.333h170.667v85.333h-170.667c-46.933 0-85.333-38.4-85.333-85.333zM810.667 810.667v-85.333h85.333c0 46.933-38.4 85.333-85.333 85.333zM469.333-42.666h85.333v938.667h-85.333v-938.667zM810.667 213.334h85.333v85.333h-85.333v-85.333zM640 725.334h85.333v85.333h-85.333v-85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM810.667 42.667c46.933 0 85.333 38.4 85.333 85.333h-85.333v-85.333z" /> +<glyph unicode="" d="M469.333 554.667h85.333v-85.333h-85.333zM384 469.334h85.333v-85.333h-85.333zM554.667 469.334h85.333v-85.333h-85.333zM640 554.667h85.333v-85.333h-85.333zM298.667 554.667h85.333v-85.333h-85.333zM810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM384 170.667h-85.333v85.333h85.333v-85.333zM554.667 170.667h-85.333v85.333h85.333v-85.333zM725.333 170.667h-85.333v85.333h85.333v-85.333zM810.667 469.334h-85.333v-85.333h85.333v-85.333h-85.333v85.333h-85.333v-85.333h-85.333v85.333h-85.333v-85.333h-85.333v85.333h-85.333v-85.333h-85.333v85.333h85.333v85.333h-85.333v256h597.333v-256z" /> +<glyph unicode="" d="M426.667 426.667c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM256 597.334c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM256 256c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 597.334c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333zM597.333 256c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 426.667c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM597.333 597.334c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM426.667 768c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M341.333 768v-61.867l85.333-85.333v147.2h170.667v-170.667h-147.2l85.333-85.333h61.867v-61.867l85.333-85.333v147.2h170.667v-170.667h-147.2l85.333-85.333h61.867v-61.867l85.333-85.333v659.2c0 46.933-38.4 85.333-85.333 85.333h-659.2l85.333-85.333h61.867zM682.667 768h170.667v-170.667h-170.667v170.667zM54.187 884.48l-54.187-54.613 85.333-85.333v-659.2c0-46.933 38.4-85.333 85.333-85.333h659.627l85.333-85.333 54.187 54.187-915.627 915.627zM426.667 403.2l61.867-61.867h-61.867v61.867zM170.667 659.2l61.867-61.867h-61.867v61.867zM341.333 85.334h-170.667v170.667h170.667v-170.667zM341.333 341.334h-170.667v170.667h147.2l23.467-23.467v-147.2zM597.333 85.334h-170.667v170.667h147.2l23.467-23.040v-147.627zM682.667 85.334v62.293l62.293-62.293h-62.293z" /> +<glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM341.333 85.334h-170.667v170.667h170.667v-170.667zM341.333 341.334h-170.667v170.667h170.667v-170.667zM341.333 597.334h-170.667v170.667h170.667v-170.667zM597.333 85.334h-170.667v170.667h170.667v-170.667zM597.333 341.334h-170.667v170.667h170.667v-170.667zM597.333 597.334h-170.667v170.667h170.667v-170.667zM853.333 85.334h-170.667v170.667h170.667v-170.667zM853.333 341.334h-170.667v170.667h170.667v-170.667zM853.333 597.334h-170.667v170.667h170.667v-170.667z" /> +<glyph unicode="" d="M768 213.334l-628.48 628.48-54.187-54.613 170.667-170.667v-147.2h-85.333v170.667h-85.333v-426.667h85.333v170.667h85.333v-170.667h85.333v317.867l42.667-42.667v-275.2h170.667c28.587 0 53.76 14.080 69.12 35.84l270.507-270.507 54.187 54.187-180.48 180.48zM554.667 298.667h-85.333v104.533l85.333-85.333v-19.2zM768 384h42.667l34.987-139.52 31.147-31.147h61.867l-50.773 177.92c29.867 13.227 50.773 43.093 50.773 78.080v85.333c0 46.933-38.4 85.333-85.333 85.333h-170.667v-232.533l85.333-85.333v61.867zM768 554.667h85.333v-85.333h-85.333v85.333zM640 450.134v104.533c0 46.933-38.4 85.333-85.333 85.333h-104.533l189.867-189.867z" /> +<glyph unicode="" d="M256 469.334h-85.333v170.667h-85.333v-426.667h85.333v170.667h85.333v-170.667h85.333v426.667h-85.333v-170.667zM554.667 640h-170.667v-426.667h170.667c46.933 0 85.333 38.4 85.333 85.333v256c0 46.933-38.4 85.333-85.333 85.333zM554.667 298.667h-85.333v256h85.333v-256zM938.667 469.334v85.333c0 46.933-38.4 85.333-85.333 85.333h-170.667v-426.667h85.333v170.667h42.667l42.667-170.667h85.333l-50.773 177.92c29.867 13.227 50.773 43.093 50.773 78.080zM853.333 469.334h-85.333v85.333h85.333v-85.333z" /> +<glyph unicode="" d="M725.333 682.667c-141.227 0-256-114.773-256-256s114.773-256 256-256 256 114.773 256 256-114.773 256-256 256zM213.333 597.334c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM213.333 341.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333z" /> +<glyph unicode="" d="M213.333 597.334c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM725.333 682.667c-141.227 0-256-114.773-256-256s114.773-256 256-256 256 114.773 256 256-114.773 256-256 256zM725.333 256c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667 170.667-76.373 170.667-170.667-76.373-170.667-170.667-170.667z" /> +<glyph unicode="" d="M756.48 425.814l169.813 169.813c16.64 16.64 16.64 43.52 0 60.16l-185.173 185.173c-16.64 16.64-43.52 16.64-60.16 0l-169.813-169.813-169.813 169.813c-8.533 8.107-19.2 12.373-30.293 12.373-10.667 0-21.76-4.267-29.867-12.373l-185.173-185.173c-16.64-16.64-16.64-43.52 0-60.16l169.813-169.813-169.813-169.813c-16.64-16.64-16.64-43.52 0-60.16l185.173-185.173c16.64-16.64 43.52-16.64 60.16 0l169.813 169.813 169.813-169.813c8.533-8.533 19.2-12.373 30.293-12.373s21.76 4.267 30.293 12.373l185.173 185.173c16.64 16.64 16.64 43.52 0 60.16l-170.24 169.813zM512 554.667c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM311.040 471.040l-154.88 154.453 154.88 154.88 154.453-154.453-154.453-154.88zM426.667 384c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667zM512 298.667c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667zM597.333 469.334c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM710.827 70.827l-154.88 154.453 154.88 154.88 154.453-154.453-154.453-154.88z" /> +<glyph unicode="" d="M682.667 512h-85.333v-85.333h85.333v85.333zM682.667 341.334h-85.333v-85.333h85.333v85.333zM341.333 512h-85.333v-85.333h85.333v85.333zM512 512h-85.333v-85.333h85.333v85.333zM853.333 768h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM853.333 170.667h-682.667v512h682.667v-512z" /> +<glyph unicode="" d="M896 128v597.333c0 46.933-38.4 85.333-85.333 85.333h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333zM362.667 362.667l106.667-128.427 149.333 192.427 192-256h-597.333l149.333 192z" /> +<glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM234.667 618.667h85.333v85.333h64v-85.333h85.333v-64h-85.333v-85.333h-64v85.333h-85.333v64zM810.667 128h-597.333l597.333 597.333v-597.333zM725.333 213.334v64h-213.333v-64h213.333z" /> +<glyph unicode="" d="M597.333 682.667l-160-213.333 121.6-162.133-68.267-51.2c-72.107 96-192 256-192 256l-256-341.333h938.667l-384 512z" /> +<glyph unicode="" d="M256 810.667h-128v-128c70.827 0 128 57.173 128 128zM597.333 810.667h-85.333c0-212.053-171.947-384-384-384v-85.333c259.413 0 469.333 210.347 469.333 469.333zM426.667 810.667h-85.333c0-117.76-95.573-213.333-213.333-213.333v-85.333c165.12 0 298.667 133.547 298.667 298.667zM426.667 42.667h85.333c0 212.053 171.947 384 384 384v85.333c-258.987 0-469.333-210.347-469.333-469.333zM768 42.667h128v128c-70.827 0-128-57.173-128-128zM597.333 42.667h85.333c0 117.76 95.573 213.333 213.333 213.333v85.333c-165.12 0-298.667-133.547-298.667-298.667z" /> +<glyph unicode="" d="M426.667 810.667h-85.333c0-15.787-1.707-30.72-5.12-45.227l67.84-67.84c14.507 34.56 22.613 72.96 22.613 113.067zM128 756.48l121.173-121.173c-34.56-23.893-75.947-37.973-121.173-37.973v-85.333c68.693 0 131.84 23.467 182.187 62.293l61.013-61.013c-66.56-54.187-151.040-86.613-243.2-86.613v-85.333c115.627 0 221.44 42.24 303.36 111.787l106.667-106.667c-69.12-82.347-111.36-188.16-111.36-303.787h85.333c0 92.16 32.427 176.64 86.613 242.773l61.013-61.013c-38.827-49.92-62.293-113.067-62.293-181.76h85.333c0 45.227 14.080 86.613 37.973 121.173l121.173-121.173 54.187 54.187-713.813 713.813-54.187-54.187zM597.333 810.667h-85.333c0-64-15.787-124.16-43.52-177.493l62.293-62.293c41.813 69.973 66.56 151.893 66.56 239.787zM850.773 250.88c14.507 3.413 29.44 5.12 45.227 5.12v85.333c-40.107 0-78.507-8.107-113.493-22.187l68.267-68.267zM656.213 445.44l62.293-62.293c53.333 27.733 113.493 43.52 177.493 43.52v85.333c-87.893 0-169.813-24.747-239.787-66.56z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667z" /> +<glyph unicode="" d="M811.093 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM640.427 490.667c0-35.413-28.587-64-64-64 35.413 0 64-28.587 64-64v-64c0-47.36-38.4-85.333-85.333-85.333h-170.667v85.333h170.667v85.333h-85.333v85.333h85.333v85.333h-170.667v85.333h170.667c46.933 0 85.333-37.973 85.333-85.333v-64z" /> +<glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM640 213.334h-85.333v170.667h-170.667v256h85.333v-170.667h85.333v170.667h85.333v-426.667z" /> +<glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM640 554.667h-170.667v-85.333h85.333c46.933 0 85.333-37.973 85.333-85.333v-85.333c0-47.36-38.4-85.333-85.333-85.333h-170.667v85.333h170.667v85.333h-170.667v256h256v-85.333z" /> +<glyph unicode="" d="M469.333 298.667h85.333v85.333h-85.333v-85.333zM810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM640 554.667h-170.667v-85.333h85.333c46.933 0 85.333-37.973 85.333-85.333v-85.333c0-47.36-38.4-85.333-85.333-85.333h-85.333c-46.933 0-85.333 37.973-85.333 85.333v256c0 47.36 38.4 85.333 85.333 85.333h170.667v-85.333z" /> +<glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM597.333 213.334h-85.333v341.333h-85.333v85.333h170.667v-426.667z" /> +<glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM640 469.334c0-47.36-38.4-85.333-85.333-85.333h-85.333v-85.333h170.667v-85.333h-256v170.667c0 47.36 38.4 85.333 85.333 85.333h85.333v85.333h-170.667v85.333h170.667c46.933 0 85.333-37.973 85.333-85.333v-85.333z" /> +<glyph unicode="" d="M512 512c-164.693 0-298.667-133.973-298.667-298.667h85.333c0 117.76 95.573 213.333 213.333 213.333s213.333-95.573 213.333-213.333h85.333c0 164.693-133.973 298.667-298.667 298.667zM512 682.667c-258.987 0-469.333-210.347-469.333-469.333h85.333c0 211.627 172.373 384 384 384s384-172.373 384-384h85.333c0 258.987-210.347 469.333-469.333 469.333z" /> +<glyph unicode="" d="M554.667 640h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667v170.667zM512 853.334c-235.093 0-426.667-191.573-426.667-426.667s191.573-426.667 426.667-426.667h341.333c46.933 0 85.333 38.4 85.333 85.333v341.333c0 235.093-191.573 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" /> +<glyph unicode="" d="M768 768l85.333-170.667h-128l-85.333 170.667h-85.333l85.333-170.667h-128l-85.333 170.667h-85.333l85.333-170.667h-128l-85.333 170.667h-42.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v597.333h-170.667z" /> +<glyph unicode="" d="M945.92 547.414c0 165.12-133.547 298.667-298.667 298.667s-298.667-133.547-298.667-298.667c0-148.053 107.52-270.507 248.747-293.973v-168.107h-341.333v128h42.667v170.667c0 23.467-19.2 42.667-42.667 42.667h-128c-23.467 0-42.667-19.2-42.667-42.667v-170.667h42.667v-213.333h682.667v85.333h-128v165.547c148.053 17.493 263.253 143.36 263.253 296.533zM192 469.334c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64z" /> +<glyph unicode="" d="M554.667 250.88c148.053 17.493 263.253 143.36 263.253 296.533 0 165.12-133.547 298.667-298.667 298.667s-298.667-133.547-298.667-298.667c0-148.053 107.52-270.507 248.747-293.973v-168.107h-256v-85.333h597.333v85.333h-256v165.547z" /> +<glyph unicode="" d="M657.493 622.507l-60.16 60.16-256-256 256-256 60.16 60.16-195.413 195.84z" /> +<glyph unicode="" d="M426.667 682.667l-60.16-60.16 195.413-195.84-195.413-195.84 60.16-60.16 256 256z" /> +<glyph unicode="" d="M512 810.667c-212.053 0-384-171.947-384-384s171.947-384 384-384c35.413 0 64 28.587 64 64 0 16.64-6.4 31.573-16.64 43.093-9.813 11.093-16.213 26.027-16.213 42.24 0 35.413 28.587 64 64 64h75.52c117.76 0 213.333 95.573 213.333 213.333 0 188.587-171.947 341.333-384 341.333zM277.333 426.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM405.333 597.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM618.667 597.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 426.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" /> +<glyph unicode="" d="M512 853.334c-235.947 0-426.667-190.72-426.667-426.667s190.72-426.667 426.667-426.667 426.667 190.72 426.667 426.667-190.72 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" /> +<glyph unicode="" d="M853.333 659.627v-465.493c-110.933 32.853-225.28 49.493-341.333 49.493s-230.4-16.64-341.333-49.493v465.493c110.933-32.853 225.28-49.493 341.333-49.493 116.053-0.427 230.4 16.213 341.333 49.493zM914.347 768c-4.267 0-8.533-0.853-13.227-2.56-125.44-46.933-257.28-69.973-389.12-69.973s-263.68 23.467-389.12 69.973c-4.693 1.707-9.387 2.56-13.227 2.56-14.507 0-24.32-9.813-24.32-26.88v-629.333c0-16.64 9.813-26.453 24.32-26.453 4.267 0 8.533 0.853 13.227 2.56 125.44 46.933 257.28 69.973 389.12 69.973s263.68-23.467 389.12-69.973c4.693-1.707 8.96-2.56 13.227-2.56 14.080 0 24.32 9.813 24.32 26.88v628.907c0 17.067-10.24 26.88-24.32 26.88z" /> +<glyph unicode="" d="M850.773 37.547c-46.933 125.44-69.973 257.28-69.973 389.12s23.467 263.68 69.973 389.12c1.707 4.693 2.56 9.387 2.56 13.227 0 14.507-9.813 24.32-26.88 24.32h-628.907c-17.067 0-26.88-9.813-26.88-24.32 0-4.267 0.853-8.533 2.56-13.227 46.933-125.44 70.4-257.28 70.4-389.12s-23.467-263.68-69.973-389.12c-2.133-4.693-2.987-9.387-2.987-13.227 0-14.080 9.813-24.32 26.88-24.32h629.333c16.64 0 26.88 10.24 26.88 24.32-0.427 4.267-1.28 8.533-2.987 13.227zM279.040 85.334c32.853 110.933 49.493 225.28 49.493 341.333s-16.64 230.4-49.493 341.333h465.493c-32.853-110.933-49.493-225.28-49.493-341.333s16.64-230.4 49.493-341.333h-465.493z" /> +<glyph unicode="" d="M512 682.667c104.533 0 200.96-8.533 311.040-27.307 20.053-75.947 30.293-152.747 30.293-228.693s-10.24-152.747-30.293-228.693c-110.080-18.773-206.507-27.307-311.040-27.307s-200.96 8.533-311.040 27.307c-20.053 75.947-30.293 152.747-30.293 228.693s10.24 152.747 30.293 228.693c110.080 18.773 206.507 27.307 311.040 27.307zM512 768c-116.48 0-222.72-10.24-339.2-30.72l-39.68-6.827-10.667-38.4c-24.747-88.32-37.12-177.067-37.12-265.387s12.373-177.067 37.12-265.387l10.667-37.973 39.68-6.827c116.48-20.907 222.72-31.147 339.2-31.147s222.72 10.24 339.2 30.72l39.68 6.827 10.667 37.973c24.747 88.747 37.12 177.493 37.12 265.813s-12.373 177.067-37.12 265.387l-10.667 37.973-39.68 6.827c-116.48 20.907-222.72 31.147-339.2 31.147z" /> +<glyph unicode="" d="M981.333 170.667v512c0 46.933-38.4 85.333-85.333 85.333h-768c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333zM362.667 405.334l106.667-128.427 149.333 192.427 192-256h-597.333l149.333 192z" /> +<glyph unicode="" d="M768 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM256 768h213.333v-341.333l-106.667 64-106.667-64v341.333zM256 128l128 164.693 91.307-110.080 128 164.693 164.693-219.307h-512z" /> +<glyph unicode="" d="M648.533 426.667c0-75.405-61.128-136.533-136.533-136.533s-136.533 61.128-136.533 136.533c0 75.405 61.128 136.533 136.533 136.533s136.533-61.128 136.533-136.533zM384 853.334l-78.080-85.333h-135.253c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333h-135.253l-78.080 85.333h-256zM512 213.334c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333z" /> +<glyph unicode="" d="M938.667 256v512c0 46.933-38.4 85.333-85.333 85.333h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333zM469.333 426.667l86.613-115.627 126.72 158.293 170.667-213.333h-512l128 170.667zM85.333 682.667v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333v85.333h-597.333v597.333h-85.333z" /> +<glyph unicode="" d="M896 128v597.333c0 46.933-38.4 85.333-85.333 85.333h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333zM362.667 362.667l106.667-128.427 149.333 192.427 192-256h-597.333l149.333 192z" /> +<glyph unicode="" d="M512 416c52.907 0 96 43.093 96 96s-43.093 96-96 96-96-43.093-96-96 43.093-96 96-96zM704 245.334c0 64-128 96-192 96s-192-32-192-96v-32h384v32zM810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-597.333v597.333h597.333v-597.333z" /> +<glyph unicode="" d="M512 746.667c-213.333 0-395.52-132.693-469.333-320 73.813-187.307 256-320 469.333-320s395.52 132.693 469.333 320c-73.813 187.307-256 320-469.333 320zM512 213.334c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333zM512 554.667c-70.827 0-128-57.173-128-128s57.173-128 128-128 128 57.173 128 128-57.173 128-128 128z" /> +<glyph unicode="" d="M303.36 574.72l-60.16 60.587c-38.4-49.493-62.293-106.667-69.547-165.973h86.187c5.973 37.12 20.907 73.387 43.52 105.387zM259.84 384h-86.187c7.253-59.307 30.72-116.48 69.12-165.973l60.16 60.587c-22.187 32-37.12 67.84-43.093 105.387zM302.933 157.014c49.493-38.4 107.093-61.44 166.4-68.693v86.613c-37.12 6.4-72.96 20.907-104.96 43.947l-61.44-61.867zM554.667 765.014v130.987l-194.133-194.133 194.133-189.867v166.827c121.173-20.48 213.333-125.44 213.333-252.16s-92.16-231.68-213.333-252.16v-86.187c168.533 20.907 298.667 164.267 298.667 338.347s-130.133 317.44-298.667 338.347z" /> +<glyph unicode="" d="M663.467 701.867l-194.133 194.133v-130.987c-168.107-20.907-298.667-164.267-298.667-338.347s130.133-317.44 298.667-338.347v86.187c-121.173 20.48-213.333 125.44-213.333 252.16s92.16 231.68 213.333 252.16v-166.827l194.133 189.867zM850.347 469.334c-7.253 59.307-30.72 116.48-69.12 165.973l-60.587-60.587c23.040-32 37.547-68.267 43.52-105.387h86.187zM554.667 174.934v-86.187c59.307 7.253 116.907 30.293 166.4 68.693l-61.44 61.44c-32-23.040-67.84-37.973-104.96-43.947zM720.64 278.187l60.587-60.16c38.4 49.493 61.867 106.667 69.12 165.973h-86.187c-5.973-37.12-20.48-73.387-43.52-105.813z" /> +<glyph unicode="" d="M426.667 597.334v-341.333l213.333 170.667-213.333 170.667zM810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-597.333v597.333h597.333v-597.333z" /> +<glyph unicode="" d="M896 682.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-341.333c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v341.333c0 46.933-38.4 85.333-85.333 85.333zM896 256h-768v341.333h85.333v-170.667h85.333v170.667h85.333v-170.667h85.333v170.667h85.333v-170.667h85.333v170.667h85.333v-170.667h85.333v170.667h85.333v-341.333z" /> +<glyph unicode="" d="M107.947 100.267l57.173-23.893v385.28l-103.68-250.027c-17.493-43.52 3.413-93.44 46.507-111.36zM939.947 258.134l-211.627 510.72c-13.227 32-44.373 51.627-77.227 52.48-11.093 0-22.613-1.707-33.707-6.4l-314.453-130.133c-32-13.227-51.627-43.947-52.48-76.8-0.427-11.52 1.707-23.040 6.4-34.133l211.627-510.72c13.227-32.427 44.8-52.053 78.080-52.48 11.093 0 22.187 2.133 32.853 6.4l314.027 130.133c43.52 17.92 64.427 67.84 46.507 110.933zM336.213 565.334c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667zM250.88 96c0-46.933 38.4-85.333 85.333-85.333h61.867l-147.2 355.84v-270.507z" /> +<glyph unicode="" d="M853.333 768h-135.253l-78.080 85.333h-256l-78.080-85.333h-135.253c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM640 277.334v106.667h-256v-106.667l-149.333 149.333 149.333 149.333v-106.667h256v106.667l149.333-149.333-149.333-149.333z" /> +<glyph unicode="" d="M768 533.334v149.333c0 23.467-19.2 42.667-42.667 42.667h-597.333c-23.467 0-42.667-19.2-42.667-42.667v-512c0-23.467 19.2-42.667 42.667-42.667h597.333c23.467 0 42.667 19.2 42.667 42.667v149.333l170.667-170.667v554.667l-170.667-170.667zM554.667 277.334v106.667h-256v-106.667l-149.333 149.333 149.333 149.333v-106.667h256v106.667l149.333-149.333-149.333-149.333z" /> +<glyph unicode="" d="M511.573 853.334c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM661.333 469.334c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM362.667 469.334c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM512 192c99.413 0 183.893 62.293 218.027 149.333h-436.053c34.133-87.040 118.613-149.333 218.027-149.333z" /> +<glyph unicode="" d="M832.427 807.254l-701.013-701.013c3.84-14.507 11.52-27.733 21.76-38.4 10.667-10.24 23.893-17.92 38.4-21.76l701.44 701.013c-8.107 29.44-31.147 52.48-60.587 60.16zM506.88 810.667l-378.88-378.88v-120.747l499.627 499.627h-120.747zM213.333 810.667c-46.933 0-85.333-38.4-85.333-85.333v-85.333l170.667 170.667h-85.333zM810.667 42.667c23.467 0 44.8 9.387 60.16 25.173 15.787 15.36 25.173 36.693 25.173 60.16v85.333l-170.667-170.667h85.333zM396.373 42.667h120.747l378.88 378.88v120.747l-499.627-499.627z" /> +<glyph unicode="" d="M692.907 607.574c-49.92 49.92-115.2 75.093-180.907 75.093v-256l-180.907-180.907c99.84-99.84 261.973-99.84 362.24 0 99.84 99.84 99.84 261.973-0.427 361.813zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333z" /> +<glyph unicode="" d="M495.36 385.28c-6.827 10.24-15.36 19.627-26.453 27.733-10.667 8.107-23.893 14.933-39.68 20.48 12.8 5.973 24.32 12.8 34.133 21.333s17.92 17.493 24.32 27.307c6.4 9.813 11.52 19.627 14.507 30.293 3.413 10.24 4.693 20.907 4.693 31.147 0 23.467-3.84 44.373-11.947 62.293-7.68 17.92-18.773 32.853-33.28 45.227-14.080 11.947-31.147 21.333-51.2 27.307-19.2 5.547-41.387 8.533-65.28 8.533-23.467 0-45.227-3.413-64.853-10.24-20.053-7.253-37.12-17.067-51.2-29.44s-25.6-26.88-33.28-43.947c-8.533-16.64-12.373-35.413-12.373-55.040h84.48c0 11.093 2.133 20.907 5.973 29.44s9.387 16.213 16.213 22.187c7.253 5.973 15.36 10.667 24.747 14.080s19.627 5.12 31.147 5.12c26.027 0 45.227-6.827 58.027-20.053s18.773-32 18.773-56.32c0-11.52-1.707-22.187-5.12-31.573s-8.96-17.493-16.213-24.32c-7.253-6.827-16.213-11.947-26.88-15.787s-23.467-5.547-37.973-5.547h-49.92v-66.987h50.347c14.507 0 27.307-1.707 38.827-4.693 11.52-3.413 21.333-8.107 29.44-14.933s14.507-15.36 18.773-26.027c4.267-10.24 6.827-23.040 6.827-37.12 0-26.453-7.68-46.507-22.613-60.587s-35.84-20.907-61.867-20.907c-12.373 0-23.893 1.707-34.133 5.547-10.24 3.413-18.773 8.533-26.027 15.36s-12.8 14.507-16.64 23.893c-3.84 9.387-5.973 19.627-5.973 30.72h-84.907c0-23.467 4.693-43.947 13.653-61.867s21.333-32.853 36.693-44.8 32.853-20.907 52.907-26.88 40.96-8.96 63.147-8.96c24.32 0 46.507 3.413 67.413 9.813s38.827 16.213 53.76 29.013c15.36 12.8 27.307 28.16 35.84 46.933 8.533 18.347 12.8 39.68 12.8 63.147 0 12.373-1.707 24.747-4.693 36.693-3.413 10.667-8.107 21.76-14.933 32.427zM890.453 325.547c-5.973 11.947-14.933 22.613-26.88 31.573s-26.027 16.64-43.093 22.613-36.267 11.52-57.6 16.213c-14.933 2.987-27.307 6.4-37.12 9.813s-17.493 6.827-23.467 10.667c-5.973 3.84-9.813 8.107-11.947 12.8s-3.413 10.24-3.413 16.64 1.28 11.947 3.84 17.493c2.56 5.547 6.4 10.667 11.52 14.507 5.12 4.267 11.52 7.68 19.2 10.24s17.067 3.84 27.307 3.84c10.667 0 20.053-1.707 28.16-4.693s14.933-7.253 20.48-12.373c5.547-5.12 9.387-11.093 12.373-17.92 2.56-6.827 4.267-13.653 4.267-20.907h83.2c0 16.64-3.413 32-10.24 46.507s-16.64 26.88-29.44 37.547c-12.8 10.667-28.16 18.773-46.507 25.173s-39.253 9.387-62.293 9.387c-21.76 0-41.813-2.987-59.307-8.96s-32.853-14.080-45.227-24.32c-12.373-10.24-21.76-22.187-28.587-35.84s-9.813-27.733-9.813-43.093 3.413-29.013 9.813-40.96c6.4-11.947 15.787-22.187 27.307-31.147s25.6-16.213 41.813-22.613c16.213-5.973 34.56-11.093 54.187-15.36 16.64-3.413 30.293-7.253 40.533-11.093s18.347-8.107 24.32-12.373c5.547-4.267 9.387-9.387 11.52-14.507s2.987-10.667 2.987-16.64c0-13.653-5.547-24.32-17.067-32.853s-28.16-12.373-49.92-12.373c-9.387 0-18.347 0.853-27.307 3.413-8.96 2.133-17.067 5.547-23.893 10.24-7.253 4.693-12.8 11.093-17.493 18.773s-7.253 17.493-7.68 28.587h-80.64c0-15.36 3.413-30.293 10.24-44.8s16.64-27.733 29.867-39.68c13.227-11.52 29.44-20.907 49.067-28.16s41.813-10.667 67.413-10.667c22.613 0 43.093 2.56 61.44 8.107s34.133 13.227 47.36 23.040c13.227 9.813 23.040 21.76 30.293 35.413s10.667 28.587 10.667 45.227c-0.853 17.067-3.84 31.573-10.24 43.52z" /> +<glyph unicode="" d="M0 609.28v-71.68l128 42.667v-409.6h85.333v512h-10.667l-202.667-73.387zM1014.613 325.547c-5.973 11.947-14.933 22.613-26.88 31.573s-26.027 16.64-43.093 22.613-36.267 11.52-57.6 16.213c-14.933 2.987-27.307 6.4-37.12 9.813s-17.493 6.827-23.467 10.667c-5.973 3.84-9.813 8.107-11.947 12.8s-3.413 10.24-3.413 16.64c0 5.973 1.28 11.947 3.84 17.493s6.4 10.667 11.52 14.507c5.12 4.267 11.52 7.68 19.2 10.24s17.067 3.84 27.307 3.84c10.667 0 20.053-1.707 28.16-4.693s14.933-7.253 20.48-12.373c5.547-5.12 9.387-11.093 12.373-17.92 2.56-6.827 4.267-13.653 4.267-20.907h83.2c0 16.64-3.413 32-10.24 46.507s-16.64 26.88-29.44 37.547c-12.8 10.667-28.16 18.773-46.507 25.173s-39.253 9.387-62.293 9.387c-21.76 0-41.813-2.987-59.307-8.96s-32.853-14.080-45.227-24.32c-12.373-10.24-21.76-22.187-28.587-35.84s-9.813-27.733-9.813-43.093 3.413-29.44 9.813-40.96c6.4-11.947 15.36-22.187 27.307-31.147 11.52-8.96 25.6-16.213 41.813-22.613 16.213-5.973 34.56-11.093 54.187-15.36 16.64-3.413 30.293-7.253 40.533-11.093s18.347-8.107 24.32-12.373c5.547-4.267 9.387-9.387 11.52-14.507s2.987-10.667 2.987-16.64c0-13.653-5.547-24.32-17.067-32.853s-28.16-12.373-49.92-12.373c-9.387 0-18.347 0.853-27.307 3.413-8.96 2.133-17.067 5.547-23.893 10.24-7.253 4.693-12.8 11.093-17.493 18.773s-7.253 17.493-7.68 28.587h-80.64c0-15.36 3.413-30.293 10.24-44.8s16.64-27.733 29.867-39.68c13.227-11.52 29.44-20.907 49.067-28.16s41.813-10.667 67.413-10.667c22.613 0 43.093 2.56 61.44 8.107s34.133 13.227 47.36 23.040c13.227 9.813 23.040 21.76 30.293 35.413s10.667 28.587 10.667 45.227c-0.853 17.067-3.84 31.573-10.24 43.52zM589.653 637.867c-14.507 17.067-32 29.867-52.48 37.547-20.053 7.68-43.093 11.52-67.84 11.52s-47.36-3.84-67.84-11.52c-20.48-7.68-37.973-20.053-52.48-37.547s-25.6-39.68-33.707-67.84c-7.68-27.733-11.947-61.867-11.947-101.973v-81.92c0-40.107 3.84-74.24 11.947-101.973 8.107-28.16 19.2-50.773 34.133-68.267 14.507-17.493 32-30.293 52.48-37.973s43.093-11.947 67.84-11.947c25.173 0 47.787 3.84 67.84 11.947 20.48 7.68 37.547 20.48 52.053 37.973s25.6 40.107 33.28 68.267c7.68 27.733 11.947 61.867 11.947 101.973v81.92c0 40.107-3.84 74.24-11.947 101.973-7.68 28.16-18.773 50.773-33.28 67.84zM550.4 374.614c0-25.6-1.707-47.36-5.12-65.28s-8.533-32.427-15.36-43.52c-6.827-11.093-15.36-19.2-25.173-24.32s-21.76-7.68-34.987-7.68c-12.8 0-24.747 2.56-34.987 7.68s-18.773 13.227-25.6 24.32c-6.827 11.093-12.373 25.6-16.213 43.52s-5.547 39.68-5.547 65.28v106.667c0 25.6 1.707 47.36 5.547 64.853s8.96 31.573 16.213 42.667c6.827 10.667 15.36 18.347 25.6 23.467 10.24 4.693 21.76 7.253 34.56 7.253 13.227 0 24.747-2.56 34.56-7.253 10.24-4.693 18.773-12.373 25.6-23.467 6.827-10.667 12.373-24.747 15.787-42.24s5.547-39.253 5.547-64.853v-107.093z" /> +<glyph unicode="" d="M512 768c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM512 341.334c-113.92 0-341.333-57.173-341.333-170.667v-85.333h682.667v85.333c0 113.92-227.413 170.667-341.333 170.667z" /> +<glyph unicode="" d="M812.373 744.534l-60.587-60.587c-66.133 52.48-149.333 84.053-239.787 84.053-78.080 0-150.613-23.467-211.2-63.147l62.293-62.293c43.52 25.173 94.72 40.107 148.907 40.107 165.12 0 298.667-133.547 298.667-298.667 0-54.187-14.933-105.387-40.107-148.907l61.867-61.867c40.107 60.16 63.573 132.693 63.573 210.773 0 90.453-31.573 173.653-84.053 239.36l60.587 60.587-60.16 60.587zM640 896h-256v-85.333h256v85.333zM469.333 535.894l85.333-85.333v146.773h-85.333v-61.44zM128.853 768l-54.187-54.187 117.333-117.76c-40.533-60.587-64-133.547-64-212.053 0-212.053 171.52-384 384-384 78.507 0 151.467 23.467 212.48 64l106.667-106.667 54.187 54.187-756.48 756.48zM512 85.334c-165.12 0-298.667 133.547-298.667 298.667 0 54.613 14.933 105.813 40.533 150.187l407.893-407.893c-43.947-26.027-95.147-40.96-149.76-40.96z" /> +<glyph unicode="" d="M640 896h-256v-85.333h256v85.333zM469.333 341.334h85.333v256h-85.333v-256zM811.947 623.36l60.587 60.587c-18.347 21.76-38.4 42.24-60.16 60.16l-60.587-60.587c-66.133 52.907-149.333 84.48-239.787 84.48-212.053 0-384-171.947-384-384s171.52-384 384-384 384 171.947 384 384c0 90.453-31.573 173.653-84.053 239.36zM512 85.334c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM469.333 88.32c-168.107 20.907-298.667 164.267-298.667 338.347s130.133 317.44 298.667 338.347v-676.693zM554.667 765.014c43.947-5.547 85.333-19.2 122.453-39.68h-122.453v39.68zM554.667 640h223.573c10.667-13.227 20.48-27.733 29.013-42.667h-252.587v42.667zM554.667 512h287.573c3.413-14.080 6.4-28.16 8.107-42.667h-295.68v42.667zM554.667 88.32v39.68h122.453c-37.12-20.48-78.507-34.133-122.453-39.68zM778.24 213.334h-223.573v42.667h252.587c-8.533-14.933-18.347-29.44-29.013-42.667zM842.24 341.334h-287.573v42.667h295.68c-1.707-14.507-4.693-28.587-8.107-42.667z" /> +<glyph unicode="" d="M938.667 170.667v85.333h-597.333v512h85.333l-128 128-128-128h85.333v-85.333h-170.667v-85.333h170.667v-341.333c0-46.933 38.4-85.333 85.333-85.333h341.333v-85.333h-85.333l128-128 128 128h-85.333v85.333h170.667zM426.667 597.334h256v-256h85.333v256c0 46.933-38.4 85.333-85.333 85.333h-256v-85.333z" /> +<glyph unicode="" d="M128 213.334v-85.333h256v85.333h-256zM128 725.334v-85.333h426.667v85.333h-426.667zM554.667 42.667v85.333h341.333v85.333h-341.333v85.333h-85.333v-256h85.333zM298.667 554.667v-85.333h-170.667v-85.333h170.667v-85.333h85.333v256h-85.333zM896 384v85.333h-426.667v-85.333h426.667zM640 554.667h85.333v85.333h170.667v85.333h-170.667v85.333h-85.333v-256z" /> +<glyph unicode="" d="M292.267 398.934h98.133l-49.067 155.733-49.067-155.733zM938.667 640l-51.2-268.373-64 268.373h-68.267l-63.573-268.373-51.627 268.373h-32.427c-62.72 78.080-158.293 128-266.24 128-188.587 0-341.333-152.747-341.333-341.333s152.747-341.333 341.333-341.333c133.547 0 249.173 77.227 305.067 189.013l4.267-18.347h74.667l64 260.267 64-260.267h74.667l87.467 384h-76.8zM439.467 256l-29.867 85.333h-136.533l-29.867-85.333h-81.067l136.533 384h85.333l136.533-384h-81.067z" /> +<glyph unicode="" d="M826.027 510.294c-29.44 147.2-158.72 257.707-314.027 257.707-123.307 0-230.4-69.973-283.733-172.373-128.427-13.653-228.267-122.453-228.267-254.293 0-141.227 114.773-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-197.973 211.627z" /> +<glyph unicode="" d="M151.467 147.627l60.16-60.16 76.373 76.8-60.16 60.16-76.373-76.8zM469.333-19.2h85.333v125.867h-85.333v-125.867zM170.667 490.667h-128v-85.333h128v85.333zM640 669.44v205.227h-256v-205.227c-76.373-44.373-128-126.72-128-221.44 0-141.227 114.773-256 256-256s256 114.773 256 256c0 94.72-51.627 177.067-128 221.44zM853.333 490.667v-85.333h128v85.333h-128zM735.573 163.84l76.373-76.8 60.16 60.16-76.8 76.373-59.733-59.733z" /> +<glyph unicode="" d="M213.333 320h597.333v256h-597.333v-256zM469.333 915.2v-125.867h85.333v125.867h-85.333zM812.373 808.534l-76.373-76.373 60.16-60.16 76.8 76.373-60.587 60.16zM554.667-19.2v125.867h-85.333v-125.867h85.333zM872.533 147.627l-76.8 76.373-60.16-60.16 76.373-76.8 60.587 60.587zM151.467 748.374l76.373-76.373 60.16 60.16-76.373 76.373-60.16-60.16zM211.627 87.467l76.373 76.8-60.16 60.16-76.373-76.373 60.16-60.587z" /> +<glyph unicode="" d="M288.427 732.16l-76.8 76.373-60.16-60.16 76.373-76.373 60.587 60.16zM170.667 490.667h-128v-85.333h128v85.333zM554.667 915.2h-85.333v-125.867h85.333v125.867zM872.533 748.374l-60.16 60.16-76.373-76.373 60.16-60.16 76.373 76.373zM735.573 163.84l76.373-76.8 60.16 60.16-76.8 76.373-59.733-59.733zM853.333 490.667v-85.333h128v85.333h-128zM512 704c-141.227 0-256-114.773-256-256s114.773-256 256-256 256 114.773 256 256-114.773 256-256 256zM469.333-19.2h85.333v125.867h-85.333v-125.867zM151.467 147.627l60.16-60.16 76.373 76.8-60.16 60.16-76.373-76.8z" /> +<glyph unicode="" d="M810.667 896h-597.333c-46.933 0-84.907-38.4-84.907-85.333l-0.427-551.68c0-29.44 14.933-55.467 37.547-70.827l346.453-230.827 346.027 230.827c22.613 15.36 37.547 41.387 37.547 70.827l0.427 551.68c0 46.933-38.4 85.333-85.333 85.333zM426.667 256l-213.333 213.333 60.16 60.16 153.173-152.747 323.84 323.84 60.16-60.587-384-384z" /> +<glyph unicode="" d="M682.667 733.867c42.24 0 76.8 34.56 76.8 76.8s-34.56 76.8-76.8 76.8c-42.667 0-76.8-34.56-76.8-76.8s34.133-76.8 76.8-76.8zM810.667 426.667c-117.76 0-213.333-95.573-213.333-213.333s95.573-213.333 213.333-213.333 213.333 95.573 213.333 213.333-95.573 213.333-213.333 213.333zM810.667 64c-82.347 0-149.333 66.987-149.333 149.333s66.987 149.333 149.333 149.333 149.333-66.987 149.333-149.333-66.987-149.333-149.333-149.333zM631.467 512h179.2v76.8h-136.533l-82.347 139.52c-12.8 21.333-35.84 35.413-62.293 35.413-20.053 0-37.973-8.107-51.2-21.333l-157.867-157.867c-13.653-12.8-21.76-31.147-21.76-51.2 0-26.88 14.080-49.493 36.267-62.72l142.933-86.613v-213.333h76.8v276.48l-96 71.253 98.987 99.413 73.813-105.813zM213.333 426.667c-117.76 0-213.333-95.573-213.333-213.333s95.573-213.333 213.333-213.333 213.333 95.573 213.333 213.333-95.573 213.333-213.333 213.333zM213.333 64c-82.347 0-149.333 66.987-149.333 149.333s66.987 149.333 149.333 149.333 149.333-66.987 149.333-149.333-66.987-149.333-149.333-149.333z" /> +<glyph unicode="" d="M170.667 256c0-37.547 16.64-71.253 42.667-94.72v-75.947c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v42.667h341.333v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v75.947c26.027 23.467 42.667 57.173 42.667 94.72v426.667c0 149.333-152.747 170.667-341.333 170.667s-341.333-21.333-341.333-170.667v-426.667zM320 213.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM704 213.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM768 469.334h-512v213.333h512v-213.333z" /> +<glyph unicode="" d="M807.253 682.24c-8.533 25.173-32.427 43.093-60.587 43.093h-469.333c-28.16 0-51.627-17.92-60.587-43.093l-88.747-255.573v-341.333c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v42.667h512v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v341.333l-88.747 255.573zM277.333 256c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 256c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM213.333 469.334l64 192h469.333l64-192h-597.333z" /> +<glyph unicode="" d="M853.333 42.667c-59.307 0-118.613 20.053-170.667 56.32-104.107-72.96-237.227-72.96-341.333 0-52.053-36.267-111.36-56.32-170.667-56.32h-85.333v-85.333h85.333c58.88 0 116.907 14.933 170.667 42.24 107.52-55.040 233.813-55.040 341.333 0 53.76-27.733 111.787-42.24 170.667-42.24h85.333v85.333h-85.333zM168.533 128h2.133c68.267 0 128.853 37.547 170.667 85.333 41.813-47.787 102.4-85.333 170.667-85.333s128.853 37.547 170.667 85.333c41.813-47.787 102.4-85.333 170.667-85.333h2.133l80.64 285.013c3.413 11.093 2.56 23.040-2.56 33.28s-14.507 17.92-25.6 21.333l-54.613 17.92v197.12c0 46.933-38.4 85.333-85.333 85.333h-128v128h-256v-128h-128c-46.933 0-85.333-38.4-85.333-85.333v-197.12l-55.040-17.92c-11.093-3.413-20.48-11.093-25.6-21.333s-6.4-22.187-2.56-33.28l81.067-285.013zM256 682.667h512v-169.387l-256 84.053-256-84.053v169.387z" /> +<glyph unicode="" d="M512 853.334c-188.587 0-341.333-21.333-341.333-170.667v-405.333c0-82.347 66.987-149.333 149.333-149.333l-64-64v-21.333h512v21.333l-64 64c82.347 0 149.333 66.987 149.333 149.333v405.333c0 149.333-152.747 170.667-341.333 170.667zM320 213.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM469.333 469.334h-213.333v213.333h213.333v-213.333zM704 213.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM768 469.334h-213.333v213.333h213.333v-213.333z" /> +<glyph unicode="" d="M170.667 277.334c0-82.347 66.987-149.333 149.333-149.333l-64-64v-21.333h512v21.333l-64 64c82.347 0 149.333 66.987 149.333 149.333v448c0 149.333-152.747 170.667-341.333 170.667s-341.333-21.333-341.333-170.667v-448zM512 213.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333zM768 512h-512v213.333h512v-213.333z" /> +<glyph unicode="" d="M512 853.334c-188.587 0-341.333-21.333-341.333-170.667v-405.333c0-82.347 66.987-149.333 149.333-149.333l-64-64v-21.333h512v21.333l-64 64c82.347 0 149.333 66.987 149.333 149.333v405.333c0 149.333-152.747 170.667-341.333 170.667zM320 213.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM469.333 469.334h-213.333v213.333h213.333v-213.333zM704 213.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM768 469.334h-213.333v213.333h213.333v-213.333z" /> +<glyph unicode="" d="M597.333 776.534c42.24 0 76.8 34.56 76.8 76.8 0 42.667-34.56 76.8-76.8 76.8-42.667 0-76.8-34.56-76.8-76.8s34.133-76.8 76.8-76.8zM602.453 512h208.213v76.8h-154.453l-85.333 142.080c-12.8 21.333-35.84 35.413-62.293 35.413-7.253 0-14.507-1.28-20.907-2.987l-231.68-72.107v-221.867h76.8v156.587l90.027 28.16-166.827-654.080h76.8l122.453 346.027 99.413-132.693v-213.333h76.8v273.493l-106.24 193.707 31.147 122.453 46.080-77.653z" /> +<glyph unicode="" d="M926.293 456.96l-384 384c-16.64 16.64-43.52 16.64-60.16 0l-384-384c-16.64-16.64-16.64-43.52 0-60.16l384-384c16.64-16.64 43.52-16.64 60.16 0l384 384c16.64 16.213 16.64 43.093 0 60.16zM597.333 320v106.667h-170.667v-128h-85.333v170.667c0 23.467 19.2 42.667 42.667 42.667h213.333v106.667l149.333-149.333-149.333-149.333z" /> +<glyph unicode="" d="M896 256v85.333l-341.333 213.333v234.667c0 35.413-28.587 64-64 64s-64-28.587-64-64v-234.667l-341.333-213.333v-85.333l341.333 106.667v-234.667l-85.333-64v-64l149.333 42.667 149.333-42.667v64l-85.333 64v234.667l341.333-106.667z" /> +<glyph unicode="" d="M298.667 384c70.827 0 128 57.173 128 128s-57.173 128-128 128-128-57.173-128-128 57.173-128 128-128zM810.667 640h-341.333v-298.667h-341.333v384h-85.333v-640h85.333v128h768v-128h85.333v384c0 94.293-76.373 170.667-170.667 170.667z" /> +<glyph unicode="" d="M845.227 299.094l50.773 39.253-61.013 61.013-50.773-39.253 61.013-61.013zM826.027 500.48l69.973 54.187-384 298.667-124.16-96.853 335.787-336.213 102.4 80.213zM139.52 896l-54.187-54.187 180.053-180.053-137.387-107.093 69.547-54.187 314.453-244.48 89.6 69.547 61.013-61.013-150.613-116.907-314.453 244.48-69.547-53.76 384-298.667 211.2 164.267 161.28-161.28 54.187 54.187-799.147 799.147z" /> +<glyph unicode="" d="M511.573 147.627l-314.453 244.48-69.12-53.76 384-298.667 384 298.667-69.547 54.187-314.88-244.907zM512 256l384 298.667-384 298.667-384-298.667 69.547-54.187 314.453-244.48z" /> +<glyph unicode="" d="M896 256v85.333l-341.333 213.333v234.667c0 35.413-28.587 64-64 64s-64-28.587-64-64v-234.667l-341.333-213.333v-85.333l341.333 106.667v-234.667l-85.333-64v-64l149.333 42.667 149.333-42.667v64l-85.333 64v234.667l341.333-106.667z" /> +<glyph unicode="" d="M469.333 213.334h85.333v42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v128c0 23.467-19.2 42.667-42.667 42.667h-128v42.667h170.667v85.333h-85.333v42.667h-85.333v-42.667h-42.667c-23.467 0-42.667-19.2-42.667-42.667v-128c0-23.467 19.2-42.667 42.667-42.667h128v-42.667h-170.667v-85.333h85.333v-42.667zM853.333 768h-682.667c-47.36 0-84.907-37.973-84.907-85.333l-0.427-512c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v512c0 47.36-37.973 85.333-85.333 85.333zM853.333 170.667h-682.667v512h682.667v-512z" /> +<glyph unicode="" d="M853.333 426.667c0 46.933 38.4 85.333 85.333 85.333v170.667c0 46.933-38.4 85.333-85.333 85.333h-682.667c-46.933 0-84.907-38.4-84.907-85.333v-170.667c46.933 0 84.907-38.4 84.907-85.333s-37.973-85.333-85.333-85.333v-170.667c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v170.667c-46.933 0-85.333 38.4-85.333 85.333zM664.747 221.867l-152.747 98.133-152.747-98.133 46.080 175.787-140.373 114.773 180.907 10.667 66.133 168.107 65.707-168.533 180.907-10.667-140.373-114.773 46.507-175.36z" /> +<glyph unicode="" d="M469.333 384v-256h-213.333v-85.333h512v85.333h-213.333v256l341.333 341.333v85.333h-768v-85.333l341.333-341.333zM320 640l-85.333 85.333h554.667l-85.333-85.333h-384z" /> +<glyph unicode="" d="M853.333 810.667h-682.667v-426.667c0-94.293 76.373-170.667 170.667-170.667h256c94.293 0 170.667 76.373 170.667 170.667v128h85.333c47.36 0 85.333 37.973 85.333 85.333v128c0 47.36-37.973 85.333-85.333 85.333zM853.333 597.334h-85.333v128h85.333v-128zM85.333 42.667h768v85.333h-768v-85.333z" /> +<glyph unicode="" d="M725.333 725.334c35.413 0 64 28.587 64 64 0 42.667-64 115.2-64 115.2s-64-72.533-64-115.2c0-35.413 28.587-64 64-64zM512 725.334c35.413 0 64 28.587 64 64 0 42.667-64 115.2-64 115.2s-64-72.533-64-115.2c0-35.413 28.587-64 64-64zM298.667 725.334c35.413 0 64 28.587 64 64 0 42.667-64 115.2-64 115.2s-64-72.533-64-115.2c0-35.413 28.587-64 64-64zM807.253 596.907c-8.533 25.173-32.427 43.093-60.587 43.093h-469.333c-28.16 0-51.627-17.92-60.587-43.093l-88.747-255.573v-341.333c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v42.667h512v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v341.333l-88.747 255.573zM277.333 170.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 170.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM213.333 384l64 192h469.333l64-192h-597.333z" /> +<glyph unicode="" d="M810.667 640v128h-597.333v-128h-128v-554.667h341.333v170.667h170.667v-170.667h341.333v554.667h-128zM469.333 512h-85.333v-42.667h85.333v-42.667h-128v128h85.333v42.667h-85.333v42.667h128v-128zM682.667 426.667h-42.667v85.333h-85.333v128h42.667v-85.333h42.667v85.333h42.667v-213.333z" /> +<glyph unicode="" d="M128 853.334l85.76-777.813c5.12-42.667 40.96-75.52 84.907-75.52h426.667c43.947 0 79.787 32.853 84.907 75.52l85.76 777.813h-768zM512 128c-70.827 0-128 57.173-128 128 0 85.333 128 230.4 128 230.4s128-145.067 128-230.4c0-70.827-57.173-128-128-128zM782.080 597.334h-540.16l-18.773 170.667h577.28l-18.347-170.667z" /> +<glyph unicode="" d="M512-0c212.053 0 384 171.947 384 384-212.053 0-384-171.947-384-384zM238.933 501.334c0-58.88 47.787-106.667 106.667-106.667 22.613 0 43.093 6.827 60.587 18.773l-0.853-8.107c0-58.88 47.787-106.667 106.667-106.667s106.667 47.787 106.667 106.667l-0.853 8.107c17.067-11.947 37.973-18.773 60.587-18.773 58.88 0 106.667 47.787 106.667 106.667 0 42.667-25.173 78.933-61.013 96 35.84 17.067 61.013 53.333 61.013 96 0 58.88-47.787 106.667-106.667 106.667-22.613 0-43.093-6.827-60.587-18.773l0.853 8.107c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667l0.853-8.107c-17.067 11.947-37.973 18.773-60.587 18.773-58.88 0-106.667-47.787-106.667-106.667 0-42.667 25.173-78.933 61.013-96-35.84-17.067-61.013-53.333-61.013-96zM512 704c58.88 0 106.667-47.787 106.667-106.667s-47.787-106.667-106.667-106.667-106.667 47.787-106.667 106.667 47.787 106.667 106.667 106.667zM128 384c0-212.053 171.947-384 384-384 0 212.053-171.947 384-384 384z" /> +<glyph unicode="" d="M843.52 630.187l0.427 0.427-158.72 158.72-45.227-45.227 90.027-90.027c-40.107-15.36-68.693-53.76-68.693-99.413 0-58.88 47.787-106.667 106.667-106.667 15.36 0 29.44 3.413 42.667 8.96v-307.627c0-23.467-19.2-42.667-42.667-42.667s-42.667 19.2-42.667 42.667v192c0 46.933-38.4 85.333-85.333 85.333h-42.667v298.667c0 46.933-38.4 85.333-85.333 85.333h-256c-46.933 0-85.333-38.4-85.333-85.333v-682.667h426.667v320h64v-213.333c0-58.88 47.787-106.667 106.667-106.667s106.667 47.787 106.667 106.667v405.333c0 29.44-11.947 56.32-31.147 75.52zM512 512h-256v213.333h256v-213.333zM768 512c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667z" /> +<glyph unicode="" d="M298.667 170.667c-46.933 0-84.907-38.4-84.907-85.333s37.973-85.333 84.907-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM42.667 853.334v-85.333h85.333l153.6-323.84-57.6-104.533c-6.827-11.947-10.667-26.027-10.667-40.96 0-46.933 38.4-85.333 85.333-85.333h512v85.333h-494.080c-5.973 0-10.667 4.693-10.667 10.667l1.28 5.12 38.4 69.547h317.867c32 0 60.16 17.493 74.667 43.947l152.747 276.907c3.413 5.973 5.12 13.227 5.12 20.48 0 23.467-19.2 42.667-42.667 42.667h-631.040l-40.107 85.333h-139.52zM725.333 170.667c-46.933 0-84.907-38.4-84.907-85.333s37.973-85.333 84.907-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-84.907-38.4-84.907-85.333l-0.427-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM768 341.334h-170.667v-170.667h-170.667v170.667h-170.667v170.667h170.667v170.667h170.667v-170.667h170.667v-170.667z" /> +<glyph unicode="" d="M298.667 384c70.827 0 128 57.173 128 128s-57.173 128-128 128-128-57.173-128-128 57.173-128 128-128zM810.667 640h-341.333v-298.667h-341.333v384h-85.333v-640h85.333v128h768v-128h85.333v384c0 94.293-76.373 170.667-170.667 170.667z" /> +<glyph unicode="" d="M391.253 220.587c66.56-66.56 174.933-66.56 241.493 0s66.56 174.933 0 241.493l-241.493-241.493zM768 852.907l-512 0.427c-47.36 0-85.333-37.973-85.333-85.333v-682.667c0-47.36 37.973-85.333 85.333-85.333h512c47.36 0 85.333 37.973 85.333 85.333v682.667c0 47.36-37.973 84.907-85.333 84.907zM426.667 768c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM298.667 768c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM512 85.334c-141.227 0-256 114.773-256 256s114.773 256 256 256 256-114.773 256-256-114.773-256-256-256z" /> +<glyph unicode="" d="M512 445.867c-100.693 93.867-235.52 151.467-384 151.467v-469.333c148.48 0 283.307-57.6 384-151.467 100.693 93.44 235.52 151.467 384 151.467v469.333c-148.48 0-283.307-57.6-384-151.467zM512 597.334c70.827 0 128 57.173 128 128s-57.173 128-128 128-128-57.173-128-128 57.173-128 128-128z" /> +<glyph unicode="" d="M810.667 682.667h-85.333c0 117.76-95.573 213.333-213.333 213.333s-213.333-95.573-213.333-213.333h-85.333c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM512 810.667c70.827 0 128-57.173 128-128h-256c0 70.827 57.173 128 128 128zM512 384c-117.76 0-213.333 95.573-213.333 213.333h85.333c0-70.827 57.173-128 128-128s128 57.173 128 128h85.333c0-117.76-95.573-213.333-213.333-213.333z" /> +<glyph unicode="" d="M768 810.667v-85.333h-85.333v85.333h-341.333v-85.333h-85.333v85.333h-85.333v-768h85.333v85.333h85.333v-85.333h341.333v85.333h85.333v-85.333h85.333v768h-85.333zM341.333 213.334h-85.333v85.333h85.333v-85.333zM341.333 384h-85.333v85.333h85.333v-85.333zM341.333 554.667h-85.333v85.333h85.333v-85.333zM768 213.334h-85.333v85.333h85.333v-85.333zM768 384h-85.333v85.333h85.333v-85.333zM768 554.667h-85.333v85.333h85.333v-85.333z" /> +<glyph unicode="" d="M913.493 444.587l-384 384c-15.36 15.36-36.693 24.747-60.16 24.747h-298.667c-46.933 0-85.333-38.4-85.333-85.333v-298.667c0-23.467 9.387-44.8 25.173-60.587l384-384c15.36-15.36 36.693-24.747 60.16-24.747s44.8 9.387 60.16 25.173l298.667 298.667c15.787 15.36 25.173 36.693 25.173 60.16s-9.813 45.227-25.173 60.587zM234.667 640c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" /> +<glyph unicode="" d="M554.667 810.667h-298.667v-768h170.667v256h128c141.227 0 256 114.773 256 256s-114.773 256-256 256zM563.2 469.334h-136.533v170.667h136.533c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333z" /> +<glyph unicode="" d="M896 725.334h-112.64l48.64 133.973-100.267 36.693-62.293-170.667h-541.44v-85.333l85.333-256-85.333-256v-85.333h768v85.333l-85.333 256 85.333 256v85.333zM682.667 341.334h-128v-128h-85.333v128h-128v85.333h128v128h85.333v-128h128v-85.333z" /> +<glyph unicode="" d="M282.453 478.294c61.44-120.747 160.427-219.307 281.173-281.173l93.867 93.867c11.52 11.52 28.587 15.36 43.52 10.24 47.787-15.787 99.413-24.32 152.32-24.32 23.467 0 42.667-19.2 42.667-42.667v-148.907c0-23.467-19.2-42.667-42.667-42.667-400.64 0-725.333 324.693-725.333 725.333 0 23.467 19.2 42.667 42.667 42.667h149.333c23.467 0 42.667-19.2 42.667-42.667 0-53.333 8.533-104.533 24.32-152.32 4.693-14.933 1.28-31.573-10.667-43.52l-93.867-93.867z" /> +<glyph unicode="" d="M512 853.334c-152.32 0-288.853-65.707-383.573-170.667l383.573-682.667 383.573 682.667c-94.293 104.533-231.253 170.667-383.573 170.667zM298.667 640c0 46.933 38.4 85.333 85.333 85.333s85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333-85.333 38.4-85.333 85.333zM512 298.667c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333z" /> +<glyph unicode="" d="M853.333 426.667c0 46.933 38.4 85.333 85.333 85.333v170.667c0 46.933-38.4 85.333-85.333 85.333h-682.667c-46.933 0-84.907-38.4-84.907-85.333v-170.667c46.933 0 84.907-38.4 84.907-85.333s-37.973-85.333-85.333-85.333v-170.667c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v170.667c-46.933 0-85.333 38.4-85.333 85.333zM664.747 221.867l-152.747 98.133-152.747-98.133 46.080 175.787-140.373 114.773 180.907 10.667 66.133 168.107 65.707-168.533 180.907-10.667-140.373-114.773 46.507-175.36z" /> +<glyph unicode="" d="M853.333 768h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM853.333 597.334l-341.333-213.333-341.333 213.333v85.333l341.333-213.333 341.333 213.333v-85.333z" /> +<glyph unicode="" d="M810.667 597.334h-597.333c-70.827 0-128-57.173-128-128v-256h170.667v-170.667h512v170.667h170.667v256c0 70.827-57.173 128-128 128zM682.667 128h-341.333v213.333h341.333v-213.333zM810.667 426.667c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667zM768 810.667h-512v-170.667h512v170.667z" /> +<glyph unicode="" d="M345.6 369.494l120.747 120.747-299.52 299.093c-66.56-66.56-66.56-174.507 0-241.493l178.773-178.347zM634.88 446.72c65.28-30.293 157.013-8.96 224.853 58.88 81.493 81.493 97.28 198.4 34.56 261.12-62.293 62.293-179.2 46.933-261.12-34.56-67.84-67.84-89.173-159.573-58.88-224.853l-416.427-416.427 60.16-60.16 293.973 293.12 293.547-293.547 60.16 60.16-293.547 293.547 62.72 62.72z" /> +<glyph unicode="" d="M648.533 426.667c0-75.405-61.128-136.533-136.533-136.533s-136.533 61.128-136.533 136.533c0 75.405 61.128 136.533 136.533 136.533s136.533-61.128 136.533-136.533zM384 853.334l-78.080-85.333h-135.253c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333h-135.253l-78.080 85.333h-256zM512 213.334c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333z" /> +<glyph unicode="" d="M853.333 597.334h-128v170.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-469.333h85.333c0-70.827 57.173-128 128-128s128 57.173 128 128h256c0-70.827 57.173-128 128-128s128 57.173 128 128h85.333v213.333l-128 170.667zM256 149.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM832 533.334l83.627-106.667h-190.293v106.667h106.667zM768 149.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" /> +<glyph unicode="" d="M807.253 682.24c-8.533 25.173-32.427 43.093-60.587 43.093h-106.667v85.333h-256v-85.333h-106.667c-28.16 0-51.627-17.92-60.587-43.093l-88.747-255.573v-341.333c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v42.667h512v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v341.333l-88.747 255.573zM277.333 256c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 256c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM213.333 469.334l64 192h469.333l64-192h-597.333z" /> +<glyph unicode="" d="M810.667 853.334h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h170.667l128-128 128 128h170.667c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM512 712.534c63.573 0 115.2-51.627 115.2-115.2s-51.627-115.2-115.2-115.2c-63.573 0-115.2 51.627-115.2 115.2s51.627 115.2 115.2 115.2zM768 256h-512v38.4c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-38.4z" /> +<glyph unicode="" d="M874.667 810.667l-6.827-1.28-227.84-88.32-256 89.6-240.64-81.067c-8.96-2.987-15.36-10.667-15.36-20.48v-645.12c0-11.947 9.387-21.333 21.333-21.333l6.827 1.28 227.84 88.32 256-89.6 240.64 81.067c8.96 2.987 15.36 10.667 15.36 20.48v645.12c0 11.947-9.387 21.333-21.333 21.333zM640 128l-256 90.027v507.307l256-90.027v-507.307z" /> +<glyph unicode="" d="M512 597.334c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM893.44 469.334c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-177.92-19.627-319.147-160.853-338.773-338.773h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c177.92 19.627 319.147 160.853 338.773 338.773h87.893v85.333h-87.893zM512 128c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667z" /> +<glyph unicode="" d="M512 853.334l-320-780.373 30.293-30.293 289.707 128 289.707-128 30.293 30.293z" /> +<glyph unicode="" d="M768 597.334c0 141.227-114.773 256-256 256s-256-114.773-256-256c0-192 256-469.333 256-469.333s256 277.333 256 469.333zM426.667 597.334c0 46.933 38.4 85.333 85.333 85.333s85.333-38.4 85.333-85.333-37.973-85.333-85.333-85.333c-46.933 0-85.333 38.4-85.333 85.333zM213.333 85.334v-85.333h597.333v85.333h-597.333z" /> +<glyph unicode="" d="M512 853.334c-165.12 0-298.667-133.547-298.667-298.667 0-224 298.667-554.667 298.667-554.667s298.667 330.667 298.667 554.667c0 165.12-133.547 298.667-298.667 298.667zM512 448c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667 106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667z" /> +<glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM256 341.334v105.387l293.547 293.547c8.533 8.533 21.76 8.533 30.293 0l75.52-75.52c8.533-8.533 8.533-21.76 0-30.293l-293.973-293.12h-105.387zM768 341.334h-320l85.333 85.333h234.667v-85.333z" /> +<glyph unicode="" d="M345.6 369.494l120.747 120.747-299.52 299.093c-66.56-66.56-66.56-174.507 0-241.493l178.773-178.347zM634.88 446.72c65.28-30.293 157.013-8.96 224.853 58.88 81.493 81.493 97.28 198.4 34.56 261.12-62.293 62.293-179.2 46.933-261.12-34.56-67.84-67.84-89.173-159.573-58.88-224.853l-416.427-416.427 60.16-60.16 293.973 293.12 293.547-293.547 60.16 60.16-293.547 293.547 62.72 62.72z" /> +<glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM213.333 725.76h128c0-70.827-57.173-128.427-128-128.427v128.427zM213.333 426.667v85.333c117.76 0 213.333 96 213.333 213.76h85.333c0-165.12-133.547-299.093-298.667-299.093zM213.333 170.667l149.333 192 106.667-128.427 149.333 192.427 192-256h-597.333z" /> +<glyph unicode="" d="M853.333 768h-682.667v-85.333h682.667v85.333zM896 341.334v85.333l-42.667 213.333h-682.667l-42.667-213.333v-85.333h42.667v-256h426.667v256h170.667v-256h85.333v256h42.667zM512 170.667h-256v170.667h256v-170.667z" /> +<glyph unicode="" d="M597.333 682.667l-160-213.333 121.6-162.133-68.267-51.2c-72.107 96-192 256-192 256l-256-341.333h938.667l-384 512z" /> +<glyph unicode="" d="M853.333 512h-128v48.64c73.387 19.2 128 85.333 128 164.693h-128v42.667c0 23.467-19.2 42.667-42.667 42.667h-341.333c-23.467 0-42.667-19.2-42.667-42.667v-42.667h-128c0-79.36 54.613-145.493 128-164.693v-48.64h-128c0-79.36 54.613-145.493 128-164.693v-48.64h-128c0-79.36 54.613-145.493 128-164.693v-48.64c0-23.467 19.2-42.667 42.667-42.667h341.333c23.467 0 42.667 19.2 42.667 42.667v48.64c73.387 19.2 128 85.333 128 164.693h-128v48.64c73.387 19.2 128 85.333 128 164.693zM512 128c-47.36 0-85.333 38.4-85.333 85.333s37.973 85.333 85.333 85.333c46.933 0 85.333-38.4 85.333-85.333s-37.973-85.333-85.333-85.333zM512 341.334c-47.36 0-85.333 38.4-85.333 85.333s37.973 85.333 85.333 85.333c46.933 0 85.333-38.4 85.333-85.333s-37.973-85.333-85.333-85.333zM512 554.667c-47.36 0-85.333 38.4-85.333 85.333 0 47.36 37.973 85.333 85.333 85.333 46.933 0 85.333-37.973 85.333-85.333 0-46.933-37.973-85.333-85.333-85.333z" /> +<glyph unicode="" d="M170.667 597.334h170.667v170.667h-170.667v-170.667zM426.667 85.334h170.667v170.667h-170.667v-170.667zM170.667 85.334h170.667v170.667h-170.667v-170.667zM170.667 341.334h170.667v170.667h-170.667v-170.667zM426.667 341.334h170.667v170.667h-170.667v-170.667zM682.667 768v-170.667h170.667v170.667h-170.667zM426.667 597.334h170.667v170.667h-170.667v-170.667zM682.667 341.334h170.667v170.667h-170.667v-170.667zM682.667 85.334h170.667v170.667h-170.667v-170.667z" /> +<glyph unicode="" d="M853.333 469.334h-519.253l238.507 238.507-60.587 60.16-341.333-341.333 341.333-341.333 60.16 60.16-238.080 238.507h519.253v85.333z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 341.334l-170.667 170.667h341.333l-170.667-170.667z" /> +<glyph unicode="" d="M298.667 512l213.333-213.333 213.333 213.333z" /> +<glyph unicode="" d="M298.667 341.334l213.333 213.333 213.333-213.333z" /> +<glyph unicode="" d="M512 768l-60.16-60.16 238.080-238.507h-519.253v-85.333h519.253l-238.080-238.507 60.16-60.16 341.333 341.333z" /> +<glyph unicode="" d="M512 853.334c-235.947 0-426.667-190.72-426.667-426.667s190.72-426.667 426.667-426.667 426.667 190.72 426.667 426.667-190.72 426.667-426.667 426.667zM725.333 273.494l-60.16-60.16-153.173 153.173-153.173-153.173-60.16 60.16 153.173 153.173-153.173 153.173 60.16 60.16 153.173-153.173 153.173 153.173 60.16-60.16-153.173-153.173 153.173-153.173z" /> +<glyph unicode="" d="M384 248.747l-177.92 177.92-60.587-60.16 238.507-238.507 512 512-60.16 60.16z" /> +<glyph unicode="" d="M657.493 622.507l-60.16 60.16-256-256 256-256 60.16 60.16-195.413 195.84z" /> +<glyph unicode="" d="M426.667 682.667l-60.16-60.16 195.413-195.84-195.413-195.84 60.16-60.16 256 256z" /> +<glyph unicode="" d="M810.667 665.174l-60.16 60.16-238.507-238.507-238.507 238.507-60.16-60.16 238.507-238.507-238.507-238.507 60.16-60.16 238.507 238.507 238.507-238.507 60.16 60.16-238.507 238.507z" /> +<glyph unicode="" d="M512 597.334l-256-256 60.16-60.16 195.84 195.413 195.84-195.413 60.16 60.16z" /> +<glyph unicode="" d="M707.84 572.16l-195.84-195.413-195.84 195.413-60.16-60.16 256-256 256 256z" /> +<glyph unicode="" d="M213.333 256h128v-128h85.333v213.333h-213.333v-85.333zM341.333 597.334h-128v-85.333h213.333v213.333h-85.333v-128zM597.333 128h85.333v128h128v85.333h-213.333v-213.333zM682.667 597.334v128h-85.333v-213.333h213.333v85.333h-128z" /> +<glyph unicode="" d="M298.667 341.334h-85.333v-213.333h213.333v85.333h-128v128zM213.333 512h85.333v128h128v85.333h-213.333v-213.333zM725.333 213.334h-128v-85.333h213.333v213.333h-85.333v-128zM597.333 725.334v-85.333h128v-128h85.333v213.333h-213.333z" /> +<glyph unicode="" d="M128 170.667h768v85.333h-768v-85.333zM128 384h768v85.333h-768v-85.333zM128 682.667v-85.333h768v85.333h-768z" /> +<glyph unicode="" d="M256 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM512 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M512 597.334c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333zM512 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM512 256c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M753.067 667.734c-61.867 61.867-146.773 100.267-241.067 100.267-188.587 0-340.907-152.747-340.907-341.333s152.32-341.333 340.907-341.333c159.147 0 291.84 108.8 329.813 256h-88.747c-34.987-99.413-129.707-170.667-241.067-170.667-141.227 0-256 114.773-256 256s114.773 256 256 256c70.827 0 133.973-29.44 180.053-75.947l-137.387-137.387h298.667v298.667l-100.267-100.267z" /> +<glyph unicode="" d="M316.16 145.494l60.587-60.16 135.253 135.253 135.253-135.253 60.16 60.16-195.413 195.84-195.84-195.84zM707.84 707.84l-60.587 60.16-135.253-135.253-135.253 135.253-60.587-60.16 195.84-195.84 195.84 195.84z" /> +<glyph unicode="" d="M512 689.92l135.253-135.253 60.16 60.16-195.413 195.84-195.84-195.84 60.587-60.16 135.253 135.253zM512 163.414l-135.253 135.253-60.16-60.16 195.413-195.84 195.84 195.84-60.587 60.16-135.253-135.253z" /> +<glyph unicode="" d="M213.333 256c0-165.12 133.547-298.667 298.667-298.667s298.667 133.547 298.667 298.667v170.667h-597.333v-170.667zM687.787 752.214l89.6 89.6-34.987 35.413-98.133-98.56c-40.107 20.053-84.48 32-132.267 32s-92.16-11.947-131.84-32l-98.56 98.56-34.987-35.413 89.6-89.6c-74.24-54.187-122.88-141.227-122.88-240.213v-42.667h597.333v42.667c0 98.987-48.64 186.027-122.88 240.213zM384 554.667c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667zM640 554.667c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667z" /> +<glyph unicode="" d="M607.573 426.24l98.987-98.987c11.947 30.72 18.773 64.427 18.773 99.413s-6.827 67.84-18.347 98.56l-99.413-98.987zM833.28 652.374l-53.76-53.76c26.88-51.627 41.813-109.653 41.813-171.52s-15.36-120.32-41.813-171.52l51.2-51.2c41.387 65.707 65.707 143.36 65.707 226.56-0.427 80.64-23.467 156.587-63.147 221.44zM670.293 609.707l-243.627 243.627h-42.667v-323.84l-195.84 195.84-60.16-60.16 238.507-238.507-238.507-238.507 60.16-60.16 195.84 195.84v-323.84h42.667l243.627 243.627-183.467 183.040 183.467 183.040zM469.333 689.92l80.213-80.213-80.213-80.213v160.427zM549.547 243.627l-80.213-80.213v160.427l80.213-80.213z" /> +<glyph unicode="" d="M853.333 256h85.333v85.333h-85.333v-85.333zM853.333 640v-213.333h85.333v213.333h-85.333zM426.667 768c-188.587 0-341.333-152.747-341.333-341.333s152.747-341.333 341.333-341.333 341.333 152.747 341.333 341.333-152.747 341.333-341.333 341.333zM426.667 341.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333z" /> +<glyph unicode="" d="M512 853.334c-234.667 0-426.667-192-426.667-426.667s192-426.667 426.667-426.667 426.667 192 426.667 426.667-192 426.667-426.667 426.667zM170.667 426.667c0 187.733 153.6 341.333 341.333 341.333 76.8 0 149.333-25.6 209.067-72.533l-477.867-477.867c-46.933 59.733-72.533 132.267-72.533 209.067zM512 85.334c-76.8 0-149.333 25.6-209.067 72.533l477.867 477.867c46.933-59.733 72.533-132.267 72.533-209.067 0-187.733-153.6-341.333-341.333-341.333z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333 0 78.933 26.88 151.467 72.107 209.067l478.293-478.293c-57.6-45.227-130.133-72.107-209.067-72.107zM781.227 217.6l-478.293 478.293c57.6 45.227 130.133 72.107 209.067 72.107 188.587 0 341.333-152.747 341.333-341.333 0-78.933-26.88-151.467-72.107-209.067z" /> +<glyph unicode="" d="M807.253 724.907c-8.533 25.173-32.427 43.093-60.587 43.093h-469.333c-28.16 0-51.627-17.92-60.587-43.093l-88.747-255.573v-341.333c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v42.667h512v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v341.333l-88.747 255.573zM277.333 298.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 298.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM213.333 512l64 192h469.333l64-192h-597.333z" /> +<glyph unicode="" d="M705.28 466.774l-45.227 45.227-208.213-208.213-90.453 90.453-45.227-45.227 135.68-135.68 253.44 253.44zM810.667 810.667h-42.667v85.333h-85.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.36 0-84.907-38.4-84.907-85.333l-0.427-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-597.333v469.333h597.333v-469.333z" /> +<glyph unicode="" d="M397.227 213.334l104.107 104.107 104.107-104.107 45.227 45.227-104.107 104.107 104.107 104.107-45.227 45.227-104.107-104.107-104.107 104.107-45.227-45.227 104.107-104.107-104.107-104.107 45.227-45.227zM810.667 810.667h-42.667v85.333h-85.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.36 0-84.907-38.4-84.907-85.333l-0.427-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-597.333v469.333h597.333v-469.333z" /> +<glyph unicode="" d="M725.333 512h-426.667v-85.333h426.667v85.333zM810.667 810.667h-42.667v85.333h-85.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.36 0-84.907-38.4-84.907-85.333l-0.427-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-597.333v469.333h597.333v-469.333zM597.333 341.334h-298.667v-85.333h298.667v85.333z" /> +<glyph unicode="" d="M853.333 682.667h-341.333l-85.333 85.333h-256c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM579.413 170.667l-152.747 89.6-152.747-89.6 40.533 173.653-134.827 116.907 177.493 15.36 69.547 163.413 69.547-163.84 177.493-15.36-134.827-116.907 40.533-173.227z" /> +<glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM213.333 341.334l149.333 192 106.667-128.427 149.333 192.427 192-256h-597.333z" /> +<glyph unicode="" d="M938.667 810.667h-640c-29.44 0-52.48-14.933-67.84-37.547l-230.827-346.453 230.827-346.027c15.36-22.613 41.387-37.973 70.827-37.973h637.013c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM384 362.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM597.333 362.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM810.667 362.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" /> +<glyph unicode="" d="M832 512c7.253 0 14.080-1.28 21.333-2.133v386.133l-810.667-810.667h554.667v128c0 37.973 16.64 71.68 42.667 95.147v11.52c0 105.813 86.187 192 192 192zM938.667 256v64c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-64c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667h213.333c23.467 0 42.667 19.2 42.667 42.667v170.667c0 23.467-19.2 42.667-42.667 42.667zM896 256h-128v64c0 35.413 28.587 64 64 64s64-28.587 64-64v-64z" /> +<glyph unicode="" d="M627.627 533.334l97.707 97.707v-161.707h21.333l121.6 121.6-91.307 91.733 91.733 91.733-122.027 121.6h-21.333v-161.707l-97.707 97.707-30.293-30.293 119.040-119.040-119.040-119.040 30.293-30.293zM768 814.507l40.107-40.107-40.107-40.107v80.213zM768 631.040l40.107-40.107-40.107-40.107v80.213zM853.333 277.334c-53.333 0-104.533 8.533-152.32 24.32-14.933 4.693-31.573 1.28-43.52-10.24l-93.867-93.867c-120.747 61.44-219.733 160-281.173 281.173l93.867 94.293c11.947 11.093 15.36 27.733 10.667 42.667-15.787 47.787-24.32 98.987-24.32 152.32 0 23.467-19.2 42.667-42.667 42.667h-149.333c-23.467 0-42.667-19.2-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.467 0 42.667 19.2 42.667 42.667v149.333c0 23.467-19.2 42.667-42.667 42.667z" /> +<glyph unicode="" d="M768 469.334l213.333 213.333-213.333 213.333v-128h-170.667v-170.667h170.667v-128zM853.333 277.334c-53.333 0-104.533 8.533-152.32 24.32-14.933 4.693-31.573 1.28-43.52-10.24l-93.867-93.867c-120.747 61.44-219.733 160-281.173 281.173l93.867 94.293c11.947 11.093 15.36 27.733 10.667 42.667-15.787 47.787-24.32 98.987-24.32 152.32 0 23.467-19.2 42.667-42.667 42.667h-149.333c-23.467 0-42.667-19.2-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.467 0 42.667 19.2 42.667 42.667v149.333c0 23.467-19.2 42.667-42.667 42.667z" /> +<glyph unicode="" d="M853.333 277.334c-53.333 0-104.533 8.533-152.32 24.32-14.933 4.693-31.573 1.28-43.52-10.24l-93.867-93.867c-120.747 61.44-219.733 160-281.173 281.173l93.867 94.293c11.947 11.093 15.36 27.733 10.667 42.667-15.787 47.787-24.32 98.987-24.32 152.32 0 23.467-19.2 42.667-42.667 42.667h-149.333c-23.467 0-42.667-19.2-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.467 0 42.667 19.2 42.667 42.667v149.333c0 23.467-19.2 42.667-42.667 42.667zM810.667 426.667h85.333c0 212.053-171.947 384-384 384v-85.333c165.12 0 298.667-133.547 298.667-298.667zM640 426.667h85.333c0 117.76-95.573 213.333-213.333 213.333v-85.333c70.827 0 128-57.173 128-128z" /> +<glyph unicode="" d="M853.333 277.334c-53.333 0-104.533 8.533-152.32 24.32-14.933 4.693-31.573 1.28-43.52-10.24l-93.867-93.867c-120.747 61.44-219.733 160-281.173 281.173l93.867 94.293c11.947 11.093 15.36 27.733 10.667 42.667-15.787 47.787-24.32 98.987-24.32 152.32 0 23.467-19.2 42.667-42.667 42.667h-149.333c-23.467 0-42.667-19.2-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.467 0 42.667 19.2 42.667 42.667v149.333c0 23.467-19.2 42.667-42.667 42.667zM853.333 768v21.333c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-21.333c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667h213.333c23.467 0 42.667 19.2 42.667 42.667v170.667c0 23.467-19.2 42.667-42.667 42.667zM819.2 768h-145.067v21.333c0 40.107 32.427 72.533 72.533 72.533s72.533-32.427 72.533-72.533v-21.333z" /> +<glyph unicode="" d="M277.333 704l234.667-234.667 298.667 298.667-42.667 42.667-256-256-192 192h149.333v64h-256v-256h64v149.333zM1011.627 227.414c-130.133 123.307-305.92 199.253-499.627 199.253s-369.493-75.947-499.627-199.253c-7.68-7.68-12.373-18.347-12.373-30.293s4.693-22.613 12.373-30.293l105.813-105.813c7.68-7.68 18.347-12.373 30.293-12.373 11.52 0 22.187 4.693 29.867 11.947 33.707 31.573 72.107 58.027 113.493 78.933 14.080 6.827 23.893 21.333 23.893 38.4v132.267c61.867 20.48 128 31.147 196.267 31.147s134.4-10.667 196.267-30.72v-132.267c0-16.64 9.813-31.573 23.893-38.4 41.813-20.907 79.787-47.787 113.92-78.933 7.68-7.68 18.347-11.947 29.867-11.947 11.947 0 22.613 4.693 30.293 12.373l105.813 105.813c7.68 7.68 12.373 18.347 12.373 30.293s-5.12 22.187-12.8 29.867z" /> +<glyph unicode="" d="M725.333 810.667h-85.333v-298.667h85.333v298.667zM853.333 277.334c-53.333 0-104.533 8.533-152.32 24.32-14.933 4.693-31.573 1.28-43.52-10.24l-93.867-93.867c-120.747 61.44-219.733 160-281.173 281.173l93.867 94.293c11.947 11.093 15.36 27.733 10.667 42.667-15.787 47.787-24.32 98.987-24.32 152.32 0 23.467-19.2 42.667-42.667 42.667h-149.333c-23.467 0-42.667-19.2-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.467 0 42.667 19.2 42.667 42.667v149.333c0 23.467-19.2 42.667-42.667 42.667zM810.667 810.667v-298.667h85.333v298.667h-85.333z" /> +<glyph unicode="" d="M853.333 682.667h-170.667v85.333l-85.333 85.333h-170.667l-85.333-85.333v-85.333h-170.667c-47.36 0-84.907-37.973-84.907-85.333l-0.427-469.333c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v469.333c0 47.36-37.973 85.333-85.333 85.333zM426.667 768h170.667v-85.333h-170.667v85.333zM512 128l-213.333 213.333h128v170.667h170.667v-170.667h128l-213.333-213.333z" /> +<glyph unicode="" d="M853.333 682.667h-170.667v85.333l-85.333 85.333h-170.667l-85.333-85.333v-85.333h-170.667c-47.36 0-84.907-37.973-84.907-85.333l-0.427-469.333c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v469.333c0 47.36-37.973 85.333-85.333 85.333zM426.667 768h170.667v-85.333h-170.667v85.333zM448 192l-149.333 149.333 60.16 60.16 89.173-89.173 221.013 221.013 60.16-60.16-281.173-281.173z" /> +<glyph unicode="" d="M768 853.334h-341.333l-255.147-256-0.853-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM512 597.334h-85.333v170.667h85.333v-170.667zM640 597.334h-85.333v170.667h85.333v-170.667zM768 597.334h-85.333v170.667h85.333v-170.667z" /> +<glyph unicode="" d="M768 853.334h-341.333l-255.147-256-0.853-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM554.667 213.334h-85.333v85.333h85.333v-85.333zM554.667 384h-85.333v213.333h85.333v-213.333z" /> +<glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM554.667 341.334h-85.333v85.333h85.333v-85.333zM554.667 512h-85.333v170.667h85.333v-170.667z" /> +<glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM384 469.334h-85.333v85.333h85.333v-85.333zM554.667 469.334h-85.333v85.333h85.333v-85.333zM725.333 469.334h-85.333v85.333h85.333v-85.333z" /> +<glyph unicode="" d="M426.667 667.734v89.173c-34.133-8.96-66.133-23.040-95.147-40.96l62.293-62.293c10.667 5.12 21.333 10.24 32.853 14.080zM122.027 707.84l100.693-100.693c-32.853-52.053-52.053-113.92-52.053-180.48 0-94.293 38.827-179.2 100.693-240.64l-100.693-100.693h256v256l-95.573-95.573c-46.080 46.507-75.093 110.080-75.093 180.907 0 42.667 10.667 82.773 29.013 118.187l344.747-344.747c-10.667-5.547-21.333-10.667-32.853-14.507v-89.173c34.133 8.96 66.133 23.040 95.147 40.96l100.693-100.693 54.187 54.187-670.293 671.147-54.613-54.187zM853.333 768h-256v-256l95.573 95.573c46.080-46.507 75.093-110.080 75.093-180.907 0-42.667-10.667-82.773-29.013-118.187l62.293-62.293c32.853 52.053 52.053 113.92 52.053 180.48 0 94.293-38.827 179.2-100.693 240.64l100.693 100.693z" /> +<glyph unicode="" d="M128 426.667c0-94.293 38.827-179.2 100.693-240.64l-100.693-100.693h256v256l-95.573-95.573c-46.080 46.507-75.093 110.080-75.093 180.907 0 111.36 71.253 206.080 170.667 241.067v89.173c-147.2-37.973-256-171.093-256-330.24zM469.333 213.334h85.333v85.333h-85.333v-85.333zM896 768h-256v-256l95.573 95.573c46.080-46.507 75.093-110.080 75.093-180.907 0-111.36-71.253-206.080-170.667-241.067v-89.173c147.2 37.973 256 171.093 256 330.24 0 94.293-38.827 179.2-100.693 240.64l100.693 100.693zM469.333 384h85.333v256h-85.333v-256z" /> +<glyph unicode="" d="M512 768v128l-170.667-170.667 170.667-170.667v128c141.227 0 256-114.773 256-256 0-43.093-10.667-84.053-29.867-119.467l62.293-62.293c33.28 52.48 52.907 114.773 52.907 181.76 0 188.587-152.747 341.333-341.333 341.333zM512 170.667c-141.227 0-256 114.773-256 256 0 43.093 10.667 84.053 29.867 119.467l-62.293 62.293c-33.28-52.48-52.907-114.773-52.907-181.76 0-188.587 152.747-341.333 341.333-341.333v-128l170.667 170.667-170.667 170.667v-128z" /> +<glyph unicode="" d="M725.333 895.574l-426.667 0.427c-46.933 0-85.333-38.4-85.333-85.333v-768c0-46.933 38.4-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v768c0 46.933-38.4 84.907-85.333 84.907zM725.333 128h-426.667v597.333h426.667v-597.333zM682.667 384h-128v213.333h-85.333v-213.333h-128l170.667-170.667 170.667 170.667z" /> +<glyph unicode="" d="M85.333 256v-85.333c117.76 0 213.333-95.573 213.333-213.333h85.333c0 165.12-133.547 298.667-298.667 298.667zM85.333 85.334v-128h128c0 70.827-57.173 128-128 128zM85.333 426.667v-85.333c212.053 0 384-171.947 384-384h85.333c0 259.413-209.92 469.333-469.333 469.333zM725.333 895.574l-426.667 0.427c-46.933 0-85.333-38.4-85.333-85.333v-314.453c29.44-6.827 58.027-15.787 85.333-27.307v256.427h426.667v-554.667h-129.28c22.187-53.333 35.84-110.507 40.533-170.667h88.747c46.933 0 85.333 38.4 85.333 85.333v725.333c0 46.933-38.4 84.907-85.333 84.907z" /> +<glyph unicode="" d="M807.253 724.907c-8.533 25.173-32.427 43.093-60.587 43.093h-469.333c-28.16 0-51.627-17.92-60.587-43.093l-88.747-255.573v-341.333c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v42.667h512v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v341.333l-88.747 255.573zM277.333 298.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 298.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM213.333 512l64 192h469.333l64-192h-597.333z" /> +<glyph unicode="" d="M0 298.667h85.333v256h-85.333v-256zM128 213.334h85.333v426.667h-85.333v-426.667zM938.667 554.667v-256h85.333v256h-85.333zM810.667 213.334h85.333v426.667h-85.333v-426.667zM704 810.667h-384c-35.413 0-64-28.587-64-64v-640c0-35.413 28.587-64 64-64h384c35.413 0 64 28.587 64 64v640c0 35.413-28.587 64-64 64zM682.667 128h-341.333v597.333h341.333v-597.333z" /> +<glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM768 341.334l-170.667 136.533v-136.533h-341.333v341.333h341.333v-136.533l170.667 136.533v-341.333z" /> +<glyph unicode="" d="M938.667 768v21.333c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-21.333c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667h213.333c23.467 0 42.667 19.2 42.667 42.667v170.667c0 23.467-19.2 42.667-42.667 42.667zM904.533 768h-145.067v21.333c0 40.107 32.427 72.533 72.533 72.533s72.533-32.427 72.533-72.533v-21.333zM807.253 426.667c1.707-14.080 3.413-28.16 3.413-42.667 0-88.747-34.133-169.387-89.6-229.973-11.093 34.56-42.667 59.307-81.067 59.307h-42.667v128c0 23.467-19.2 42.667-42.667 42.667h-256v85.333h85.333c23.467 0 42.667 19.2 42.667 42.667v85.333h85.333c46.933 0 85.333 38.4 85.333 85.333v108.373c-40.533 12.8-83.2 19.627-128 19.627-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667c0 14.507-0.853 28.587-2.133 42.667h-86.613zM426.667 45.654c-168.533 20.907-298.667 164.267-298.667 338.347 0 26.453 3.413 51.627 8.96 76.373l204.373-204.373v-42.667c0-46.933 38.4-85.333 85.333-85.333v-82.347z" /> +<glyph unicode="" d="M512 682.667c47.36 0 85.333 38.4 85.333 85.333 0 16.213-4.267 31.147-12.373 43.947l-72.96 126.72-72.96-126.72c-8.107-12.8-12.373-27.733-12.373-43.947 0-46.933 38.4-85.333 85.333-85.333zM708.267 256.427l-45.653 45.653-46.080-45.653c-55.467-55.467-152.747-55.893-208.64 0l-45.653 45.653-46.507-45.653c-27.733-27.733-64.853-43.093-104.107-43.093-31.147 0-59.733 9.813-83.627 26.027v-196.693c0-23.467 19.2-42.667 42.667-42.667h682.667c23.467 0 42.667 19.2 42.667 42.667v196.693c-23.893-16.213-52.48-26.027-83.627-26.027-39.253 0-76.373 15.36-104.107 43.093zM768 554.667h-213.333v85.333h-85.333v-85.333h-213.333c-70.827 0-128-57.173-128-128v-65.707c0-46.080 37.547-83.627 83.627-83.627 22.187 0 43.52 8.533 58.88 24.32l91.307 90.88 90.88-90.88c31.573-31.573 86.613-31.573 118.187 0l91.307 90.88 90.88-90.88c15.787-15.787 36.693-24.32 58.88-24.32 46.080 0 83.627 37.547 83.627 83.627v65.707c0.427 70.827-56.747 128-127.573 128z" /> +<glyph unicode="" d="M512 640v170.667h-426.667v-768h853.333v597.333h-426.667zM256 128h-85.333v85.333h85.333v-85.333zM256 298.667h-85.333v85.333h85.333v-85.333zM256 469.334h-85.333v85.333h85.333v-85.333zM256 640h-85.333v85.333h85.333v-85.333zM426.667 128h-85.333v85.333h85.333v-85.333zM426.667 298.667h-85.333v85.333h85.333v-85.333zM426.667 469.334h-85.333v85.333h85.333v-85.333zM426.667 640h-85.333v85.333h85.333v-85.333zM853.333 128h-341.333v85.333h85.333v85.333h-85.333v85.333h85.333v85.333h-85.333v85.333h341.333v-426.667zM768 469.334h-85.333v-85.333h85.333v85.333zM768 298.667h-85.333v-85.333h85.333v85.333z" /> +<glyph unicode="" d="M341.333 512h-128v128h-85.333v-128h-128v-85.333h128v-128h85.333v128h128v85.333zM768 469.334c70.827 0 127.573 57.173 127.573 128s-56.747 128-127.573 128c-13.653 0-26.88-2.133-38.827-5.973 24.32-34.56 38.4-76.373 38.4-122.027s-14.507-87.040-38.4-122.027c11.947-3.84 25.173-5.973 38.827-5.973zM554.667 469.334c70.827 0 127.573 57.173 127.573 128s-56.747 128-127.573 128c-70.827 0-128-57.173-128-128s57.173-128 128-128zM837.12 377.174c35.413-31.147 58.88-70.827 58.88-121.173v-85.333h128v85.333c0 65.707-101.12 106.24-186.88 121.173zM554.667 384c-85.333 0-256-42.667-256-128v-85.333h512v85.333c0 85.333-170.667 128-256 128z" /> +<glyph unicode="" d="M682.667 469.334c70.827 0 127.573 57.173 127.573 128s-56.747 128-127.573 128c-70.827 0-128-57.173-128-128s57.173-128 128-128zM341.333 469.334c70.827 0 127.573 57.173 127.573 128s-56.747 128-127.573 128c-70.827 0-128-57.173-128-128s57.173-128 128-128zM341.333 384c-99.413 0-298.667-49.92-298.667-149.333v-106.667h597.333v106.667c0 99.413-199.253 149.333-298.667 149.333zM682.667 384c-12.373 0-26.453-0.853-41.387-2.133 49.493-35.84 84.053-84.053 84.053-147.2v-106.667h256v106.667c0 99.413-199.253 149.333-298.667 149.333z" /> +<glyph unicode="" d="M640 469.334v256l-128 128-128-128v-85.333h-256v-597.333h768v426.667h-256zM298.667 128h-85.333v85.333h85.333v-85.333zM298.667 298.667h-85.333v85.333h85.333v-85.333zM298.667 469.334h-85.333v85.333h85.333v-85.333zM554.667 128h-85.333v85.333h85.333v-85.333zM554.667 298.667h-85.333v85.333h85.333v-85.333zM554.667 469.334h-85.333v85.333h85.333v-85.333zM554.667 640h-85.333v85.333h85.333v-85.333zM810.667 128h-85.333v85.333h85.333v-85.333zM810.667 298.667h-85.333v85.333h85.333v-85.333z" /> +<glyph unicode="" d="M511.573 853.334c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM661.333 469.334c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM362.667 469.334c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM512 192c99.413 0 183.893 62.293 218.027 149.333h-436.053c34.133-87.040 118.613-149.333 218.027-149.333z" /> +<glyph unicode="" d="M490.667-0c46.933 0 85.333 38.4 85.333 85.333h-170.667c0-46.933 38.4-85.333 85.333-85.333zM768 256v234.667c0 130.987-90.88 240.64-213.333 269.653v29.013c0 35.413-28.587 64-64 64s-64-28.587-64-64v-29.013c-122.453-29.013-213.333-138.667-213.333-269.653v-234.667l-85.333-85.333v-42.667h725.333v42.667l-85.333 85.333zM682.667 213.334h-384v277.333c0 106.24 85.76 192 192 192s192-85.76 192-192v-277.333z" /> +<glyph unicode="" d="M490.667-0c46.933 0 85.333 38.4 85.333 85.333h-170.667c0-46.933 38.4-85.333 85.333-85.333zM768 490.667c0 130.987-90.88 240.64-213.333 269.653v29.013c0 35.413-28.587 64-64 64s-64-28.587-64-64v-29.013c-21.76-5.12-42.24-13.653-61.867-23.893l403.2-402.773v157.013zM756.48 128l85.333-85.333 54.187 54.187-713.813 713.813-54.187-54.187 124.587-124.587c-24.747-41.387-39.253-89.6-39.253-141.227v-234.667l-85.333-85.333v-42.667h628.48z" /> +<glyph unicode="" d="M280.747 785.92l-61.013 61.013c-101.973-77.653-169.387-198.4-175.787-334.933h85.333c6.4 113.067 64.427 212.053 151.467 273.92zM852.053 512h85.333c-6.4 136.533-73.813 257.28-176.213 334.933l-61.013-61.013c87.467-61.867 145.493-160.853 151.893-273.92zM768 490.667c0 130.987-90.88 240.64-213.333 269.653v29.013c0 35.413-28.587 64-64 64s-64-28.587-64-64v-29.013c-122.453-29.013-213.333-138.667-213.333-269.653v-234.667l-85.333-85.333v-42.667h725.333v42.667l-85.333 85.333v234.667zM490.667-0c5.973 0 11.52 0.427 17.067 1.707 27.733 5.547 50.773 24.747 61.44 50.347 4.267 10.24 6.827 21.333 6.827 33.28h-170.667c0-46.933 38.4-85.333 85.333-85.333z" /> +<glyph unicode="" d="M490.667-0c46.933 0 85.333 38.4 85.333 85.333h-170.667c0-46.933 38.4-85.333 85.333-85.333zM768 256v234.667c0 130.987-90.88 240.64-213.333 269.653v29.013c0 35.413-28.587 64-64 64s-64-28.587-64-64v-29.013c-122.453-29.013-213.333-138.667-213.333-269.653v-234.667l-85.333-85.333v-42.667h725.333v42.667l-85.333 85.333zM597.333 520.534l-119.467-145.067h119.467v-76.8h-213.333v76.8l119.467 145.067h-119.467v76.8h213.333v-76.8z" /> +<glyph unicode="" d="M490.667-0c46.933 0 85.333 38.4 85.333 85.333h-170.667c0-46.933 38.4-85.333 85.333-85.333zM768 256v234.667c0 130.987-90.88 240.64-213.333 269.653v29.013c0 35.413-28.587 64-64 64s-64-28.587-64-64v-29.013c-122.453-29.013-213.333-138.667-213.333-269.653v-234.667l-85.333-85.333v-42.667h725.333v42.667l-85.333 85.333z" /> +<glyph unicode="" d="M128 725.334v-256h213.333l-42.667 170.667 170.667-42.667v213.333h-256c-46.933 0-85.333-38.4-85.333-85.333zM341.333 384h-213.333v-256c0-46.933 38.4-85.333 85.333-85.333h256v213.333l-170.667-42.667 42.667 170.667zM725.333 213.334l-170.667 42.667v-213.333h256c46.933 0 85.333 38.4 85.333 85.333v256h-213.333l42.667-170.667zM810.667 810.667h-256v-213.333l170.667 42.667-42.667-170.667h213.333v256c0 46.933-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M853.333 768h-135.253l-78.080 85.333h-256l-78.080-85.333h-135.253c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM512 640c69.547 0 130.56-33.707 169.813-85.333h-169.813c-70.827 0-128-57.173-128-128 0-14.933 2.987-29.44 7.68-42.667h-88.747c-2.56 13.653-4.267 28.16-4.267 42.667 0 117.76 95.573 213.333 213.333 213.333zM512 213.334c-69.547 0-130.56 33.707-169.813 85.333h169.813c70.827 0 128 57.173 128 128 0 14.933-2.987 29.44-7.68 42.667h88.747c2.987-13.653 4.267-28.16 4.267-42.667 0-117.76-95.573-213.333-213.333-213.333z" /> +<glyph unicode="" d="M704 384c-51.2 0-130.987-14.507-192-42.667-61.013 28.587-140.8 42.667-192 42.667-92.587 0-277.333-46.080-277.333-138.667v-117.333h938.667v117.333c0 92.587-184.747 138.667-277.333 138.667zM533.333 192h-426.667v53.333c0 23.040 109.227 74.667 213.333 74.667s213.333-51.627 213.333-74.667v-53.333zM917.333 192h-320v53.333c0 19.627-8.533 36.693-22.187 52.053 37.547 12.8 83.627 22.613 128.853 22.613 104.107 0 213.333-51.627 213.333-74.667v-53.333zM320 426.667c82.347 0 149.333 66.987 149.333 149.333s-66.987 149.333-149.333 149.333-149.333-66.987-149.333-149.333 66.987-149.333 149.333-149.333zM320 661.334c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333-85.333 38.4-85.333 85.333 38.4 85.333 85.333 85.333zM704 426.667c82.347 0 149.333 66.987 149.333 149.333s-66.987 149.333-149.333 149.333-149.333-66.987-149.333-149.333 66.987-149.333 149.333-149.333zM704 661.334c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333-85.333 38.4-85.333 85.333 38.4 85.333 85.333 85.333z" /> +<glyph unicode="" d="M682.667 469.334c70.827 0 127.573 57.173 127.573 128s-56.747 128-127.573 128c-70.827 0-128-57.173-128-128s57.173-128 128-128zM341.333 469.334c70.827 0 127.573 57.173 127.573 128s-56.747 128-127.573 128c-70.827 0-128-57.173-128-128s57.173-128 128-128zM341.333 384c-99.413 0-298.667-49.92-298.667-149.333v-106.667h597.333v106.667c0 99.413-199.253 149.333-298.667 149.333zM682.667 384c-12.373 0-26.453-0.853-41.387-2.133 49.493-35.84 84.053-84.053 84.053-147.2v-106.667h256v106.667c0 99.413-199.253 149.333-298.667 149.333z" /> +<glyph unicode="" d="M640 426.667c94.293 0 170.667 76.373 170.667 170.667s-76.373 170.667-170.667 170.667-170.667-76.373-170.667-170.667 76.373-170.667 170.667-170.667zM256 512v128h-85.333v-128h-128v-85.333h128v-128h85.333v128h128v85.333h-128zM640 341.334c-113.92 0-341.333-57.173-341.333-170.667v-85.333h682.667v85.333c0 113.493-227.413 170.667-341.333 170.667z" /> +<glyph unicode="" d="M512 686.934c49.493 0 89.6-40.107 89.6-89.6s-40.107-89.6-89.6-89.6-89.6 40.107-89.6 89.6 40.107 89.6 89.6 89.6zM512 302.934c126.72 0 260.267-62.293 260.267-89.6v-46.933h-520.533v46.933c0 27.307 133.547 89.6 260.267 89.6zM512 768c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM512 384c-113.92 0-341.333-57.173-341.333-170.667v-128h682.667v128c0 113.493-227.413 170.667-341.333 170.667z" /> +<glyph unicode="" d="M512 426.667c94.293 0 170.667 76.373 170.667 170.667s-76.373 170.667-170.667 170.667-170.667-76.373-170.667-170.667 76.373-170.667 170.667-170.667zM512 341.334c-113.92 0-341.333-57.173-341.333-170.667v-85.333h682.667v85.333c0 113.493-227.413 170.667-341.333 170.667z" /> +<glyph unicode="" d="M426.667 597.334h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667zM618.667 679.254v-77.653l106.667 21.333v-452.267h85.333v554.667z" /> +<glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM384 213.334h-85.333v298.667h85.333v-298.667zM554.667 213.334h-85.333v426.667h85.333v-426.667zM725.333 213.334h-85.333v170.667h85.333v-170.667z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM469.333 88.32c-168.533 20.907-298.667 164.267-298.667 338.347 0 26.453 3.413 51.627 8.96 76.373l204.373-204.373v-42.667c0-46.933 38.4-85.333 85.333-85.333v-82.347zM763.733 196.694c-11.093 34.56-42.667 59.307-81.067 59.307h-42.667v128c0 23.467-19.2 42.667-42.667 42.667h-256v85.333h85.333c23.467 0 42.667 19.2 42.667 42.667v85.333h85.333c46.933 0 85.333 38.4 85.333 85.333v17.493c125.013-50.773 213.333-173.227 213.333-316.16 0-88.747-34.133-169.387-89.6-229.973z" /> +<glyph unicode="" d="M213.333 376.32v-170.667l298.667-162.987 298.667 162.987v170.667l-298.667-162.987-298.667 162.987zM512 810.667l-469.333-256 469.333-256 384 209.493v-294.827h85.333v341.333l-469.333 256z" /> +<glyph unicode="" d="M768 252.587c-32.427 0-61.44-12.8-83.627-32.853l-304.213 177.067c2.133 9.813 3.84 19.627 3.84 29.867s-1.707 20.053-3.84 29.867l300.8 175.36c23.040-21.333 53.333-34.56 87.040-34.56 70.827 0 128 57.173 128 128s-57.173 128-128 128-128-57.173-128-128c0-10.24 1.707-20.053 3.84-29.867l-300.8-175.36c-23.040 21.333-53.333 34.56-87.040 34.56-70.827 0-128-57.173-128-128s57.173-128 128-128c33.707 0 64 13.227 87.040 34.56l303.787-177.493c-2.133-8.96-3.413-18.347-3.413-27.733 0-68.693 55.893-124.587 124.587-124.587s124.587 55.893 124.587 124.587-55.893 124.587-124.587 124.587z" /> +<glyph unicode="" d="M576 910.080s31.573-113.067 31.573-204.8c0-87.893-57.6-159.147-145.493-159.147-88.32 0-154.88 71.253-154.88 159.147l1.28 15.36c-86.187-102.4-137.813-235.093-137.813-379.307 0-188.587 152.747-341.333 341.333-341.333s341.333 152.747 341.333 341.333c0 229.973-110.507 435.2-277.333 568.747zM499.627 128c-75.947 0-137.387 59.733-137.387 133.973 0 69.12 44.8 117.76 119.893 133.12 75.52 15.36 153.6 51.627 197.12 110.080 16.64-55.040 25.173-113.067 25.173-172.373 0-113.067-91.733-204.8-204.8-204.8z" /> +<glyph unicode="" d="M810.667 725.334v-597.333h-597.333v597.333h597.333zM810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333z" /> +<glyph unicode="" d="M810.667 810.667h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c47.36 0 85.333 38.4 85.333 85.333v597.333c0 46.933-37.973 85.333-85.333 85.333zM426.667 213.334l-213.333 213.333 60.16 60.16 153.173-152.747 323.84 323.84 60.16-60.587-384-384z" /> +<glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333z" /> +<glyph unicode="" d="M512 640c-117.76 0-213.333-95.573-213.333-213.333s95.573-213.333 213.333-213.333 213.333 95.573 213.333 213.333-95.573 213.333-213.333 213.333zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333z" /> +<glyph unicode="" d="M938.667 523.094l-306.773 26.453-119.893 282.453-119.893-282.88-306.773-26.027 232.96-201.813-69.973-299.947 263.68 159.147 263.68-159.147-69.547 299.947 232.533 201.813zM512 260.267v396.8l72.96-172.373 186.88-16.213-141.653-122.88 42.667-182.613-160.853 97.28z" /> +<glyph unicode="" d="M938.667 544.427l-306.773 26.453-119.893 282.453-119.893-282.88-306.773-26.027 232.96-201.813-69.973-299.947 263.68 159.147 263.68-159.147-69.547 299.947 232.533 201.813zM512 281.6l-160.427-96.853 42.667 182.613-141.653 122.88 186.88 16.213 72.533 171.947 72.96-172.373 186.88-16.213-141.653-122.88 42.667-182.613-160.853 97.28z" /> +<glyph unicode="" d="M512 201.814l263.68-159.147-69.973 299.947 232.96 201.813-306.773 26.027-119.893 282.88-119.893-282.88-306.773-26.027 232.96-201.813-69.973-299.947z" /> +<glyph unicode="" d="M1032.533 597.334l59.733 72.533c-21.333 12.8-226.133 183.467-537.6 183.467s-516.267-170.667-537.6-183.467l537.6-669.867 298.667 371.2v226.133c0 0 179.2 0 179.2 0z" horiz-adv-x="1109" /> +<glyph unicode="" d="M900.267 576c34.133 0 68.267-8.533 98.133-25.6l93.867 119.467c-17.067 12.8-221.867 183.467-533.333 183.467s-516.267-170.667-537.6-183.467l537.6-669.867 179.2 221.867c-34.133 38.4-51.2 85.333-51.2 136.533 0 123.733 98.133 217.6 213.333 217.6z" horiz-adv-x="1109" /> +<glyph unicode="" d="M938.667 597.334v256l-853.333-853.333h682.667v597.333h170.667z" /> +</font></defs></svg> \ No newline at end of file diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/font/Material-Design-Icons.ttf b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/font/Material-Design-Icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..e12f0cc41bf92441112521c82f3e04324c25ff60 Binary files /dev/null and b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/font/Material-Design-Icons.ttf differ diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/font/Material-Design-Icons.woff b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/font/Material-Design-Icons.woff new file mode 100644 index 0000000000000000000000000000000000000000..201581f2582ff68f773afcd14426e45f5f328474 Binary files /dev/null and b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/font/Material-Design-Icons.woff differ diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/font/Material-Design-Icons.woff2 b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/font/Material-Design-Icons.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..be1765a97204b1c52163bb13fa8e3e7b4d2fd655 Binary files /dev/null and b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/font/Material-Design-Icons.woff2 differ diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/js/angular-material-datetimepicker.js b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/js/angular-material-datetimepicker.js new file mode 100644 index 0000000000000000000000000000000000000000..2c1e1d06835f532843cba5120654a5e9705db5c4 --- /dev/null +++ b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/js/angular-material-datetimepicker.js @@ -0,0 +1 @@ +(function(moment){var moduleName="ngMaterialDatePicker";var VIEW_STATES={DATE:0,HOUR:1,MINUTE:2};var css=function(el,name){if("jQuery" in window){return jQuery(el).css(name)}else{el=angular.element(el);return("getComputedStyle" in window)?window.getComputedStyle(el[0])[name]:el.css(name)}};var template='<md-dialog class="dtp" layout="column" style="width: 300px;"> <md-dialog-content class="dtp-content"> <div class="dtp-date-view"> <header class="dtp-header"> <div class="dtp-actual-day" ng-show="picker.dateMode">{{picker.currentDate.format("dddd")}}</div> <div class="dtp-actual-day" ng-show="picker.timeMode">{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}</div> <div class="dtp-close text-right"> <a href="#" mdc-dtp-noclick ng-click="picker.hide()">×</a> </div> </header> <div class="dtp-date" ng-show="picker.params.date"> <div layout="column"> <div class="dtp-actual-month">{{picker.currentDate.format("MMM") | uppercase}}</div> </div> <div class="dtp-actual-num">{{picker.currentDate.format("DD")}}</div> <div layout="column"> <div class="dtp-actual-year">{{picker.currentDate.format("YYYY")}}</div> </div> </div> <div class="dtp-time" ng-show="picker.params.time && !picker.params.date"> <div class="dtp-actual-maxtime">{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}</div> </div> <div class="dtp-picker"> <mdc-datetime-picker-calendar date="picker.currentDate" picker="picker" class="dtp-picker-calendar" ng-show="picker.currentView === picker.VIEWS.DATE"></mdc-datetime-picker-calendar> <div class="dtp-picker-datetime" ng-show="picker.currentView !== picker.VIEWS.DATE"> <div class="dtp-actual-meridien"> <div class="left p20"> <a href="#" mdc-dtp-noclick class="dtp-meridien-am" ng-class="{selected: picker.meridien == \'AM\'}" ng-click="picker.selectAM()">{{picker.params.amText}}</a> </div> <div ng-show="!picker.timeMode" class="dtp-actual-time p60">{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}</div> <div class="right p20"> <a href="#" mdc-dtp-noclick class="dtp-meridien-pm" ng-class="{selected: picker.meridien == \'PM\'}" ng-click="picker.selectPM()">{{picker.params.pmText}}</a> </div> <div class="clearfix"></div> </div> <mdc-datetime-picker-clock mode="hours" ng-if="picker.currentView === picker.VIEWS.HOUR"></mdc-datetime-picker-clock> <mdc-datetime-picker-clock mode="minutes" ng-if="picker.currentView === picker.VIEWS.MINUTE"></mdc-datetime-picker-clock> </div> </div> </div> </md-dialog-content> <md-dialog-actions class="dtp-buttons"> <md-button class="dtp-btn-cancel md-button" ng-click="picker.cancel()"> {{picker.params.cancelText}}</md-button> <md-button class="dtp-btn-ok md-button" ng-click="picker.ok()"> {{picker.params.okText}}</md-button> </md-dialog-actions></md-dialog>';angular.module(moduleName,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale="en";this.$get=function(){return this.locale};this.setDefaultLocale=function(localeString){this.locale=localeString}}).directive("mdcDatetimePicker",["$mdDialog",function($mdDialog){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",time:"=",date:"=",minDate:"=",maxDate:"=",shortTime:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@"},link:function(scope,element,attrs,ngModel){var isOn=false;if(!scope.format){if(scope.date&&scope.time){scope.format="YYYY-MM-DD HH:mm:ss"}else{if(scope.date){scope.format="YYYY-MM-DD"}else{scope.format="HH:mm"}}}if(angular.isString(scope.currentDate)&&scope.currentDate!==""){scope.currentDate=moment(scope.currentDate,scope.format)}if(ngModel){ngModel.$formatters.push(function(value){if(typeof value==="undefined"){return}var m=moment(value);return m.isValid()?m.format(scope.format):""})}element.attr("readonly","");element.on("focus click",function(e){e.preventDefault();element.blur();if(isOn){return}isOn=true;var options={};for(var i in attrs){if(scope.hasOwnProperty(i)&&!angular.isUndefined(scope[i])){options[i]=scope[i]}}options.currentDate=scope.currentDate;var locals={options:options};$mdDialog.show({template:template,controller:PluginController,controllerAs:"picker",locals:locals,openFrom:element,parent:angular.element(document.body),bindToController:true,disableParentScroll:false,skipHide:true}).then(function(v){scope.currentDate=v?v._d:v;isOn=false},function(){isOn=false})})}}}]);var PluginController=function($scope,$mdDialog,mdcDatetimePickerDefaultLocale){this.currentView=VIEW_STATES.DATE;this._dialog=$mdDialog;this.minDate;this.maxDate;this._attachedEvents=[];this.VIEWS=VIEW_STATES;this.params={date:true,time:true,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:mdcDatetimePickerDefaultLocale,weekStart:0,shortTime:false,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM"};this.meridien="AM";this.params=angular.extend(this.params,this.options);this.init()};PluginController.$inject=["$scope","$mdDialog","mdcDatetimePickerDefaultLocale"];PluginController.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date;this.dateMode=this.params.date;this.initDates();this.start()},currentNearest5Minute:function(){var date=this.currentDate||moment();var minutes=(5*Math.round(date.minute()/5));if(minutes>=60){minutes=55}return moment(date).minutes(minutes)},initDates:function(){var that=this;var _dateParam=function(input,fallback){var ret=null;if(angular.isDefined(input)&&input!==null&&input!==""){if(angular.isString(input)){if(typeof(that.params.format)!=="undefined"&&that.params.format!==null){ret=moment(input,that.params.format).locale(that.params.lang)}else{ret=moment(input).locale(that.params.lang)}}else{if(angular.isDate(input)){var x=input.getTime();ret=moment(x,"x").locale(that.params.lang)}else{if(input._isAMomentObject){ret=input}}}}else{ret=fallback}return ret};this.currentDate=_dateParam(this.params.currentDate,moment());this.minDate=_dateParam(this.params.minDate);this.maxDate=_dateParam(this.params.maxDate);this.selectDate(this.currentDate)},initDate:function(d){this.currentView=VIEW_STATES.DATE},initHours:function(){this.currentView=VIEW_STATES.HOUR},initMinutes:function(){this.currentView=VIEW_STATES.MINUTE},isAfterMinDate:function(date,checkHour,checkMinute){var _return=true;if(typeof(this.minDate)!=="undefined"&&this.minDate!==null){var _minDate=moment(this.minDate);var _date=moment(date);if(!checkHour&&!checkMinute){_minDate.hour(0);_minDate.minute(0);_date.hour(0);_date.minute(0)}_minDate.second(0);_date.second(0);_minDate.millisecond(0);_date.millisecond(0);if(!checkMinute){_date.minute(0);_minDate.minute(0);_return=(parseInt(_date.format("X"))>=parseInt(_minDate.format("X")))}else{_return=(parseInt(_date.format("X"))>=parseInt(_minDate.format("X")))}}return _return},isBeforeMaxDate:function(date,checkTime,checkMinute){var _return=true;if(typeof(this.maxDate)!=="undefined"&&this.maxDate!==null){var _maxDate=moment(this.maxDate);var _date=moment(date);if(!checkTime&&!checkMinute){_maxDate.hour(0);_maxDate.minute(0);_date.hour(0);_date.minute(0)}_maxDate.second(0);_date.second(0);_maxDate.millisecond(0);_date.millisecond(0);if(!checkMinute){_date.minute(0);_maxDate.minute(0);_return=(parseInt(_date.format("X"))<=parseInt(_maxDate.format("X")))}else{_return=(parseInt(_date.format("X"))<=parseInt(_maxDate.format("X")))}}return _return},selectDate:function(date){if(date){this.currentDate=moment(date);if(!this.isAfterMinDate(this.currentDate)){this.currentDate=moment(this.minDate)}if(!this.isBeforeMaxDate(this.currentDate)){this.currentDate=moment(this.maxDate)}this.currentDate.locale(this.params.lang);this.calendarStart=moment(this.currentDate);this.meridien=this.currentDate.hour()>=12?"PM":"AM"}},setName:function(){var text="";var possible="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";for(var i=0;i<5;i++){text+=possible.charAt(Math.floor(Math.random()*possible.length))}return text},isPM:function(){return this.meridien==="PM"},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("month"),false,false)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("month"),false,false)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(moment(this.calendarStart).startOf("year"),false,false)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(moment(this.calendarStart).endOf("year"),false,false)},isHourAvailable:function(hour){var _date=moment(this.currentDate);_date.hour(this.convertHours(hour)).minute(0).second(0);return this.isAfterMinDate(_date,true,false)&&this.isBeforeMaxDate(_date,true,false)},isMinuteAvailable:function(minute){var _date=moment(this.currentDate);_date.minute(minute).second(0);return this.isAfterMinDate(_date,true,true)&&this.isBeforeMaxDate(_date,true,true)},start:function(){this.currentView=VIEW_STATES.DATE;if(this.params.date){this.initDate()}else{if(this.params.time){this.initHours()}}},ok:function(){switch(this.currentView){case VIEW_STATES.DATE:if(this.params.time===true){this.initHours()}else{this.hide(true)}break;case VIEW_STATES.HOUR:this.initMinutes();break;case VIEW_STATES.MINUTE:this.hide(true);break}},cancel:function(){if(this.params.time){switch(this.currentView){case VIEW_STATES.DATE:this.hide();break;case VIEW_STATES.HOUR:if(this.params.date){this.initDate()}else{this.hide()}break;case VIEW_STATES.MINUTE:this.initHours();break}}else{this.hide()}},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){if(this.isHourAvailable(0)||this.isHourAvailable(12)){if(this.currentDate.hour()>=12){this.selectDate(this.currentDate.subtract(12,"hours"))}if(!this.isHourAvailable(this.currentDate.hour())){this.selectDate(this.currentDate.hour(this.minDate.hour()))}if(!this.isMinuteAvailable(this.currentDate.minute())){this.selectDate(this.currentDate.minute(this.minDate.minute()))}}},selectPM:function(){if(this.isHourAvailable(13)||this.isHourAvailable(24)){if(this.currentDate.hour()<12){this.selectDate(this.currentDate.add(12,"hours"))}if(!this.isHourAvailable(this.currentDate.hour())){this.selectDate(this.currentDate.hour(this.maxDate.hour()))}if(!this.isMinuteAvailable(this.currentDate.minute())){this.selectDate(this.currentDate.minute(this.maxDate.minute()))}}},convertHours:function(h){var _return=h;if((h<12)&&this.isPM()){_return+=12}return _return},hide:function(okBtn){if(okBtn){this._dialog.hide(this.currentDate)}else{this._dialog.cancel()}}};angular.module(moduleName).directive("mdcDatetimePickerCalendar",[function(){var startDate=moment(),YEAR_MIN=1900,YEAR_MAX=2100,MONTHS_IN_ALL=(YEAR_MAX-YEAR_MIN+1)*12,ITEM_HEIGHT=240,MONTHS=[];for(var i=0;i<MONTHS_IN_ALL;i++){MONTHS.push(i)}var currentMonthIndex=function(date){var year=date.year();var month=date.month();return((year-YEAR_MIN)*12)+month-1};return{restrict:"E",scope:{picker:"=",date:"="},bindToController:true,controllerAs:"cal",controller:["$scope",function($scope){var calendar=this,picker=this.picker,days=[];for(var i=picker.params.weekStart;days.length<7;i++){if(i>6){i=0}days.push(i.toString())}calendar.week=days;if(!picker.maxDate&&!picker.minDate){calendar.months=MONTHS}else{var low=picker.minDate?currentMonthIndex(picker.minDate):0;var high=picker.maxDate?(currentMonthIndex(picker.maxDate)+1):MONTHS_IN_ALL;calendar.months=MONTHS.slice(low,high)}calendar.getItemAtIndex=function(index){var month=((index+1)%12)||12;var year=YEAR_MIN+Math.floor(index/12);var monthObj=moment(picker.currentDate).year(year).month(month);return generateMonthCalendar(monthObj)};calendar.topIndex=currentMonthIndex(picker.currentDate)-calendar.months[0];var generateMonthCalendar=function(date){var month={};if(date!==null){month.name=date.format("MMMM YYYY");var startOfMonth=moment(date).locale(picker.params.lang).startOf("month").hour(date.hour()).minute(date.minute());var iNumDay=startOfMonth.format("d");month.days=[];for(var i=startOfMonth.date();i<=startOfMonth.daysInMonth();i++){if(i===startOfMonth.date()){var iWeek=calendar.week.indexOf(iNumDay.toString());if(iWeek>0){for(var x=0;x<iWeek;x++){month.days.push(0)}}}month.days.push(moment(startOfMonth).locale(picker.params.lang).date(i))}var daysInAWeek=7,daysTmp=[],slices=Math.ceil(month.days.length/daysInAWeek);for(var j=0;j<slices;j++){daysTmp.push(month.days.slice(j*daysInAWeek,(j+1)*daysInAWeek))}month.days=daysTmp;return month}};calendar.toDay=function(i){return moment(parseInt(i),"d").locale(picker.params.lang).format("dd").substring(0,1)};calendar.isInRange=function(date){return picker.isAfterMinDate(moment(date),false,false)&&picker.isBeforeMaxDate(moment(date),false,false)};calendar.selectDate=function(date){if(date){if(calendar.isSelectedDay(date)){return picker.ok()}picker.selectDate(moment(date).hour(calendar.date.hour()).minute(calendar.date.minute()))}};calendar.isSelectedDay=function(m){return m&&calendar.date.date()===m.date()&&calendar.date.month()===m.month()&&calendar.date.year()===m.year()}}],template:'<md-virtual-repeat-container class="months"><div md-virtual-repeat="idx in cal.months" md-start-index="cal.topIndex" md-item-size="'+ITEM_HEIGHT+'"> <div mdc-datetime-picker-calendar-month idx="idx"></div></div></md-virtual-repeat-container>'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function($compile){var buildCalendarContent=function(element,scope){var tbody=angular.element(element[0].querySelector("tbody"));var calendar=scope.cal,month=scope.month;tbody.html("");month.days.forEach(function(weekDays,i){var tr=angular.element("<tr></tr>");weekDays.forEach(function(weekDay,j){var td=angular.element("<td> </td>");if(weekDay){var aOrSpan;if(calendar.isInRange(weekDay)){var scopeRef='month["days"]['+i+"]["+j+"]";aOrSpan=angular.element("<a href='#' mdc-dtp-noclick></a>").attr("ng-class","{selected: cal.isSelectedDay("+scopeRef+")}").attr("ng-click","cal.selectDate("+scopeRef+")")}else{aOrSpan=angular.element("<span></span>")}aOrSpan.addClass("dtp-select-day").html(weekDay.format("D"));td.append(aOrSpan)}tr.append(td)});tbody.append(tr)});$compile(tbody)(scope)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'<div class="dtp-picker-month">{{month.name}}</div><table class="table dtp-picker-days"> <thead> <tr> <th ng-repeat="day in cal.week">{{cal.toDay(day)}}</th> </tr> </thead> <tbody> </tbody></table>',link:function(scope,element,attrs,calendar){scope.cal=calendar;scope.month=calendar.getItemAtIndex(parseInt(scope.idx));buildCalendarContent(element,scope);scope.$watch(function(){return scope.idx},function(idx,oldIdx){if(idx!=oldIdx){scope.month=calendar.getItemAtIndex(parseInt(scope.idx));buildCalendarContent(element,scope)}})}}}]);angular.module(moduleName).directive("mdcDtpNoclick",function(){return{link:function(scope,el){el.on("click",function(e){e.preventDefault()})}}});angular.module(moduleName).directive("mdcDatetimePickerClock",[function(){var template='<div class="dtp-picker-clock"><span ng-if="!points || points.length < 1"> </span><div ng-repeat="point in points" class="dtp-picker-time" style="margin-left: {{point.left}}px; margin-top: {{point.top}}px;"> <a href="#" mdc-dtp-noclick ng-class="{selected: point.value===currentValue}" class="dtp-select-hour" ng-click="setTime(point.value)" ng-if="pointAvailable(point)">{{point.display}}</a> <a href="#" mdc-dtp-noclick class="disabled dtp-select-hour" ng-if="!pointAvailable(point)">{{point.display}}</a></div><div class="dtp-hand dtp-hour-hand"></div><div class="dtp-hand dtp-minute-hand"></div><div class="dtp-clock-center"></div></div>';return{restrict:"E",template:template,link:function(scope,element,attrs){var minuteMode=attrs.mode==="minutes";var picker=scope.picker;var componentRoot=document.querySelector("md-dialog.dtp");var exec=function(){var clock=angular.element(element[0].querySelector(".dtp-picker-clock")),pickerEl=angular.element(componentRoot.querySelector(".dtp-picker"));var w=componentRoot.querySelector(".dtp-content").offsetWidth;var pl=parseInt(css(pickerEl,"paddingLeft").replace("px",""))||0;var pr=parseInt(css(pickerEl,"paddingRight").replace("px",""))||0;var ml=parseInt(css(clock,"marginLeft").replace("px",""))||0;var mr=parseInt(css(clock,"marginRight").replace("px",""))||0;var clockWidth=(w-(ml+mr+pl+pr));clock.css("width",(clockWidth)+"px");var pL=parseInt(css(pickerEl,"paddingLeft").replace("px",""))||0;var pT=parseInt(css(pickerEl,"paddingTop").replace("px",""))||0;var mL=parseInt(css(clock,"marginLeft").replace("px",""))||0;var mT=parseInt(css(clock,"marginTop").replace("px",""))||0;var r=(clockWidth/2);var j=r/1.2;var points=[];for(var h=0;h<12;++h){var x=j*Math.sin(Math.PI*2*(h/12));var y=j*Math.cos(Math.PI*2*(h/12));var hour={left:(r+x+pL/2)-(pL+mL),top:(r-y-mT/2)-(pT+mT),value:(minuteMode?(h*5):h)};if(minuteMode){hour.display=hour.value<10?("0"+hour.value):hour.value}else{if(picker.params.shortTime){hour.display=(h===0)?12:h}else{hour.display=picker.isPM()?h+12:h}}points.push(hour)}scope.points=points;setCurrentValue();clock.css("height",clockWidth+"px");var clockCenter=element[0].querySelector(".dtp-clock-center");var centerWidth=(clockCenter.offsetWidth/2)||7.5,centerHeight=(clockCenter.offsetHeight/2)||7.5;var _hL=r/1.8;var _mL=r/1.5;angular.element(element[0].querySelector(".dtp-hour-hand")).css({left:r+(mL*1.5)+"px",height:_hL+"px",marginTop:(r-_hL-pL)+"px"}).addClass(!minuteMode?"on":"");angular.element(element[0].querySelector(".dtp-minute-hand")).css({left:r+(mL*1.5)+"px",height:_mL+"px",marginTop:(r-_mL-pL)+"px"}).addClass(minuteMode?"on":"");angular.element(clockCenter).css({left:(r+pL+mL-centerWidth)+"px",marginTop:(r-(mL/2))-centerHeight+"px"});animateHands()};var animateHands=function(){var _date=picker.currentNearest5Minute();var h=_date.hour();var m=_date.minute();rotateElement(angular.element(element[0].querySelector(".dtp-hour-hand")),(360/12)*h);var mdg=((360/60)*(5*Math.round(m/5)));rotateElement(angular.element(element[0].querySelector(".dtp-minute-hand")),mdg)};var rotateElement=function(el,deg){angular.element(el).css({WebkitTransform:"rotate("+deg+"deg)","-moz-transform":"rotate("+deg+"deg)"})};var setCurrentValue=function(){var date=picker.currentNearest5Minute();scope.currentValue=minuteMode?date.minute():(date.hour()%12)};scope.$watch(function(){var tmp=picker.currentNearest5Minute();return tmp?tmp.format("HH:mm"):""},function(newVal){setCurrentValue();animateHands()});var setDisplayPoints=function(isPM,points){for(var i=0;i<points.length;i++){points[i].display=i;if(isPM){points[i].display+=12}}return points};if(!picker.params.shortTime){scope.$watch("picker.meridien",function(){if(!minuteMode){if(scope.points){var points=setDisplayPoints(picker.isPM(),angular.copy(scope.points));scope.points=points}}})}scope.setTime=function(val){if(val===scope.currentValue){picker.ok()}if(!minuteMode){picker.currentDate.hour(picker.isPM()?(val+12):val)}else{picker.currentDate.minute(val)}picker.currentDate.second(0)};scope.pointAvailable=function(point){return minuteMode?picker.isMinuteAvailable(point.value):picker.isHourAvailable(point.value)};var unwatcher=scope.$watch(function(){return element[0].querySelectorAll("div").length},function(){exec();unwatcher()})}}}])})(moment); \ No newline at end of file diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/js/angular-material-datetimepicker.min.js b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/js/angular-material-datetimepicker.min.js new file mode 100644 index 0000000000000000000000000000000000000000..d2c97436711085b690ba07c93147b790825e5df4 --- /dev/null +++ b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/js/angular-material-datetimepicker.min.js @@ -0,0 +1,2 @@ +(function(t){"use strict";var e="ngMaterialDatePicker";var a={DATE:0,HOUR:1,MINUTE:2};var i=function(t,e){if("jQuery"in window){return jQuery(t).css(e)}else{t=angular.element(t);return"getComputedStyle"in window?window.getComputedStyle(t[0])[e]:t.css(e)}};var r='<md-dialog class="dtp" layout="column" style="width: 300px;">'+' <md-dialog-content class="dtp-content">'+' <div class="dtp-date-view">'+' <header class="dtp-header">'+' <div class="dtp-actual-day" ng-show="picker.dateMode">{{picker.currentDate.format("dddd")}}</div>'+' <div class="dtp-actual-day" ng-show="picker.timeMode">{{picker.params.shortTime ? picker.currentDate.format("A") : " "}}</div>'+' <div class="dtp-close text-right">'+' <a href="#" mdc-dtp-noclick ng-click="picker.hide()">×</a>'+" </div>"+" </header>"+' <div class="dtp-date" ng-show="picker.params.date">'+' <div layout="column">'+' <div class="dtp-actual-month">{{picker.currentDate.format("MMM") | uppercase}}</div>'+" </div>"+' <div class="dtp-actual-num">{{picker.currentDate.format("DD")}}</div>'+' <div layout="column">'+' <div class="dtp-actual-year">{{picker.currentDate.format("YYYY")}}</div>'+" </div>"+" </div>"+' <div class="dtp-time" ng-show="picker.params.time && !picker.params.date">'+' <div class="dtp-actual-maxtime">{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}</div>'+" </div>"+' <div class="dtp-picker">'+' <mdc-datetime-picker-calendar date="picker.currentDate" picker="picker" class="dtp-picker-calendar" ng-show="picker.currentView === picker.VIEWS.DATE"></mdc-datetime-picker-calendar>'+' <div class="dtp-picker-datetime" ng-show="picker.currentView !== picker.VIEWS.DATE">'+' <div class="dtp-actual-meridien">'+' <div class="left p20">'+' <a href="#" mdc-dtp-noclick class="dtp-meridien-am" ng-class="{selected: picker.meridien == \'AM\'}" ng-click="picker.selectAM()">{{picker.params.amText}}</a>'+" </div>"+' <div ng-show="!picker.timeMode" class="dtp-actual-time p60">{{picker.currentNearest5Minute().format(picker.params.shortTime ? "hh:mm" : "HH:mm")}}</div>'+' <div class="right p20">'+' <a href="#" mdc-dtp-noclick class="dtp-meridien-pm" ng-class="{selected: picker.meridien == \'PM\'}" ng-click="picker.selectPM()">{{picker.params.pmText}}</a>'+" </div>"+' <div class="clearfix"></div>'+" </div>"+' <mdc-datetime-picker-clock mode="hours" ng-if="picker.currentView === picker.VIEWS.HOUR"></mdc-datetime-picker-clock>'+' <mdc-datetime-picker-clock mode="minutes" ng-if="picker.currentView === picker.VIEWS.MINUTE"></mdc-datetime-picker-clock>'+" </div>"+" </div>"+" </div>"+" </md-dialog-content>"+' <md-dialog-actions class="dtp-buttons">'+' <md-button class="dtp-btn-cancel md-button" ng-click="picker.cancel()"> {{picker.params.cancelText}}</md-button>'+' <md-button class="dtp-btn-ok md-button" ng-click="picker.ok()"> {{picker.params.okText}}</md-button>'+" </md-dialog-actions>"+"</md-dialog>";angular.module(e,["ngMaterial"]).provider("mdcDatetimePickerDefaultLocale",function(){this.locale="en";this.$get=function(){return this.locale};this.setDefaultLocale=function(t){this.locale=t}}).directive("mdcDatetimePicker",["$mdDialog",function(e){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",time:"=",date:"=",minDate:"=",maxDate:"=",shortTime:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@"},link:function(a,i,s,c){var l=false;if(!a.format){if(a.date&&a.time){a.format="YYYY-MM-DD HH:mm:ss"}else if(a.date){a.format="YYYY-MM-DD"}else{a.format="HH:mm"}}if(angular.isString(a.currentDate)&&a.currentDate!==""){a.currentDate=t(a.currentDate,a.format)}if(c){c.$formatters.push(function(e){var i=t(e);return i.isValid()?i.format(a.format):""})}i.attr("readonly","");i.on("focus",function(t){t.preventDefault();i.blur();if(l){return}l=true;var c={};for(var o in s){if(a.hasOwnProperty(o)&&!angular.isUndefined(a[o])){c[o]=a[o]}}c.currentDate=a.currentDate;var u={options:c};e.show({template:r,controller:n,controllerAs:"picker",locals:u,openFrom:i,parent:angular.element(document.body),bindToController:true,disableParentScroll:false}).then(function(t){a.currentDate=t?t._d:t;l=false},function(){l=false})})}}}]);var n=function(t,e,i){this.currentView=a.DATE;this._dialog=e;this.minDate;this.maxDate;this._attachedEvents=[];this.VIEWS=a;this.params={date:true,time:true,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:i,weekStart:0,shortTime:false,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM"};this.meridien="AM";this.params=angular.extend(this.params,this.options);this.init()};n.$inject=["$scope","$mdDialog","mdcDatetimePickerDefaultLocale"];n.prototype={init:function(){this.timeMode=this.params.time&&!this.params.date;this.dateMode=this.params.date;this.initDates();this.start()},currentNearest5Minute:function(){var e=this.currentDate||t();var a=5*Math.round(e.minute()/5);if(a>=60){a=55}return t(e).minutes(a)},initDates:function(){var e=this;var a=function(a,i){var r=null;if(angular.isDefined(a)&&a!==null&&a!==""){if(angular.isString(a)){if(typeof e.params.format!=="undefined"&&e.params.format!==null){r=t(a,e.params.format).locale(e.params.lang)}else{r=t(a).locale(e.params.lang)}}else{if(angular.isDate(a)){var n=a.getTime();r=t(n,"x").locale(e.params.lang)}else if(a._isAMomentObject){r=a}}}else{r=i}return r};this.currentDate=a(this.params.currentDate,t());this.minDate=a(this.params.minDate);this.maxDate=a(this.params.maxDate);this.selectDate(this.currentDate)},initDate:function(t){this.currentView=a.DATE},initHours:function(){this.currentView=a.HOUR},initMinutes:function(){this.currentView=a.MINUTE},isAfterMinDate:function(e,a,i){var r=true;if(typeof this.minDate!=="undefined"&&this.minDate!==null){var n=t(this.minDate);var s=t(e);if(!a&&!i){n.hour(0);n.minute(0);s.hour(0);s.minute(0)}n.second(0);s.second(0);n.millisecond(0);s.millisecond(0);if(!i){s.minute(0);n.minute(0);r=parseInt(s.format("X"))>=parseInt(n.format("X"))}else{r=parseInt(s.format("X"))>=parseInt(n.format("X"))}}return r},isBeforeMaxDate:function(e,a,i){var r=true;if(typeof this.maxDate!=="undefined"&&this.maxDate!==null){var n=t(this.maxDate);var s=t(e);if(!a&&!i){n.hour(0);n.minute(0);s.hour(0);s.minute(0)}n.second(0);s.second(0);n.millisecond(0);s.millisecond(0);if(!i){s.minute(0);n.minute(0);r=parseInt(s.format("X"))<=parseInt(n.format("X"))}else{r=parseInt(s.format("X"))<=parseInt(n.format("X"))}}return r},selectDate:function(e){if(e){this.currentDate=t(e);if(!this.isAfterMinDate(this.currentDate)){this.currentDate=t(this.minDate)}if(!this.isBeforeMaxDate(this.currentDate)){this.currentDate=t(this.maxDate)}this.currentDate.locale(this.params.lang);this.calendarStart=t(this.currentDate);this.meridien=this.currentDate.hour()>=12?"PM":"AM"}},setName:function(){var t="";var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";for(var a=0;a<5;a++){t+=e.charAt(Math.floor(Math.random()*e.length))}return t},isPM:function(){return this.meridien==="PM"},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("month"),false,false)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("month"),false,false)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(t(this.calendarStart).startOf("year"),false,false)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(t(this.calendarStart).endOf("year"),false,false)},isHourAvailable:function(e){var a=t(this.currentDate);a.hour(this.convertHours(e)).minute(0).second(0);return this.isAfterMinDate(a,true,false)&&this.isBeforeMaxDate(a,true,false)},isMinuteAvailable:function(e){var a=t(this.currentDate);a.minute(e).second(0);return this.isAfterMinDate(a,true,true)&&this.isBeforeMaxDate(a,true,true)},start:function(){this.currentView=a.DATE;if(this.params.date){this.initDate()}else{if(this.params.time){this.initHours()}}},ok:function(){switch(this.currentView){case a.DATE:if(this.params.time===true){this.initHours()}else{this.hide(true)}break;case a.HOUR:this.initMinutes();break;case a.MINUTE:this.hide(true);break}},cancel:function(){if(this.params.time){switch(this.currentView){case a.DATE:this.hide();break;case a.HOUR:if(this.params.date){this.initDate()}else{this.hide()}break;case a.MINUTE:this.initHours();break}}else{this.hide()}},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){if(this.isHourAvailable(0)||this.isHourAvailable(12)){if(this.currentDate.hour()>=12){this.selectDate(this.currentDate.subtract(12,"hours"))}if(!this.isHourAvailable(this.currentDate.hour())){this.selectDate(this.currentDate.hour(this.minDate.hour()))}if(!this.isMinuteAvailable(this.currentDate.minute())){this.selectDate(this.currentDate.minute(this.minDate.minute()))}}},selectPM:function(){if(this.isHourAvailable(13)||this.isHourAvailable(24)){if(this.currentDate.hour()<12){this.selectDate(this.currentDate.add(12,"hours"))}if(!this.isHourAvailable(this.currentDate.hour())){this.selectDate(this.currentDate.hour(this.maxDate.hour()))}if(!this.isMinuteAvailable(this.currentDate.minute())){this.selectDate(this.currentDate.minute(this.maxDate.minute()))}}},convertHours:function(t){var e=t;if(t<12&&this.isPM())e+=12;return e},hide:function(t){if(t){this._dialog.hide(this.currentDate)}else{this._dialog.cancel()}}};angular.module(e).directive("mdcDatetimePickerCalendar",[function(){var e=t(),a=1900,i=2100,r=(i-a+1)*12,n=240,s=[];for(var c=0;c<r;c++){s.push(c)}var l=function(t){var e=t.year();var i=t.month();return(e-a)*12+i-1};return{restrict:"E",scope:{picker:"=",date:"="},bindToController:true,controllerAs:"cal",controller:["$scope",function(e){var i=this,n=this.picker,c=[];for(var o=n.params.weekStart;c.length<7;o++){if(o>6){o=0}c.push(o.toString())}i.week=c;if(!n.maxDate&&!n.minDate){i.months=s}else{var u=n.minDate?l(n.minDate):0;var d=n.maxDate?l(n.maxDate)+1:r;i.months=s.slice(u,d)}i.getItemAtIndex=function(e){var i=(e+1)%12||12;var r=a+Math.floor(e/12);var s=t(n.currentDate).year(r).month(i);return m(s)};i.topIndex=l(n.currentDate)-i.months[0];var m=function(e){var a={};if(e!==null){a.name=e.format("MMMM YYYY");var r=t(e).locale(n.params.lang).startOf("month").hour(e.hour()).minute(e.minute());var s=r.format("d");a.days=[];for(var c=r.date();c<=r.daysInMonth();c++){if(c===r.date()){var l=i.week.indexOf(s.toString());if(l>0){for(var o=0;o<l;o++){a.days.push(0)}}}a.days.push(t(r).locale(n.params.lang).date(c))}var u=7,d=[],m=Math.ceil(a.days.length/u);for(var h=0;h<m;h++){d.push(a.days.slice(h*u,(h+1)*u))}a.days=d;return a}};i.toDay=function(e){return t(parseInt(e),"d").locale(n.params.lang).format("dd").substring(0,1)};i.isInRange=function(e){return n.isAfterMinDate(t(e),false,false)&&n.isBeforeMaxDate(t(e),false,false)};i.selectDate=function(e){if(e){if(i.isSelectedDay(e)){return n.ok()}n.selectDate(t(e).hour(i.date.hour()).minute(i.date.minute()))}};i.isSelectedDay=function(t){return t&&i.date.date()===t.date()&&i.date.month()===t.month()&&i.date.year()===t.year()}}],template:'<md-virtual-repeat-container class="months">'+'<div md-virtual-repeat="idx in cal.months" md-start-index="cal.topIndex" md-item-size="'+n+'">'+' <div mdc-datetime-picker-calendar-month idx="idx"></div>'+"</div>"+"</md-virtual-repeat-container>"}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(t){var e=function(e,a){var i=angular.element(e[0].querySelector("tbody"));var r=a.cal,n=a.month;i.html("");n.days.forEach(function(t,e){var a=angular.element("<tr></tr>");t.forEach(function(t,i){var n=angular.element("<td> </td>");if(t){var s;if(r.isInRange(t)){var c='month["days"]['+e+"]["+i+"]";s=angular.element("<a href='#' mdc-dtp-noclick></a>").attr("ng-class","{selected: cal.isSelectedDay("+c+")}").attr("ng-click","cal.selectDate("+c+")")}else{s=angular.element("<span></span>")}s.addClass("dtp-select-day").html(t.format("D"));n.append(s)}a.append(n)});i.append(a)});t(i)(a)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'<div class="dtp-picker-month">{{month.name}}</div>'+'<table class="table dtp-picker-days">'+" <thead>"+" <tr>"+' <th ng-repeat="day in cal.week">{{cal.toDay(day)}}</th>'+" </tr>"+" </thead>"+" <tbody>"+" </tbody>"+"</table>",link:function(t,a,i,r){t.cal=r;t.month=r.getItemAtIndex(parseInt(t.idx));e(a,t);t.$watch(function(){return t.idx},function(i,n){if(i!=n){t.month=r.getItemAtIndex(parseInt(t.idx));e(a,t)}})}}}]);angular.module(e).directive("mdcDtpNoclick",function(){return{link:function(t,e){e.on("click",function(t){t.preventDefault()})}}});angular.module(e).directive("mdcDatetimePickerClock",[function(){var t='<div class="dtp-picker-clock"><span ng-if="!points || points.length < 1"> </span>'+'<div ng-repeat="point in points" class="dtp-picker-time" style="margin-left: {{point.left}}px; margin-top: {{point.top}}px;">'+' <a href="#" mdc-dtp-noclick ng-class="{selected: point.value===currentValue}" class="dtp-select-hour" ng-click="setTime(point.value)" ng-if="pointAvailable(point)">{{point.display}}</a>'+' <a href="#" mdc-dtp-noclick class="disabled dtp-select-hour" ng-if="!pointAvailable(point)">{{point.display}}</a>'+"</div>"+'<div class="dtp-hand dtp-hour-hand"></div>'+'<div class="dtp-hand dtp-minute-hand"></div>'+'<div class="dtp-clock-center"></div>'+"</div>";return{restrict:"E",template:t,link:function(t,e,a){var r=a.mode==="minutes";var n=t.picker;var s=document.querySelector("md-dialog.dtp");var c=function(){var a=angular.element(e[0].querySelector(".dtp-picker-clock")),c=angular.element(s.querySelector(".dtp-picker"));var o=s.querySelector(".dtp-content").offsetWidth;var d=parseInt(i(c,"paddingLeft").replace("px",""))||0;var m=parseInt(i(c,"paddingRight").replace("px",""))||0;var h=parseInt(i(a,"marginLeft").replace("px",""))||0;var p=parseInt(i(a,"marginRight").replace("px",""))||0;var f=o-(h+p+d+m);a.css("width",f+"px");var v=parseInt(i(c,"paddingLeft").replace("px",""))||0;var D=parseInt(i(c,"paddingTop").replace("px",""))||0;var g=parseInt(i(a,"marginLeft").replace("px",""))||0;var k=parseInt(i(a,"marginTop").replace("px",""))||0;var M=f/2;var x=M/1.2;var y=[];for(var b=0;b<12;++b){var A=x*Math.sin(Math.PI*2*(b/12));var T=x*Math.cos(Math.PI*2*(b/12));var I={left:M+A+v/2-(v+g),top:M-T-k/2-(D+k),value:r?b*5:b};if(r){I.display=I.value<10?"0"+I.value:I.value}else{if(n.params.shortTime){I.display=b===0?12:b}else{I.display=n.isPM()?b+12:b}}y.push(I)}t.points=y;u();a.css("height",f+"px");var S=e[0].querySelector(".dtp-clock-center");var w=S.offsetWidth/2||7.5,H=S.offsetHeight/2||7.5;var P=M/1.8;var E=M/1.5;angular.element(e[0].querySelector(".dtp-hour-hand")).css({left:M+g*1.5+"px",height:P+"px",marginTop:M-P-v+"px"}).addClass(!r?"on":"");angular.element(e[0].querySelector(".dtp-minute-hand")).css({left:M+g*1.5+"px",height:E+"px",marginTop:M-E-v+"px"}).addClass(r?"on":"");angular.element(S).css({left:M+v+g-w+"px",marginTop:M-g/2-H+"px"});l()};var l=function(){var t=n.currentNearest5Minute();var a=t.hour();var i=t.minute();o(angular.element(e[0].querySelector(".dtp-hour-hand")),360/12*a);var r=360/60*(5*Math.round(i/5));o(angular.element(e[0].querySelector(".dtp-minute-hand")),r)};var o=function(t,e){angular.element(t).css({WebkitTransform:"rotate("+e+"deg)","-moz-transform":"rotate("+e+"deg)"})};var u=function(){var e=n.currentNearest5Minute();t.currentValue=r?e.minute():e.hour()%12};t.$watch(function(){var t=n.currentNearest5Minute();return t?t.format("HH:mm"):""},function(t){u();l()});var d=function(t,e){for(var a=0;a<e.length;a++){e[a].display=a;if(t){e[a].display+=12}}return e};if(!n.params.shortTime){t.$watch("picker.meridien",function(){if(!r){if(t.points){var e=d(n.isPM(),angular.copy(t.points));t.points=e}}})}t.setTime=function(e){if(e===t.currentValue){n.ok()}if(!r){n.currentDate.hour(n.isPM()?e+12:e)}else{n.currentDate.minute(e)}n.currentDate.second(0)};t.pointAvailable=function(t){return r?n.isMinuteAvailable(t.value):n.isHourAvailable(t.value)};var m=t.$watch(function(){return e[0].querySelectorAll("div").length},function(){c();m()})}}}])})(moment); +//# sourceMappingURL=angular-material-datetimepicker.min.map \ No newline at end of file diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/js/angular-material-datetimepicker.min.map b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/js/angular-material-datetimepicker.min.map new file mode 100644 index 0000000000000000000000000000000000000000..104c95111fe25eaec121a27b42d9bbeae75ee559 --- /dev/null +++ b/layouts/v7/modules/Mobile/simple/resources/libs/angularjs/angular-material-datetimepicker/js/angular-material-datetimepicker.min.map @@ -0,0 +1 @@ +{"version":3,"file":"angular-material-datetimepicker.min.js","sources":["angular-material-datetimepicker.js"],"names":["moment","moduleName","VIEW_STATES","DATE","HOUR","MINUTE","css","el","name","window","jQuery","angular","element","getComputedStyle","template","module","provider","this","locale","$get","setDefaultLocale","localeString","directive","$mdDialog","restrict","require","scope","currentDate","time","date","minDate","maxDate","shortTime","format","cancelText","okText","lang","amText","pmText","link","attrs","ngModel","isOn","isString","$formatters","push","value","m","isValid","attr","on","e","preventDefault","blur","options","i","hasOwnProperty","isUndefined","locals","show","controller","PluginController","controllerAs","openFrom","parent","document","body","bindToController","disableParentScroll","then","v","_d","$scope","mdcDatetimePickerDefaultLocale","currentView","_dialog","_attachedEvents","VIEWS","params","weekStart","meridien","extend","init","$inject","prototype","timeMode","dateMode","initDates","start","currentNearest5Minute","minutes","Math","round","minute","that","_dateParam","input","fallback","ret","isDefined","isDate","x","getTime","_isAMomentObject","selectDate","initDate","d","initHours","initMinutes","isAfterMinDate","checkHour","checkMinute","_return","_minDate","_date","hour","second","millisecond","parseInt","isBeforeMaxDate","checkTime","_maxDate","calendarStart","setName","text","possible","charAt","floor","random","length","isPM","isPreviousMonthVisible","startOf","isNextMonthVisible","endOf","isPreviousYearVisible","isNextYearVisible","isHourAvailable","convertHours","isMinuteAvailable","ok","hide","cancel","selectMonthBefore","subtract","selectMonthAfter","add","selectYearBefore","selectYearAfter","selectAM","selectPM","h","okBtn","startDate","YEAR_MIN","YEAR_MAX","MONTHS_IN_ALL","ITEM_HEIGHT","MONTHS","currentMonthIndex","year","month","picker","calendar","days","toString","week","months","low","high","slice","getItemAtIndex","index","monthObj","generateMonthCalendar","topIndex","startOfMonth","iNumDay","daysInMonth","iWeek","indexOf","daysInAWeek","daysTmp","slices","ceil","j","toDay","substring","isInRange","isSelectedDay","$compile","buildCalendarContent","tbody","querySelector","cal","html","forEach","weekDays","tr","weekDay","td","aOrSpan","scopeRef","addClass","append","idx","$watch","oldIdx","minuteMode","mode","componentRoot","exec","clock","pickerEl","w","offsetWidth","pl","replace","pr","ml","mr","clockWidth","pL","pT","mL","mT","r","points","sin","PI","y","cos","left","top","display","setCurrentValue","clockCenter","centerWidth","centerHeight","offsetHeight","_hL","_mL","height","marginTop","animateHands","rotateElement","mdg","deg","WebkitTransform","-moz-transform","currentValue","tmp","newVal","setDisplayPoints","copy","setTime","val","pointAvailable","point","unwatcher","querySelectorAll"],"mappings":"CAAA,SAAWA,GACT,YACA,IAAIC,GAAa,sBAEjB,IAAIC,IACFC,KAAM,EACNC,KAAM,EACNC,OAAQ,EAGV,IAAIC,GAAM,SAAUC,EAAIC,GACtB,GAAI,UAAYC,QAAQ,CACtB,MAAOC,QAAOH,GAAID,IAAIE,OACjB,CACLD,EAAKI,QAAQC,QAAQL,EACrB,OAAQ,oBAAsBE,QAAUA,OAAOI,iBAAiBN,EAAG,IAAIC,GAAQD,EAAGD,IAAIE,IAI1F,IAAIM,GAAW,gEACX,8CACA,sCACA,0CACA,oHACA,iJACA,qDACA,uFACA,yBACA,wBACA,kEACA,wCACA,2GACA,yBACA,wFACA,wCACA,+FACA,yBACA,qBACA,yFACA,+IACA,qBACA,uCACA,yMACA,uGACA,wDACA,iDACA,6LACA,iCACA,mLACA,kDACA,6LACA,iCACA,uDACA,6BACA,4IACA,gJACA,yBACA,qBACA,iBACA,2BACA,8CACA,+HACA,mHACA,6BACA,cAEJH,SAAQI,OAAOd,GAAa,eACvBe,SAAS,iCAAkC,WAC1CC,KAAKC,OAAS,IAEdD,MAAKE,KAAO,WACV,MAAOF,MAAKC,OAGdD,MAAKG,iBAAmB,SAASC,GAC/BJ,KAAKC,OAASG,KAGnBC,UAAU,qBAAsB,YAC/B,SAAUC,GAER,OACEC,SAAU,IACVC,QAAS,UACTC,OACEC,YAAa,WACbC,KAAM,IACNC,KAAM,IACNC,QAAS,IACTC,QAAS,IACTC,UAAW,IACXC,OAAQ,IACRC,WAAY,IACZC,OAAQ,IACRC,KAAM,IACNC,OAAQ,IACRC,OAAQ,KAEVC,KAAM,SAAUb,EAAOd,EAAS4B,EAAOC,GACrC,GAAIC,GAAO,KACX,KAAKhB,EAAMO,OAAQ,CACjB,GAAIP,EAAMG,MAAQH,EAAME,KAAM,CAC5BF,EAAMO,OAAS,0BACV,IAAIP,EAAMG,KAAM,CACrBH,EAAMO,OAAS,iBACV,CACLP,EAAMO,OAAS,SAInB,GAAItB,QAAQgC,SAASjB,EAAMC,cAAgBD,EAAMC,cAAgB,GAAI,CACnED,EAAMC,YAAc3B,EAAO0B,EAAMC,YAAaD,EAAMO,QAGtD,GAAIQ,EAAS,CACXA,EAAQG,YAAYC,KAAK,SAAUC,GACjC,GAAIC,GAAI/C,EAAO8C,EACf,OAAOC,GAAEC,UAAYD,EAAEd,OAAOP,EAAMO,QAAU,KAIlDrB,EAAQqC,KAAK,WAAY,GAEzBrC,GAAQsC,GAAG,QAAS,SAAUC,GAC5BA,EAAEC,gBACFxC,GAAQyC,MACR,IAAIX,EAAM,CACR,OAEFA,EAAO,IACP,IAAIY,KACJ,KAAK,GAAIC,KAAKf,GAAO,CACnB,GAAId,EAAM8B,eAAeD,KAAO5C,QAAQ8C,YAAY/B,EAAM6B,IAAK,CAC7DD,EAAQC,GAAK7B,EAAM6B,IAGvBD,EAAQ3B,YAAcD,EAAMC,WAC5B,IAAI+B,IAAUJ,QAASA,EACvB/B,GAAUoC,MACN7C,SAAUA,EACV8C,WAAYC,EACZC,aAAc,SACdJ,OAAQA,EACRK,SAAUnD,EACVoD,OAAQrD,QAAQC,QAAQqD,SAASC,MACjCC,iBAAkB,KAClBC,oBAAqB,QAEtBC,KAAK,SAAUC,GACd5C,EAAMC,YAAc2C,EAAIA,EAAEC,GAAKD,CAC/B5B,GAAO,OACN,WACDA,EAAO,cASvB,IAAImB,GAAmB,SAAUW,EAAQjD,EAAWkD,GAClDxD,KAAKyD,YAAcxE,EAAYC,IAC/Bc,MAAK0D,QAAUpD,CAEfN,MAAKa,OACLb,MAAKc,OAELd,MAAK2D,kBACL3D,MAAK4D,MAAQ3E,CAEbe,MAAK6D,QACHjD,KAAM,KACND,KAAM,KACNK,OAAQ,aACRH,QAAS,KACTC,QAAS,KACTJ,YAAa,KACbS,KAAMqC,EACNM,UAAW,EACX/C,UAAW,MACXE,WAAY,SACZC,OAAQ,KACRE,OAAQ,KACRC,OAAQ,KAGVrB,MAAK+D,SAAW,IAChB/D,MAAK6D,OAASnE,QAAQsE,OAAOhE,KAAK6D,OAAQ7D,KAAKqC,QAC/CrC,MAAKiE,OAEPrB,GAAiBsB,SAAW,SAAU,YAAa,iCACnDtB,GAAiBuB,WACfF,KAAM,WACJjE,KAAKoE,SAAWpE,KAAK6D,OAAOlD,OAASX,KAAK6D,OAAOjD,IACjDZ,MAAKqE,SAAWrE,KAAK6D,OAAOjD,IAC5BZ,MAAKsE,WACLtE,MAAKuE,SAEPC,sBAAuB,WACrB,GAAI5D,GAAOZ,KAAKU,aAAe3B,GAC/B,IAAI0F,GAAW,EAAIC,KAAKC,MAAM/D,EAAKgE,SAAW,EAC9C,IAAIH,GAAW,GAAI,CACjBA,EAAU,GAEZ,MAAO1F,GAAO6B,GAAM6D,QAAQA,IAE9BH,UAAW,WACT,GAAIO,GAAO7E,IACX,IAAI8E,GAAa,SAAUC,EAAOC,GAChC,GAAIC,GAAM,IACV,IAAIvF,QAAQwF,UAAUH,IAAUA,IAAU,MAAQA,IAAU,GAAI,CAC9D,GAAIrF,QAAQgC,SAASqD,GAAQ,CAC3B,SAAWF,GAAKhB,OAAa,SAAM,aAAegB,EAAKhB,OAAO7C,SAAW,KAAM,CAC7EiE,EAAMlG,EAAOgG,EAAOF,EAAKhB,OAAO7C,QAAQf,OAAO4E,EAAKhB,OAAO1C,UAExD,CACH8D,EAAMlG,EAAOgG,GAAO9E,OAAO4E,EAAKhB,OAAO1C,WAGtC,CACH,GAAIzB,QAAQyF,OAAOJ,GAAQ,CACzB,GAAIK,GAAIL,EAAMM,SACdJ,GAAMlG,EAAOqG,EAAG,KAAKnF,OAAO4E,EAAKhB,OAAO1C,UACnC,IAAI4D,EAAMO,iBAAkB,CACjCL,EAAMF,QAIP,CACHE,EAAMD,EAER,MAAOC,GAGTjF,MAAKU,YAAcoE,EAAW9E,KAAK6D,OAAOnD,YAAa3B,IACvDiB,MAAKa,QAAUiE,EAAW9E,KAAK6D,OAAOhD,QACtCb,MAAKc,QAAUgE,EAAW9E,KAAK6D,OAAO/C,QACtCd,MAAKuF,WAAWvF,KAAKU,cAEvB8E,SAAU,SAAUC,GAClBzF,KAAKyD,YAAcxE,EAAYC,MAEjCwG,UAAW,WACT1F,KAAKyD,YAAcxE,EAAYE,MAEjCwG,YAAa,WACX3F,KAAKyD,YAAcxE,EAAYG,QAEjCwG,eAAgB,SAAUhF,EAAMiF,EAAWC,GACzC,GAAIC,GAAU,IAEd,UAAW/F,MAAY,UAAM,aAAeA,KAAKa,UAAY,KAAM,CACjE,GAAImF,GAAWjH,EAAOiB,KAAKa,QAC3B,IAAIoF,GAAQlH,EAAO6B,EAEnB,KAAKiF,IAAcC,EAAa,CAC9BE,EAASE,KAAK,EACdF,GAASpB,OAAO,EAEhBqB,GAAMC,KAAK,EACXD,GAAMrB,OAAO,GAGfoB,EAASG,OAAO,EAChBF,GAAME,OAAO,EACbH,GAASI,YAAY,EACrBH,GAAMG,YAAY,EAElB,KAAKN,EAAa,CAChBG,EAAMrB,OAAO,EACboB,GAASpB,OAAO,EAEhBmB,GAAWM,SAASJ,EAAMjF,OAAO,OAASqF,SAASL,EAAShF,OAAO,UAEhE,CACH+E,EAAWM,SAASJ,EAAMjF,OAAO,OAASqF,SAASL,EAAShF,OAAO,OAIvE,MAAO+E,IAETO,gBAAiB,SAAU1F,EAAM2F,EAAWT,GAC1C,GAAIC,GAAU,IAEd,UAAW/F,MAAY,UAAM,aAAeA,KAAKc,UAAY,KAAM,CACjE,GAAI0F,GAAWzH,EAAOiB,KAAKc,QAC3B,IAAImF,GAAQlH,EAAO6B,EAEnB,KAAK2F,IAAcT,EAAa,CAC9BU,EAASN,KAAK,EACdM,GAAS5B,OAAO,EAEhBqB,GAAMC,KAAK,EACXD,GAAMrB,OAAO,GAGf4B,EAASL,OAAO,EAChBF,GAAME,OAAO,EACbK,GAASJ,YAAY,EACrBH,GAAMG,YAAY,EAElB,KAAKN,EAAa,CAChBG,EAAMrB,OAAO,EACb4B,GAAS5B,OAAO,EAEhBmB,GAAWM,SAASJ,EAAMjF,OAAO,OAASqF,SAASG,EAASxF,OAAO,UAEhE,CACH+E,EAAWM,SAASJ,EAAMjF,OAAO,OAASqF,SAASG,EAASxF,OAAO,OAIvE,MAAO+E,IAETR,WAAY,SAAU3E,GACpB,GAAIA,EAAM,CACRZ,KAAKU,YAAc3B,EAAO6B,EAC1B,KAAKZ,KAAK4F,eAAe5F,KAAKU,aAAc,CAC1CV,KAAKU,YAAc3B,EAAOiB,KAAKa,SAGjC,IAAKb,KAAKsG,gBAAgBtG,KAAKU,aAAc,CAC3CV,KAAKU,YAAc3B,EAAOiB,KAAKc,SAEjCd,KAAKU,YAAYT,OAAOD,KAAK6D,OAAO1C,KACpCnB,MAAKyG,cAAgB1H,EAAOiB,KAAKU,YACjCV,MAAK+D,SAAW/D,KAAKU,YAAYwF,QAAU,GAAK,KAAO,OAG3DQ,QAAS,WACP,GAAIC,GAAO,EACX,IAAIC,GAAW,gEAEf,KAAK,GAAItE,GAAI,EAAGA,EAAI,EAAGA,IAAK,CAC1BqE,GAAQC,EAASC,OAAOnC,KAAKoC,MAAMpC,KAAKqC,SAAWH,EAASI,SAG9D,MAAOL,IAETM,KAAM,WACJ,MAAOjH,MAAK+D,WAAa,MAE3BmD,uBAAwB,WACtB,MAAOlH,MAAKyG,eAAiBzG,KAAK4F,eAAe7G,EAAOiB,KAAKyG,eAAeU,QAAQ,SAAU,MAAO,QAEvGC,mBAAoB,WAClB,MAAOpH,MAAKyG,eAAiBzG,KAAKsG,gBAAgBvH,EAAOiB,KAAKyG,eAAeY,MAAM,SAAU,MAAO,QAEtGC,sBAAuB,WACrB,MAAOtH,MAAKyG,eAAiBzG,KAAK4F,eAAe7G,EAAOiB,KAAKyG,eAAeU,QAAQ,QAAS,MAAO,QAEtGI,kBAAmB,WACjB,MAAOvH,MAAKyG,eAAiBzG,KAAKsG,gBAAgBvH,EAAOiB,KAAKyG,eAAeY,MAAM,QAAS,MAAO,QAErGG,gBAAiB,SAAUtB,GACzB,GAAID,GAAQlH,EAAOiB,KAAKU,YACxBuF,GAAMC,KAAKlG,KAAKyH,aAAavB,IAAOtB,OAAO,GAAGuB,OAAO,EACrD,OAAOnG,MAAK4F,eAAeK,EAAO,KAAM,QAAUjG,KAAKsG,gBAAgBL,EAAO,KAAM,QAEtFyB,kBAAmB,SAAU9C,GAC3B,GAAIqB,GAAQlH,EAAOiB,KAAKU,YACxBuF,GAAMrB,OAAOA,GAAQuB,OAAO,EAC5B,OAAOnG,MAAK4F,eAAeK,EAAO,KAAM,OAASjG,KAAKsG,gBAAgBL,EAAO,KAAM,OAErF1B,MAAO,WACLvE,KAAKyD,YAAcxE,EAAYC,IAE/B,IAAIc,KAAK6D,OAAOjD,KAAM,CACpBZ,KAAKwF,eACA,CACL,GAAIxF,KAAK6D,OAAOlD,KAAM,CACpBX,KAAK0F,eAIXiC,GAAI,WACF,OAAQ3H,KAAKyD,aACX,IAAKxE,GAAYC,KACf,GAAIc,KAAK6D,OAAOlD,OAAS,KAAM,CAC7BX,KAAK0F,gBAEF,CACH1F,KAAK4H,KAAK,MAEZ,KACF,KAAK3I,GAAYE,KACfa,KAAK2F,aACL,MACF,KAAK1G,GAAYG,OACfY,KAAK4H,KAAK,KACV,SAGNC,OAAQ,WACN,GAAI7H,KAAK6D,OAAOlD,KAAM,CACpB,OAAQX,KAAKyD,aACX,IAAKxE,GAAYC,KACfc,KAAK4H,MACL,MACF,KAAK3I,GAAYE,KACf,GAAIa,KAAK6D,OAAOjD,KAAM,CACpBZ,KAAKwF,eAEF,CACHxF,KAAK4H,OAEP,KACF,KAAK3I,GAAYG,OACfY,KAAK0F,WACL,YAGD,CACH1F,KAAK4H,SAGTE,kBAAmB,WACjB9H,KAAKyG,cAAcsB,SAAS,EAAG,WAEjCC,iBAAkB,WAChBhI,KAAKyG,cAAcwB,IAAI,EAAG,WAE5BC,iBAAkB,WAChBlI,KAAKyG,cAAcsB,SAAS,EAAG,UAEjCI,gBAAiB,WACfnI,KAAKyG,cAAcwB,IAAI,EAAG,UAE5BG,SAAU,WACR,GAAGpI,KAAKwH,gBAAgB,IAAMxH,KAAKwH,gBAAgB,IAAK,CACtD,GAAIxH,KAAKU,YAAYwF,QAAU,GAAI,CACjClG,KAAKuF,WAAWvF,KAAKU,YAAYqH,SAAS,GAAI,UAEhD,IAAI/H,KAAKwH,gBAAgBxH,KAAKU,YAAYwF,QAAS,CACjDlG,KAAKuF,WAAWvF,KAAKU,YAAYwF,KAAKlG,KAAKa,QAAQqF,SAErD,IAAIlG,KAAK0H,kBAAkB1H,KAAKU,YAAYkE,UAAW,CACrD5E,KAAKuF,WAAWvF,KAAKU,YAAYkE,OAAO5E,KAAKa,QAAQ+D,cAI3DyD,SAAU,WACR,GAAGrI,KAAKwH,gBAAgB,KAAOxH,KAAKwH,gBAAgB,IAAK,CACvD,GAAIxH,KAAKU,YAAYwF,OAAS,GAAI,CAChClG,KAAKuF,WAAWvF,KAAKU,YAAYuH,IAAI,GAAI,UAE3C,IAAIjI,KAAKwH,gBAAgBxH,KAAKU,YAAYwF,QAAS,CACjDlG,KAAKuF,WAAWvF,KAAKU,YAAYwF,KAAKlG,KAAKc,QAAQoF,SAErD,IAAIlG,KAAK0H,kBAAkB1H,KAAKU,YAAYkE,UAAW,CACrD5E,KAAKuF,WAAWvF,KAAKU,YAAYkE,OAAO5E,KAAKc,QAAQ8D,cAI3D6C,aAAc,SAAUa,GACtB,GAAIvC,GAAUuC,CACd,IAAKA,EAAI,IAAOtI,KAAKiH,OACnBlB,GAAW,EAEb,OAAOA,IAET6B,KAAM,SAAUW,GACd,GAAIA,EAAO,CACTvI,KAAK0D,QAAQkE,KAAK5H,KAAKU,iBAClB,CACLV,KAAK0D,QAAQmE,WAMnBnI,SAAQI,OAAOd,GACZqB,UAAU,6BACT,WAEE,GAAImI,GAAYzJ,IACd0J,EAAW,KACXC,EAAW,KACXC,GAAiBD,EAAWD,EAAW,GAAK,GAC5CG,EAAc,IACdC,IACF,KAAK,GAAIvG,GAAI,EAAGA,EAAIqG,EAAerG,IAAK,CACtCuG,EAAOjH,KAAKU,GAGd,GAAIwG,GAAoB,SAAUlI,GAChC,GAAImI,GAAOnI,EAAKmI,MAChB,IAAIC,GAAQpI,EAAKoI,OACjB,QAASD,EAAON,GAAY,GAAMO,EAAQ,EAG5C,QACEzI,SAAU,IACVE,OACEwI,OAAQ,IACRrI,KAAM,KAERsC,iBAAkB,KAClBL,aAAc,MACdF,YAAa,SACX,SAAUY,GACR,GAAI2F,GAAWlJ,KACbiJ,EAASjJ,KAAKiJ,OACdE,IAEF,KAAK,GAAI7G,GAAI2G,EAAOpF,OAAOC,UAAWqF,EAAKnC,OAAS,EAAG1E,IAAK,CAC1D,GAAIA,EAAI,EAAG,CACTA,EAAI,EAEN6G,EAAKvH,KAAKU,EAAE8G,YAGdF,EAASG,KAAOF,CAChB,KAAKF,EAAOnI,UAAYmI,EAAOpI,QAAS,CACtCqI,EAASI,OAAST,MACb,CACL,GAAIU,GAAMN,EAAOpI,QAAUiI,EAAkBG,EAAOpI,SAAW,CAC/D,IAAI2I,GAAOP,EAAOnI,QAAWgI,EAAkBG,EAAOnI,SAAW,EAAK6H,CACtEO,GAASI,OAAST,EAAOY,MAAMF,EAAKC,GAItCN,EAASQ,eAAiB,SAAUC,GAClC,GAAIX,IAAUW,EAAQ,GAAK,IAAO,EAClC,IAAIZ,GAAON,EAAW/D,KAAKoC,MAAM6C,EAAQ,GACzC,IAAIC,GAAW7K,EAAOkK,EAAOvI,aAC1BqI,KAAKA,GACLC,MAAMA,EACT,OAAOa,GAAsBD,GAG/BV,GAASY,SAAWhB,EAAkBG,EAAOvI,aAAewI,EAASI,OAAO,EAC5E,IAAIO,GAAwB,SAAUjJ,GACpC,GAAIoI,KACJ,IAAIpI,IAAS,KAAM,CACjBoI,EAAMzJ,KAAOqB,EAAKI,OAAO,YACzB,IAAI+I,GAAehL,EAAO6B,GAAMX,OAAOgJ,EAAOpF,OAAO1C,MAAMgG,QAAQ,SAChEjB,KAAKtF,EAAKsF,QACVtB,OAAOhE,EAAKgE,SAEf,IAAIoF,GAAUD,EAAa/I,OAAO,IAClCgI,GAAMG,OACN,KAAK,GAAI7G,GAAIyH,EAAanJ,OAAQ0B,GAAKyH,EAAaE,cAAe3H,IAAK,CACtE,GAAIA,IAAMyH,EAAanJ,OAAQ,CAC7B,GAAIsJ,GAAQhB,EAASG,KAAKc,QAAQH,EAAQZ,WAC1C,IAAIc,EAAQ,EAAG,CACb,IAAK,GAAI9E,GAAI,EAAGA,EAAI8E,EAAO9E,IAAK,CAC9B4D,EAAMG,KAAKvH,KAAK,KAItBoH,EAAMG,KAAKvH,KAAK7C,EAAOgL,GAAc9J,OAAOgJ,EAAOpF,OAAO1C,MAAMP,KAAK0B,IAGvE,GAAI8H,GAAc,EAAGC,KAAcC,EAAS5F,KAAK6F,KAAKvB,EAAMG,KAAKnC,OAASoD,EAC1E,KAAK,GAAII,GAAI,EAAGA,EAAIF,EAAQE,IAAK,CAC/BH,EAAQzI,KAAKoH,EAAMG,KAAKM,MAAMe,EAAIJ,GAAcI,EAAI,GAAKJ,IAE3DpB,EAAMG,KAAOkB,CACb,OAAOrB,IAKXE,GAASuB,MAAQ,SAAUnI,GACzB,MAAOvD,GAAOsH,SAAS/D,GAAI,KACxBrC,OAAOgJ,EAAOpF,OAAO1C,MACrBH,OAAO,MACP0J,UAAU,EAAG,GAGlBxB,GAASyB,UAAY,SAAU/J,GAC7B,MAAOqI,GAAOrD,eAAe7G,EAAO6B,GAAO,MAAO,QAC7CqI,EAAO3C,gBAAgBvH,EAAO6B,GAAO,MAAO,OAGnDsI,GAAS3D,WAAa,SAAU3E,GAC9B,GAAIA,EAAM,CACR,GAAIsI,EAAS0B,cAAchK,GAAO,CAChC,MAAOqI,GAAOtB,KAEhBsB,EAAO1D,WAAWxG,EAAO6B,GAAMsF,KAAKgD,EAAStI,KAAKsF,QAAQtB,OAAOsE,EAAStI,KAAKgE,YAInFsE,GAAS0B,cAAgB,SAAU9I,GACjC,MAAOA,IAAKoH,EAAStI,KAAKA,SAAWkB,EAAElB,QAAUsI,EAAStI,KAAKoI,UAAYlH,EAAEkH,SAAWE,EAAStI,KAAKmI,SAAWjH,EAAEiH,UAKzHlJ,SAAU,+CACV,0FAA4F+I,EAAc,KAC1G,gEACA,SACA,qCAGLvI,UAAU,kCAAmC,WAC5C,SAAUwK,GACR,GAAIC,GAAuB,SAAUnL,EAASc,GAC5C,GAAIsK,GAAQrL,QAAQC,QAAQA,EAAQ,GAAGqL,cAAc,SACrD,IAAI9B,GAAWzI,EAAMwK,IAAKjC,EAAQvI,EAAMuI,KACxC+B,GAAMG,KAAK,GACXlC,GAAMG,KAAKgC,QAAQ,SAAUC,EAAU9I,GACrC,GAAI+I,GAAK3L,QAAQC,QAAQ,YACzByL,GAASD,QAAQ,SAAUG,EAASd,GAClC,GAAIe,GAAK7L,QAAQC,QAAQ,aACzB,IAAI2L,EAAS,CACX,GAAIE,EACJ,IAAItC,EAASyB,UAAUW,GAAU,CAE/B,GAAIG,GAAW,iBAAmBnJ,EAAI,KAAOkI,EAAI,GACjDgB,GAAU9L,QAAQC,QAAQ,oCACvBqC,KAAK,WAAY,gCAAkCyJ,EAAW,MAC9DzJ,KAAK,WAAY,kBAAoByJ,EAAW,SAE9C,CACLD,EAAU9L,QAAQC,QAAQ,iBAE5B6L,EACGE,SAAS,kBACTR,KAAKI,EAAQtK,OAAO,KACvBuK,GAAGI,OAAOH,GAEZH,EAAGM,OAAOJ,IAEZR,GAAMY,OAAON,IAEfR,GAASE,GAAOtK,GAGlB,QACEA,OACEmL,IAAK,KAEPpL,QAAS,6BACTD,SAAU,KACVV,SAAU,qDACR,wCACA,cACA,WACA,kEACA,YACA,eACA,cACA,eACA,WACFyB,KAAM,SAAUb,EAAOd,EAAS4B,EAAO2H,GACrCzI,EAAMwK,IAAM/B,CACZzI,GAAMuI,MAAQE,EAASQ,eAAerD,SAAS5F,EAAMmL,KACrDd,GAAqBnL,EAASc,EAE9BA,GAAMoL,OAAO,WACX,MAAOpL,GAAMmL,KACZ,SAAUA,EAAKE,GAChB,GAAIF,GAAOE,EAAQ,CACjBrL,EAAMuI,MAAQE,EAASQ,eAAerD,SAAS5F,EAAMmL,KACrDd,GAAqBnL,EAASc,UAS5Cf,SAAQI,OAAOd,GACZqB,UAAU,gBAAiB,WAC1B,OACEiB,KAAM,SAAUb,EAAOnB,GACrBA,EAAG2C,GAAG,QAAS,SAAUC,GACvBA,EAAEC,sBAKZzC,SAAQI,OAAOd,GACZqB,UAAU,0BACT,WAEE,GAAIR,GAAW,yFACX,gIACA,+LACA,uHACA,SACA,6CACA,+CACA,uCACA,QAEJ,QACEU,SAAU,IACVV,SAAUA,EACVyB,KAAM,SAAUb,EAAOd,EAAS4B,GAC9B,GAAIwK,GAAaxK,EAAMyK,OAAS,SAChC,IAAI/C,GAASxI,EAAMwI,MAEnB,IAAIgD,GAAgBjJ,SAASgI,cAAc,gBAC3C,IAAIkB,GAAO,WACT,GAAIC,GAAQzM,QAAQC,QAAQA,EAAQ,GAAGqL,cAAc,sBACnDoB,EAAW1M,QAAQC,QAAQsM,EAAcjB,cAAc,eAEzD,IAAIqB,GAAIJ,EAAcjB,cAAc,gBAAgBsB,WACpD,IAAIC,GAAKlG,SAAShH,EAAI+M,EAAU,eAAeI,QAAQ,KAAM,MAAQ,CACrE,IAAIC,GAAKpG,SAAShH,EAAI+M,EAAU,gBAAgBI,QAAQ,KAAM,MAAQ,CACtE,IAAIE,GAAKrG,SAAShH,EAAI8M,EAAO,cAAcK,QAAQ,KAAM,MAAQ,CACjE,IAAIG,GAAKtG,SAAShH,EAAI8M,EAAO,eAAeK,QAAQ,KAAM,MAAQ,CAElE,IAAII,GAAcP,GAAKK,EAAKC,EAAKJ,EAAKE,EACtCN,GAAM9M,IAAI,QAAS,EAAe,KAElC,IAAIwN,GAAKxG,SAAShH,EAAI+M,EAAU,eAAeI,QAAQ,KAAM,MAAQ,CACrE,IAAIM,GAAKzG,SAAShH,EAAI+M,EAAU,cAAcI,QAAQ,KAAM,MAAQ,CACpE,IAAIO,GAAK1G,SAAShH,EAAI8M,EAAO,cAAcK,QAAQ,KAAM,MAAQ,CACjE,IAAIQ,GAAK3G,SAAShH,EAAI8M,EAAO,aAAaK,QAAQ,KAAM,MAAQ,CAEhE,IAAIS,GAAKL,EAAa,CACtB,IAAIpC,GAAIyC,EAAI,GAEZ,IAAIC,KAEJ,KAAK,GAAI5E,GAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,GAAIlD,GAAIoF,EAAI9F,KAAKyI,IAAIzI,KAAK0I,GAAK,GAAK9E,EAAI,IACxC,IAAI+E,GAAI7C,EAAI9F,KAAK4I,IAAI5I,KAAK0I,GAAK,GAAK9E,EAAI,IAExC,IAAIpC,IACFqH,KAAON,EAAI7H,EAAIyH,EAAK,GAAMA,EAAKE,GAC/BS,IAAMP,EAAII,EAAIL,EAAK,GAAMF,EAAKE,GAC9BnL,MAAQkK,EAAczD,EAAI,EAAKA,EAGjC,IAAIyD,EAAY,CACd7F,EAAKuH,QAAUvH,EAAKrE,MAAQ,GAAM,IAAMqE,EAAKrE,MAASqE,EAAKrE,UACtD,CAEL,GAAGoH,EAAOpF,OAAO9C,UAAY,CAC3BmF,EAAKuH,QAAWnF,IAAM,EAAK,GAAKA,MAC3B,CACLpC,EAAKuH,QAAUxE,EAAOhC,OAASqB,EAAI,GAAKA,GAK5C4E,EAAOtL,KAAKsE,GAGdzF,EAAMyM,OAASA,CACfQ,IACAvB,GAAM9M,IAAI,SAAUuN,EAAa,KAGjC,IAAIe,GAAchO,EAAQ,GAAGqL,cAAc,oBAC3C,IAAI4C,GAAeD,EAAYrB,YAAc,GAAM,IACjDuB,EAAgBF,EAAYG,aAAe,GAAM,GACnD,IAAIC,GAAMd,EAAI,GACd,IAAIe,GAAMf,EAAI,GAEdvN,SAAQC,QAAQA,EAAQ,GAAGqL,cAAc,mBAAmB3L,KAC1DkO,KAAMN,EAAKF,EAAK,IAAO,KACvBkB,OAAQF,EAAM,KACdG,UAAYjB,EAAIc,EAAMlB,EAAM,OAC3BnB,UAAUK,EAAa,KAAO,GAEjCrM,SAAQC,QAAQA,EAAQ,GAAGqL,cAAc,qBAAqB3L,KAE5DkO,KAAMN,EAAKF,EAAK,IAAO,KACvBkB,OAAQD,EAAM,KACdE,UAAYjB,EAAIe,EAAMnB,EAAM,OAC3BnB,SAASK,EAAa,KAAO,GAEhCrM,SAAQC,QAAQgO,GAAatO,KAC3BkO,KAAON,EAAIJ,EAAKE,EAAKa,EAAe,KACpCM,UAAYjB,EAAKF,EAAK,EAAMc,EAAe,MAE7CM,KAGF,IAAIA,GAAe,WACjB,GAAIlI,GAAQgD,EAAOzE,uBACnB,IAAI8D,GAAIrC,EAAMC,MACd,IAAIpE,GAAImE,EAAMrB,QAEdwJ,GAAc1O,QAAQC,QAAQA,EAAQ,GAAGqL,cAAc,mBAAqB,IAAM,GAAM1C,EACxF,IAAI+F,GAAQ,IAAM,IAAO,EAAI3J,KAAKC,MAAM7C,EAAI,GAC5CsM,GAAc1O,QAAQC,QAAQA,EAAQ,GAAGqL,cAAc,qBAAsBqD,GAG/E,IAAID,GAAgB,SAAU9O,EAAIgP,GAChC5O,QAAQC,QAAQL,GAAID,KAClBkP,gBAAiB,UAAYD,EAAM,OACnCE,iBAAkB,UAAYF,EAAM,SAKxC,IAAIZ,GAAkB,WACpB,GAAI9M,GAAOqI,EAAOzE,uBAClB/D,GAAMgO,aAAe1C,EAAanL,EAAKgE,SAAYhE,EAAKsF,OAAS,GAGnEzF,GAAMoL,OAAO,WACX,GAAI6C,GAAMzF,EAAOzE,uBACjB,OAAOkK,GAAMA,EAAI1N,OAAO,SAAW,IAClC,SAAU2N,GACXjB,GACAS,MAIF,IAAIS,GAAmB,SAAS3H,EAAMiG,GACpC,IAAI,GAAI5K,GAAI,EAAGA,EAAI4K,EAAOlG,OAAQ1E,IAAK,CACrC4K,EAAO5K,GAAGmL,QAAUnL,CACpB,IAAG2E,EAAM,CACPiG,EAAO5K,GAAGmL,SAAW,IAGzB,MAAOP,GAGT,KAAIjE,EAAOpF,OAAO9C,UAAW,CAC3BN,EAAMoL,OAAO,kBAAmB,WAC9B,IAAIE,EAAY,CACd,GAAItL,EAAMyM,OAAQ,CAChB,GAAIA,GAAS0B,EAAiB3F,EAAOhC,OAAQvH,QAAQmP,KAAKpO,EAAMyM,QAChEzM,GAAMyM,OAASA,MAOvBzM,EAAMqO,QAAU,SAAUC,GACxB,GAAIA,IAAQtO,EAAMgO,aAAc,CAC9BxF,EAAOtB,KAGT,IAAKoE,EAAY,CACf9C,EAAOvI,YAAYwF,KAAK+C,EAAOhC,OAAU8H,EAAM,GAAMA,OAChD,CACL9F,EAAOvI,YAAYkE,OAAOmK,GAE5B9F,EAAOvI,YAAYyF,OAAO,GAG5B1F,GAAMuO,eAAiB,SAAUC,GAC/B,MAAOlD,GAAa9C,EAAOvB,kBAAkBuH,EAAMpN,OAASoH,EAAOzB,gBAAgByH,EAAMpN,OAG3F,IAAIqN,GAAYzO,EAAMoL,OAAO,WAC3B,MAAOlM,GAAQ,GAAGwP,iBAAiB,OAAOnI,QACzC,WACDkF,GACAgD,cAQXnQ"} \ No newline at end of file diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/jquery/date.js b/layouts/v7/modules/Mobile/simple/resources/libs/jquery/date.js new file mode 100644 index 0000000000000000000000000000000000000000..77f498645c26f24842580ccb1c6bb7f3f82c17df --- /dev/null +++ b/layouts/v7/modules/Mobile/simple/resources/libs/jquery/date.js @@ -0,0 +1,104 @@ +/** + * Version: 1.0 Alpha-1 + * Build Date: 13-Nov-2007 + * Copyright (c) 2006-2007, Coolite Inc. (http://www.coolite.com/). All rights reserved. + * License: Licensed under The MIT License. See license.txt and http://www.datejs.com/license/. + * Website: http://www.datejs.com/ or http://www.coolite.com/datejs/ + */ +Date.CultureInfo={name:"en-US",englishName:"English (United States)",nativeName:"English (United States)",dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],abbreviatedDayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],shortestDayNames:["Su","Mo","Tu","We","Th","Fr","Sa"],firstLetterDayNames:["S","M","T","W","T","F","S"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],abbreviatedMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],amDesignator:"AM",pmDesignator:"PM",firstDayOfWeek:0,twoDigitYearMax:2029,dateElementOrder:"mdy",formatPatterns:{shortDate:"M/d/yyyy",longDate:"dddd, MMMM dd, yyyy",shortTime:"h:mm tt",longTime:"h:mm:ss tt",fullDateTime:"dddd, MMMM dd, yyyy h:mm:ss tt",sortableDateTime:"yyyy-MM-ddTHH:mm:ss",universalSortableDateTime:"yyyy-MM-dd HH:mm:ssZ",rfc1123:"ddd, dd MMM yyyy HH:mm:ss GMT",monthDay:"MMMM dd",yearMonth:"MMMM, yyyy"},regexPatterns:{jan:/^jan(uary)?/i,feb:/^feb(ruary)?/i,mar:/^mar(ch)?/i,apr:/^apr(il)?/i,may:/^may/i,jun:/^jun(e)?/i,jul:/^jul(y)?/i,aug:/^aug(ust)?/i,sep:/^sep(t(ember)?)?/i,oct:/^oct(ober)?/i,nov:/^nov(ember)?/i,dec:/^dec(ember)?/i,sun:/^su(n(day)?)?/i,mon:/^mo(n(day)?)?/i,tue:/^tu(e(s(day)?)?)?/i,wed:/^we(d(nesday)?)?/i,thu:/^th(u(r(s(day)?)?)?)?/i,fri:/^fr(i(day)?)?/i,sat:/^sa(t(urday)?)?/i,future:/^next/i,past:/^last|past|prev(ious)?/i,add:/^(\+|after|from)/i,subtract:/^(\-|before|ago)/i,yesterday:/^yesterday/i,today:/^t(oday)?/i,tomorrow:/^tomorrow/i,now:/^n(ow)?/i,millisecond:/^ms|milli(second)?s?/i,second:/^sec(ond)?s?/i,minute:/^min(ute)?s?/i,hour:/^h(ou)?rs?/i,week:/^w(ee)?k/i,month:/^m(o(nth)?s?)?/i,day:/^d(ays?)?/i,year:/^y((ea)?rs?)?/i,shortMeridian:/^(a|p)/i,longMeridian:/^(a\.?m?\.?|p\.?m?\.?)/i,timezone:/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\s*(\+|\-)\s*\d\d\d\d?)|gmt)/i,ordinalSuffix:/^\s*(st|nd|rd|th)/i,timeContext:/^\s*(\:|a|p)/i},abbreviatedTimeZoneStandard:{GMT:"-000",EST:"-0400",CST:"-0500",MST:"-0600",PST:"-0700"},abbreviatedTimeZoneDST:{GMT:"-000",EDT:"-0500",CDT:"-0600",MDT:"-0700",PDT:"-0800"}}; +Date.getMonthNumberFromName=function(name){var n=Date.CultureInfo.monthNames,m=Date.CultureInfo.abbreviatedMonthNames,s=name.toLowerCase();for(var i=0;i<n.length;i++){if(n[i].toLowerCase()==s||m[i].toLowerCase()==s){return i;}} +return-1;};Date.getDayNumberFromName=function(name){var n=Date.CultureInfo.dayNames,m=Date.CultureInfo.abbreviatedDayNames,o=Date.CultureInfo.shortestDayNames,s=name.toLowerCase();for(var i=0;i<n.length;i++){if(n[i].toLowerCase()==s||m[i].toLowerCase()==s){return i;}} +return-1;};Date.isLeapYear=function(year){return(((year%4===0)&&(year%100!==0))||(year%400===0));};Date.getDaysInMonth=function(year,month){return[31,(Date.isLeapYear(year)?29:28),31,30,31,30,31,31,30,31,30,31][month];};Date.getTimezoneOffset=function(s,dst){return(dst||false)?Date.CultureInfo.abbreviatedTimeZoneDST[s.toUpperCase()]:Date.CultureInfo.abbreviatedTimeZoneStandard[s.toUpperCase()];};Date.getTimezoneAbbreviation=function(offset,dst){var n=(dst||false)?Date.CultureInfo.abbreviatedTimeZoneDST:Date.CultureInfo.abbreviatedTimeZoneStandard,p;for(p in n){if(n[p]===offset){return p;}} +return null;};Date.prototype.clone=function(){return new Date(this.getTime());};Date.prototype.compareTo=function(date){if(isNaN(this)){throw new Error(this);} +if(date instanceof Date&&!isNaN(date)){return(this>date)?1:(this<date)?-1:0;}else{throw new TypeError(date);}};Date.prototype.equals=function(date){return(this.compareTo(date)===0);};Date.prototype.between=function(start,end){var t=this.getTime();return t>=start.getTime()&&t<=end.getTime();};Date.prototype.addMilliseconds=function(value){this.setMilliseconds(this.getMilliseconds()+value);return this;};Date.prototype.addSeconds=function(value){return this.addMilliseconds(value*1000);};Date.prototype.addMinutes=function(value){return this.addMilliseconds(value*60000);};Date.prototype.addHours=function(value){return this.addMilliseconds(value*3600000);};Date.prototype.addDays=function(value){return this.addMilliseconds(value*86400000);};Date.prototype.addWeeks=function(value){return this.addMilliseconds(value*604800000);};Date.prototype.addMonths=function(value){var n=this.getDate();this.setDate(1);this.setMonth(this.getMonth()+value);this.setDate(Math.min(n,this.getDaysInMonth()));return this;};Date.prototype.addYears=function(value){return this.addMonths(value*12);};Date.prototype.add=function(config){if(typeof config=="number"){this._orient=config;return this;} +var x=config;if(x.millisecond||x.milliseconds){this.addMilliseconds(x.millisecond||x.milliseconds);} +if(x.second||x.seconds){this.addSeconds(x.second||x.seconds);} +if(x.minute||x.minutes){this.addMinutes(x.minute||x.minutes);} +if(x.hour||x.hours){this.addHours(x.hour||x.hours);} +if(x.month||x.months){this.addMonths(x.month||x.months);} +if(x.year||x.years){this.addYears(x.year||x.years);} +if(x.day||x.days){this.addDays(x.day||x.days);} +return this;};Date._validate=function(value,min,max,name){if(typeof value!="number"){throw new TypeError(value+" is not a Number.");}else if(value<min||value>max){throw new RangeError(value+" is not a valid value for "+name+".");} +return true;};Date.validateMillisecond=function(n){return Date._validate(n,0,999,"milliseconds");};Date.validateSecond=function(n){return Date._validate(n,0,59,"seconds");};Date.validateMinute=function(n){return Date._validate(n,0,59,"minutes");};Date.validateHour=function(n){return Date._validate(n,0,23,"hours");};Date.validateDay=function(n,year,month){return Date._validate(n,1,Date.getDaysInMonth(year,month),"days");};Date.validateMonth=function(n){return Date._validate(n,0,11,"months");};Date.validateYear=function(n){return Date._validate(n,1,9999,"seconds");};Date.prototype.set=function(config){var x=config;if(!x.millisecond&&x.millisecond!==0){x.millisecond=-1;} +if(!x.second&&x.second!==0){x.second=-1;} +if(!x.minute&&x.minute!==0){x.minute=-1;} +if(!x.hour&&x.hour!==0){x.hour=-1;} +if(!x.day&&x.day!==0){x.day=-1;} +if(!x.month&&x.month!==0){x.month=-1;} +if(!x.year&&x.year!==0){x.year=-1;} +if(x.millisecond!=-1&&Date.validateMillisecond(x.millisecond)){this.addMilliseconds(x.millisecond-this.getMilliseconds());} +if(x.second!=-1&&Date.validateSecond(x.second)){this.addSeconds(x.second-this.getSeconds());} +if(x.minute!=-1&&Date.validateMinute(x.minute)){this.addMinutes(x.minute-this.getMinutes());} +if(x.hour!=-1&&Date.validateHour(x.hour)){this.addHours(x.hour-this.getHours());} +if(x.month!==-1&&Date.validateMonth(x.month)){this.addMonths(x.month-this.getMonth());} +if(x.year!=-1&&Date.validateYear(x.year)){this.addYears(x.year-this.getFullYear());} +if(x.day!=-1&&Date.validateDay(x.day,this.getFullYear(),this.getMonth())){this.addDays(x.day-this.getDate());} +if(x.timezone){this.setTimezone(x.timezone);} +if(x.timezoneOffset){this.setTimezoneOffset(x.timezoneOffset);} +return this;};Date.prototype.clearTime=function(){this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this;};Date.prototype.isLeapYear=function(){var y=this.getFullYear();return(((y%4===0)&&(y%100!==0))||(y%400===0));};Date.prototype.isWeekday=function(){return!(this.is().sat()||this.is().sun());};Date.prototype.getDaysInMonth=function(){return Date.getDaysInMonth(this.getFullYear(),this.getMonth());};Date.prototype.moveToFirstDayOfMonth=function(){return this.set({day:1});};Date.prototype.moveToLastDayOfMonth=function(){return this.set({day:this.getDaysInMonth()});};Date.prototype.moveToDayOfWeek=function(day,orient){var diff=(day-this.getDay()+7*(orient||+1))%7;return this.addDays((diff===0)?diff+=7*(orient||+1):diff);};Date.prototype.moveToMonth=function(month,orient){var diff=(month-this.getMonth()+12*(orient||+1))%12;return this.addMonths((diff===0)?diff+=12*(orient||+1):diff);};Date.prototype.getDayOfYear=function(){return Math.floor((this-new Date(this.getFullYear(),0,1))/86400000);};Date.prototype.getWeekOfYear=function(firstDayOfWeek){var y=this.getFullYear(),m=this.getMonth(),d=this.getDate();var dow=firstDayOfWeek||Date.CultureInfo.firstDayOfWeek;var offset=7+1-new Date(y,0,1).getDay();if(offset==8){offset=1;} +var daynum=((Date.UTC(y,m,d,0,0,0)-Date.UTC(y,0,1,0,0,0))/86400000)+1;var w=Math.floor((daynum-offset+7)/7);if(w===dow){y--;var prevOffset=7+1-new Date(y,0,1).getDay();if(prevOffset==2||prevOffset==8){w=53;}else{w=52;}} +return w;};Date.prototype.isDST=function(){console.log('isDST');return this.toString().match(/(E|C|M|P)(S|D)T/)[2]=="D";};Date.prototype.getTimezone=function(){return Date.getTimezoneAbbreviation(this.getUTCOffset,this.isDST());};Date.prototype.setTimezoneOffset=function(s){var here=this.getTimezoneOffset(),there=Number(s)*-6/10;this.addMinutes(there-here);return this;};Date.prototype.setTimezone=function(s){return this.setTimezoneOffset(Date.getTimezoneOffset(s));};Date.prototype.getUTCOffset=function(){var n=this.getTimezoneOffset()*-10/6,r;if(n<0){r=(n-10000).toString();return r[0]+r.substr(2);}else{r=(n+10000).toString();return"+"+r.substr(1);}};Date.prototype.getDayName=function(abbrev){return abbrev?Date.CultureInfo.abbreviatedDayNames[this.getDay()]:Date.CultureInfo.dayNames[this.getDay()];};Date.prototype.getMonthName=function(abbrev){return abbrev?Date.CultureInfo.abbreviatedMonthNames[this.getMonth()]:Date.CultureInfo.monthNames[this.getMonth()];};Date.prototype._toString=Date.prototype.toString;Date.prototype.toString=function(format){var self=this;var p=function p(s){return(s.toString().length==1)?"0"+s:s;};return format?format.replace(/dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?/g,function(format){switch(format){case"hh":return p(self.getHours()<13?self.getHours():(self.getHours()-12));case"h":return self.getHours()<13?self.getHours():(self.getHours()-12);case"HH":return p(self.getHours());case"H":return self.getHours();case"mm":return p(self.getMinutes());case"m":return self.getMinutes();case"ss":return p(self.getSeconds());case"s":return self.getSeconds();case"yyyy":return self.getFullYear();case"yy":return self.getFullYear().toString().substring(2,4);case"dddd":return self.getDayName();case"ddd":return self.getDayName(true);case"dd":return p(self.getDate());case"d":return self.getDate().toString();case"MMMM":return self.getMonthName();case"MMM":return self.getMonthName(true);case"MM":return p((self.getMonth()+1));case"M":return self.getMonth()+1;case"t":return self.getHours()<12?Date.CultureInfo.amDesignator.substring(0,1):Date.CultureInfo.pmDesignator.substring(0,1);case"tt":return self.getHours()<12?Date.CultureInfo.amDesignator:Date.CultureInfo.pmDesignator;case"zzz":case"zz":case"z":return"";}}):this._toString();}; +Date.now=function(){return new Date();};Date.today=function(){return Date.now().clearTime();};Date.prototype._orient=+1;Date.prototype.next=function(){this._orient=+1;return this;};Date.prototype.last=Date.prototype.prev=Date.prototype.previous=function(){this._orient=-1;return this;};Date.prototype._is=false;Date.prototype.is=function(){this._is=true;return this;};Number.prototype._dateElement="day";Number.prototype.fromNow=function(){var c={};c[this._dateElement]=this;return Date.now().add(c);};Number.prototype.ago=function(){var c={};c[this._dateElement]=this*-1;return Date.now().add(c);};(function(){var $D=Date.prototype,$N=Number.prototype;var dx=("sunday monday tuesday wednesday thursday friday saturday").split(/\s/),mx=("january february march april may june july august september october november december").split(/\s/),px=("Millisecond Second Minute Hour Day Week Month Year").split(/\s/),de;var df=function(n){return function(){if(this._is){this._is=false;return this.getDay()==n;} +return this.moveToDayOfWeek(n,this._orient);};};for(var i=0;i<dx.length;i++){$D[dx[i]]=$D[dx[i].substring(0,3)]=df(i);} +var mf=function(n){return function(){if(this._is){this._is=false;return this.getMonth()===n;} +return this.moveToMonth(n,this._orient);};};for(var j=0;j<mx.length;j++){$D[mx[j]]=$D[mx[j].substring(0,3)]=mf(j);} +var ef=function(j){return function(){if(j.substring(j.length-1)!="s"){j+="s";} +return this["add"+j](this._orient);};};var nf=function(n){return function(){this._dateElement=n;return this;};};for(var k=0;k<px.length;k++){de=px[k].toLowerCase();$D[de]=$D[de+"s"]=ef(px[k]);$N[de]=$N[de+"s"]=nf(de);}}());Date.prototype.toJSONString=function(){return this.toString("yyyy-MM-ddThh:mm:ssZ");};Date.prototype.toShortDateString=function(){return this.toString(Date.CultureInfo.formatPatterns.shortDatePattern);};Date.prototype.toLongDateString=function(){return this.toString(Date.CultureInfo.formatPatterns.longDatePattern);};Date.prototype.toShortTimeString=function(){return this.toString(Date.CultureInfo.formatPatterns.shortTimePattern);};Date.prototype.toLongTimeString=function(){return this.toString(Date.CultureInfo.formatPatterns.longTimePattern);};Date.prototype.getOrdinal=function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th";}}; +(function(){Date.Parsing={Exception:function(s){this.message="Parse error at '"+s.substring(0,10)+" ...'";}};var $P=Date.Parsing;var _=$P.Operators={rtoken:function(r){return function(s){var mx=s.match(r);if(mx){return([mx[0],s.substring(mx[0].length)]);}else{throw new $P.Exception(s);}};},token:function(s){return function(s){return _.rtoken(new RegExp("^\s*"+s+"\s*"))(s);};},stoken:function(s){return _.rtoken(new RegExp("^"+s));},until:function(p){return function(s){var qx=[],rx=null;while(s.length){try{rx=p.call(this,s);}catch(e){qx.push(rx[0]);s=rx[1];continue;} +break;} +return[qx,s];};},many:function(p){return function(s){var rx=[],r=null;while(s.length){try{r=p.call(this,s);}catch(e){return[rx,s];} +rx.push(r[0]);s=r[1];} +return[rx,s];};},optional:function(p){return function(s){var r=null;try{r=p.call(this,s);}catch(e){return[null,s];} +return[r[0],r[1]];};},not:function(p){return function(s){try{p.call(this,s);}catch(e){return[null,s];} +throw new $P.Exception(s);};},ignore:function(p){return p?function(s){var r=null;r=p.call(this,s);return[null,r[1]];}:null;},product:function(){var px=arguments[0],qx=Array.prototype.slice.call(arguments,1),rx=[];for(var i=0;i<px.length;i++){rx.push(_.each(px[i],qx));} +return rx;},cache:function(rule){var cache={},r=null;return function(s){try{r=cache[s]=(cache[s]||rule.call(this,s));}catch(e){r=cache[s]=e;} +if(r instanceof $P.Exception){throw r;}else{return r;}};},any:function(){var px=arguments;return function(s){var r=null;for(var i=0;i<px.length;i++){if(px[i]==null){continue;} +try{r=(px[i].call(this,s));}catch(e){r=null;} +if(r){return r;}} +throw new $P.Exception(s);};},each:function(){var px=arguments;return function(s){var rx=[],r=null;for(var i=0;i<px.length;i++){if(px[i]==null){continue;} +try{r=(px[i].call(this,s));}catch(e){throw new $P.Exception(s);} +rx.push(r[0]);s=r[1];} +return[rx,s];};},all:function(){var px=arguments,_=_;return _.each(_.optional(px));},sequence:function(px,d,c){d=d||_.rtoken(/^\s*/);c=c||null;if(px.length==1){return px[0];} +return function(s){var r=null,q=null;var rx=[];for(var i=0;i<px.length;i++){try{r=px[i].call(this,s);}catch(e){break;} +rx.push(r[0]);try{q=d.call(this,r[1]);}catch(ex){q=null;break;} +s=q[1];} +if(!r){throw new $P.Exception(s);} +if(q){throw new $P.Exception(q[1]);} +if(c){try{r=c.call(this,r[1]);}catch(ey){throw new $P.Exception(r[1]);}} +return[rx,(r?r[1]:s)];};},between:function(d1,p,d2){d2=d2||d1;var _fn=_.each(_.ignore(d1),p,_.ignore(d2));return function(s){var rx=_fn.call(this,s);return[[rx[0][0],r[0][2]],rx[1]];};},list:function(p,d,c){d=d||_.rtoken(/^\s*/);c=c||null;return(p instanceof Array?_.each(_.product(p.slice(0,-1),_.ignore(d)),p.slice(-1),_.ignore(c)):_.each(_.many(_.each(p,_.ignore(d))),px,_.ignore(c)));},set:function(px,d,c){d=d||_.rtoken(/^\s*/);c=c||null;return function(s){var r=null,p=null,q=null,rx=null,best=[[],s],last=false;for(var i=0;i<px.length;i++){q=null;p=null;r=null;last=(px.length==1);try{r=px[i].call(this,s);}catch(e){continue;} +rx=[[r[0]],r[1]];if(r[1].length>0&&!last){try{q=d.call(this,r[1]);}catch(ex){last=true;}}else{last=true;} +if(!last&&q[1].length===0){last=true;} +if(!last){var qx=[];for(var j=0;j<px.length;j++){if(i!=j){qx.push(px[j]);}} +p=_.set(qx,d).call(this,q[1]);if(p[0].length>0){rx[0]=rx[0].concat(p[0]);rx[1]=p[1];}} +if(rx[1].length<best[1].length){best=rx;} +if(best[1].length===0){break;}} +if(best[0].length===0){return best;} +if(c){try{q=c.call(this,best[1]);}catch(ey){throw new $P.Exception(best[1]);} +best[1]=q[1];} +return best;};},forward:function(gr,fname){return function(s){return gr[fname].call(this,s);};},replace:function(rule,repl){return function(s){var r=rule.call(this,s);return[repl,r[1]];};},process:function(rule,fn){return function(s){var r=rule.call(this,s);return[fn.call(this,r[0]),r[1]];};},min:function(min,rule){return function(s){var rx=rule.call(this,s);if(rx[0].length<min){throw new $P.Exception(s);} +return rx;};}};var _generator=function(op){return function(){var args=null,rx=[];if(arguments.length>1){args=Array.prototype.slice.call(arguments);}else if(arguments[0]instanceof Array){args=arguments[0];} +if(args){for(var i=0,px=args.shift();i<px.length;i++){args.unshift(px[i]);rx.push(op.apply(null,args));args.shift();return rx;}}else{return op.apply(null,arguments);}};};var gx="optional not ignore cache".split(/\s/);for(var i=0;i<gx.length;i++){_[gx[i]]=_generator(_[gx[i]]);} +var _vector=function(op){return function(){if(arguments[0]instanceof Array){return op.apply(null,arguments[0]);}else{return op.apply(null,arguments);}};};var vx="each any all".split(/\s/);for(var j=0;j<vx.length;j++){_[vx[j]]=_vector(_[vx[j]]);}}());(function(){var flattenAndCompact=function(ax){var rx=[];for(var i=0;i<ax.length;i++){if(ax[i]instanceof Array){rx=rx.concat(flattenAndCompact(ax[i]));}else{if(ax[i]){rx.push(ax[i]);}}} +return rx;};Date.Grammar={};Date.Translator={hour:function(s){return function(){this.hour=Number(s);};},minute:function(s){return function(){this.minute=Number(s);};},second:function(s){return function(){this.second=Number(s);};},meridian:function(s){return function(){this.meridian=s.slice(0,1).toLowerCase();};},timezone:function(s){return function(){var n=s.replace(/[^\d\+\-]/g,"");if(n.length){this.timezoneOffset=Number(n);}else{this.timezone=s.toLowerCase();}};},day:function(x){var s=x[0];return function(){this.day=Number(s.match(/\d+/)[0]);};},month:function(s){return function(){this.month=((s.length==3)?Date.getMonthNumberFromName(s):(Number(s)-1));};},year:function(s){return function(){var n=Number(s);this.year=((s.length>2)?n:(n+(((n+2000)<Date.CultureInfo.twoDigitYearMax)?2000:1900)));};},rday:function(s){return function(){switch(s){case"yesterday":this.days=-1;break;case"tomorrow":this.days=1;break;case"today":this.days=0;break;case"now":this.days=0;this.now=true;break;}};},finishExact:function(x){x=(x instanceof Array)?x:[x];var now=new Date();this.year=now.getFullYear();this.month=now.getMonth();this.day=1;this.hour=0;this.minute=0;this.second=0;for(var i=0;i<x.length;i++){if(x[i]){x[i].call(this);}} +this.hour=(this.meridian=="p"&&this.hour<13)?this.hour+12:this.hour;if(this.day>Date.getDaysInMonth(this.year,this.month)){throw new RangeError(this.day+" is not a valid value for days.");} +var r=new Date(this.year,this.month,this.day,this.hour,this.minute,this.second);if(this.timezone){r.set({timezone:this.timezone});}else if(this.timezoneOffset){r.set({timezoneOffset:this.timezoneOffset});} +return r;},finish:function(x){x=(x instanceof Array)?flattenAndCompact(x):[x];if(x.length===0){return null;} +for(var i=0;i<x.length;i++){if(typeof x[i]=="function"){x[i].call(this);}} +if(this.now){return new Date();} +var today=Date.today();var method=null;var expression=!!(this.days!=null||this.orient||this.operator);if(expression){var gap,mod,orient;orient=((this.orient=="past"||this.operator=="subtract")?-1:1);if(this.weekday){this.unit="day";gap=(Date.getDayNumberFromName(this.weekday)-today.getDay());mod=7;this.days=gap?((gap+(orient*mod))%mod):(orient*mod);} +if(this.month){this.unit="month";gap=(this.month-today.getMonth());mod=12;this.months=gap?((gap+(orient*mod))%mod):(orient*mod);this.month=null;} +if(!this.unit){this.unit="day";} +if(this[this.unit+"s"]==null||this.operator!=null){if(!this.value){this.value=1;} +if(this.unit=="week"){this.unit="day";this.value=this.value*7;} +this[this.unit+"s"]=this.value*orient;} +return today.add(this);}else{if(this.meridian&&this.hour){this.hour=(this.hour<13&&this.meridian=="p")?this.hour+12:this.hour;} +if(this.weekday&&!this.day){this.day=(today.addDays((Date.getDayNumberFromName(this.weekday)-today.getDay()))).getDate();} +if(this.month&&!this.day){this.day=1;} +return today.set(this);}}};var _=Date.Parsing.Operators,g=Date.Grammar,t=Date.Translator,_fn;g.datePartDelimiter=_.rtoken(/^([\s\-\.\,\/\x27]+)/);g.timePartDelimiter=_.stoken(":");g.whiteSpace=_.rtoken(/^\s*/);g.generalDelimiter=_.rtoken(/^(([\s\,]|at|on)+)/);var _C={};g.ctoken=function(keys){var fn=_C[keys];if(!fn){var c=Date.CultureInfo.regexPatterns;var kx=keys.split(/\s+/),px=[];for(var i=0;i<kx.length;i++){px.push(_.replace(_.rtoken(c[kx[i]]),kx[i]));} +fn=_C[keys]=_.any.apply(null,px);} +return fn;};g.ctoken2=function(key){return _.rtoken(Date.CultureInfo.regexPatterns[key]);};g.h=_.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2]|[1-9])/),t.hour));g.hh=_.cache(_.process(_.rtoken(/^(0[0-9]|1[0-2])/),t.hour));g.H=_.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3]|[0-9])/),t.hour));g.HH=_.cache(_.process(_.rtoken(/^([0-1][0-9]|2[0-3])/),t.hour));g.m=_.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/),t.minute));g.mm=_.cache(_.process(_.rtoken(/^[0-5][0-9]/),t.minute));g.s=_.cache(_.process(_.rtoken(/^([0-5][0-9]|[0-9])/),t.second));g.ss=_.cache(_.process(_.rtoken(/^[0-5][0-9]/),t.second));g.hms=_.cache(_.sequence([g.H,g.mm,g.ss],g.timePartDelimiter));g.t=_.cache(_.process(g.ctoken2("shortMeridian"),t.meridian));g.tt=_.cache(_.process(g.ctoken2("longMeridian"),t.meridian));g.z=_.cache(_.process(_.rtoken(/^(\+|\-)?\s*\d\d\d\d?/),t.timezone));g.zz=_.cache(_.process(_.rtoken(/^(\+|\-)\s*\d\d\d\d/),t.timezone));g.zzz=_.cache(_.process(g.ctoken2("timezone"),t.timezone));g.timeSuffix=_.each(_.ignore(g.whiteSpace),_.set([g.tt,g.zzz]));g.time=_.each(_.optional(_.ignore(_.stoken("T"))),g.hms,g.timeSuffix);g.d=_.cache(_.process(_.each(_.rtoken(/^([0-2]\d|3[0-1]|\d)/),_.optional(g.ctoken2("ordinalSuffix"))),t.day));g.dd=_.cache(_.process(_.each(_.rtoken(/^([0-2]\d|3[0-1])/),_.optional(g.ctoken2("ordinalSuffix"))),t.day));g.ddd=g.dddd=_.cache(_.process(g.ctoken("sun mon tue wed thu fri sat"),function(s){return function(){this.weekday=s;};}));g.M=_.cache(_.process(_.rtoken(/^(1[0-2]|0\d|\d)/),t.month));g.MM=_.cache(_.process(_.rtoken(/^(1[0-2]|0\d)/),t.month));g.MMM=g.MMMM=_.cache(_.process(g.ctoken("jan feb mar apr may jun jul aug sep oct nov dec"),t.month));g.y=_.cache(_.process(_.rtoken(/^(\d\d?)/),t.year));g.yy=_.cache(_.process(_.rtoken(/^(\d\d)/),t.year));g.yyy=_.cache(_.process(_.rtoken(/^(\d\d?\d?\d?)/),t.year));g.yyyy=_.cache(_.process(_.rtoken(/^(\d\d\d\d)/),t.year));_fn=function(){return _.each(_.any.apply(null,arguments),_.not(g.ctoken2("timeContext")));};g.day=_fn(g.d,g.dd);g.month=_fn(g.M,g.MMM);g.year=_fn(g.yyyy,g.yy);g.orientation=_.process(g.ctoken("past future"),function(s){return function(){this.orient=s;};});g.operator=_.process(g.ctoken("add subtract"),function(s){return function(){this.operator=s;};});g.rday=_.process(g.ctoken("yesterday tomorrow today now"),t.rday);g.unit=_.process(g.ctoken("minute hour day week month year"),function(s){return function(){this.unit=s;};});g.value=_.process(_.rtoken(/^\d\d?(st|nd|rd|th)?/),function(s){return function(){this.value=s.replace(/\D/g,"");};});g.expression=_.set([g.rday,g.operator,g.value,g.unit,g.orientation,g.ddd,g.MMM]);_fn=function(){return _.set(arguments,g.datePartDelimiter);};g.mdy=_fn(g.ddd,g.month,g.day,g.year);g.ymd=_fn(g.ddd,g.year,g.month,g.day);g.dmy=_fn(g.ddd,g.day,g.month,g.year);g.date=function(s){return((g[Date.CultureInfo.dateElementOrder]||g.mdy).call(this,s));};g.format=_.process(_.many(_.any(_.process(_.rtoken(/^(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?)/),function(fmt){if(g[fmt]){return g[fmt];}else{throw Date.Parsing.Exception(fmt);}}),_.process(_.rtoken(/^[^dMyhHmstz]+/),function(s){return _.ignore(_.stoken(s));}))),function(rules){return _.process(_.each.apply(null,rules),t.finishExact);});var _F={};var _get=function(f){return _F[f]=(_F[f]||g.format(f)[0]);};g.formats=function(fx){if(fx instanceof Array){var rx=[];for(var i=0;i<fx.length;i++){rx.push(_get(fx[i]));} +return _.any.apply(null,rx);}else{return _get(fx);}};g._formats=g.formats(["yyyy-MM-ddTHH:mm:ss","ddd, MMM dd, yyyy H:mm:ss tt","ddd MMM d yyyy HH:mm:ss zzz","d"]);g._start=_.process(_.set([g.date,g.time,g.expression],g.generalDelimiter,g.whiteSpace),t.finish);g.start=function(s){try{var r=g._formats.call({},s);if(r[1].length===0){return r;}}catch(e){} +return g._start.call({},s);};}());Date._parse=Date.parse;Date.parse=function(s){var r=null;if(!s){return null;} +try{r=Date.Grammar.start.call({},s);}catch(e){return null;} +return((r[1].length===0)?r[0]:null);};Date.getParseFunction=function(fx){var fn=Date.Grammar.formats(fx);return function(s){var r=null;try{r=fn.call({},s);}catch(e){return null;} +return((r[1].length===0)?r[0]:null);};};Date.parseExact=function(s,fx){return Date.getParseFunction(fx)(s);}; diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/md-datepicker/angular-clockpicker.css b/layouts/v7/modules/Mobile/simple/resources/libs/md-datepicker/angular-clockpicker.css new file mode 100644 index 0000000000000000000000000000000000000000..8cd5f788590efe2e9d1895947fa7e2c90835f6f8 --- /dev/null +++ b/layouts/v7/modules/Mobile/simple/resources/libs/md-datepicker/angular-clockpicker.css @@ -0,0 +1,328 @@ +.ui-clockpicker { + width: 280px; + box-shadow:0px 1px 1px 2px lightgrey; + border-radius: 2px; + font-family: Helvetica, sans-serif; + position: absolute; + top: 32px; + background-color: #fff; + z-index: 100; + margin-bottom: 40px; +} +.ui-clockpicker-hour .selected, +.ui-clockpicker-hour li:hover{ + background: #0088cc; + color: #fff; + text-shadow: 0 0 1px #333; + border-radius: 30px; +} +.ui-clockpicker-min .selected, +.ui-clockpicker-min li:hover{ + background: green; + color: #fff; + text-shadow: 0 0 1px #333; + border-radius: 30px; +} +.ui-clockpicker a { + cursor: pointer; +} +.ui-clockpicker-selection { + display: block; + padding: 10px 0 7px; + font-size: 35px; + color: white; + font-size: 35px; + text-align: center; + text-transform: uppercase; + /*background: #8BC34A;*/ +} +.ui-clockpicker-selector { + position: relative; + display: block; + padding: 5px; + background: white; + height: 240px; + width: 270px; +} +.ui-clockpicker-selector li { + cursor: pointer; + color: #555; +} +.clock-wrap{ + height: 220px; + width: 220px; + position: relative; + margin-top: 10px; + margin-left: 24px; + border-radius: 250px; + background: #eee; +} +.ui-clockpicker-origin { + display: inline-block; + width: 14px; + height: 14px; + background: grey; + border-radius: 20px; + position: absolute; + left: 103px; + top: 103px; + z-index: 100; +} +.ui-clockpicker-hourline { + position: absolute; + top: 110px; + left: 110px; + width: 80px; + height: 80px; + z-index: 1; + transform-origin: top left; + -webkit-transform-origin: top left; + transform-style: preserve-3D; +} + +.ui-clockpicker-hourline .lineH { + width: 80px; + height: 2px; + background: #0088cc; + position: absolute; + -webkit-transform: rotate(90deg); + position: absolute; + left: 0; + transform-origin: 0 1px; +} + +.ui-clockpicker-minline { + position: absolute; + top: 110px; + left: 110px; + width: 80px; + height: 80px; + z-index: 1; + transform-origin: top left; + -webkit-transform-origin: top left; + transform-style: preserve-3D; +} +.ui-clockpicker-minline .lineM { + width: 50px; + height: 2px; + background: green; + position: absolute; + -webkit-transform: rotate(90deg); + position: absolute; + left: 0; + transform-origin: 0 1px; +} + + +.ui-clockpicker-min { + position: absolute; + width: 140px; + height: 140px; + margin: 0; + padding: 0; + list-style: none; + border-radius: 250px; + top: 40px; + left: 40px; + z-index: 30; +} +.ui-clockpicker-min li { + position: absolute; + font-size: 14px; + padding-top: 3px; + border-radius: 30px; + min-width: 23px; + text-align: center; + min-height: 20px; +} + +.ui-clockpicker-hour { + position: absolute; + width: 220px; + height: 220px; + margin: 0; + padding: 0; + list-style: none; + border: solid #000 1px; + border:none; + z-index: 20; +} +.ui-clockpicker-hour li { + position: absolute; + font-size: 15px; + height: 27px; + text-align: center; + border-radius: 30px; + width: 26px; + padding-right: 2px; + line-height: 27px; + text-align: center; +} +.ui-clockpicker-hour li:nth-child(1) { + top: 4px; + left: 96px; +} + +.ui-clockpicker-hour li:nth-child(2) { + top: 16px; + right: 50px; +} + +.ui-clockpicker-hour li:nth-child(3) { + top: 50px; + right: 17px; +} + +.ui-clockpicker-hour li:nth-child(4) { + top: 96px; + right: 4px; +} + +.ui-clockpicker-hour li:nth-child(5) { + top: 142px; + right: 15px; +} + +.ui-clockpicker-hour li:nth-child(6) { + top: 176px; + right: 50px; +} + +.ui-clockpicker-hour li:nth-child(7) { + bottom: 4px; + left: 96px; +} + +.ui-clockpicker-hour li:nth-child(8) { + top: 176px; + left: 50px; +} + +.ui-clockpicker-hour li:nth-child(9) { + top: 142px; + left: 16px; +} +.ui-clockpicker-hour li:nth-child(10) { + top: 96px; + left: 4px; +} +.ui-clockpicker-hour li:nth-child(11) { + top: 50px; + left: 17px; +} +.ui-clockpicker-hour li:nth-child(12) { + top: 16px; + left: 50px; +} + + +.ui-clockpicker-min li:nth-child(1) { + top:5px; + left: 57px; +} +.ui-clockpicker-min li:nth-child(2) { + top: 15px; + right: 32px; +} + +.ui-clockpicker-min li:nth-child(3) { + top: 33px; + right: 13px; +} + +.ui-clockpicker-min li:nth-child(4) { + top: 58px; + right: 5px; +} + +.ui-clockpicker-min li:nth-child(5) { + bottom: 33px; + right: 13px; +} + +.ui-clockpicker-min li:nth-child(6) { + bottom: 15px; + right: 32px; +} + +.ui-clockpicker-min li:nth-child(7) { + bottom: 5px; + left: 57px; +} + +.ui-clockpicker-min li:nth-child(8) { + bottom: 15px; + left: 32px; +} + +.ui-clockpicker-min li:nth-child(9) { + bottom: 33px; + left: 13px; +} +.ui-clockpicker-min li:nth-child(10) { + top: 58px; + left: 5px; +} +.ui-clockpicker-min li:nth-child(11) { + top: 33px; + left: 13px; +} +.ui-clockpicker-min li:nth-child(12) { + top: 15px; + left: 32px; +} +.ui-clockpicker-period { + position: relative; + height: 40px; + margin: 0; + padding: 0; + list-style: none; + margin-top: 5px;; +} +.ui-clockpicker-period li { + position: absolute; + text-transform: uppercase; + top: 6px; +} +.ui-clockpicker-period li.selected{ + background:#689F38; + border: 1px solid green; + color: #fff; + text-shadow: 0 0 1px #333; +} +.ui-clockpicker-period li:nth-child(1) { + left: 20px; + border-radius: 20px; + border: 1px solid #eee; + width: 20px; + height: 20px; + font-size:12px; + padding: 4px 5px; + line-height:20px; + cursor: pointer; +} +.ui-clockpicker-period li:nth-child(2) { + right: 20px; + border-radius: 20px; + border: 1px solid #eee; + width: 19px; + height: 20px; + font-size:12px; + padding: 4px 5px; + line-height: 20px; + cursor: pointer; +} +li.set-current{ + left: 30%; + top: 9px; + font-size: 20px; +} +li.set-current button{ + margin: 0; + min-height: 26px; + line-height: 10px; +} +.time-input-shadow { + padding: 4px 0; + border-bottom: 1px solid #ddd; +} diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/md-datepicker/angular-clockpicker.js b/layouts/v7/modules/Mobile/simple/resources/libs/md-datepicker/angular-clockpicker.js new file mode 100644 index 0000000000000000000000000000000000000000..f51583c2ec540c3cfe18c29b269d2e2388aa7b39 --- /dev/null +++ b/layouts/v7/modules/Mobile/simple/resources/libs/md-datepicker/angular-clockpicker.js @@ -0,0 +1,223 @@ +angular.module("ui.clockpicker", []) + .controller("ClockPickerController", function ($scope) { + }) + .directive("clockpicker", function ($compile) { + return { + restrict: "EA", + templateUrl: "template/clockpicker.html", + scope: { + time12format: "=", + appliedname: '=', + time24format: '=', + frequired: '=ngRequired', + model: '=ngModel' + }, + controller: function ($scope) { + $scope.hourOptions = [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]; + $scope.minuteOptions = ['00', '05', '10', '15', '20', '25', '30', '35', '40', '45', '50', '55']; + $scope.periodOptions = ['AM', 'PM']; + $scope.selectionMode = true; + $scope.fieldName = $scope.appliedname; + $scope.oldDisplayTime = $scope.time12format; + $scope.oldSaveTime = $scope.time24format; + $scope.clockpicker = false; + + $scope.get24hrsTimebyDate = function (date) { + hh = (date.getHours() < 10 ? '0' : '') + date.getHours().toString(), + mm = (date.getMinutes() < 10 ? '0' : '') + date.getMinutes().toString(); + ss = (date.getSeconds() < 10 ? '0' : '') + date.getSeconds().toString(); + return hh + ':' + mm + ':' + ss; + }; + $scope.get12hrsTimebyDate = function (date) { + h = date.getHours(); + hh = h; + period = "AM"; + if (h > 12) { + hh = parseInt(h) - 12; + period = "PM"; + } + hh = (hh < 10 ? '0' : '') + hh.toString(), + mm = (date.getMinutes() < 10 ? '0' : '') + date.getMinutes().toString(); + return hh + ':' + mm + ' ' + period; + }; + $scope.get24hrsTimeby12hrsString = function (datestr) { + var chours = Number((datestr.match(/^(\d+)/) !== null) ? datestr.match(/^(\d+)/)[1] : 0); + var cminutes = Number((datestr.match(/:(\d+)/) !== null) ? datestr.match(/:(\d+)/)[1] : 0); + var AMPM = datestr.match(/\s(.*)$/)[1]; + if (chours < 12 && AMPM == "PM") { + chours = chours + 12; + } + if (chours == 12 && AMPM == "AM") { + chours = chours - 12; + } + hh = (chours < 10 ? '0' : '') + chours, + mm = (cminutes < 10 ? '0' : '') + cminutes; + return hh + ':' + mm + ':00'; + }; + $scope.format24hrsTime = function (datestr) { + var chours = Number((datestr.match(/^(\d+)/) !== null) ? datestr.match(/^(\d+)/)[1] : 0); + var cminutes = Number((datestr.match(/:(\d+)/) !== null) ? datestr.match(/:(\d+)/)[1] : 0); + hh = (chours < 10 ? '0' : '') + chours, + mm = (cminutes < 10 ? '0' : '') + cminutes; + return hh + ':' + mm + ':00'; + }; + $scope.get12hrsTimeby24hrsString = function (datestr) { + var chours = Number((datestr.match(/^(\d+)/) !== null) ? datestr.match(/^(\d+)/)[1] : 0); + var cminutes = Number((datestr.match(/:(\d+)/) !== null) ? datestr.match(/:(\d+)/)[1] : 0); + var period = "AM"; + if (chours > 12) { + chours = parseInt(chours) - 12; + period = "PM"; + } + hh = (chours < 10 ? '0' : '') + chours, + mm = (cminutes < 10 ? '0' : '') + cminutes; + return hh + ':' + mm + ' ' + period; + }; + $scope.format12hrsTime = function (datestr) { + var chours = Number((datestr.match(/^(\d+)/) !== null) ? datestr.match(/^(\d+)/)[1] : 0); + var cminutes = Number((datestr.match(/:(\d+)/) !== null) ? datestr.match(/:(\d+)/)[1] : 0); + var AMPM = datestr.match(/\s(.{2})$/)[1]; + hh = (chours < 10 ? '0' : '') + chours, + mm = (cminutes < 10 ? '0' : '') + cminutes; + return hh + ':' + mm + ' ' + AMPM; + }; + $scope.get12HourNumberby12hrString = function (datestr) { + chours = Number((datestr.match(/^(\d+)/) !== null) ? datestr.match(/^(\d+)/)[1] : 0); + if (chours > 12) { + chours = parseInt(chours) - 12; + } + return chours; + }; + $scope.getMinutesby12hrString = function (datestr) { + cminutes = Number((datestr.match(/:(\d+)/) !== null) ? datestr.match(/:(\d+)/)[1] : 0); + return cminutes; + }; + $scope.getPeriodby12hrsString = function (datestr) { + var period = (datestr.match(/\s(.{2})$/)[1]).toUpperCase(); + if (period !== "AM" && period !== "PM") { + period = "AM"; + } + return period; + }; + + currentDate = new Date(); + $scope.currentTime = $scope.get12hrsTimebyDate(currentDate); + $scope.currentTime24 = $scope.get24hrsTimebyDate(currentDate); + $scope.finalSaveTime = $scope.format24hrsTime($scope.time24format ? $scope.time24format : $scope.currentTime24); + $scope.finalDisplayTime = $scope.format12hrsTime($scope.time12format ? $scope.time12format : $scope.currentTime); + $scope.hour = $scope.get12HourNumberby12hrString($scope.finalDisplayTime); + $scope.minute = $scope.getMinutesby12hrString($scope.finalDisplayTime); + $scope.period = $scope.getPeriodby12hrsString($scope.finalDisplayTime); + + var toggleOnSelection = false; + + var currentIndexMin = function () { + for (var j = 0; j < $scope.minuteOptions.length; j++) { + if ($scope.minuteOptions[j] == $scope.minute) + return j; + else + return $scope.minute; + } + }; + var currentIndexHr = function () { + for (var i = 0; i < $scope.hourOptions.length; i++) { + if ($scope.hourOptions[i] == $scope.hour) + return i; + } + }; + + $scope.selectHourValue = function (value) { + $scope.hour = value; + if (toggleOnSelection) { + $scope.selectionMode = !$scope.selectionMode; + } + $scope.showSelectedDate(); + }; + $scope.selectMinValue = function (value) { + $scope.minute = value; + if (toggleOnSelection) { + $scope.selectionMode = !$scope.selectionMode; + } + $scope.showSelectedDate(); + }; + $scope.selectPeriod = function (value) { + $scope.period = value; + $scope.showSelectedDate(); + }; + $scope.showSelectedDate = function () { + selectedTime = $scope.hour + ":" + $scope.minute + " " + $scope.period; + $scope.finalDisplayTime = $scope.format12hrsTime(selectedTime); + $scope.finalSaveTime = $scope.get24hrsTimeby12hrsString($scope.finalDisplayTime); + }; + + $scope.lineStyleHr = function () { + var angle = "rotate(" + (currentIndexHr() * 30 - 180) + "deg)"; + return "transform: " + angle + "; -webkit-transform: " + angle; + }; + $scope.lineStyleMin = function () { + var angle = "rotate(" + (currentIndexMin() * 6 - 180) + "deg)"; + return "transform: " + angle + "; -webkit-transform: " + angle; + }; + + $scope.cancelpicker = function () { + $scope.clockpicker = false; + $scope.finalDisplayTime = $scope.oldDisplayTime; + $scope.finalSaveTime = $scope.oldSaveTime; + }; + $scope.okpicker = function () { + $scope.clockpicker = false; + $scope.model = $scope.finalSaveTime; + }; + $scope.toggleClockpicker = function () { + $scope.clockpicker = ($scope.clockpicker) ? false : true; + }; + } + }; + } + ) + + .run(["$templateCache", function ($templateCache) { + $templateCache.put("template/clockpicker.html", + "\n" + + "<div>" + + "<input class='time-input' name='fieldName' ng-model='model' type='hidden' ng-required='frequired'>" + + "<div class='time-input-shadow' ng-click='toggleClockpicker()'>{{finalDisplayTime}}</div>" + + "<div class='ui-clockpicker' ng-show='clockpicker'>\n" + + " <md-toolbar><div class='ui-clockpicker-selection'>\n" + + " {{finalDisplayTime}}\n" + + " </div></md-toolbar>\n" + + " <ol class='ui-clockpicker-period'>\n" + + " <li ng-repeat='periodOption in periodOptions' " + + " ng-class='{selected: period == periodOption }' " + + " ng-click='selectPeriod(periodOption)'>{{periodOption}}</li>\n" + + " <li class='set-current'><md-button type='button'> Current Time </md-button></li>\n" + + " </ol>\n" + + " <div class='ui-clockpicker-selector' ng-class='{minute: !selectionMode}'>\n" + + " <div class='clock-wrap'>\n" + + " <div class='ui-clockpicker-origin'></div>" + + " <div class='ui-clockpicker-hourline' style='{{lineStyleHr()}}'>"+ + " <div class='lineH'></div>"+ + " </div>" + + " <div class='ui-clockpicker-minline' style='{{lineStyleMin()}}'>"+ + " <div class='lineM'></div>"+ + " </div>" + + " <ol class='ui-clockpicker-min'>\n" + + " <li ng-repeat='option in minuteOptions' " + + " ng-class='{selected: minute == option }' " + + " ng-click='selectMinValue(option)'>{{option}}</li>\n" + + " </ol>\n" + + " <ol class='ui-clockpicker-hour'>\n" + + " <li ng-repeat='option in hourOptions' " + + " ng-class='{selected: hour == option}' " + + " ng-click='selectHourValue(option)'>{{option}}</li>\n" + + " </ol>\n" + + " </div>\n" + + " </div>\n" + + " <div layout='row' layout-sm='row' layout-align='center center' layout-wrap>\n" + + " <div flex='60'><md-button class='md-mini md-primary' type='button' ng-click='cancelpicker()'> Cancel </md-button></div>\n" + + " <div flex='40'><md-button class='md-mini md-primary' type='button' ng-click='okpicker()'> OK </md-button></div>\n" + + " </div>\n" + + "</div>\n" + + "</div>\n" + + ""); + }]); \ No newline at end of file diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/md-datepicker/angular-datepicker.min.css b/layouts/v7/modules/Mobile/simple/resources/libs/md-datepicker/angular-datepicker.min.css new file mode 100644 index 0000000000000000000000000000000000000000..512d75dd8d76569281c59808f37cd2e15eb5b2aa --- /dev/null +++ b/layouts/v7/modules/Mobile/simple/resources/libs/md-datepicker/angular-datepicker.min.css @@ -0,0 +1 @@ +.datepicker a,[datepicker] a,datepicker a{color:inherit;text-decoration:none}.datepicker a:hover,[datepicker] a:hover,datepicker a:hover{text-decoration:none}.datepicker select,.datepicker select:focus,.datepicker select:hover [datepicker] select,[datepicker] select:focus,[datepicker] select:hover,datepicker select,datepicker select:focus,datepicker select:hover{width:100%;overflow:hidden;background:#138EFA;color:#fff;border:1px solid rgba(0,0,0,.05);height:30px;border-radius:2px}._720kb-datepicker-calendar-body,._720kb-datepicker-calendar-days-header,._720kb-datepicker-calendar-header,._720kb-datepicker-calendar-years-pagination-pages,.datepicker,[datepicker],datepicker{font-family:Helvetica Neue;font-size:13.5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0 auto;float:left;clear:right;position:relative}._720kb-datepicker-calendar{background:#fff;color:#333;position:absolute;z-index:999;min-width:220px;margin:0 auto 0 -.5%;width:101%;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;-moz-box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;box-shadow:0 0 0 1px rgba(0,0,0,.1) inset;visibility:hidden;overflow:hidden;padding:0 0 2%;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}._720kb-datepicker-calendar._720kb-datepicker-open{visibility:visible}._720kb-datepicker-calendar-header{text-align:center;font-size:15px;line-height:40px}._720kb-datepicker-calendar-header:nth-child(odd){background:#138EFA}._720kb-datepicker-calendar-header:nth-child(even){background:#7BC6FC}._720kb-datepicker-calendar-header-left,._720kb-datepicker-calendar-header-middle,._720kb-datepicker-calendar-header-right{width:15%;float:left}._720kb-datepicker-calendar-header-middle{width:70%}._720kb-datepicker-calendar-body{width:96%;margin:2%;text-align:center}._720kb-datepicker-calendar-day{cursor:pointer;font-size:12.5px;width:12.2%;margin:5px 1%;padding:1.5% 0;float:left;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px}._720kb-datepicker-calendar-day._720kb-datepicker-active,._720kb-datepicker-calendar-day:hover{background:rgba(0,0,0,.03)}._720kb-datepicker-calendar-header a,._720kb-datepicker-calendar-header a:hover{text-decoration:none;padding:3% 9% 4%;font-size:13.5px;color:rgba(0,0,0,.55);font-weight:700;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}._720kb-datepicker-calendar-header a:hover{color:rgba(0,0,0,.9);background:rgba(255,255,255,.45)}._720kb-datepicker-calendar-month{color:#fff}._720kb-datepicker-calendar-month span{font-size:13px;margin-left:1%;color:rgba(0,0,0,.4)}._720kb-datepicker-calendar-month a span i{font-style:normal;font-size:15px}._720kb-datepicker-calendar-month a,._720kb-datepicker-calendar-month a:hover{padding:3px;margin-left:1%}._720kb-datepicker-calendar-years-pagination{padding:2% 0 0;float:left;clear:right;width:100%}._720kb-datepicker-calendar-years-pagination a,._720kb-datepicker-calendar-years-pagination a:hover{font-size:12px;padding:0 7px;font-weight:400;margin:3px 1% 0;line-height:20px;display:inline-block}._720kb-datepicker-calendar-years-pagination a._720kb-datepicker-active{color:rgba(0,0,0,.9);font-weight:500;background:rgba(255,255,255,.45)}._720kb-datepicker-calendar-years-pagination-pages a,._720kb-datepicker-calendar-years-pagination-pages a:hover{padding:5px 10px}._720kb-datepicker-calendar-days-header{max-width:100%;margin:0 auto;padding:0 2%;background:rgba(19,142,250,.08);border-bottom:1px solid rgba(0,0,0,.02)}._720kb-datepicker-calendar-days-header div{width:13.2%;font-weight:500;font-size:11.5px;padding:10px .5%;float:left;text-align:center;color:rgba(0,0,0,.7)}._720kb-datepicker-calendar-days ._720kb-datepicker-default-button{font-size:18.5px;position:relative;bottom:-.5px}._720kb-datepicker-calendar-header-middle._720kb-datepicker-mobile-item{width:95%;float:none;margin:0 auto}._720kb-datepicker-item-hidden{visibility:hidden}._720kb-datepicker-calendar-day._720kb-datepicker-disabled,._720kb-datepicker-calendar-day._720kb-datepicker-disabled:hover,._720kb-datepicker-calendar-years-pagination a._720kb-datepicker-active._720kb-datepicker-disabled,._720kb-datepicker-calendar-years-pagination a._720kb-datepicker-active._720kb-datepicker-disabled:hover,._720kb-datepicker-calendar-years-pagination a._720kb-datepicker-disabled,._720kb-datepicker-calendar-years-pagination a._720kb-datepicker-disabled:hover{color:rgba(0,0,0,.2);background:rgba(25,2,0,.02);cursor:default} \ No newline at end of file diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/md-datepicker/angular-datepicker.min.js b/layouts/v7/modules/Mobile/simple/resources/libs/md-datepicker/angular-datepicker.min.js new file mode 100644 index 0000000000000000000000000000000000000000..b19daa8d5d1bdc4e33e5832e299a57a99bcf8fb7 --- /dev/null +++ b/layouts/v7/modules/Mobile/simple/resources/libs/md-datepicker/angular-datepicker.min.js @@ -0,0 +1,12 @@ +/*! + * Angular Datepicker v0.2.10 + * + * Released by 720kb.net under the MIT license + * www.opensource.org/licenses/MIT + * + * 2015-09-02 + */ + + +!function(a){"use strict";a.module("720kb.datepicker",[]).directive("datepicker",["$window","$compile","$locale","$filter","$interpolate",function(b,c,d,e,f){var g=864e5;return{restrict:"AEC",scope:{dateSet:"@",dateMinLimit:"@",dateMaxLimit:"@",dateMonthTitle:"@",dateYearTitle:"@",buttonNextTitle:"@",buttonPrevTitle:"@",dateDisabledDates:"@",dateSetHidden:"@"},link:function(h,i,j){h.dateMonthTitle=h.dateMonthTitle||"Select month",h.dateYearTitle=h.dateYearTitle||"Select year",h.buttonNextTitle=h.buttonNextTitle||"Next",h.buttonPrevTitle=h.buttonPrevTitle||"Prev";var k,l,m,n,o=j.selector,p=a.element(o?i[0].querySelector("."+o):i[0].children[0]),q='<b class="datepicker-default-button">⟨</b>',r='<b class="datepicker-default-button">⟩</b>',s=j.buttonPrev||q,t=j.buttonNext||r,u=j.dateFormat,v=h.$eval(j.dateDisabledDates),w=new Date,x=(e("date")(w,"d"),e("date")(w,"M")),y=(e("date")(w,"yyyy"),!1),z=!1,A=d.DATETIME_FORMATS,B='<div class="_720kb-datepicker-calendar" ng-blur="hideCalendar()"><div class="_720kb-datepicker-calendar-header" ng-hide="isMobile()"><div class="_720kb-datepicker-calendar-header-left"><a href="javascript:void(0)" ng-click="prevMonth()" title="{{buttonPrevTitle}}">'+s+'</a></div><div class="_720kb-datepicker-calendar-header-middle _720kb-datepicker-calendar-month">{{month}} <a href="javascript:void(0)" ng-click="showYearsPagination = !showYearsPagination"><span>{{year}} <i ng-if="!showYearsPagination">▾</i> <i ng-if="showYearsPagination">◹</i> </span> </a></div><div class="_720kb-datepicker-calendar-header-right"><a href="javascript:void(0)" ng-click="nextMonth()" title="{{buttonNextTitle}}">'+t+'</a></div></div><div class="_720kb-datepicker-calendar-header" ng-show="isMobile()"><div class="_720kb-datepicker-calendar-header-middle _720kb-datepicker-mobile-item _720kb-datepicker-calendar-month"><select ng-model="month" title="{{dateMonthTitle}}" ng-change="selectedMonthHandle(month)"><option ng-repeat="item in months" ng-selected="month === item" ng-disabled=\'!isSelectableMaxDate(item + " " + day + ", " + year) || !isSelectableMinDate(item + " " + day + ", " + year)\' ng-value="item">{{item}}</option></select></div></div><div class="_720kb-datepicker-calendar-header" ng-show="isMobile()"><div class="_720kb-datepicker-calendar-header-middle _720kb-datepicker-mobile-item _720kb-datepicker-calendar-month"><select ng-model="mobileYear" title="{{dateYearTitle}}" ng-change="setNewYear(mobileYear)"><option ng-repeat="item in paginationYears" ng-selected="year === item" ng-value="item" ng-disabled="!isSelectableMinYear(item) || !isSelectableMaxYear(item)">{{item}}</option></select></div></div><div class="_720kb-datepicker-calendar-header" ng-show="showYearsPagination"><div class="_720kb-datepicker-calendar-years-pagination"><a ng-class="{\'_720kb-datepicker-active\': y === year, \'_720kb-datepicker-disabled\': !isSelectableMaxYear(y) || !isSelectableMinYear(y)}" href="javascript:void(0)" ng-click="setNewYear(y)" ng-repeat="y in paginationYears">{{y}}</a></div><div class="_720kb-datepicker-calendar-years-pagination-pages"><a href="javascript:void(0)" ng-click="paginateYears(paginationYears[0])" ng-class="{\'_720kb-datepicker-item-hidden\': paginationYearsPrevDisabled}">'+s+'</a><a href="javascript:void(0)" ng-click="paginateYears(paginationYears[paginationYears.length -1 ])" ng-class="{\'_720kb-datepicker-item-hidden\': paginationYearsNextDisabled}">'+t+'</a></div></div><div class="_720kb-datepicker-calendar-days-header"><div ng-repeat="d in daysInString"> {{d}} </div> </div><div class="_720kb-datepicker-calendar-body"><a href="javascript:void(0)" ng-repeat="px in prevMonthDays" class="_720kb-datepicker-calendar-day _720kb-datepicker-disabled">{{px}}</a><a href="javascript:void(0)" ng-repeat="item in days" ng-click="setDatepickerDay(item)" ng-class="{\'_720kb-datepicker-active\': day === item, \'_720kb-datepicker-disabled\': !isSelectableMinDate(year + \'/\' + monthNumber + \'/\' + item ) || !isSelectableMaxDate(year + \'/\' + monthNumber + \'/\' + item) || !isSelectableDate(monthNumber, year, item)}" class="_720kb-datepicker-calendar-day">{{item}}</a><a href="javascript:void(0)" ng-repeat="nx in nextMonthDays" class="_720kb-datepicker-calendar-day _720kb-datepicker-disabled">{{nx}}</a></div></div></div>';B=B.replace(/{{/g,f.startSymbol()).replace(/}}/g,f.endSymbol()),h.$watch("dateSet",function(a){a&&(w=new Date(a),h.month=e("date")(w,"MMMM"),h.monthNumber=Number(e("date")(w,"MM")),h.day=Number(e("date")(w,"dd")),h.year=Number(e("date")(w,"yyyy")),h.setDaysInMonth(h.monthNumber,h.year),"true"!==h.dateSetHidden&&h.setInputValue())}),h.$watch("dateMinLimit",function(a){a&&(l=a)}),h.$watch("dateMaxLimit",function(a){a&&(m=a)}),h.month=e("date")(w,"MMMM"),h.monthNumber=Number(e("date")(w,"MM")),h.day=Number(e("date")(w,"dd")),h.dateMaxLimit?h.year=Number(e("date")(new Date(h.dateMaxLimit),"yyyy")):h.year=Number(e("date")(w,"yyyy")),h.months=A.MONTH,h.daysInString=["0","1","2","3","4","5","6"].map(function(a){return e("date")(new Date(new Date("06/08/2014").valueOf()+g*a),"EEE")}),p.after(c(a.element(B))(h)),k=i[0].querySelector("._720kb-datepicker-calendar"),p.bind("focus click",function(){z=!0,h.showCalendar()}),p.bind("focusout blur",function(){z=!1}),a.element(k).bind("mouseenter",function(){y=!0}),a.element(k).bind("mouseleave",function(){y=!1}),a.element(k).bind("focusin",function(){y=!0}),a.element(b).bind("click focus",function(){y||z||!k||h.hideCalendar()}),h.isMobile=function(){return navigator.userAgent&&(navigator.userAgent.match(/Android/i)||navigator.userAgent.match(/webOS/i)||navigator.userAgent.match(/iPhone/i)||navigator.userAgent.match(/iPad/i)||navigator.userAgent.match(/iPod/i)||navigator.userAgent.match(/BlackBerry/i)||navigator.userAgent.match(/Windows Phone/i))?!0:void 0},h.resetToMinDate=function(){h.month=e("date")(new Date(l),"MMMM"),h.monthNumber=Number(e("date")(new Date(l),"MM")),h.day=Number(e("date")(new Date(l),"dd")),h.year=Number(e("date")(new Date(l),"yyyy"))},h.resetToMaxDate=function(){h.month=e("date")(new Date(m),"MMMM"),h.monthNumber=Number(e("date")(new Date(m),"MM")),h.day=Number(e("date")(new Date(m),"dd")),h.year=Number(e("date")(new Date(m),"yyyy"))},h.nextMonth=function(){12===h.monthNumber?(h.monthNumber=1,h.nextYear()):h.monthNumber+=1,h.month=e("date")(new Date(h.year,h.monthNumber-1),"MMMM"),h.setDaysInMonth(h.monthNumber,h.year),m&&x>h.monthNumber&&(h.isSelectableMaxDate(h.year+"/"+h.monthNumber+"/"+h.day)||h.resetToMaxDate()),h.day=void 0},h.selectedMonthHandle=function(a){h.monthNumber=Number(e("date")(new Date("01 "+a+" 2000"),"MM")),h.setDaysInMonth(h.monthNumber,h.year),h.setInputValue()},h.prevMonth=function(){1===h.monthNumber?(h.monthNumber=12,h.prevYear()):h.monthNumber-=1,h.month=e("date")(new Date(h.year,h.monthNumber-1),"MMMM"),h.setDaysInMonth(h.monthNumber,h.year),l&&(h.isSelectableMinDate(h.year+"/"+h.monthNumber+"/"+h.day)||h.resetToMinDate()),h.day=void 0},h.setNewYear=function(a){if(h.day=void 0,m&&h.year<Number(a)){if(!h.isSelectableMaxYear(a))return}else if(l&&h.year>Number(a)&&!h.isSelectableMinYear(a))return;h.year=Number(a),h.setDaysInMonth(h.monthNumber,h.year),h.paginateYears(a)},h.nextYear=function(){h.year=Number(h.year)+1},h.prevYear=function(){h.year=Number(h.year)-1},h.setInputValue=function(){if(!h.isSelectableMinDate(h.year+"/"+h.monthNumber+"/"+h.day)||!h.isSelectableMaxDate(h.year+"/"+h.monthNumber+"/"+h.day))return!1;var a=new Date(h.year+"/"+h.monthNumber+"/"+h.day);j.dateFormat?p.val(e("date")(a,u)):p.val(a),p.triggerHandler("input"),p.triggerHandler("change")},h.classHelper={add:function(a,b){if(!(a.className.indexOf(b)>-1)){var c=a.className.split(" ");c.push(b),a.className=c.join(" ")}},remove:function(a,b){var c,d;if(-1!==a.className.indexOf(b)){for(d=a.className.split(" "),c=0;c<d.length;c+=1)if(d[c]===b){d=d.slice(0,c).concat(d.slice(c+1));break}a.className=d.join(" ")}}},h.showCalendar=function(){n=b.document.getElementsByClassName("_720kb-datepicker-calendar"),a.forEach(n,function(a,b){n[b].classList?n[b].classList.remove("_720kb-datepicker-open"):h.classHelper.remove(n[b],"_720kb-datepicker-open")}),k.classList?k.classList.add("_720kb-datepicker-open"):h.classHelper.add(k,"_720kb-datepicker-open")},h.hideCalendar=function(){k.classList?k.classList.remove("_720kb-datepicker-open"):h.classHelper.remove(k,"_720kb-datepicker-open")},h.setDaysInMonth=function(a,b){var c,d,e,f,g=new Date(b,a,0).getDate(),i=new Date(b+"/"+a+"/1").getDay(),j=new Date(b+"/"+a+"/"+g).getDay(),k=[],l=[];for(h.days=[],c=1;g>=c;c+=1)h.days.push(c);if(0!==i){for(e=i,f=1===Number(a)?12:a-1,c=1;c<=new Date(b,f,0).getDate();c+=1)k.push(c);h.prevMonthDays=k.slice(-e)}else h.prevMonthDays=[];if(6>j){for(d=6-j,c=1;d>=c;c+=1)l.push(c);h.nextMonthDays=l}else h.nextMonthDays=[]},h.setDatepickerDay=function(a){h.isSelectableDate(h.monthNumber,h.year,a)&&h.isSelectableMaxDate(h.year+"/"+h.monthNumber+"/"+a)&&h.isSelectableMinDate(h.year+"/"+h.monthNumber+"/"+a)&&(h.day=Number(a),h.setInputValue(),h.hideCalendar())},h.paginateYears=function(a){h.paginationYears=[];var b,c=[],d=10,e=10;for(h.isMobile()&&(d=50,e=50,h.dateMinLimit&&h.dateMaxLimit&&(a=new Date(h.dateMaxLimit).getFullYear(),d=a-new Date(h.dateMinLimit).getFullYear(),e=1)),b=d;b>0;b-=1)c.push(Number(a)-b);for(b=0;e>b;b+=1)c.push(Number(a)+b);m&&c&&c.length&&!h.isSelectableMaxYear(Number(c[c.length-1])+1)?h.paginationYearsNextDisabled=!0:h.paginationYearsNextDisabled=!1,l&&c&&c.length&&!h.isSelectableMinYear(Number(c[0])-1)?h.paginationYearsPrevDisabled=!0:h.paginationYearsPrevDisabled=!1,h.paginationYears=c},h.isSelectableDate=function(a,b,c){if(v&&v.length>0){var d=0;for(d;d<=v.length;d+=1)if(new Date(v[d]).getTime()===new Date(a+"/"+c+"/"+b).getTime())return!1}return!0},h.isSelectableMinDate=function(a){return l&&new Date(l)&&new Date(a).getTime()<new Date(l).getTime()?!1:!0},h.isSelectableMaxDate=function(a){return m&&new Date(m)&&new Date(a).getTime()>new Date(m).getTime()?!1:!0},h.isSelectableMaxYear=function(a){return m&&a>new Date(m).getFullYear()?!1:!0},h.isSelectableMinYear=function(a){return l&&a<new Date(l).getFullYear()?!1:!0},l&&!h.isSelectableMinYear(h.year)&&h.resetToMinDate(),m&&!h.isSelectableMaxYear(h.year)&&h.resetToMaxDate(),h.paginateYears(h.year),h.setDaysInMonth(h.monthNumber,h.year)}}}])}(angular); +//# sourceMappingURL=angular-datepicker.sourcemap.map \ No newline at end of file diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/moment/moment-timezone.min.js b/layouts/v7/modules/Mobile/simple/resources/libs/moment/moment-timezone.min.js new file mode 100644 index 0000000000000000000000000000000000000000..0b2aa815cafd4e6bdf4fb137574c384e64981f8b --- /dev/null +++ b/layouts/v7/modules/Mobile/simple/resources/libs/moment/moment-timezone.min.js @@ -0,0 +1,7 @@ +//! moment-timezone.js +//! version : 0.5.6 +//! author : Tim Wood +//! license : MIT +//! github.com/moment/moment-timezone +!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["moment"],b):"object"==typeof module&&module.exports?module.exports=b(require("moment")):b(a.moment)}(this,function(a){"use strict";function b(a){return a>96?a-87:a>64?a-29:a-48}function c(a){var c,d=0,e=a.split("."),f=e[0],g=e[1]||"",h=1,i=0,j=1;for(45===a.charCodeAt(0)&&(d=1,j=-1),d;d<f.length;d++)c=b(f.charCodeAt(d)),i=60*i+c;for(d=0;d<g.length;d++)h/=60,c=b(g.charCodeAt(d)),i+=c*h;return i*j}function d(a){for(var b=0;b<a.length;b++)a[b]=c(a[b])}function e(a,b){for(var c=0;c<b;c++)a[c]=Math.round((a[c-1]||0)+6e4*a[c]);a[b-1]=1/0}function f(a,b){var c,d=[];for(c=0;c<b.length;c++)d[c]=a[b[c]];return d}function g(a){var b=a.split("|"),c=b[2].split(" "),g=b[3].split(""),h=b[4].split(" ");return d(c),d(g),d(h),e(h,g.length),{name:b[0],abbrs:f(b[1].split(" "),g),offsets:f(c,g),untils:h,population:0|b[5]}}function h(a){a&&this._set(g(a))}function i(a){var b=a.toTimeString(),c=b.match(/\([a-z ]+\)/i);c&&c[0]?(c=c[0].match(/[A-Z]/g),c=c?c.join(""):void 0):(c=b.match(/[A-Z]{3,5}/g),c=c?c[0]:void 0),"GMT"===c&&(c=void 0),this.at=+a,this.abbr=c,this.offset=a.getTimezoneOffset()}function j(a){this.zone=a,this.offsetScore=0,this.abbrScore=0}function k(a,b){for(var c,d;d=6e4*((b.at-a.at)/12e4|0);)c=new i(new Date(a.at+d)),c.offset===a.offset?a=c:b=c;return a}function l(){var a,b,c,d=(new Date).getFullYear()-2,e=new i(new Date(d,0,1)),f=[e];for(c=1;c<48;c++)b=new i(new Date(d,c,1)),b.offset!==e.offset&&(a=k(e,b),f.push(a),f.push(new i(new Date(a.at+6e4)))),e=b;for(c=0;c<4;c++)f.push(new i(new Date(d+c,0,1))),f.push(new i(new Date(d+c,6,1)));return f}function m(a,b){return a.offsetScore!==b.offsetScore?a.offsetScore-b.offsetScore:a.abbrScore!==b.abbrScore?a.abbrScore-b.abbrScore:b.zone.population-a.zone.population}function n(a,b){var c,e;for(d(b),c=0;c<b.length;c++)e=b[c],I[e]=I[e]||{},I[e][a]=!0}function o(a){var b,c,d,e=a.length,f={},g=[];for(b=0;b<e;b++){d=I[a[b].offset]||{};for(c in d)d.hasOwnProperty(c)&&(f[c]=!0)}for(b in f)f.hasOwnProperty(b)&&g.push(H[b]);return g}function p(){try{var a=Intl.DateTimeFormat().resolvedOptions().timeZone;if(a){var b=H[r(a)];if(b)return b;z("Moment Timezone found "+a+" from the Intl api, but did not have that data loaded.")}}catch(c){}var d,e,f,g=l(),h=g.length,i=o(g),k=[];for(e=0;e<i.length;e++){for(d=new j(t(i[e]),h),f=0;f<h;f++)d.scoreOffsetAt(g[f]);k.push(d)}return k.sort(m),k.length>0?k[0].zone.name:void 0}function q(a){return D&&!a||(D=p()),D}function r(a){return(a||"").toLowerCase().replace(/\//g,"_")}function s(a){var b,c,d,e;for("string"==typeof a&&(a=[a]),b=0;b<a.length;b++)d=a[b].split("|"),c=d[0],e=r(c),F[e]=a[b],H[e]=c,d[5]&&n(e,d[2].split(" "))}function t(a,b){a=r(a);var c,d=F[a];return d instanceof h?d:"string"==typeof d?(d=new h(d),F[a]=d,d):G[a]&&b!==t&&(c=t(G[a],t))?(d=F[a]=new h,d._set(c),d.name=H[a],d):null}function u(){var a,b=[];for(a in H)H.hasOwnProperty(a)&&(F[a]||F[G[a]])&&H[a]&&b.push(H[a]);return b.sort()}function v(a){var b,c,d,e;for("string"==typeof a&&(a=[a]),b=0;b<a.length;b++)c=a[b].split("|"),d=r(c[0]),e=r(c[1]),G[d]=e,H[d]=c[0],G[e]=d,H[e]=c[1]}function w(a){s(a.zones),v(a.links),A.dataVersion=a.version}function x(a){return x.didShowError||(x.didShowError=!0,z("moment.tz.zoneExists('"+a+"') has been deprecated in favor of !moment.tz.zone('"+a+"')")),!!t(a)}function y(a){return!(!a._a||void 0!==a._tzm)}function z(a){"undefined"!=typeof console&&"function"==typeof console.error&&console.error(a)}function A(b){var c=Array.prototype.slice.call(arguments,0,-1),d=arguments[arguments.length-1],e=t(d),f=a.utc.apply(null,c);return e&&!a.isMoment(b)&&y(f)&&f.add(e.parse(f),"minutes"),f.tz(d),f}function B(a){return function(){return this._z?this._z.abbr(this):a.call(this)}}function C(a){return function(){return this._z=null,a.apply(this,arguments)}}if(void 0!==a.tz)return z("Moment Timezone "+a.tz.version+" was already loaded "+(a.tz.dataVersion?"with data from ":"without any data")+a.tz.dataVersion),a;var D,E="0.5.6",F={},G={},H={},I={},J=a.version.split("."),K=+J[0],L=+J[1];(K<2||2===K&&L<6)&&z("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js "+a.version+". See momentjs.com"),h.prototype={_set:function(a){this.name=a.name,this.abbrs=a.abbrs,this.untils=a.untils,this.offsets=a.offsets,this.population=a.population},_index:function(a){var b,c=+a,d=this.untils;for(b=0;b<d.length;b++)if(c<d[b])return b},parse:function(a){var b,c,d,e,f=+a,g=this.offsets,h=this.untils,i=h.length-1;for(e=0;e<i;e++)if(b=g[e],c=g[e+1],d=g[e?e-1:e],b<c&&A.moveAmbiguousForward?b=c:b>d&&A.moveInvalidForward&&(b=d),f<h[e]-6e4*b)return g[e];return g[i]},abbr:function(a){return this.abbrs[this._index(a)]},offset:function(a){return this.offsets[this._index(a)]}},j.prototype.scoreOffsetAt=function(a){this.offsetScore+=Math.abs(this.zone.offset(a.at)-a.offset),this.zone.abbr(a.at).replace(/[^A-Z]/g,"")!==a.abbr&&this.abbrScore++},A.version=E,A.dataVersion="",A._zones=F,A._links=G,A._names=H,A.add=s,A.link=v,A.load=w,A.zone=t,A.zoneExists=x,A.guess=q,A.names=u,A.Zone=h,A.unpack=g,A.unpackBase60=c,A.needsOffset=y,A.moveInvalidForward=!0,A.moveAmbiguousForward=!1;var M=a.fn;a.tz=A,a.defaultZone=null,a.updateOffset=function(b,c){var d,e=a.defaultZone;void 0===b._z&&(e&&y(b)&&!b._isUTC&&(b._d=a.utc(b._a)._d,b.utc().add(e.parse(b),"minutes")),b._z=e),b._z&&(d=b._z.offset(b),Math.abs(d)<16&&(d/=60),void 0!==b.utcOffset?b.utcOffset(-d,c):b.zone(d,c))},M.tz=function(b){return b?(this._z=t(b),this._z?a.updateOffset(this):z("Moment Timezone has no data for "+b+". See http://momentjs.com/timezone/docs/#/data-loading/."),this):this._z?this._z.name:void 0},M.zoneName=B(M.zoneName),M.zoneAbbr=B(M.zoneAbbr),M.utc=C(M.utc),a.tz.setDefault=function(b){return(K<2||2===K&&L<9)&&z("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js "+a.version+"."),a.defaultZone=b?t(b):null,a};var N=a.momentProperties;return"[object Array]"===Object.prototype.toString.call(N)?(N.push("_z"),N.push("_a")):N&&(N._z=null),w({version:"2016g",zones:["Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5","Africa/Accra|LMT GMT GHST|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE|41e5","Africa/Nairobi|LMT EAT BEAT BEAUT|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ|47e5","Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5","Africa/Lagos|LMT WAT|-d.A -10|01|-22y0d.A|17e6","Africa/Bissau|LMT WAT GMT|12.k 10 0|012|-2ldWV.E 2xonV.E|39e4","Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5","Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6","Africa/Casablanca|LMT WET WEST CET|u.k 0 -10 -10|0121212121212121213121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|32e5","Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1y7p0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3","Africa/El_Aaiun|LMT WAT WET WEST|Q.M 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|20e4","Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5","Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|01212121212121212121212121212121213|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0|51e5","Africa/Monrovia|MMT LRT GMT|H.8 I.u 0|012|-23Lzg.Q 29s01.m|11e5","Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5","Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5","Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5","Africa/Windhoek|SWAT SAST SAST CAT WAT WAST|-1u -20 -30 -20 -10 -20|012134545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2GJdu 1Ajdu 1cL0 1SqL0 9NA0 11D0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0|32e4","America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326","America/Anchorage|CAT CAWT CAPT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4","America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3","America/Araguaina|LMT BRT BRST|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4","America/Argentina/Buenos_Aires|CMT ART ARST ART ARST|4g.M 40 30 30 20|0121212121212121212121212121212121212121213434343434343234343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 j3c0 uL0 1qN0 WL0","America/Argentina/Catamarca|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343454343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0","America/Argentina/Cordoba|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343454343234343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 j3c0 uL0 1qN0 WL0","America/Argentina/Jujuy|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|01212121212121212121212121212121212121212134343456543432343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 g0p0 10M0 j3c0 uL0","America/Argentina/La_Rioja|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434534343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0","America/Argentina/Mendoza|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|0121212121212121212121212121212121212121213434345656543235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 g0p0 10M0 agM0 Op0 7TX0 uL0","America/Argentina/Rio_Gallegos|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343434343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0","America/Argentina/Salta|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434543432343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 j3c0 uL0","America/Argentina/San_Juan|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434534343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 g0p0 10M0 ak00 m10 8lb0 uL0","America/Argentina/San_Luis|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|01212121212121212121212121212121212121212134343456536353465653|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 kin0 10M0 ak00 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0","America/Argentina/Tucuman|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|012121212121212121212121212121212121212121343434345434323534343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 ako0 4N0 8BX0 uL0 1qN0 WL0","America/Argentina/Ushuaia|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343434343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 ajA0 8p0 8zb0 uL0","America/Curacao|LMT ANT AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4","America/Asuncion|AMT PYT PYT PYST|3O.E 40 30 30|012131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5","America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2","America/Bahia|LMT BRT BRST|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5","America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3","America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4","America/Belem|LMT BRT BRST|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5","America/Belize|LMT CST CHDT CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0|57e3","America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2","America/Boa_Vista|LMT AMT AMST|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2","America/Bogota|BMT COT COST|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5","America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4","America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2","America/Campo_Grande|LMT AMT AMST|3C.s 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0|77e4","America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4","America/Caracas|CMT VET VET|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5","America/Cayenne|LMT GFT GFT|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3","America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5","America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5","America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4","America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5","America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2","America/Cuiaba|LMT AMT AMST|3I.k 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0|54e4","America/Danmarkshavn|LMT WGT WGST GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8","America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|13e2","America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3","America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5","America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|01234252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 Jy10 SL0 dnB0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5","America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5","America/Eirunepe|LMT ACT ACST AMT|4D.s 50 40 40|0121212121212121212121212121212131|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3","America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5","America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5","America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2","America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Fortaleza|LMT BRT BRST|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5","America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","America/Godthab|LMT WGT WGST|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3","America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2","America/Grand_Turk|KMT EST EDT AST|57.b 50 40 40|0121212121212121212121212121212121212121212121212121212121212121212121212123|-2l1uQ.N 2HHBQ.N 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2","America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5","America/Guayaquil|QMT ECT|5e 50|01|-1yVSK|27e5","America/Guyana|LMT GBGT GYT GYT GYT|3Q.E 3J 3J 30 40|01234|-2dvU7.k 24JzQ.k mlc0 Bxbf|80e4","America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4","America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5","America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4","America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2","America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2","America/Jamaica|KMT EST EDT|57.b 50 40|0121212121212121212121|-2l1uQ.N 2uM1Q.N 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4","America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3","America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/La_Paz|CMT BOST BOT|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5","America/Lima|LMT PET PEST|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6","America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6","America/Maceio|LMT BRT BRST|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4","America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5","America/Manaus|LMT AMT AMST|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5","America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4","America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4","America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4","America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2","America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5","America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|0120303030303030303030303030303030454545454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6","America/Miquelon|LMT AST PMST PMDT|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2","America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3","America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5","America/Montevideo|MMT UYT UYHST UYST UYT UYHST|3I.I 3u 30 20 30 2u|012121212121212121212121213434343434345454543453434343434343434343434343434343434343434|-20UIf.g 8jzJ.g 1cLu 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1qMu WLu 1qMu 11zu 1o0u 11zu NAu 11bu 2iMu zWu Dq10 19X0 pd0 jz0 cm10 19X0 1fB0 1on0 11d0 1oL0 1nB0 1fzu 1aou 1fzu 1aou 1fzu 3nAu Jb0 3MN0 1SLu 4jzu 2PB0 Lb0 3Dd0 1pb0 ixd0 An0 1MN0 An0 1wp0 On0 1wp0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5","America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5","America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4","America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6","America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2","America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2","America/Noronha|LMT FNT FNST|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2","America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2","America/Paramaribo|LMT PMT PMT NEGT SRT SRT|3E.E 3E.Q 3E.A 3u 3u 30|012345|-2nDUj.k Wqo0.c qanX.I 1dmLN.o lzc0|24e4","America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5","America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Rio_Branco|LMT ACT ACST AMT|4v.c 50 40 40|01212121212121212121212121212131|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4","America/Porto_Velho|LMT AMT AMST|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4","America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5","America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842","America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2","America/Recife|LMT BRT BRST|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5","America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4","America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229","America/Santarem|LMT AMT AMST BRT|3C.M 40 30 30|0121212121212121212121212121213|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4","America/Santiago|SMT CLT CLT CLST CLST|4G.K 50 40 40 30|010203131313131212421242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|62e5","America/Santo_Domingo|SDMT EST EDT EHDT AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5","America/Sao_Paulo|LMT BRT BRST|36.s 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0|20e6","America/Scoresbysund|LMT CGT CGST EGST EGT|1r.Q 20 10 0 10|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452","America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2","America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3","America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5","America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656","America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4","America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5","America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3","America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4","America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642","America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3","Antarctica/Casey|-00 +08 +11|0 -80 -b0|012121|-2q00 1DjS0 T90 40P0 KL0|10","Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70","Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80","Antarctica/Macquarie|AEST AEDT -00 MIST|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1","Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60","Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5","Antarctica/Palmer|-00 ARST ART ART ARST CLT CLST|0 30 40 30 20 40 30|0121212121234356565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|40","Antarctica/Rothera|-00 -03|0 30|01|gOo0|130","Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20","Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40","Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25","Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4","Asia/Riyadh|LMT AST|-36.Q -30|01|-TvD6.Q|57e5","Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5","Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5","Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3","Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4","Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4","Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4","Asia/Baghdad|BMT AST ADT|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5","Asia/Qatar|LMT GST AST|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4","Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5","Asia/Bangkok|BMT ICT|-6G.4 -70|01|-218SG.4|15e6","Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5","Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4","Asia/Brunei|LMT BNT BNT|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4","Asia/Kolkata|HMT BURT IST IST|-5R.k -6u -5u -6u|01232|-18LFR.k 1unn.k HB0 7zX0|15e6","Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4","Asia/Choibalsan|LMT ULAT ULAT CHOST CHOT CHOT CHOST|-7C -70 -80 -a0 -90 -80 -90|0123434343434343434343434343434343434343434343456565656565656565656565656565656565656565656565|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0|38e3","Asia/Shanghai|CST CDT|-80 -90|01010101010101010|-1c1I0 LX0 16p0 1jz0 1Myp0 Rb0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6","Asia/Colombo|MMT IST IHST IST LKT LKT|-5j.w -5u -60 -6u -6u -60|01231451|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5","Asia/Dhaka|HMT BURT IST DACT BDT BDST|-5R.k -6u -5u -60 -60 -70|01213454|-18LFR.k 1unn.k HB0 m6n0 LqMu 1x6n0 1i00|16e6","Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5","Asia/Dili|LMT TLT JST TLT WITA|-8m.k -80 -90 -90 -80|012343|-2le8m.k 1dnXm.k 8HA0 1ew00 Xld0|19e4","Asia/Dubai|LMT GST|-3F.c -40|01|-21JfF.c|39e5","Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4","Asia/Gaza|EET EET EEST IST IDT|-20 -30 -30 -20 -30|010101010102020202020202020202023434343434343434343434343430202020202020202020202020202020202020202020202020202020202020202020202020202020202020|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1ny0 1220 1qm0 1220 1ny0 1220 1ny0 1220 1ny0 1220 1ny0 1220 1ny0 1220 1qm0 1220 1ny0 1220 1ny0 1220 1ny0 1220 1ny0 1220 1qm0 1220 1ny0 1220 1ny0 1220 1ny0 1220 1ny0 1220 1ny0 1220 1qm0 1220 1ny0 1220 1ny0 1220 1ny0|18e5","Asia/Hebron|EET EET EEST IST IDT|-20 -30 -30 -20 -30|01010101010202020202020202020202343434343434343434343434343020202020202020202020202020202020202020202020202020202020202020202020202020202020202020|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1ny0 1220 1qm0 1220 1ny0 1220 1ny0 1220 1ny0 1220 1ny0 1220 1ny0 1220 1qm0 1220 1ny0 1220 1ny0 1220 1ny0 1220 1ny0 1220 1qm0 1220 1ny0 1220 1ny0 1220 1ny0 1220 1ny0 1220 1ny0 1220 1qm0 1220 1ny0 1220 1ny0 1220 1ny0|25e4","Asia/Ho_Chi_Minh|LMT PLMT ICT IDT JST|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5","Asia/Hong_Kong|LMT HKT HKST JST|-7A.G -80 -90 -90|0121312121212121212121212121212121212121212121212121212121212121212121|-2CFHA.G 1sEP6.G 1cL0 ylu 93X0 1qQu 1tX0 Rd0 1In0 NB0 1cL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1kL0 14N0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5","Asia/Hovd|LMT HOVT HOVT HOVST|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0|81e3","Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Europe/Istanbul|IMT EET EEST +04 +03|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212124|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1df0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6","Asia/Jakarta|BMT JAVT WIB JST WIB WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6","Asia/Jayapura|LMT WIT ACST|-9m.M -90 -9u|0121|-1uu9m.M sMMm.M L4nu|26e4","Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212132121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4","Asia/Kabul|AFT AFT|-40 -4u|01|-10Qs0|46e5","Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4","Asia/Karachi|LMT IST IST KART PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6","Asia/Urumqi|LMT XJT|-5O.k -60|01|-1GgtO.k|32e5","Asia/Kathmandu|LMT IST NPT|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5","Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2","Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Asia/Kuala_Lumpur|SMT MALT MALST MALT MALT JST MYT|-6T.p -70 -7k -7k -7u -90 -80|01234546|-2Bg6T.p 17anT.p 7hXE dM00 17bO 8Fyu 1so1u|71e5","Asia/Kuching|LMT BORT BORT BORTST JST MYT|-7l.k -7u -80 -8k -90 -80|01232323232323232425|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0 1so10|13e4","Asia/Macau|LMT MOT MOST CST|-7y.k -80 -90 -80|0121212121212121212121212121212121212121213|-2le7y.k 1XO34.k 1wn0 Rd0 1wn0 R9u 1wqu U10 1tz0 TVu 1tz0 17gu 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cOu 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cL0 KEp0|57e4","Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3","Asia/Makassar|LMT MMT WITA JST|-7V.A -7V.A -80 -90|01232|-21JjV.A vfc0 myLV.A 8ML0|15e5","Asia/Manila|PHT PHST JST|-80 -90 -90|010201010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6","Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4","Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4","Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5","Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5","Asia/Oral|LMT +04 +05 +06|-3p.o -40 -50 -60|01232323232323232121212121212121212121212121212|-1Pc3p.o eUnp.o 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4","Asia/Pontianak|LMT PMT WIB JST WIB WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4","Asia/Pyongyang|LMT KST JCST JST KST|-8n -8u -90 -90 -90|012341|-2um8n 97XR 12FXu jdA0 2Onc0|29e5","Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|0123232323232323232323232323232323232323232323|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|73e4","Asia/Rangoon|RMT BURT JST MMT|-6o.E -6u -90 -6u|0123|-21Jio.E SmnS.E 7j9u|48e5","Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4","Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4","Asia/Seoul|LMT KST JCST JST KST KDT KDT|-8r.Q -8u -90 -90 -90 -9u -a0|01234151515151515146464|-2um8r.Q 97XV.Q 12FXu jjA0 kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6","Asia/Singapore|SMT MALT MALST MALT MALT JST SGT SGT|-6T.p -70 -7k -7k -7u -90 -7u -80|012345467|-2Bg6T.p 17anT.p 7hXE dM00 17bO 8Fyu Mspu DTA0|56e5","Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2","Asia/Taipei|JWST JST CST CDT|-80 -90 -80 -90|01232323232323232323232323232323232323232|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5","Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5","Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5","Asia/Tehran|LMT TMT IRST IRST IRDT IRDT|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6","Asia/Thimphu|LMT IST BTT|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3","Asia/Tokyo|JCST JST JDT|-90 -90 -a0|0121212121|-1iw90 pKq0 QL0 1lB0 13X0 1zB0 NX0 1zB0 NX0|38e6","Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5","Asia/Ulaanbaatar|LMT ULAT ULAT ULAST|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0|12e5","Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2","Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4","Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4","Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5","Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5","Atlantic/Azores|HMT AZOT AZOST AZOMT AZOT AZOST WET|1S.w 20 10 0 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545456545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldW5.s aPX5.s Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4","Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3","Atlantic/Canary|LMT CANT WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Atlantic/Cape_Verde|LMT CVT CVST CVT|1y.4 20 10 10|01213|-2xomp.U 1qOMp.U 7zX0 1djf0|50e4","Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3","Atlantic/Madeira|FMT MADT MADST MADMT WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldWQ.o aPWQ.o Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4","Atlantic/Reykjavik|LMT IST ISST GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4","Atlantic/South_Georgia|GST|20|0||30","Atlantic/Stanley|SMT FKT FKST FKT FKST|3P.o 40 30 30 20|0121212121212134343212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 U10 1qM0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2","Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5","Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5","Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5","Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3","Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|746","Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0|12e4","Australia/Eucla|ACWST ACWDT|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368","Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4","Australia/Lord_Howe|AEST LHST LHDT LHDT|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347","Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10","Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5","Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5","CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Pacific/Easter|EMT EAST EASST EAST EASST|7h.s 70 60 60 50|0121212121212121212121212121234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|30e2","EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","EST|EST|50|0|","EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g5X0 14p0 1wn0 17d0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Etc/GMT+0|GMT|0|0|","Etc/GMT+1|-01|10|0|","Etc/GMT+10|-10|a0|0|","Etc/GMT+11|-11|b0|0|","Etc/GMT+12|-12|c0|0|","Etc/GMT+2|-02|20|0|","Etc/GMT+3|-03|30|0|","Etc/GMT+4|-04|40|0|","Etc/GMT+5|-05|50|0|","Etc/GMT+6|-06|60|0|","Etc/GMT+7|-07|70|0|","Etc/GMT+8|-08|80|0|","Etc/GMT+9|-09|90|0|","Etc/GMT-1|+01|-10|0|","Etc/GMT-10|+10|-a0|0|","Etc/GMT-11|+11|-b0|0|","Etc/GMT-12|+12|-c0|0|","Etc/GMT-13|+13|-d0|0|","Etc/GMT-14|+14|-e0|0|","Etc/GMT-2|+02|-20|0|","Etc/GMT-3|+03|-30|0|","Etc/GMT-4|+04|-40|0|","Etc/GMT-5|+05|-50|0|","Etc/GMT-6|+06|-60|0|","Etc/GMT-7|+07|-70|0|","Etc/GMT-8|+08|-80|0|","Etc/GMT-9|+09|-90|0|","Etc/UCT|UCT|0|0|","Etc/UTC|UTC|0|0|","Europe/Amsterdam|AMT NST NEST NET CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5","Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3","Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5","Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6","Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5","Europe/Prague|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 16M0 1lc0 1tA0 17A0 11c0 1io0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5","Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5","Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5","Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4","Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4","Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3","Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET +03|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454546767676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4","Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5","Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4","Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ldXn.f aPWn.f Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5","Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|01010101010101010101010121212121234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-28dd0 11A0 1go0 19A0 1co0 1dA0 b1A0 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 iyo0 Rc0 18o0 1hc0 1io0 1a00 14o0 5aL0 MM0 1vc0 17A0 1i00 1bc0 1eo0 17d0 1in0 17A0 6hA0 10N0 XIL0 1a10 1in0 17d0 19X0 1cN0 1fz0 1a10 1fX0 1cp0 1cO0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5","Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2as10 M00 1cM0 1cM0 14o0 1o00 WM0 1qM0 17c0 1cM0 M3A0 5M20 WM0 1fA0 1cM0 1cM0 1cM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 Lz0 1C10 Lz0 1EN0 Lz0 1C10 Lz0 1zd0 Oo0 1C00 On0 1cp0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5","Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3","Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6","Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6","Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4","Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2as10 M00 1cM0 1cM0 14o0 1o00 WM0 1qM0 17c0 1cM0 M3A0 5M20 WM0 1fA0 1cM0 16K0 1iO0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 Lz0 1C10 Lz0 1EN0 Lz0 1C10 Lz0 1zd0 Oo0 1C00 On0 1C10 Lz0 1zd0 On0 1C10 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5","Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5","Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4","Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5","Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5","Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4","Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4","Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0","Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4","Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5","Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4","Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|01232323232323232121212121212121212121212121212121212121212121|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5","Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5","Europe/Zaporozhye|CUT EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4","HST|HST|a0|0|","Indian/Chagos|LMT IOT IOT|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2","Indian/Christmas|CXT|-70|0||21e2","Indian/Cocos|CCT|-6u|0||596","Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130","Indian/Mahe|LMT SCT|-3F.M -40|01|-2yO3F.M|79e3","Indian/Maldives|MMT MVT|-4S -50|01|-olgS|35e4","Indian/Mauritius|LMT MUT MUST|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4","Indian/Reunion|LMT RET|-3F.Q -40|01|-2mDDF.Q|84e4","Pacific/Kwajalein|MHT KWAT MHT|-b0 c0 -c0|012|-AX0 W9X0|14e3","MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00","MST|MST|70|0|","MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Pacific/Chatham|CHAST CHAST CHADT|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600","PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0","Pacific/Apia|LMT WSST SST SDT WSDT WSST|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3","Pacific/Bougainville|PGT JST BST|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4","Pacific/Chuuk|CHUT|-a0|0||49e3","Pacific/Efate|LMT VUT VUST|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3","Pacific/Enderbury|PHOT PHOT PHOT|c0 b0 -d0|012|nIc0 B8n0|1","Pacific/Fakaofo|TKT TKT|b0 -d0|01|1Gfn0|483","Pacific/Fiji|LMT FJT FJST|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0|88e4","Pacific/Funafuti|TVT|-c0|0||45e2","Pacific/Galapagos|LMT ECT GALT|5W.o 50 60|012|-1yVS1.A 2dTz1.A|25e3","Pacific/Gambier|LMT GAMT|8X.M 90|01|-2jof0.c|125","Pacific/Guadalcanal|LMT SBT|-aD.M -b0|01|-2joyD.M|11e4","Pacific/Guam|GST ChST|-a0 -a0|01|1fpq0|17e4","Pacific/Honolulu|HST HDT HST|au 9u a0|010102|-1thLu 8x0 lef0 8Pz0 46p0|37e4","Pacific/Kiritimati|LINT LINT LINT|aE a0 -e0|012|nIaE B8nk|51e2","Pacific/Kosrae|KOST KOST|-b0 -c0|010|-AX0 1bdz0|66e2","Pacific/Majuro|MHT MHT|-b0 -c0|01|-AX0|28e3","Pacific/Marquesas|LMT MART|9i 9u|01|-2joeG|86e2","Pacific/Pago_Pago|LMT NST BST SST|bm.M b0 b0 b0|0123|-2nDMB.c 2gVzB.c EyM0|37e2","Pacific/Nauru|LMT NRT JST NRT|-b7.E -bu -90 -c0|01213|-1Xdn7.E PvzB.E 5RCu 1ouJu|10e3","Pacific/Niue|NUT NUT NUT|bk bu b0|012|-KfME 17y0a|12e2","Pacific/Norfolk|NMT NFT NFST NFT|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0|25e4","Pacific/Noumea|LMT NCT NCST|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3","Pacific/Palau|PWT|-90|0||21e3","Pacific/Pitcairn|PNT PST|8u 80|01|18Vku|56","Pacific/Pohnpei|PONT|-b0|0||34e3","Pacific/Port_Moresby|PGT|-a0|0||25e4","Pacific/Rarotonga|CKT CKHST CKT|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3","Pacific/Tahiti|LMT TAHT|9W.g a0|01|-2joe1.I|18e4","Pacific/Tarawa|GILT|-c0|0||29e3","Pacific/Tongatapu|TOT TOT TOST|-ck -d0 -e0|01212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0|75e3","Pacific/Wake|WAKT|-c0|0||16e3","Pacific/Wallis|WFT|-c0|0||94","WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00"], +links:["Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abidjan|Africa/Conakry","Africa/Abidjan|Africa/Dakar","Africa/Abidjan|Africa/Freetown","Africa/Abidjan|Africa/Lome","Africa/Abidjan|Africa/Nouakchott","Africa/Abidjan|Africa/Ouagadougou","Africa/Abidjan|Africa/Sao_Tome","Africa/Abidjan|Africa/Timbuktu","Africa/Abidjan|Atlantic/St_Helena","Africa/Cairo|Egypt","Africa/Johannesburg|Africa/Maseru","Africa/Johannesburg|Africa/Mbabane","Africa/Khartoum|Africa/Juba","Africa/Lagos|Africa/Bangui","Africa/Lagos|Africa/Brazzaville","Africa/Lagos|Africa/Douala","Africa/Lagos|Africa/Kinshasa","Africa/Lagos|Africa/Libreville","Africa/Lagos|Africa/Luanda","Africa/Lagos|Africa/Malabo","Africa/Lagos|Africa/Niamey","Africa/Lagos|Africa/Porto-Novo","Africa/Maputo|Africa/Blantyre","Africa/Maputo|Africa/Bujumbura","Africa/Maputo|Africa/Gaborone","Africa/Maputo|Africa/Harare","Africa/Maputo|Africa/Kigali","Africa/Maputo|Africa/Lubumbashi","Africa/Maputo|Africa/Lusaka","Africa/Nairobi|Africa/Addis_Ababa","Africa/Nairobi|Africa/Asmara","Africa/Nairobi|Africa/Asmera","Africa/Nairobi|Africa/Dar_es_Salaam","Africa/Nairobi|Africa/Djibouti","Africa/Nairobi|Africa/Kampala","Africa/Nairobi|Africa/Mogadishu","Africa/Nairobi|Indian/Antananarivo","Africa/Nairobi|Indian/Comoro","Africa/Nairobi|Indian/Mayotte","Africa/Tripoli|Libya","America/Adak|America/Atka","America/Adak|US/Aleutian","America/Anchorage|US/Alaska","America/Argentina/Buenos_Aires|America/Buenos_Aires","America/Argentina/Catamarca|America/Argentina/ComodRivadavia","America/Argentina/Catamarca|America/Catamarca","America/Argentina/Cordoba|America/Cordoba","America/Argentina/Cordoba|America/Rosario","America/Argentina/Jujuy|America/Jujuy","America/Argentina/Mendoza|America/Mendoza","America/Atikokan|America/Coral_Harbour","America/Chicago|US/Central","America/Curacao|America/Aruba","America/Curacao|America/Kralendijk","America/Curacao|America/Lower_Princes","America/Denver|America/Shiprock","America/Denver|Navajo","America/Denver|US/Mountain","America/Detroit|US/Michigan","America/Edmonton|Canada/Mountain","America/Fort_Wayne|America/Indiana/Indianapolis","America/Fort_Wayne|America/Indianapolis","America/Fort_Wayne|US/East-Indiana","America/Halifax|Canada/Atlantic","America/Havana|Cuba","America/Indiana/Knox|America/Knox_IN","America/Indiana/Knox|US/Indiana-Starke","America/Jamaica|Jamaica","America/Kentucky/Louisville|America/Louisville","America/Los_Angeles|US/Pacific","America/Los_Angeles|US/Pacific-New","America/Manaus|Brazil/West","America/Mazatlan|Mexico/BajaSur","America/Mexico_City|Mexico/General","America/New_York|US/Eastern","America/Noronha|Brazil/DeNoronha","America/Panama|America/Cayman","America/Phoenix|US/Arizona","America/Port_of_Spain|America/Anguilla","America/Port_of_Spain|America/Antigua","America/Port_of_Spain|America/Dominica","America/Port_of_Spain|America/Grenada","America/Port_of_Spain|America/Guadeloupe","America/Port_of_Spain|America/Marigot","America/Port_of_Spain|America/Montserrat","America/Port_of_Spain|America/St_Barthelemy","America/Port_of_Spain|America/St_Kitts","America/Port_of_Spain|America/St_Lucia","America/Port_of_Spain|America/St_Thomas","America/Port_of_Spain|America/St_Vincent","America/Port_of_Spain|America/Tortola","America/Port_of_Spain|America/Virgin","America/Regina|Canada/East-Saskatchewan","America/Regina|Canada/Saskatchewan","America/Rio_Branco|America/Porto_Acre","America/Rio_Branco|Brazil/Acre","America/Santiago|Chile/Continental","America/Sao_Paulo|Brazil/East","America/St_Johns|Canada/Newfoundland","America/Tijuana|America/Ensenada","America/Tijuana|America/Santa_Isabel","America/Tijuana|Mexico/BajaNorte","America/Toronto|America/Montreal","America/Toronto|Canada/Eastern","America/Vancouver|Canada/Pacific","America/Whitehorse|Canada/Yukon","America/Winnipeg|Canada/Central","Asia/Ashgabat|Asia/Ashkhabad","Asia/Bangkok|Asia/Phnom_Penh","Asia/Bangkok|Asia/Vientiane","Asia/Dhaka|Asia/Dacca","Asia/Dubai|Asia/Muscat","Asia/Ho_Chi_Minh|Asia/Saigon","Asia/Hong_Kong|Hongkong","Asia/Jerusalem|Asia/Tel_Aviv","Asia/Jerusalem|Israel","Asia/Kathmandu|Asia/Katmandu","Asia/Kolkata|Asia/Calcutta","Asia/Macau|Asia/Macao","Asia/Makassar|Asia/Ujung_Pandang","Asia/Nicosia|Europe/Nicosia","Asia/Qatar|Asia/Bahrain","Asia/Rangoon|Asia/Yangon","Asia/Riyadh|Asia/Aden","Asia/Riyadh|Asia/Kuwait","Asia/Seoul|ROK","Asia/Shanghai|Asia/Chongqing","Asia/Shanghai|Asia/Chungking","Asia/Shanghai|Asia/Harbin","Asia/Shanghai|PRC","Asia/Singapore|Singapore","Asia/Taipei|ROC","Asia/Tehran|Iran","Asia/Thimphu|Asia/Thimbu","Asia/Tokyo|Japan","Asia/Ulaanbaatar|Asia/Ulan_Bator","Asia/Urumqi|Asia/Kashgar","Atlantic/Faroe|Atlantic/Faeroe","Atlantic/Reykjavik|Iceland","Australia/Adelaide|Australia/South","Australia/Brisbane|Australia/Queensland","Australia/Broken_Hill|Australia/Yancowinna","Australia/Darwin|Australia/North","Australia/Hobart|Australia/Tasmania","Australia/Lord_Howe|Australia/LHI","Australia/Melbourne|Australia/Victoria","Australia/Perth|Australia/West","Australia/Sydney|Australia/ACT","Australia/Sydney|Australia/Canberra","Australia/Sydney|Australia/NSW","Etc/GMT+0|Etc/GMT","Etc/GMT+0|Etc/GMT-0","Etc/GMT+0|Etc/GMT0","Etc/GMT+0|Etc/Greenwich","Etc/GMT+0|GMT","Etc/GMT+0|GMT+0","Etc/GMT+0|GMT-0","Etc/GMT+0|GMT0","Etc/GMT+0|Greenwich","Etc/UCT|UCT","Etc/UTC|Etc/Universal","Etc/UTC|Etc/Zulu","Etc/UTC|UTC","Etc/UTC|Universal","Etc/UTC|Zulu","Europe/Belgrade|Europe/Ljubljana","Europe/Belgrade|Europe/Podgorica","Europe/Belgrade|Europe/Sarajevo","Europe/Belgrade|Europe/Skopje","Europe/Belgrade|Europe/Zagreb","Europe/Chisinau|Europe/Tiraspol","Europe/Dublin|Eire","Europe/Helsinki|Europe/Mariehamn","Europe/Istanbul|Asia/Istanbul","Europe/Istanbul|Turkey","Europe/Lisbon|Portugal","Europe/London|Europe/Belfast","Europe/London|Europe/Guernsey","Europe/London|Europe/Isle_of_Man","Europe/London|Europe/Jersey","Europe/London|GB","Europe/London|GB-Eire","Europe/Moscow|W-SU","Europe/Oslo|Arctic/Longyearbyen","Europe/Oslo|Atlantic/Jan_Mayen","Europe/Prague|Europe/Bratislava","Europe/Rome|Europe/San_Marino","Europe/Rome|Europe/Vatican","Europe/Warsaw|Poland","Europe/Zurich|Europe/Busingen","Europe/Zurich|Europe/Vaduz","Pacific/Auckland|Antarctica/McMurdo","Pacific/Auckland|Antarctica/South_Pole","Pacific/Auckland|NZ","Pacific/Chatham|NZ-CHAT","Pacific/Chuuk|Pacific/Truk","Pacific/Chuuk|Pacific/Yap","Pacific/Easter|Chile/EasterIsland","Pacific/Guam|Pacific/Saipan","Pacific/Honolulu|Pacific/Johnston","Pacific/Honolulu|US/Hawaii","Pacific/Kwajalein|Kwajalein","Pacific/Pago_Pago|Pacific/Midway","Pacific/Pago_Pago|Pacific/Samoa","Pacific/Pago_Pago|US/Samoa","Pacific/Pohnpei|Pacific/Ponape"]}),a}); diff --git a/layouts/v7/modules/Mobile/simple/resources/libs/moment/moment.min.js b/layouts/v7/modules/Mobile/simple/resources/libs/moment/moment.min.js new file mode 100644 index 0000000000000000000000000000000000000000..94eae67ed8cd8e441baa1497422c6307aa102bad --- /dev/null +++ b/layouts/v7/modules/Mobile/simple/resources/libs/moment/moment.min.js @@ -0,0 +1,495 @@ +//! moment.js +//! version : 2.15.1 +//! authors : Tim Wood, Iskren Chernev, Moment.js contributors +//! license : MIT +//! momentjs.com +!function(a,b){"object"==typeof exports&&"undefined"!=typeof module?module.exports=b():"function"==typeof define&&define.amd?define(b):a.moment=b()}(this,function(){"use strict";function a(){return md.apply(null,arguments)} +// This is done to register the method called with moment() +// without creating circular dependencies. +function b(a){md=a}function c(a){return a instanceof Array||"[object Array]"===Object.prototype.toString.call(a)}function d(a){ +// IE8 will treat undefined and null as object if it wasn't for +// input != null +return null!=a&&"[object Object]"===Object.prototype.toString.call(a)}function e(a){var b;for(b in a) +// even if its not own property I'd still call it non-empty +return!1;return!0}function f(a){return a instanceof Date||"[object Date]"===Object.prototype.toString.call(a)}function g(a,b){var c,d=[];for(c=0;c<a.length;++c)d.push(b(a[c],c));return d}function h(a,b){return Object.prototype.hasOwnProperty.call(a,b)}function i(a,b){for(var c in b)h(b,c)&&(a[c]=b[c]);return h(b,"toString")&&(a.toString=b.toString),h(b,"valueOf")&&(a.valueOf=b.valueOf),a}function j(a,b,c,d){return qb(a,b,c,d,!0).utc()}function k(){ +// We need to deep clone this object. +return{empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null}}function l(a){return null==a._pf&&(a._pf=k()),a._pf}function m(a){if(null==a._isValid){var b=l(a),c=nd.call(b.parsedDateParts,function(a){return null!=a}),d=!isNaN(a._d.getTime())&&b.overflow<0&&!b.empty&&!b.invalidMonth&&!b.invalidWeekday&&!b.nullInput&&!b.invalidFormat&&!b.userInvalidated&&(!b.meridiem||b.meridiem&&c);if(a._strict&&(d=d&&0===b.charsLeftOver&&0===b.unusedTokens.length&&void 0===b.bigHour),null!=Object.isFrozen&&Object.isFrozen(a))return d;a._isValid=d}return a._isValid}function n(a){var b=j(NaN);return null!=a?i(l(b),a):l(b).userInvalidated=!0,b}function o(a){return void 0===a}function p(a,b){var c,d,e;if(o(b._isAMomentObject)||(a._isAMomentObject=b._isAMomentObject),o(b._i)||(a._i=b._i),o(b._f)||(a._f=b._f),o(b._l)||(a._l=b._l),o(b._strict)||(a._strict=b._strict),o(b._tzm)||(a._tzm=b._tzm),o(b._isUTC)||(a._isUTC=b._isUTC),o(b._offset)||(a._offset=b._offset),o(b._pf)||(a._pf=l(b)),o(b._locale)||(a._locale=b._locale),od.length>0)for(c in od)d=od[c],e=b[d],o(e)||(a[d]=e);return a} +// Moment prototype object +function q(b){p(this,b),this._d=new Date(null!=b._d?b._d.getTime():NaN),pd===!1&&(pd=!0,a.updateOffset(this),pd=!1)}function r(a){return a instanceof q||null!=a&&null!=a._isAMomentObject}function s(a){return 0>a?Math.ceil(a)||0:Math.floor(a)}function t(a){var b=+a,c=0;return 0!==b&&isFinite(b)&&(c=s(b)),c} +// compare two arrays, return the number of differences +function u(a,b,c){var d,e=Math.min(a.length,b.length),f=Math.abs(a.length-b.length),g=0;for(d=0;e>d;d++)(c&&a[d]!==b[d]||!c&&t(a[d])!==t(b[d]))&&g++;return g+f}function v(b){a.suppressDeprecationWarnings===!1&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+b)}function w(b,c){var d=!0;return i(function(){if(null!=a.deprecationHandler&&a.deprecationHandler(null,b),d){for(var e,f=[],g=0;g<arguments.length;g++){if(e="","object"==typeof arguments[g]){e+="\n["+g+"] ";for(var h in arguments[0])e+=h+": "+arguments[0][h]+", ";e=e.slice(0,-2)}else e=arguments[g];f.push(e)}v(b+"\nArguments: "+Array.prototype.slice.call(f).join("")+"\n"+(new Error).stack),d=!1}return c.apply(this,arguments)},c)}function x(b,c){null!=a.deprecationHandler&&a.deprecationHandler(b,c),qd[b]||(v(c),qd[b]=!0)}function y(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}function z(a){var b,c;for(c in a)b=a[c],y(b)?this[c]=b:this["_"+c]=b;this._config=a, +// Lenient ordinal parsing accepts just a number in addition to +// number + (possibly) stuff coming from _ordinalParseLenient. +this._ordinalParseLenient=new RegExp(this._ordinalParse.source+"|"+/\d{1,2}/.source)}function A(a,b){var c,e=i({},a);for(c in b)h(b,c)&&(d(a[c])&&d(b[c])?(e[c]={},i(e[c],a[c]),i(e[c],b[c])):null!=b[c]?e[c]=b[c]:delete e[c]);for(c in a)h(a,c)&&!h(b,c)&&d(a[c])&&( +// make sure changes to properties don't modify parent config +e[c]=i({},e[c]));return e}function B(a){null!=a&&this.set(a)}function C(a,b,c){var d=this._calendar[a]||this._calendar.sameElse;return y(d)?d.call(b,c):d}function D(a){var b=this._longDateFormat[a],c=this._longDateFormat[a.toUpperCase()];return b||!c?b:(this._longDateFormat[a]=c.replace(/MMMM|MM|DD|dddd/g,function(a){return a.slice(1)}),this._longDateFormat[a])}function E(){return this._invalidDate}function F(a){return this._ordinal.replace("%d",a)}function G(a,b,c,d){var e=this._relativeTime[c];return y(e)?e(a,b,c,d):e.replace(/%d/i,a)}function H(a,b){var c=this._relativeTime[a>0?"future":"past"];return y(c)?c(b):c.replace(/%s/i,b)}function I(a,b){var c=a.toLowerCase();zd[c]=zd[c+"s"]=zd[b]=a}function J(a){return"string"==typeof a?zd[a]||zd[a.toLowerCase()]:void 0}function K(a){var b,c,d={};for(c in a)h(a,c)&&(b=J(c),b&&(d[b]=a[c]));return d}function L(a,b){Ad[a]=b}function M(a){var b=[];for(var c in a)b.push({unit:c,priority:Ad[c]});return b.sort(function(a,b){return a.priority-b.priority}),b}function N(b,c){return function(d){return null!=d?(P(this,b,d),a.updateOffset(this,c),this):O(this,b)}}function O(a,b){return a.isValid()?a._d["get"+(a._isUTC?"UTC":"")+b]():NaN}function P(a,b,c){a.isValid()&&a._d["set"+(a._isUTC?"UTC":"")+b](c)} +// MOMENTS +function Q(a){return a=J(a),y(this[a])?this[a]():this}function R(a,b){if("object"==typeof a){a=K(a);for(var c=M(a),d=0;d<c.length;d++)this[c[d].unit](a[c[d].unit])}else if(a=J(a),y(this[a]))return this[a](b);return this}function S(a,b,c){var d=""+Math.abs(a),e=b-d.length,f=a>=0;return(f?c?"+":"":"-")+Math.pow(10,Math.max(0,e)).toString().substr(1)+d} +// token: 'M' +// padded: ['MM', 2] +// ordinal: 'Mo' +// callback: function () { this.month() + 1 } +function T(a,b,c,d){var e=d;"string"==typeof d&&(e=function(){return this[d]()}),a&&(Ed[a]=e),b&&(Ed[b[0]]=function(){return S(e.apply(this,arguments),b[1],b[2])}),c&&(Ed[c]=function(){return this.localeData().ordinal(e.apply(this,arguments),a)})}function U(a){return a.match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"")}function V(a){var b,c,d=a.match(Bd);for(b=0,c=d.length;c>b;b++)Ed[d[b]]?d[b]=Ed[d[b]]:d[b]=U(d[b]);return function(b){var e,f="";for(e=0;c>e;e++)f+=d[e]instanceof Function?d[e].call(b,a):d[e];return f}} +// format date using native date object +function W(a,b){return a.isValid()?(b=X(b,a.localeData()),Dd[b]=Dd[b]||V(b),Dd[b](a)):a.localeData().invalidDate()}function X(a,b){function c(a){return b.longDateFormat(a)||a}var d=5;for(Cd.lastIndex=0;d>=0&&Cd.test(a);)a=a.replace(Cd,c),Cd.lastIndex=0,d-=1;return a}function Y(a,b,c){Wd[a]=y(b)?b:function(a,d){return a&&c?c:b}}function Z(a,b){return h(Wd,a)?Wd[a](b._strict,b._locale):new RegExp($(a))} +// Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript +function $(a){return _(a.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(a,b,c,d,e){return b||c||d||e}))}function _(a){return a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}function aa(a,b){var c,d=b;for("string"==typeof a&&(a=[a]),"number"==typeof b&&(d=function(a,c){c[b]=t(a)}),c=0;c<a.length;c++)Xd[a[c]]=d}function ba(a,b){aa(a,function(a,c,d,e){d._w=d._w||{},b(a,d._w,d,e)})}function ca(a,b,c){null!=b&&h(Xd,a)&&Xd[a](b,c._a,c,a)}function da(a,b){return new Date(Date.UTC(a,b+1,0)).getUTCDate()}function ea(a,b){return a?c(this._months)?this._months[a.month()]:this._months[(this._months.isFormat||fe).test(b)?"format":"standalone"][a.month()]:this._months}function fa(a,b){return a?c(this._monthsShort)?this._monthsShort[a.month()]:this._monthsShort[fe.test(b)?"format":"standalone"][a.month()]:this._monthsShort}function ga(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._monthsParse)for( +// this is not used +this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],d=0;12>d;++d)f=j([2e3,d]),this._shortMonthsParse[d]=this.monthsShort(f,"").toLocaleLowerCase(),this._longMonthsParse[d]=this.months(f,"").toLocaleLowerCase();return c?"MMM"===b?(e=sd.call(this._shortMonthsParse,g),-1!==e?e:null):(e=sd.call(this._longMonthsParse,g),-1!==e?e:null):"MMM"===b?(e=sd.call(this._shortMonthsParse,g),-1!==e?e:(e=sd.call(this._longMonthsParse,g),-1!==e?e:null)):(e=sd.call(this._longMonthsParse,g),-1!==e?e:(e=sd.call(this._shortMonthsParse,g),-1!==e?e:null))}function ha(a,b,c){var d,e,f;if(this._monthsParseExact)return ga.call(this,a,b,c); +// TODO: add sorting +// Sorting makes sure if one month (or abbr) is a prefix of another +// see sorting in computeMonthsParse +for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),d=0;12>d;d++){ +// test the regex +if(e=j([2e3,d]),c&&!this._longMonthsParse[d]&&(this._longMonthsParse[d]=new RegExp("^"+this.months(e,"").replace(".","")+"$","i"),this._shortMonthsParse[d]=new RegExp("^"+this.monthsShort(e,"").replace(".","")+"$","i")),c||this._monthsParse[d]||(f="^"+this.months(e,"")+"|^"+this.monthsShort(e,""),this._monthsParse[d]=new RegExp(f.replace(".",""),"i")),c&&"MMMM"===b&&this._longMonthsParse[d].test(a))return d;if(c&&"MMM"===b&&this._shortMonthsParse[d].test(a))return d;if(!c&&this._monthsParse[d].test(a))return d}} +// MOMENTS +function ia(a,b){var c;if(!a.isValid()) +// No op +return a;if("string"==typeof b)if(/^\d+$/.test(b))b=t(b);else +// TODO: Another silent failure? +if(b=a.localeData().monthsParse(b),"number"!=typeof b)return a;return c=Math.min(a.date(),da(a.year(),b)),a._d["set"+(a._isUTC?"UTC":"")+"Month"](b,c),a}function ja(b){return null!=b?(ia(this,b),a.updateOffset(this,!0),this):O(this,"Month")}function ka(){return da(this.year(),this.month())}function la(a){return this._monthsParseExact?(h(this,"_monthsRegex")||na.call(this),a?this._monthsShortStrictRegex:this._monthsShortRegex):(h(this,"_monthsShortRegex")||(this._monthsShortRegex=ie),this._monthsShortStrictRegex&&a?this._monthsShortStrictRegex:this._monthsShortRegex)}function ma(a){return this._monthsParseExact?(h(this,"_monthsRegex")||na.call(this),a?this._monthsStrictRegex:this._monthsRegex):(h(this,"_monthsRegex")||(this._monthsRegex=je),this._monthsStrictRegex&&a?this._monthsStrictRegex:this._monthsRegex)}function na(){function a(a,b){return b.length-a.length}var b,c,d=[],e=[],f=[];for(b=0;12>b;b++)c=j([2e3,b]),d.push(this.monthsShort(c,"")),e.push(this.months(c,"")),f.push(this.months(c,"")),f.push(this.monthsShort(c,""));for( +// Sorting makes sure if one month (or abbr) is a prefix of another it +// will match the longer piece. +d.sort(a),e.sort(a),f.sort(a),b=0;12>b;b++)d[b]=_(d[b]),e[b]=_(e[b]);for(b=0;24>b;b++)f[b]=_(f[b]);this._monthsRegex=new RegExp("^("+f.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+e.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+d.join("|")+")","i")} +// HELPERS +function oa(a){return pa(a)?366:365}function pa(a){return a%4===0&&a%100!==0||a%400===0}function qa(){return pa(this.year())}function ra(a,b,c,d,e,f,g){ +//can't just apply() to create a date: +//http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply +var h=new Date(a,b,c,d,e,f,g); +//the date constructor remaps years 0-99 to 1900-1999 +return 100>a&&a>=0&&isFinite(h.getFullYear())&&h.setFullYear(a),h}function sa(a){var b=new Date(Date.UTC.apply(null,arguments)); +//the Date.UTC function remaps years 0-99 to 1900-1999 +return 100>a&&a>=0&&isFinite(b.getUTCFullYear())&&b.setUTCFullYear(a),b} +// start-of-first-week - start-of-year +function ta(a,b,c){var// first-week day -- which january is always in the first week (4 for iso, 1 for other) +d=7+b-c, +// first-week day local weekday -- which local weekday is fwd +e=(7+sa(a,0,d).getUTCDay()-b)%7;return-e+d-1} +//http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday +function ua(a,b,c,d,e){var f,g,h=(7+c-d)%7,i=ta(a,d,e),j=1+7*(b-1)+h+i;return 0>=j?(f=a-1,g=oa(f)+j):j>oa(a)?(f=a+1,g=j-oa(a)):(f=a,g=j),{year:f,dayOfYear:g}}function va(a,b,c){var d,e,f=ta(a.year(),b,c),g=Math.floor((a.dayOfYear()-f-1)/7)+1;return 1>g?(e=a.year()-1,d=g+wa(e,b,c)):g>wa(a.year(),b,c)?(d=g-wa(a.year(),b,c),e=a.year()+1):(e=a.year(),d=g),{week:d,year:e}}function wa(a,b,c){var d=ta(a,b,c),e=ta(a+1,b,c);return(oa(a)-d+e)/7} +// HELPERS +// LOCALES +function xa(a){return va(a,this._week.dow,this._week.doy).week}function ya(){return this._week.dow}function za(){return this._week.doy} +// MOMENTS +function Aa(a){var b=this.localeData().week(this);return null==a?b:this.add(7*(a-b),"d")}function Ba(a){var b=va(this,1,4).week;return null==a?b:this.add(7*(a-b),"d")} +// HELPERS +function Ca(a,b){return"string"!=typeof a?a:isNaN(a)?(a=b.weekdaysParse(a),"number"==typeof a?a:null):parseInt(a,10)}function Da(a,b){return"string"==typeof a?b.weekdaysParse(a)%7||7:isNaN(a)?null:a}function Ea(a,b){return a?c(this._weekdays)?this._weekdays[a.day()]:this._weekdays[this._weekdays.isFormat.test(b)?"format":"standalone"][a.day()]:this._weekdays}function Fa(a){return a?this._weekdaysShort[a.day()]:this._weekdaysShort}function Ga(a){return a?this._weekdaysMin[a.day()]:this._weekdaysMin}function Ha(a,b,c){var d,e,f,g=a.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],d=0;7>d;++d)f=j([2e3,1]).day(d),this._minWeekdaysParse[d]=this.weekdaysMin(f,"").toLocaleLowerCase(),this._shortWeekdaysParse[d]=this.weekdaysShort(f,"").toLocaleLowerCase(),this._weekdaysParse[d]=this.weekdays(f,"").toLocaleLowerCase();return c?"dddd"===b?(e=sd.call(this._weekdaysParse,g),-1!==e?e:null):"ddd"===b?(e=sd.call(this._shortWeekdaysParse,g),-1!==e?e:null):(e=sd.call(this._minWeekdaysParse,g),-1!==e?e:null):"dddd"===b?(e=sd.call(this._weekdaysParse,g),-1!==e?e:(e=sd.call(this._shortWeekdaysParse,g),-1!==e?e:(e=sd.call(this._minWeekdaysParse,g),-1!==e?e:null))):"ddd"===b?(e=sd.call(this._shortWeekdaysParse,g),-1!==e?e:(e=sd.call(this._weekdaysParse,g),-1!==e?e:(e=sd.call(this._minWeekdaysParse,g),-1!==e?e:null))):(e=sd.call(this._minWeekdaysParse,g),-1!==e?e:(e=sd.call(this._weekdaysParse,g),-1!==e?e:(e=sd.call(this._shortWeekdaysParse,g),-1!==e?e:null)))}function Ia(a,b,c){var d,e,f;if(this._weekdaysParseExact)return Ha.call(this,a,b,c);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),d=0;7>d;d++){ +// test the regex +if(e=j([2e3,1]).day(d),c&&!this._fullWeekdaysParse[d]&&(this._fullWeekdaysParse[d]=new RegExp("^"+this.weekdays(e,"").replace(".",".?")+"$","i"),this._shortWeekdaysParse[d]=new RegExp("^"+this.weekdaysShort(e,"").replace(".",".?")+"$","i"),this._minWeekdaysParse[d]=new RegExp("^"+this.weekdaysMin(e,"").replace(".",".?")+"$","i")),this._weekdaysParse[d]||(f="^"+this.weekdays(e,"")+"|^"+this.weekdaysShort(e,"")+"|^"+this.weekdaysMin(e,""),this._weekdaysParse[d]=new RegExp(f.replace(".",""),"i")),c&&"dddd"===b&&this._fullWeekdaysParse[d].test(a))return d;if(c&&"ddd"===b&&this._shortWeekdaysParse[d].test(a))return d;if(c&&"dd"===b&&this._minWeekdaysParse[d].test(a))return d;if(!c&&this._weekdaysParse[d].test(a))return d}} +// MOMENTS +function Ja(a){if(!this.isValid())return null!=a?this:NaN;var b=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=a?(a=Ca(a,this.localeData()),this.add(a-b,"d")):b}function Ka(a){if(!this.isValid())return null!=a?this:NaN;var b=(this.day()+7-this.localeData()._week.dow)%7;return null==a?b:this.add(a-b,"d")}function La(a){if(!this.isValid())return null!=a?this:NaN; +// behaves the same as moment#day except +// as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) +// as a setter, sunday should belong to the previous week. +if(null!=a){var b=Da(a,this.localeData());return this.day(this.day()%7?b:b-7)}return this.day()||7}function Ma(a){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Pa.call(this),a?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=pe),this._weekdaysStrictRegex&&a?this._weekdaysStrictRegex:this._weekdaysRegex)}function Na(a){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Pa.call(this),a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=qe),this._weekdaysShortStrictRegex&&a?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Oa(a){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Pa.call(this),a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=re),this._weekdaysMinStrictRegex&&a?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Pa(){function a(a,b){return b.length-a.length}var b,c,d,e,f,g=[],h=[],i=[],k=[];for(b=0;7>b;b++)c=j([2e3,1]).day(b),d=this.weekdaysMin(c,""),e=this.weekdaysShort(c,""),f=this.weekdays(c,""),g.push(d),h.push(e),i.push(f),k.push(d),k.push(e),k.push(f);for( +// Sorting makes sure if one weekday (or abbr) is a prefix of another it +// will match the longer piece. +g.sort(a),h.sort(a),i.sort(a),k.sort(a),b=0;7>b;b++)h[b]=_(h[b]),i[b]=_(i[b]),k[b]=_(k[b]);this._weekdaysRegex=new RegExp("^("+k.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+h.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+g.join("|")+")","i")} +// FORMATTING +function Qa(){return this.hours()%12||12}function Ra(){return this.hours()||24}function Sa(a,b){T(a,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),b)})} +// PARSING +function Ta(a,b){return b._meridiemParse} +// LOCALES +function Ua(a){ +// IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays +// Using charAt should be more compatible. +return"p"===(a+"").toLowerCase().charAt(0)}function Va(a,b,c){return a>11?c?"pm":"PM":c?"am":"AM"}function Wa(a){return a?a.toLowerCase().replace("_","-"):a} +// pick the locale from the array +// try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each +// substring from most specific to least, but move to the next array item if it's a more specific variant than the current root +function Xa(a){for(var b,c,d,e,f=0;f<a.length;){for(e=Wa(a[f]).split("-"),b=e.length,c=Wa(a[f+1]),c=c?c.split("-"):null;b>0;){if(d=Ya(e.slice(0,b).join("-")))return d;if(c&&c.length>=b&&u(e,c,!0)>=b-1) +//the next array item is better than a shallower substring of this one +break;b--}f++}return null}function Ya(a){var b=null; +// TODO: Find a better way to register and load all the locales in Node +if(!we[a]&&"undefined"!=typeof module&&module&&module.exports)try{b=se._abbr,require("./locale/"+a), +// because defineLocale currently also sets the global locale, we +// want to undo that for lazy loaded locales +Za(b)}catch(c){}return we[a]} +// This function will load locale and then set the global locale. If +// no arguments are passed in, it will simply return the current global +// locale key. +function Za(a,b){var c; +// moment.duration._locale = moment._locale = data; +return a&&(c=o(b)?ab(a):$a(a,b),c&&(se=c)),se._abbr}function $a(a,b){if(null!==b){var c=ve; +// treat as if there is no base config +// backwards compat for now: also set the locale +return b.abbr=a,null!=we[a]?(x("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),c=we[a]._config):null!=b.parentLocale&&(null!=we[b.parentLocale]?c=we[b.parentLocale]._config:x("parentLocaleUndefined","specified parentLocale is not defined yet. See http://momentjs.com/guides/#/warnings/parent-locale/")),we[a]=new B(A(c,b)),Za(a),we[a]} +// useful for testing +return delete we[a],null}function _a(a,b){if(null!=b){var c,d=ve; +// MERGE +null!=we[a]&&(d=we[a]._config),b=A(d,b),c=new B(b),c.parentLocale=we[a],we[a]=c, +// backwards compat for now: also set the locale +Za(a)}else +// pass null for config to unupdate, useful for tests +null!=we[a]&&(null!=we[a].parentLocale?we[a]=we[a].parentLocale:null!=we[a]&&delete we[a]);return we[a]} +// returns locale data +function ab(a){var b;if(a&&a._locale&&a._locale._abbr&&(a=a._locale._abbr),!a)return se;if(!c(a)){if(b=Ya(a))return b;a=[a]}return Xa(a)}function bb(){return rd(we)}function cb(a){var b,c=a._a;return c&&-2===l(a).overflow&&(b=c[Zd]<0||c[Zd]>11?Zd:c[$d]<1||c[$d]>da(c[Yd],c[Zd])?$d:c[_d]<0||c[_d]>24||24===c[_d]&&(0!==c[ae]||0!==c[be]||0!==c[ce])?_d:c[ae]<0||c[ae]>59?ae:c[be]<0||c[be]>59?be:c[ce]<0||c[ce]>999?ce:-1,l(a)._overflowDayOfYear&&(Yd>b||b>$d)&&(b=$d),l(a)._overflowWeeks&&-1===b&&(b=de),l(a)._overflowWeekday&&-1===b&&(b=ee),l(a).overflow=b),a} +// date from iso format +function db(a){var b,c,d,e,f,g,h=a._i,i=xe.exec(h)||ye.exec(h);if(i){for(l(a).iso=!0,b=0,c=Ae.length;c>b;b++)if(Ae[b][1].exec(i[1])){e=Ae[b][0],d=Ae[b][2]!==!1;break}if(null==e)return void(a._isValid=!1);if(i[3]){for(b=0,c=Be.length;c>b;b++)if(Be[b][1].exec(i[3])){ +// match[2] should be 'T' or space +f=(i[2]||" ")+Be[b][0];break}if(null==f)return void(a._isValid=!1)}if(!d&&null!=f)return void(a._isValid=!1);if(i[4]){if(!ze.exec(i[4]))return void(a._isValid=!1);g="Z"}a._f=e+(f||"")+(g||""),jb(a)}else a._isValid=!1} +// date from iso format or fallback +function eb(b){var c=Ce.exec(b._i);return null!==c?void(b._d=new Date(+c[1])):(db(b),void(b._isValid===!1&&(delete b._isValid,a.createFromInputFallback(b))))} +// Pick the first defined of two or three arguments. +function fb(a,b,c){return null!=a?a:null!=b?b:c}function gb(b){ +// hooks is actually the exported moment object +var c=new Date(a.now());return b._useUTC?[c.getUTCFullYear(),c.getUTCMonth(),c.getUTCDate()]:[c.getFullYear(),c.getMonth(),c.getDate()]} +// convert an array to a date. +// the array should mirror the parameters below +// note: all values past the year are optional and will default to the lowest possible value. +// [year, month, day , hour, minute, second, millisecond] +function hb(a){var b,c,d,e,f=[];if(!a._d){ +// Default to current date. +// * if no year, month, day of month are given, default to today +// * if day of month is given, default month and year +// * if month is given, default only year +// * if year is given, don't default anything +for(d=gb(a),a._w&&null==a._a[$d]&&null==a._a[Zd]&&ib(a),a._dayOfYear&&(e=fb(a._a[Yd],d[Yd]),a._dayOfYear>oa(e)&&(l(a)._overflowDayOfYear=!0),c=sa(e,0,a._dayOfYear),a._a[Zd]=c.getUTCMonth(),a._a[$d]=c.getUTCDate()),b=0;3>b&&null==a._a[b];++b)a._a[b]=f[b]=d[b]; +// Zero out whatever was not defaulted, including time +for(;7>b;b++)a._a[b]=f[b]=null==a._a[b]?2===b?1:0:a._a[b]; +// Check for 24:00:00.000 +24===a._a[_d]&&0===a._a[ae]&&0===a._a[be]&&0===a._a[ce]&&(a._nextDay=!0,a._a[_d]=0),a._d=(a._useUTC?sa:ra).apply(null,f), +// Apply timezone offset from input. The actual utcOffset can be changed +// with parseZone. +null!=a._tzm&&a._d.setUTCMinutes(a._d.getUTCMinutes()-a._tzm),a._nextDay&&(a._a[_d]=24)}}function ib(a){var b,c,d,e,f,g,h,i;b=a._w,null!=b.GG||null!=b.W||null!=b.E?(f=1,g=4,c=fb(b.GG,a._a[Yd],va(rb(),1,4).year),d=fb(b.W,1),e=fb(b.E,1),(1>e||e>7)&&(i=!0)):(f=a._locale._week.dow,g=a._locale._week.doy,c=fb(b.gg,a._a[Yd],va(rb(),f,g).year),d=fb(b.w,1),null!=b.d?(e=b.d,(0>e||e>6)&&(i=!0)):null!=b.e?(e=b.e+f,(b.e<0||b.e>6)&&(i=!0)):e=f),1>d||d>wa(c,f,g)?l(a)._overflowWeeks=!0:null!=i?l(a)._overflowWeekday=!0:(h=ua(c,d,e,f,g),a._a[Yd]=h.year,a._dayOfYear=h.dayOfYear)} +// date from string and format string +function jb(b){ +// TODO: Move this to another part of the creation flow to prevent circular deps +if(b._f===a.ISO_8601)return void db(b);b._a=[],l(b).empty=!0; +// This array is used to make a Date, either with `new Date` or `Date.UTC` +var c,d,e,f,g,h=""+b._i,i=h.length,j=0;for(e=X(b._f,b._locale).match(Bd)||[],c=0;c<e.length;c++)f=e[c],d=(h.match(Z(f,b))||[])[0],d&&(g=h.substr(0,h.indexOf(d)),g.length>0&&l(b).unusedInput.push(g),h=h.slice(h.indexOf(d)+d.length),j+=d.length),Ed[f]?(d?l(b).empty=!1:l(b).unusedTokens.push(f),ca(f,d,b)):b._strict&&!d&&l(b).unusedTokens.push(f); +// add remaining unparsed input length to the string +l(b).charsLeftOver=i-j,h.length>0&&l(b).unusedInput.push(h), +// clear _12h flag if hour is <= 12 +b._a[_d]<=12&&l(b).bigHour===!0&&b._a[_d]>0&&(l(b).bigHour=void 0),l(b).parsedDateParts=b._a.slice(0),l(b).meridiem=b._meridiem, +// handle meridiem +b._a[_d]=kb(b._locale,b._a[_d],b._meridiem),hb(b),cb(b)}function kb(a,b,c){var d; +// Fallback +return null==c?b:null!=a.meridiemHour?a.meridiemHour(b,c):null!=a.isPM?(d=a.isPM(c),d&&12>b&&(b+=12),d||12!==b||(b=0),b):b} +// date from string and array of format strings +function lb(a){var b,c,d,e,f;if(0===a._f.length)return l(a).invalidFormat=!0,void(a._d=new Date(NaN));for(e=0;e<a._f.length;e++)f=0,b=p({},a),null!=a._useUTC&&(b._useUTC=a._useUTC),b._f=a._f[e],jb(b),m(b)&&(f+=l(b).charsLeftOver,f+=10*l(b).unusedTokens.length,l(b).score=f,(null==d||d>f)&&(d=f,c=b));i(a,c||b)}function mb(a){if(!a._d){var b=K(a._i);a._a=g([b.year,b.month,b.day||b.date,b.hour,b.minute,b.second,b.millisecond],function(a){return a&&parseInt(a,10)}),hb(a)}}function nb(a){var b=new q(cb(ob(a))); +// Adding is smart enough around DST +return b._nextDay&&(b.add(1,"d"),b._nextDay=void 0),b}function ob(a){var b=a._i,d=a._f;return a._locale=a._locale||ab(a._l),null===b||void 0===d&&""===b?n({nullInput:!0}):("string"==typeof b&&(a._i=b=a._locale.preparse(b)),r(b)?new q(cb(b)):(c(d)?lb(a):f(b)?a._d=b:d?jb(a):pb(a),m(a)||(a._d=null),a))}function pb(b){var d=b._i;void 0===d?b._d=new Date(a.now()):f(d)?b._d=new Date(d.valueOf()):"string"==typeof d?eb(b):c(d)?(b._a=g(d.slice(0),function(a){return parseInt(a,10)}),hb(b)):"object"==typeof d?mb(b):"number"==typeof d? +// from milliseconds +b._d=new Date(d):a.createFromInputFallback(b)}function qb(a,b,f,g,h){var i={}; +// object construction must be done this way. +// https://github.com/moment/moment/issues/1423 +return"boolean"==typeof f&&(g=f,f=void 0),(d(a)&&e(a)||c(a)&&0===a.length)&&(a=void 0),i._isAMomentObject=!0,i._useUTC=i._isUTC=h,i._l=f,i._i=a,i._f=b,i._strict=g,nb(i)}function rb(a,b,c,d){return qb(a,b,c,d,!1)} +// Pick a moment m from moments so that m[fn](other) is true for all +// other. This relies on the function fn to be transitive. +// +// moments should either be an array of moment objects or an array, whose +// first element is an array of moment objects. +function sb(a,b){var d,e;if(1===b.length&&c(b[0])&&(b=b[0]),!b.length)return rb();for(d=b[0],e=1;e<b.length;++e)b[e].isValid()&&!b[e][a](d)||(d=b[e]);return d} +// TODO: Use [].sort instead? +function tb(){var a=[].slice.call(arguments,0);return sb("isBefore",a)}function ub(){var a=[].slice.call(arguments,0);return sb("isAfter",a)}function vb(a){var b=K(a),c=b.year||0,d=b.quarter||0,e=b.month||0,f=b.week||0,g=b.day||0,h=b.hour||0,i=b.minute||0,j=b.second||0,k=b.millisecond||0; +// representation for dateAddRemove +this._milliseconds=+k+1e3*j+// 1000 +6e4*i+// 1000 * 60 +1e3*h*60*60,//using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 +// Because of dateAddRemove treats 24 hours as different from a +// day when working around DST, we need to store them separately +this._days=+g+7*f, +// It is impossible translate months into days without knowing +// which months you are are talking about, so we have to store +// it separately. +this._months=+e+3*d+12*c,this._data={},this._locale=ab(),this._bubble()}function wb(a){return a instanceof vb}function xb(a){return 0>a?-1*Math.round(-1*a):Math.round(a)} +// FORMATTING +function yb(a,b){T(a,0,0,function(){var a=this.utcOffset(),c="+";return 0>a&&(a=-a,c="-"),c+S(~~(a/60),2)+b+S(~~a%60,2)})}function zb(a,b){var c=(b||"").match(a)||[],d=c[c.length-1]||[],e=(d+"").match(Ge)||["-",0,0],f=+(60*e[1])+t(e[2]);return"+"===e[0]?f:-f} +// Return a moment from input, that is local/utc/zone equivalent to model. +function Ab(b,c){var d,e; +// Use low-level api, because this fn is low-level api. +return c._isUTC?(d=c.clone(),e=(r(b)||f(b)?b.valueOf():rb(b).valueOf())-d.valueOf(),d._d.setTime(d._d.valueOf()+e),a.updateOffset(d,!1),d):rb(b).local()}function Bb(a){ +// On Firefox.24 Date#getTimezoneOffset returns a floating point. +// https://github.com/moment/moment/pull/1871 +return 15*-Math.round(a._d.getTimezoneOffset()/15)} +// MOMENTS +// keepLocalTime = true means only change the timezone, without +// affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> +// 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset +// +0200, so we adjust the time as needed, to be valid. +// +// Keeping the time actually adds/subtracts (one hour) +// from the actual represented time. That is why we call updateOffset +// a second time. In case it wants us to change the offset again +// _changeInProgress == true case, then we have to adjust, because +// there is no such time in the given timezone. +function Cb(b,c){var d,e=this._offset||0;return this.isValid()?null!=b?("string"==typeof b?b=zb(Td,b):Math.abs(b)<16&&(b=60*b),!this._isUTC&&c&&(d=Bb(this)),this._offset=b,this._isUTC=!0,null!=d&&this.add(d,"m"),e!==b&&(!c||this._changeInProgress?Sb(this,Nb(b-e,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,a.updateOffset(this,!0),this._changeInProgress=null)),this):this._isUTC?e:Bb(this):null!=b?this:NaN}function Db(a,b){return null!=a?("string"!=typeof a&&(a=-a),this.utcOffset(a,b),this):-this.utcOffset()}function Eb(a){return this.utcOffset(0,a)}function Fb(a){return this._isUTC&&(this.utcOffset(0,a),this._isUTC=!1,a&&this.subtract(Bb(this),"m")),this}function Gb(){if(this._tzm)this.utcOffset(this._tzm);else if("string"==typeof this._i){var a=zb(Sd,this._i);0===a?this.utcOffset(0,!0):this.utcOffset(zb(Sd,this._i))}return this}function Hb(a){return this.isValid()?(a=a?rb(a).utcOffset():0,(this.utcOffset()-a)%60===0):!1}function Ib(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Jb(){if(!o(this._isDSTShifted))return this._isDSTShifted;var a={};if(p(a,this),a=ob(a),a._a){var b=a._isUTC?j(a._a):rb(a._a);this._isDSTShifted=this.isValid()&&u(a._a,b.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}function Kb(){return this.isValid()?!this._isUTC:!1}function Lb(){return this.isValid()?this._isUTC:!1}function Mb(){return this.isValid()?this._isUTC&&0===this._offset:!1}function Nb(a,b){var c,d,e,f=a, +// matching against regexp is expensive, do it on demand +g=null;// checks for null or undefined +return wb(a)?f={ms:a._milliseconds,d:a._days,M:a._months}:"number"==typeof a?(f={},b?f[b]=a:f.milliseconds=a):(g=He.exec(a))?(c="-"===g[1]?-1:1,f={y:0,d:t(g[$d])*c,h:t(g[_d])*c,m:t(g[ae])*c,s:t(g[be])*c,ms:t(xb(1e3*g[ce]))*c}):(g=Ie.exec(a))?(c="-"===g[1]?-1:1,f={y:Ob(g[2],c),M:Ob(g[3],c),w:Ob(g[4],c),d:Ob(g[5],c),h:Ob(g[6],c),m:Ob(g[7],c),s:Ob(g[8],c)}):null==f?f={}:"object"==typeof f&&("from"in f||"to"in f)&&(e=Qb(rb(f.from),rb(f.to)),f={},f.ms=e.milliseconds,f.M=e.months),d=new vb(f),wb(a)&&h(a,"_locale")&&(d._locale=a._locale),d}function Ob(a,b){ +// We'd normally use ~~inp for this, but unfortunately it also +// converts floats to ints. +// inp may be undefined, so careful calling replace on it. +var c=a&&parseFloat(a.replace(",",".")); +// apply sign while we're at it +return(isNaN(c)?0:c)*b}function Pb(a,b){var c={milliseconds:0,months:0};return c.months=b.month()-a.month()+12*(b.year()-a.year()),a.clone().add(c.months,"M").isAfter(b)&&--c.months,c.milliseconds=+b-+a.clone().add(c.months,"M"),c}function Qb(a,b){var c;return a.isValid()&&b.isValid()?(b=Ab(b,a),a.isBefore(b)?c=Pb(a,b):(c=Pb(b,a),c.milliseconds=-c.milliseconds,c.months=-c.months),c):{milliseconds:0,months:0}} +// TODO: remove 'name' arg after deprecation is removed +function Rb(a,b){return function(c,d){var e,f; +//invert the arguments, but complain about it +return null===d||isNaN(+d)||(x(b,"moment()."+b+"(period, number) is deprecated. Please use moment()."+b+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),f=c,c=d,d=f),c="string"==typeof c?+c:c,e=Nb(c,d),Sb(this,e,a),this}}function Sb(b,c,d,e){var f=c._milliseconds,g=xb(c._days),h=xb(c._months);b.isValid()&&(e=null==e?!0:e,f&&b._d.setTime(b._d.valueOf()+f*d),g&&P(b,"Date",O(b,"Date")+g*d),h&&ia(b,O(b,"Month")+h*d),e&&a.updateOffset(b,g||h))}function Tb(a,b){var c=a.diff(b,"days",!0);return-6>c?"sameElse":-1>c?"lastWeek":0>c?"lastDay":1>c?"sameDay":2>c?"nextDay":7>c?"nextWeek":"sameElse"}function Ub(b,c){ +// We want to compare the start of today, vs this. +// Getting start-of-today depends on whether we're local/utc/offset or not. +var d=b||rb(),e=Ab(d,this).startOf("day"),f=a.calendarFormat(this,e)||"sameElse",g=c&&(y(c[f])?c[f].call(this,d):c[f]);return this.format(g||this.localeData().calendar(f,this,rb(d)))}function Vb(){return new q(this)}function Wb(a,b){var c=r(a)?a:rb(a);return this.isValid()&&c.isValid()?(b=J(o(b)?"millisecond":b),"millisecond"===b?this.valueOf()>c.valueOf():c.valueOf()<this.clone().startOf(b).valueOf()):!1}function Xb(a,b){var c=r(a)?a:rb(a);return this.isValid()&&c.isValid()?(b=J(o(b)?"millisecond":b),"millisecond"===b?this.valueOf()<c.valueOf():this.clone().endOf(b).valueOf()<c.valueOf()):!1}function Yb(a,b,c,d){return d=d||"()",("("===d[0]?this.isAfter(a,c):!this.isBefore(a,c))&&(")"===d[1]?this.isBefore(b,c):!this.isAfter(b,c))}function Zb(a,b){var c,d=r(a)?a:rb(a);return this.isValid()&&d.isValid()?(b=J(b||"millisecond"),"millisecond"===b?this.valueOf()===d.valueOf():(c=d.valueOf(),this.clone().startOf(b).valueOf()<=c&&c<=this.clone().endOf(b).valueOf())):!1}function $b(a,b){return this.isSame(a,b)||this.isAfter(a,b)}function _b(a,b){return this.isSame(a,b)||this.isBefore(a,b)}function ac(a,b,c){var d,e,f,g;// 1000 +// 1000 * 60 +// 1000 * 60 * 60 +// 1000 * 60 * 60 * 24, negate dst +// 1000 * 60 * 60 * 24 * 7, negate dst +return this.isValid()?(d=Ab(a,this),d.isValid()?(e=6e4*(d.utcOffset()-this.utcOffset()),b=J(b),"year"===b||"month"===b||"quarter"===b?(g=bc(this,d),"quarter"===b?g/=3:"year"===b&&(g/=12)):(f=this-d,g="second"===b?f/1e3:"minute"===b?f/6e4:"hour"===b?f/36e5:"day"===b?(f-e)/864e5:"week"===b?(f-e)/6048e5:f),c?g:s(g)):NaN):NaN}function bc(a,b){ +// difference in months +var c,d,e=12*(b.year()-a.year())+(b.month()-a.month()), +// b is in (anchor - 1 month, anchor + 1 month) +f=a.clone().add(e,"months"); +//check for negative zero, return zero if negative zero +// linear across the month +// linear across the month +return 0>b-f?(c=a.clone().add(e-1,"months"),d=(b-f)/(f-c)):(c=a.clone().add(e+1,"months"),d=(b-f)/(c-f)),-(e+d)||0}function cc(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")}function dc(){var a=this.clone().utc();return 0<a.year()&&a.year()<=9999?y(Date.prototype.toISOString)?this.toDate().toISOString():W(a,"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]"):W(a,"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")}function ec(b){b||(b=this.isUtc()?a.defaultFormatUtc:a.defaultFormat);var c=W(this,b);return this.localeData().postformat(c)}function fc(a,b){return this.isValid()&&(r(a)&&a.isValid()||rb(a).isValid())?Nb({to:this,from:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function gc(a){return this.from(rb(),a)}function hc(a,b){return this.isValid()&&(r(a)&&a.isValid()||rb(a).isValid())?Nb({from:this,to:a}).locale(this.locale()).humanize(!b):this.localeData().invalidDate()}function ic(a){return this.to(rb(),a)} +// If passed a locale key, it will set the locale for this +// instance. Otherwise, it will return the locale configuration +// variables for this instance. +function jc(a){var b;return void 0===a?this._locale._abbr:(b=ab(a),null!=b&&(this._locale=b),this)}function kc(){return this._locale}function lc(a){ +// the following switch intentionally omits break keywords +// to utilize falling through the cases. +switch(a=J(a)){case"year":this.month(0);/* falls through */ +case"quarter":case"month":this.date(1);/* falls through */ +case"week":case"isoWeek":case"day":case"date":this.hours(0);/* falls through */ +case"hour":this.minutes(0);/* falls through */ +case"minute":this.seconds(0);/* falls through */ +case"second":this.milliseconds(0)} +// weeks are a special case +// quarters are also special +return"week"===a&&this.weekday(0),"isoWeek"===a&&this.isoWeekday(1),"quarter"===a&&this.month(3*Math.floor(this.month()/3)),this}function mc(a){ +// 'date' is an alias for 'day', so it should be considered as such. +return a=J(a),void 0===a||"millisecond"===a?this:("date"===a&&(a="day"),this.startOf(a).add(1,"isoWeek"===a?"week":a).subtract(1,"ms"))}function nc(){return this._d.valueOf()-6e4*(this._offset||0)}function oc(){return Math.floor(this.valueOf()/1e3)}function pc(){return new Date(this.valueOf())}function qc(){var a=this;return[a.year(),a.month(),a.date(),a.hour(),a.minute(),a.second(),a.millisecond()]}function rc(){var a=this;return{years:a.year(),months:a.month(),date:a.date(),hours:a.hours(),minutes:a.minutes(),seconds:a.seconds(),milliseconds:a.milliseconds()}}function sc(){ +// new Date(NaN).toJSON() === null +return this.isValid()?this.toISOString():null}function tc(){return m(this)}function uc(){return i({},l(this))}function vc(){return l(this).overflow}function wc(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function xc(a,b){T(0,[a,a.length],0,b)} +// MOMENTS +function yc(a){return Cc.call(this,a,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)}function zc(a){return Cc.call(this,a,this.isoWeek(),this.isoWeekday(),1,4)}function Ac(){return wa(this.year(),1,4)}function Bc(){var a=this.localeData()._week;return wa(this.year(),a.dow,a.doy)}function Cc(a,b,c,d,e){var f;return null==a?va(this,d,e).year:(f=wa(a,d,e),b>f&&(b=f),Dc.call(this,a,b,c,d,e))}function Dc(a,b,c,d,e){var f=ua(a,b,c,d,e),g=sa(f.year,0,f.dayOfYear);return this.year(g.getUTCFullYear()),this.month(g.getUTCMonth()),this.date(g.getUTCDate()),this} +// MOMENTS +function Ec(a){return null==a?Math.ceil((this.month()+1)/3):this.month(3*(a-1)+this.month()%3)} +// HELPERS +// MOMENTS +function Fc(a){var b=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==a?b:this.add(a-b,"d")}function Gc(a,b){b[ce]=t(1e3*("0."+a))} +// MOMENTS +function Hc(){return this._isUTC?"UTC":""}function Ic(){return this._isUTC?"Coordinated Universal Time":""}function Jc(a){return rb(1e3*a)}function Kc(){return rb.apply(null,arguments).parseZone()}function Lc(a){return a}function Mc(a,b,c,d){var e=ab(),f=j().set(d,b);return e[c](f,a)}function Nc(a,b,c){if("number"==typeof a&&(b=a,a=void 0),a=a||"",null!=b)return Mc(a,b,c,"month");var d,e=[];for(d=0;12>d;d++)e[d]=Mc(a,d,c,"month");return e} +// () +// (5) +// (fmt, 5) +// (fmt) +// (true) +// (true, 5) +// (true, fmt, 5) +// (true, fmt) +function Oc(a,b,c,d){"boolean"==typeof a?("number"==typeof b&&(c=b,b=void 0),b=b||""):(b=a,c=b,a=!1,"number"==typeof b&&(c=b,b=void 0),b=b||"");var e=ab(),f=a?e._week.dow:0;if(null!=c)return Mc(b,(c+f)%7,d,"day");var g,h=[];for(g=0;7>g;g++)h[g]=Mc(b,(g+f)%7,d,"day");return h}function Pc(a,b){return Nc(a,b,"months")}function Qc(a,b){return Nc(a,b,"monthsShort")}function Rc(a,b,c){return Oc(a,b,c,"weekdays")}function Sc(a,b,c){return Oc(a,b,c,"weekdaysShort")}function Tc(a,b,c){return Oc(a,b,c,"weekdaysMin")}function Uc(){var a=this._data;return this._milliseconds=Ue(this._milliseconds),this._days=Ue(this._days),this._months=Ue(this._months),a.milliseconds=Ue(a.milliseconds),a.seconds=Ue(a.seconds),a.minutes=Ue(a.minutes),a.hours=Ue(a.hours),a.months=Ue(a.months),a.years=Ue(a.years),this}function Vc(a,b,c,d){var e=Nb(b,c);return a._milliseconds+=d*e._milliseconds,a._days+=d*e._days,a._months+=d*e._months,a._bubble()} +// supports only 2.0-style add(1, 's') or add(duration) +function Wc(a,b){return Vc(this,a,b,1)} +// supports only 2.0-style subtract(1, 's') or subtract(duration) +function Xc(a,b){return Vc(this,a,b,-1)}function Yc(a){return 0>a?Math.floor(a):Math.ceil(a)}function Zc(){var a,b,c,d,e,f=this._milliseconds,g=this._days,h=this._months,i=this._data; +// if we have a mix of positive and negative values, bubble down first +// check: https://github.com/moment/moment/issues/2166 +// The following code bubbles up values, see the tests for +// examples of what that means. +// convert days to months +// 12 months -> 1 year +return f>=0&&g>=0&&h>=0||0>=f&&0>=g&&0>=h||(f+=864e5*Yc(_c(h)+g),g=0,h=0),i.milliseconds=f%1e3,a=s(f/1e3),i.seconds=a%60,b=s(a/60),i.minutes=b%60,c=s(b/60),i.hours=c%24,g+=s(c/24),e=s($c(g)),h+=e,g-=Yc(_c(e)),d=s(h/12),h%=12,i.days=g,i.months=h,i.years=d,this}function $c(a){ +// 400 years have 146097 days (taking into account leap year rules) +// 400 years have 12 months === 4800 +return 4800*a/146097}function _c(a){ +// the reverse of daysToMonths +return 146097*a/4800}function ad(a){var b,c,d=this._milliseconds;if(a=J(a),"month"===a||"year"===a)return b=this._days+d/864e5,c=this._months+$c(b),"month"===a?c:c/12;switch(b=this._days+Math.round(_c(this._months)),a){case"week":return b/7+d/6048e5;case"day":return b+d/864e5;case"hour":return 24*b+d/36e5;case"minute":return 1440*b+d/6e4;case"second":return 86400*b+d/1e3; +// Math.floor prevents floating point math errors here +case"millisecond":return Math.floor(864e5*b)+d;default:throw new Error("Unknown unit "+a)}} +// TODO: Use this.as('ms')? +function bd(){return this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*t(this._months/12)}function cd(a){return function(){return this.as(a)}}function dd(a){return a=J(a),this[a+"s"]()}function ed(a){return function(){return this._data[a]}}function fd(){return s(this.days()/7)} +// helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize +function gd(a,b,c,d,e){return e.relativeTime(b||1,!!c,a,d)}function hd(a,b,c){var d=Nb(a).abs(),e=jf(d.as("s")),f=jf(d.as("m")),g=jf(d.as("h")),h=jf(d.as("d")),i=jf(d.as("M")),j=jf(d.as("y")),k=e<kf.s&&["s",e]||1>=f&&["m"]||f<kf.m&&["mm",f]||1>=g&&["h"]||g<kf.h&&["hh",g]||1>=h&&["d"]||h<kf.d&&["dd",h]||1>=i&&["M"]||i<kf.M&&["MM",i]||1>=j&&["y"]||["yy",j];return k[2]=b,k[3]=+a>0,k[4]=c,gd.apply(null,k)} +// This function allows you to set the rounding function for relative time strings +function id(a){return void 0===a?jf:"function"==typeof a?(jf=a,!0):!1} +// This function allows you to set a threshold for relative time strings +function jd(a,b){return void 0===kf[a]?!1:void 0===b?kf[a]:(kf[a]=b,!0)}function kd(a){var b=this.localeData(),c=hd(this,!a,b);return a&&(c=b.pastFuture(+this,c)),b.postformat(c)}function ld(){ +// for ISO strings we do not use the normal bubbling rules: +// * milliseconds bubble up until they become hours +// * days do not bubble at all +// * months bubble up until they become years +// This is because there is no context-free conversion between hours and days +// (think of clock changes) +// and also not between days and months (28-31 days per month) +var a,b,c,d=lf(this._milliseconds)/1e3,e=lf(this._days),f=lf(this._months);a=s(d/60),b=s(a/60),d%=60,a%=60,c=s(f/12),f%=12; +// inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js +var g=c,h=f,i=e,j=b,k=a,l=d,m=this.asSeconds();return m?(0>m?"-":"")+"P"+(g?g+"Y":"")+(h?h+"M":"")+(i?i+"D":"")+(j||k||l?"T":"")+(j?j+"H":"")+(k?k+"M":"")+(l?l+"S":""):"P0D"}var md,nd;nd=Array.prototype.some?Array.prototype.some:function(a){for(var b=Object(this),c=b.length>>>0,d=0;c>d;d++)if(d in b&&a.call(this,b[d],d,b))return!0;return!1}; +// Plugins that add properties should also add the key here (null value), +// so we can properly clone ourselves. +var od=a.momentProperties=[],pd=!1,qd={};a.suppressDeprecationWarnings=!1,a.deprecationHandler=null;var rd;rd=Object.keys?Object.keys:function(a){var b,c=[];for(b in a)h(a,b)&&c.push(b);return c};var sd,td={sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},ud={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},vd="Invalid date",wd="%d",xd=/\d{1,2}/,yd={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},zd={},Ad={},Bd=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Cd=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,Dd={},Ed={},Fd=/\d/,Gd=/\d\d/,Hd=/\d{3}/,Id=/\d{4}/,Jd=/[+-]?\d{6}/,Kd=/\d\d?/,Ld=/\d\d\d\d?/,Md=/\d\d\d\d\d\d?/,Nd=/\d{1,3}/,Od=/\d{1,4}/,Pd=/[+-]?\d{1,6}/,Qd=/\d+/,Rd=/[+-]?\d+/,Sd=/Z|[+-]\d\d:?\d\d/gi,Td=/Z|[+-]\d\d(?::?\d\d)?/gi,Ud=/[+-]?\d+(\.\d{1,3})?/,Vd=/[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,Wd={},Xd={},Yd=0,Zd=1,$d=2,_d=3,ae=4,be=5,ce=6,de=7,ee=8;sd=Array.prototype.indexOf?Array.prototype.indexOf:function(a){ +// I know +var b;for(b=0;b<this.length;++b)if(this[b]===a)return b;return-1},T("M",["MM",2],"Mo",function(){return this.month()+1}),T("MMM",0,0,function(a){return this.localeData().monthsShort(this,a)}),T("MMMM",0,0,function(a){return this.localeData().months(this,a)}),I("month","M"),L("month",8),Y("M",Kd),Y("MM",Kd,Gd),Y("MMM",function(a,b){return b.monthsShortRegex(a)}),Y("MMMM",function(a,b){return b.monthsRegex(a)}),aa(["M","MM"],function(a,b){b[Zd]=t(a)-1}),aa(["MMM","MMMM"],function(a,b,c,d){var e=c._locale.monthsParse(a,d,c._strict);null!=e?b[Zd]=e:l(c).invalidMonth=a}); +// LOCALES +var fe=/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/,ge="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),he="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),ie=Vd,je=Vd; +// FORMATTING +T("Y",0,0,function(){var a=this.year();return 9999>=a?""+a:"+"+a}),T(0,["YY",2],0,function(){return this.year()%100}),T(0,["YYYY",4],0,"year"),T(0,["YYYYY",5],0,"year"),T(0,["YYYYYY",6,!0],0,"year"), +// ALIASES +I("year","y"), +// PRIORITIES +L("year",1), +// PARSING +Y("Y",Rd),Y("YY",Kd,Gd),Y("YYYY",Od,Id),Y("YYYYY",Pd,Jd),Y("YYYYYY",Pd,Jd),aa(["YYYYY","YYYYYY"],Yd),aa("YYYY",function(b,c){c[Yd]=2===b.length?a.parseTwoDigitYear(b):t(b)}),aa("YY",function(b,c){c[Yd]=a.parseTwoDigitYear(b)}),aa("Y",function(a,b){b[Yd]=parseInt(a,10)}), +// HOOKS +a.parseTwoDigitYear=function(a){return t(a)+(t(a)>68?1900:2e3)}; +// MOMENTS +var ke=N("FullYear",!0); +// FORMATTING +T("w",["ww",2],"wo","week"),T("W",["WW",2],"Wo","isoWeek"), +// ALIASES +I("week","w"),I("isoWeek","W"), +// PRIORITIES +L("week",5),L("isoWeek",5), +// PARSING +Y("w",Kd),Y("ww",Kd,Gd),Y("W",Kd),Y("WW",Kd,Gd),ba(["w","ww","W","WW"],function(a,b,c,d){b[d.substr(0,1)]=t(a)});var le={dow:0,// Sunday is the first day of the week. +doy:6}; +// FORMATTING +T("d",0,"do","day"),T("dd",0,0,function(a){return this.localeData().weekdaysMin(this,a)}),T("ddd",0,0,function(a){return this.localeData().weekdaysShort(this,a)}),T("dddd",0,0,function(a){return this.localeData().weekdays(this,a)}),T("e",0,0,"weekday"),T("E",0,0,"isoWeekday"), +// ALIASES +I("day","d"),I("weekday","e"),I("isoWeekday","E"), +// PRIORITY +L("day",11),L("weekday",11),L("isoWeekday",11), +// PARSING +Y("d",Kd),Y("e",Kd),Y("E",Kd),Y("dd",function(a,b){return b.weekdaysMinRegex(a)}),Y("ddd",function(a,b){return b.weekdaysShortRegex(a)}),Y("dddd",function(a,b){return b.weekdaysRegex(a)}),ba(["dd","ddd","dddd"],function(a,b,c,d){var e=c._locale.weekdaysParse(a,d,c._strict); +// if we didn't get a weekday name, mark the date as invalid +null!=e?b.d=e:l(c).invalidWeekday=a}),ba(["d","e","E"],function(a,b,c,d){b[d]=t(a)}); +// LOCALES +var me="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),ne="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),oe="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),pe=Vd,qe=Vd,re=Vd;T("H",["HH",2],0,"hour"),T("h",["hh",2],0,Qa),T("k",["kk",2],0,Ra),T("hmm",0,0,function(){return""+Qa.apply(this)+S(this.minutes(),2)}),T("hmmss",0,0,function(){return""+Qa.apply(this)+S(this.minutes(),2)+S(this.seconds(),2)}),T("Hmm",0,0,function(){return""+this.hours()+S(this.minutes(),2)}),T("Hmmss",0,0,function(){return""+this.hours()+S(this.minutes(),2)+S(this.seconds(),2)}),Sa("a",!0),Sa("A",!1), +// ALIASES +I("hour","h"), +// PRIORITY +L("hour",13),Y("a",Ta),Y("A",Ta),Y("H",Kd),Y("h",Kd),Y("HH",Kd,Gd),Y("hh",Kd,Gd),Y("hmm",Ld),Y("hmmss",Md),Y("Hmm",Ld),Y("Hmmss",Md),aa(["H","HH"],_d),aa(["a","A"],function(a,b,c){c._isPm=c._locale.isPM(a),c._meridiem=a}),aa(["h","hh"],function(a,b,c){b[_d]=t(a),l(c).bigHour=!0}),aa("hmm",function(a,b,c){var d=a.length-2;b[_d]=t(a.substr(0,d)),b[ae]=t(a.substr(d)),l(c).bigHour=!0}),aa("hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[_d]=t(a.substr(0,d)),b[ae]=t(a.substr(d,2)),b[be]=t(a.substr(e)),l(c).bigHour=!0}),aa("Hmm",function(a,b,c){var d=a.length-2;b[_d]=t(a.substr(0,d)),b[ae]=t(a.substr(d))}),aa("Hmmss",function(a,b,c){var d=a.length-4,e=a.length-2;b[_d]=t(a.substr(0,d)),b[ae]=t(a.substr(d,2)),b[be]=t(a.substr(e))});var se,te=/[ap]\.?m?\.?/i,ue=N("Hours",!0),ve={calendar:td,longDateFormat:ud,invalidDate:vd,ordinal:wd,ordinalParse:xd,relativeTime:yd,months:ge,monthsShort:he,week:le,weekdays:me,weekdaysMin:oe,weekdaysShort:ne,meridiemParse:te},we={},xe=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,ye=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?/,ze=/Z|[+-]\d\d(?::?\d\d)?/,Ae=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/], +// YYYYMM is NOT allowed by the standard +["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Be=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Ce=/^\/?Date\((\-?\d+)/i;a.createFromInputFallback=w("value provided is not in a recognized ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(a){a._d=new Date(a._i+(a._useUTC?" UTC":""))}), +// constant that refers to the ISO standard +a.ISO_8601=function(){};var De=w("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=rb.apply(null,arguments);return this.isValid()&&a.isValid()?this>a?this:a:n()}),Ee=w("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var a=rb.apply(null,arguments);return this.isValid()&&a.isValid()?a>this?this:a:n()}),Fe=function(){return Date.now?Date.now():+new Date};yb("Z",":"),yb("ZZ",""), +// PARSING +Y("Z",Td),Y("ZZ",Td),aa(["Z","ZZ"],function(a,b,c){c._useUTC=!0,c._tzm=zb(Td,a)}); +// HELPERS +// timezone chunker +// '+10:00' > ['10', '00'] +// '-1530' > ['-15', '30'] +var Ge=/([\+\-]|\d\d)/gi; +// HOOKS +// This function will be called whenever a moment is mutated. +// It is intended to keep the offset in sync with the timezone. +a.updateOffset=function(){}; +// ASP.NET json date format regex +var He=/^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Ie=/^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;Nb.fn=vb.prototype;var Je=Rb(1,"add"),Ke=Rb(-1,"subtract");a.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",a.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Le=w("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(a){return void 0===a?this.localeData():this.locale(a)}); +// FORMATTING +T(0,["gg",2],0,function(){return this.weekYear()%100}),T(0,["GG",2],0,function(){return this.isoWeekYear()%100}),xc("gggg","weekYear"),xc("ggggg","weekYear"),xc("GGGG","isoWeekYear"),xc("GGGGG","isoWeekYear"), +// ALIASES +I("weekYear","gg"),I("isoWeekYear","GG"), +// PRIORITY +L("weekYear",1),L("isoWeekYear",1), +// PARSING +Y("G",Rd),Y("g",Rd),Y("GG",Kd,Gd),Y("gg",Kd,Gd),Y("GGGG",Od,Id),Y("gggg",Od,Id),Y("GGGGG",Pd,Jd),Y("ggggg",Pd,Jd),ba(["gggg","ggggg","GGGG","GGGGG"],function(a,b,c,d){b[d.substr(0,2)]=t(a)}),ba(["gg","GG"],function(b,c,d,e){c[e]=a.parseTwoDigitYear(b)}), +// FORMATTING +T("Q",0,"Qo","quarter"), +// ALIASES +I("quarter","Q"), +// PRIORITY +L("quarter",7), +// PARSING +Y("Q",Fd),aa("Q",function(a,b){b[Zd]=3*(t(a)-1)}), +// FORMATTING +T("D",["DD",2],"Do","date"), +// ALIASES +I("date","D"), +// PRIOROITY +L("date",9), +// PARSING +Y("D",Kd),Y("DD",Kd,Gd),Y("Do",function(a,b){return a?b._ordinalParse:b._ordinalParseLenient}),aa(["D","DD"],$d),aa("Do",function(a,b){b[$d]=t(a.match(Kd)[0],10)}); +// MOMENTS +var Me=N("Date",!0); +// FORMATTING +T("DDD",["DDDD",3],"DDDo","dayOfYear"), +// ALIASES +I("dayOfYear","DDD"), +// PRIORITY +L("dayOfYear",4), +// PARSING +Y("DDD",Nd),Y("DDDD",Hd),aa(["DDD","DDDD"],function(a,b,c){c._dayOfYear=t(a)}), +// FORMATTING +T("m",["mm",2],0,"minute"), +// ALIASES +I("minute","m"), +// PRIORITY +L("minute",14), +// PARSING +Y("m",Kd),Y("mm",Kd,Gd),aa(["m","mm"],ae); +// MOMENTS +var Ne=N("Minutes",!1); +// FORMATTING +T("s",["ss",2],0,"second"), +// ALIASES +I("second","s"), +// PRIORITY +L("second",15), +// PARSING +Y("s",Kd),Y("ss",Kd,Gd),aa(["s","ss"],be); +// MOMENTS +var Oe=N("Seconds",!1); +// FORMATTING +T("S",0,0,function(){return~~(this.millisecond()/100)}),T(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),T(0,["SSS",3],0,"millisecond"),T(0,["SSSS",4],0,function(){return 10*this.millisecond()}),T(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),T(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),T(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),T(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),T(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}), +// ALIASES +I("millisecond","ms"), +// PRIORITY +L("millisecond",16), +// PARSING +Y("S",Nd,Fd),Y("SS",Nd,Gd),Y("SSS",Nd,Hd);var Pe;for(Pe="SSSS";Pe.length<=9;Pe+="S")Y(Pe,Qd);for(Pe="S";Pe.length<=9;Pe+="S")aa(Pe,Gc); +// MOMENTS +var Qe=N("Milliseconds",!1); +// FORMATTING +T("z",0,0,"zoneAbbr"),T("zz",0,0,"zoneName");var Re=q.prototype;Re.add=Je,Re.calendar=Ub,Re.clone=Vb,Re.diff=ac,Re.endOf=mc,Re.format=ec,Re.from=fc,Re.fromNow=gc,Re.to=hc,Re.toNow=ic,Re.get=Q,Re.invalidAt=vc,Re.isAfter=Wb,Re.isBefore=Xb,Re.isBetween=Yb,Re.isSame=Zb,Re.isSameOrAfter=$b,Re.isSameOrBefore=_b,Re.isValid=tc,Re.lang=Le,Re.locale=jc,Re.localeData=kc,Re.max=Ee,Re.min=De,Re.parsingFlags=uc,Re.set=R,Re.startOf=lc,Re.subtract=Ke,Re.toArray=qc,Re.toObject=rc,Re.toDate=pc,Re.toISOString=dc,Re.toJSON=sc,Re.toString=cc,Re.unix=oc,Re.valueOf=nc,Re.creationData=wc, +// Year +Re.year=ke,Re.isLeapYear=qa, +// Week Year +Re.weekYear=yc,Re.isoWeekYear=zc, +// Quarter +Re.quarter=Re.quarters=Ec, +// Month +Re.month=ja,Re.daysInMonth=ka, +// Week +Re.week=Re.weeks=Aa,Re.isoWeek=Re.isoWeeks=Ba,Re.weeksInYear=Bc,Re.isoWeeksInYear=Ac, +// Day +Re.date=Me,Re.day=Re.days=Ja,Re.weekday=Ka,Re.isoWeekday=La,Re.dayOfYear=Fc, +// Hour +Re.hour=Re.hours=ue, +// Minute +Re.minute=Re.minutes=Ne, +// Second +Re.second=Re.seconds=Oe, +// Millisecond +Re.millisecond=Re.milliseconds=Qe, +// Offset +Re.utcOffset=Cb,Re.utc=Eb,Re.local=Fb,Re.parseZone=Gb,Re.hasAlignedHourOffset=Hb,Re.isDST=Ib,Re.isLocal=Kb,Re.isUtcOffset=Lb,Re.isUtc=Mb,Re.isUTC=Mb, +// Timezone +Re.zoneAbbr=Hc,Re.zoneName=Ic, +// Deprecations +Re.dates=w("dates accessor is deprecated. Use date instead.",Me),Re.months=w("months accessor is deprecated. Use month instead",ja),Re.years=w("years accessor is deprecated. Use year instead",ke),Re.zone=w("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Db),Re.isDSTShifted=w("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Jb);var Se=Re,Te=B.prototype;Te.calendar=C,Te.longDateFormat=D,Te.invalidDate=E,Te.ordinal=F,Te.preparse=Lc,Te.postformat=Lc,Te.relativeTime=G,Te.pastFuture=H,Te.set=z, +// Month +Te.months=ea,Te.monthsShort=fa,Te.monthsParse=ha,Te.monthsRegex=ma,Te.monthsShortRegex=la, +// Week +Te.week=xa,Te.firstDayOfYear=za,Te.firstDayOfWeek=ya, +// Day of Week +Te.weekdays=Ea,Te.weekdaysMin=Ga,Te.weekdaysShort=Fa,Te.weekdaysParse=Ia,Te.weekdaysRegex=Ma,Te.weekdaysShortRegex=Na,Te.weekdaysMinRegex=Oa, +// Hours +Te.isPM=Ua,Te.meridiem=Va,Za("en",{ordinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(a){var b=a%10,c=1===t(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}}), +// Side effect imports +a.lang=w("moment.lang is deprecated. Use moment.locale instead.",Za),a.langData=w("moment.langData is deprecated. Use moment.localeData instead.",ab);var Ue=Math.abs,Ve=cd("ms"),We=cd("s"),Xe=cd("m"),Ye=cd("h"),Ze=cd("d"),$e=cd("w"),_e=cd("M"),af=cd("y"),bf=ed("milliseconds"),cf=ed("seconds"),df=ed("minutes"),ef=ed("hours"),ff=ed("days"),gf=ed("months"),hf=ed("years"),jf=Math.round,kf={s:45,// seconds to minute +m:45,// minutes to hour +h:22,// hours to day +d:26,// days to month +M:11},lf=Math.abs,mf=vb.prototype;mf.abs=Uc,mf.add=Wc,mf.subtract=Xc,mf.as=ad,mf.asMilliseconds=Ve,mf.asSeconds=We,mf.asMinutes=Xe,mf.asHours=Ye,mf.asDays=Ze,mf.asWeeks=$e,mf.asMonths=_e,mf.asYears=af,mf.valueOf=bd,mf._bubble=Zc,mf.get=dd,mf.milliseconds=bf,mf.seconds=cf,mf.minutes=df,mf.hours=ef,mf.days=ff,mf.weeks=fd,mf.months=gf,mf.years=hf,mf.humanize=kd,mf.toISOString=ld,mf.toString=ld,mf.toJSON=ld,mf.locale=jc,mf.localeData=kc, +// Deprecations +mf.toIsoString=w("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",ld),mf.lang=Le, +// Side effect imports +// FORMATTING +T("X",0,0,"unix"),T("x",0,0,"valueOf"), +// PARSING +Y("x",Rd),Y("X",Ud),aa("X",function(a,b,c){c._d=new Date(1e3*parseFloat(a,10))}),aa("x",function(a,b,c){c._d=new Date(t(a))}), +// Side effect imports +a.version="2.15.1",b(rb),a.fn=Se,a.min=tb,a.max=ub,a.now=Fe,a.utc=j,a.unix=Jc,a.months=Pc,a.isDate=f,a.locale=Za,a.invalid=n,a.duration=Nb,a.isMoment=r,a.weekdays=Rc,a.parseZone=Kc,a.localeData=ab,a.isDuration=wb,a.monthsShort=Qc,a.weekdaysMin=Tc,a.defineLocale=$a,a.updateLocale=_a,a.locales=bb,a.weekdaysShort=Sc,a.normalizeUnits=J,a.relativeTimeRounding=id,a.relativeTimeThreshold=jd,a.calendarFormat=Tb,a.prototype=Se;var nf=a;return nf}); diff --git a/layouts/v7/modules/Portal/IndexViewPreProcess.tpl b/layouts/v7/modules/Portal/IndexViewPreProcess.tpl index ebb454adab16c40dfcefdf0cc26d379e8b341d27..03cf1b46d5f57467303dda4d102fe3ccbaa49ae0 100644 --- a/layouts/v7/modules/Portal/IndexViewPreProcess.tpl +++ b/layouts/v7/modules/Portal/IndexViewPreProcess.tpl @@ -6,24 +6,28 @@ * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. ************************************************************************************} -{* modules/Vtiger/views/Index.php *} -{* START YOUR IMPLEMENTATION FROM BELOW. Use {debug} for information *} -{include file="modules/Vtiger/partials/Topbar.tpl"} +{strip} + {include file="modules/Vtiger/partials/Topbar.tpl"} -<div class="container-fluid app-nav"> - <div class="row"> - {include file="modules/Portal/SidebarHeader.tpl"} - {include file="ModuleHeader.tpl"|vtemplate_path:$MODULE} - </div> -</div> -</nav> -<div id='overlayPageContent' class='fade modal overlayPageContent content-area overlay-container-60' tabindex='-1' role='dialog' aria-hidden='true'> - <div class="data"> - </div> - <div class="modal-dialog"> - </div> -</div> -<div class="main-container main-container-{$MODULE}"> - - <div class="listViewPageDiv content-area full-width" id="listViewContent"> + <div class="container-fluid app-nav"> + <div class="row"> + {include file="modules/Portal/SidebarHeader.tpl"} + {include file="ModuleHeader.tpl"|vtemplate_path:$MODULE} + </div> + </div> + </nav> + <div id='overlayPageContent' class='fade modal overlayPageContent content-area overlay-container-60' tabindex='-1' role='dialog' aria-hidden='true'> + <div class="data"> + </div> + <div class="modal-dialog"> + </div> + </div> + <div class="main-container main-container-{$MODULE}"> + <div id="modnavigator" class="module-nav"> + <div class="hidden-xs hidden-sm mod-switcher-container"> + {include file="partials/Menubar.tpl"|vtemplate_path:$MODULE} + </div> + </div> + <div class="listViewPageDiv content-area full-width" id="listViewContent"> +{/strip} \ No newline at end of file diff --git a/layouts/v7/modules/Portal/ListViewHeader.tpl b/layouts/v7/modules/Portal/ListViewHeader.tpl index 01ebde46203ab75ae0b98b6b444f2a7a2d065982..04a1cb1f4bf92c1c1487fe01664738a6508f5a48 100644 --- a/layouts/v7/modules/Portal/ListViewHeader.tpl +++ b/layouts/v7/modules/Portal/ListViewHeader.tpl @@ -10,6 +10,5 @@ {* START YOUR IMPLEMENTATION FROM BELOW. Use {debug} for information *} {strip} - <div class="col-sm-12 col-xs-12" id="portalListViewPage"> - - {strip} \ No newline at end of file + <div id="portalListViewPage"> +{/strip} \ No newline at end of file diff --git a/layouts/v7/modules/Portal/ModuleHeader.tpl b/layouts/v7/modules/Portal/ModuleHeader.tpl index 5d29cd0f9c9636d029f34bdfab58ad2511cbf3ee..28a544b64c8af5117666fd29814ce3bd5767986a 100644 --- a/layouts/v7/modules/Portal/ModuleHeader.tpl +++ b/layouts/v7/modules/Portal/ModuleHeader.tpl @@ -20,10 +20,10 @@ {else} {assign var=DEFAULT_FILTER_URL value=$MODULE_MODEL->getListViewUrlWithAllFilter()} {/if} - <a title="{vtranslate($MODULE, $MODULE)}" href='{$DEFAULT_FILTER_URL}'><h4 class="module-title pull-left text-uppercase"> {vtranslate($MODULE, $MODULE)} </h4></a> + <a title="{vtranslate($MODULE, $MODULE)}" href='{$DEFAULT_FILTER_URL}'><h4 class="module-title pull-left text-uppercase"> {vtranslate($MODULE, $MODULE)} </h4></a> </span> <span> - <p class="current-filter-name pull-left"> <span class="fa fa-angle-right" aria-hidden="true"></span> {$VIEW} </p> + <p class="current-filter-name pull-left"> <span class="fa fa-angle-right" aria-hidden="true"></span> {$VIEW} </p> </span> {if $VIEWID} {foreach item=FILTER_TYPES from=$CUSTOM_VIEWS} @@ -35,7 +35,7 @@ {/foreach} {/foreach} <span> - <p class="current-filter-name filter-name pull-left"> <span class="fa fa-angle-right" aria-hidden="true"></span> {$CVNAME} </p> + <p class="current-filter-name filter-name pull-left"><span class="fa fa-angle-right" aria-hidden="true"></span> {$CVNAME} </p> </span> {/if} </div> @@ -45,7 +45,7 @@ {assign var=BASIC_ACTION value=$MODULE_BASIC_ACTIONS} <li> <button class="btn btn-default addBookmark addButton module-buttons" > - <i class="fa fa-plus"></i> {vtranslate('LBL_ADD_BOOKMARK',$MODULE)}</i> + <i class="fa fa-plus"></i> {vtranslate('LBL_ADD_BOOKMARK',$MODULE)}</i> </button> </li> </ul> diff --git a/layouts/v7/modules/Portal/SidebarHeader.tpl b/layouts/v7/modules/Portal/SidebarHeader.tpl index 670dc02b3cfd63f61fa6f72022c33a6460dcee56..8ccbd66fab0add1e64695f1fae43a03f17f40008 100644 --- a/layouts/v7/modules/Portal/SidebarHeader.tpl +++ b/layouts/v7/modules/Portal/SidebarHeader.tpl @@ -6,13 +6,8 @@ * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. ************************************************************************************} -{assign var="APP_IMAGE_MAP" value=[ - 'MARKETING' => 'fa-users', - 'SALES' => 'fa-dot-circle-o', - 'SUPPORT' => 'fa-life-ring', - 'INVENTORY' => 'vicon-inventory', - 'PROJECT' => 'fa-briefcase' - ]} + +{assign var=APP_IMAGE_MAP value=Vtiger_MenuStructure_Model::getAppIcons()} <div class="col-sm-12 col-xs-12 app-indicator-icon-container app-{$SELECTED_MENU_CATEGORY}"> <div class="row" title="{vtranslate("Portal",$MODULE)}"> <span class="app-indicator-icon fa fa-desktop"></span> diff --git a/layouts/v7/modules/Potentials/ConvertPotentialError.tpl b/layouts/v7/modules/Potentials/ConvertPotentialError.tpl index d284bf00b67a551150ac71a6053bb698e64bf92a..8a1c28c0fe8e7358c268a689facae1defdf6bf57 100644 --- a/layouts/v7/modules/Potentials/ConvertPotentialError.tpl +++ b/layouts/v7/modules/Potentials/ConvertPotentialError.tpl @@ -1,12 +1,41 @@ {*+********************************************************************************** - * 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. - ************************************************************************************} -{* modules/Potentials/views/SaveConvertPotential.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. +*************************************************************************************} + +{strip} + <div class="row" style="border: 3px solid rgb(153, 153, 153); background-color: rgb(255, 255, 255);position: relative; z-index: 10000000; padding: 10px; width: 80%; margin: 0 auto; margin-top: 5%;"> + <div class ="col-lg-1 col-sm-2 col-md-1" style="float: left;"><img src="{vimage_path('denied.gif')}" ></div> + <div class ="col-lg-11 col-sm-10 col-md-11" nowrap="nowrap"> + <span class="genHeaderSmall"> + {if $IS_DUPICATES_FAILURE} + <span>{$EXCEPTION}</span> + {else} + {assign var=SINGLE_MODULE value="SINGLE_$MODULE"} + <span class="genHeaderSmall">{vtranslate($SINGLE_MODULE, $MODULE)} {vtranslate('CANNOT_CONVERT', $MODULE)} + <br> + <ul> {vtranslate('LBL_FOLLOWING_ARE_POSSIBLE_REASONS', $MODULE)}: + <li>{vtranslate('LBL_POTENTIALS_FIELD_MAPPING_INCOMPLETE', $MODULE)}</li> + <li>{vtranslate('LBL_MANDATORY_FIELDS_ARE_EMPTY', $MODULE)}</li> + {if $EXCEPTION} + <li>{$EXCEPTION}</li> + {/if} + </ul> + </span> + {/if} + </span> + <hr> + <div class="small" align="right" nowrap="nowrap"> + {if !$IS_DUPICATES_FAILURE && $CURRENT_USER->isAdminUser()} + <a href="index.php?parent=Settings&module=Potentials&view=MappingDetail">{vtranslate('LBL_POTENTIALS_FIELD_MAPPING', $MODULE)}</a><br> + {/if} + <a href="javascript:window.history.back();">{vtranslate('LBL_GO_BACK', $MODULE)}</a><br> + </div> + </div> + </div> +{/strip} -{* START YOUR IMPLEMENTATION FROM BELOW. Use {debug} for information *} -<DIV>TEMPLATE: layout/modules/Potentials/ConvertPotentialError.tpl</DIV> diff --git a/layouts/v7/modules/Potentials/DetailViewHeaderTitle.tpl b/layouts/v7/modules/Potentials/DetailViewHeaderTitle.tpl index 40d7e3a0d762a7c3d917de0a588ed3b6edae0378..7aba6fb1329954b12619ebdd0ae83f6c0a5d7b79 100644 --- a/layouts/v7/modules/Potentials/DetailViewHeaderTitle.tpl +++ b/layouts/v7/modules/Potentials/DetailViewHeaderTitle.tpl @@ -13,7 +13,7 @@ <div class="col-sm-6 col-lg-6 col-md-6"> <div class="record-header clearfix"> <div class="hidden-sm hidden-xs recordImage bgpotentials app-{$SELECTED_MENU_CATEGORY}"> - <div class="name"><span><strong> <i class="vicon-potentials"></i> </strong></span></div> + <div class="name"><span><strong>{$MODULE_MODEL->getModuleIcon()}</strong></span></div> </div> <div class="recordBasicInfo"> diff --git a/layouts/v7/modules/Products/DetailViewHeaderTitle.tpl b/layouts/v7/modules/Products/DetailViewHeaderTitle.tpl index 06512682ab182f8161cb0b700c9776db6d5579bd..59f83579e25661afd5d25cf094e8433a9995479a 100644 --- a/layouts/v7/modules/Products/DetailViewHeaderTitle.tpl +++ b/layouts/v7/modules/Products/DetailViewHeaderTitle.tpl @@ -30,9 +30,9 @@ <img src="{vimage_path('summary_Products.png')}" class="summaryImg"/> {/if} {/foreach} - {if empty($IMAGE_DETAILS)} - <div class="name"><span><strong> <i class="vicon-products"></i> </strong></span></div> - {/if} + {if empty($IMAGE_DETAILS)} + <div class="name"><span><strong>{$MODULE_MODEL->getModuleIcon()}</strong></span></div> + {/if} </div> <div class="recordBasicInfo"> diff --git a/layouts/v7/modules/Products/PriceBookProductPopup.tpl b/layouts/v7/modules/Products/PriceBookProductPopup.tpl index f94ee303a40ad48f661f0ec66632e8ca819d9fb3..44aacf54302c968575c62d6b617d1cc1370afbdc 100644 --- a/layouts/v7/modules/Products/PriceBookProductPopup.tpl +++ b/layouts/v7/modules/Products/PriceBookProductPopup.tpl @@ -44,7 +44,7 @@ <center> <footer> <button class="btn btn-success addProducts" type="submit"> - <i class="fa fa-plus"></i> + <i class="fa fa-plus"></i> <strong>{vtranslate('LBL_ADD_TO_PRICEBOOKS', $MODULE)}</strong> </button> <a class="cancelLink" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> diff --git a/layouts/v7/modules/Products/ProductsPopup.tpl b/layouts/v7/modules/Products/ProductsPopup.tpl index 2216490ad6972ede2fb132d4a4bdfd20c837296b..861a02ce295ede37d090cac2ea0a1026a251c0cf 100644 --- a/layouts/v7/modules/Products/ProductsPopup.tpl +++ b/layouts/v7/modules/Products/ProductsPopup.tpl @@ -43,7 +43,7 @@ <center> <footer> <button class="btn btn-success addProducts" type="submit"> - <i class="fa fa-plus"></i> + <i class="fa fa-plus"></i> <strong>{vtranslate('LBL_ADD_TO_PRODUCTS',$MODULE)}</strong> </button> <a class="cancelLink" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> diff --git a/layouts/v7/modules/PurchaseOrder/DetailViewHeaderTitle.tpl b/layouts/v7/modules/PurchaseOrder/DetailViewHeaderTitle.tpl index ff1f18071beba5580551c334b219293a3fa0042d..a2c8da0ee510aeb95b2d5b7fea597b7de34c7413 100644 --- a/layouts/v7/modules/PurchaseOrder/DetailViewHeaderTitle.tpl +++ b/layouts/v7/modules/PurchaseOrder/DetailViewHeaderTitle.tpl @@ -22,8 +22,8 @@ {/if} {/foreach} {if empty($IMAGE_DETAILS)} - <div class="name"><span><strong> <i class="vicon-purchaseorder"></i> </strong></span></div> - {/if} + <div class="name"><span><strong>{$MODULE_MODEL->getModuleIcon()}</strong></span></div> + {/if} </div> <div class="recordBasicInfo"> <div class="info-row"> diff --git a/layouts/v7/modules/Quotes/DetailViewHeaderTitle.tpl b/layouts/v7/modules/Quotes/DetailViewHeaderTitle.tpl index 0ebcaabdf68d7e012c966c66f7e8a8f5170e8361..9fcf58ad1b36a26641223fc23918d49f5e4768c1 100644 --- a/layouts/v7/modules/Quotes/DetailViewHeaderTitle.tpl +++ b/layouts/v7/modules/Quotes/DetailViewHeaderTitle.tpl @@ -21,9 +21,9 @@ <img src="{vimage_path('summary_organizations.png')}" class="summaryImg"/> {/if} {/foreach} - {if empty($IMAGE_DETAILS)} - <div class="name"><span><strong> <i class="vicon-quotes"></i> </strong></span></div> - {/if} + {if empty($IMAGE_DETAILS)} + <div class="name"><span><strong>{$MODULE_MODEL->getModuleIcon()}</strong></span></div> + {/if} </div> <div class="recordBasicInfo"> <div class="info-row"> diff --git a/layouts/v7/modules/Reports/ModuleHeader.tpl b/layouts/v7/modules/Reports/ModuleHeader.tpl index 5954a671ec2e06505216fb40678cb1ed950f5fea..2e5d57fec1199b5113c82d548770016156968e15 100644 --- a/layouts/v7/modules/Reports/ModuleHeader.tpl +++ b/layouts/v7/modules/Reports/ModuleHeader.tpl @@ -22,15 +22,18 @@ {else} {assign var=DEFAULT_FILTER_URL value=$MODULE_MODEL->getListViewUrlWithAllFilter()} {/if} - <a title="{vtranslate($MODULE, $MODULE)}" href='{$DEFAULT_FILTER_URL}'><h4 class="module-title pull-left"> {vtranslate($MODULE, $MODULE)} </h4></a> + <a title="{vtranslate($MODULE, $MODULE)}" href='{$DEFAULT_FILTER_URL}'><h4 class="module-title pull-left"> {vtranslate($MODULE, $MODULE)} </h4></a> </span> <span> - <p class="current-filter-name pull-left"> <span class="fa fa-angle-right" aria-hidden="true"></span> + <p class="current-filter-name pull-left"> + <span class="fa fa-angle-right" aria-hidden="true"></span> + {if $VIEW eq 'Detail' or $VIEW eq 'ChartDetail'} - {$REPORT_NAME} + {$REPORT_NAME} {else} - {$VIEW} + {$VIEW} {/if} + </p> </span> {if $VIEWNAME} @@ -45,7 +48,7 @@ {assign var=FOLDERNAME value=vtranslate('LBL_ALL_REPORTS', $MODULE)} {/if} <span> - <p class="current-filter-name filter-name pull-left"> <span class="fa fa-angle-right" aria-hidden="true"></span> {$FOLDERNAME} </p> + <p class="current-filter-name filter-name pull-left"><span class="fa fa-angle-right" aria-hidden="true"></span> {$FOLDERNAME} </p> </span> {/if} </span> @@ -57,7 +60,7 @@ {if $childLinks && $LISTVIEW_BASICACTION->get('linklabel') == 'LBL_ADD_RECORD'} <span class="btn-group"> <button class="btn btn-default dropdown-toggle module-buttons" data-toggle="dropdown" id="{$MODULE}_listView_basicAction_Add"> - <i class="fa fa-plus"></i> + <i class="fa fa-plus"></i> {vtranslate($LISTVIEW_BASICACTION->getLabel(), $MODULE)} <i class="caret icon-white"></i> </button> diff --git a/layouts/v7/modules/Reports/partials/SidebarHeader.tpl b/layouts/v7/modules/Reports/partials/SidebarHeader.tpl index 3cd99fe19da03a413007ae533f22dc1a76750da3..abb6909f893f010ebc803733169c51c44be05204 100644 --- a/layouts/v7/modules/Reports/partials/SidebarHeader.tpl +++ b/layouts/v7/modules/Reports/partials/SidebarHeader.tpl @@ -6,14 +6,9 @@ * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. ************************************************************************************} -{assign var="APP_IMAGE_MAP" value=[ - 'MARKETING' => 'fa-users', - 'SALES' => 'fa-dot-circle-o', - 'SUPPORT' => 'fa-life-ring', - 'INVENTORY' => 'vicon-inventory', - 'PROJECT' => 'fa-briefcase' -]} - + +{assign var=APP_IMAGE_MAP value=Vtiger_MenuStructure_Model::getAppIcons()} + <div class="col-sm-12 col-xs-12 app-indicator-icon-container app-{$SELECTED_MENU_CATEGORY}"> <div class="row" title="{strtoupper(vtranslate($MODULE, $MODULE))}"> <span class="app-indicator-icon fa fa-bar-chart"></span> diff --git a/layouts/v7/modules/Rss/ListViewContents.tpl b/layouts/v7/modules/Rss/ListViewContents.tpl index ed70b3d9e991b18383defc738f1d18fc0ee71f26..f7ef336cecb2c134ce52ce0699da78f650a9d906 100644 --- a/layouts/v7/modules/Rss/ListViewContents.tpl +++ b/layouts/v7/modules/Rss/ListViewContents.tpl @@ -1,66 +1,64 @@ {*+********************************************************************************** - * 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. - ************************************************************************************} +* 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. +************************************************************************************} {* modules/Rss/views/List.php *} {* START YOUR IMPLEMENTATION FROM BELOW. Use {debug} for information *} {strip} -<div class="listViewContentDiv" id="listViewContents"> -<div class="col-sm-12 col-xs-12"> -{assign var=LEFTPANELHIDE value=$CURRENT_USER_MODEL->get('leftpanelhide')} -<div class="essentials-toggle" title="{vtranslate('LBL_LEFT_PANEL_SHOW_HIDE', 'Vtiger')}"> - <span class="essentials-toggle-marker fa {if $LEFTPANELHIDE eq '1'}fa-chevron-right{else}fa-chevron-left{/if} cursorPointer"></span> -</div> -<input type="hidden" id="sourceModule" value="{$SOURCE_MODULE}" /> -<div class="listViewEntriesDiv"> - <span class="listViewLoadingImageBlock hide modal" id="loadingListViewModal"> - <img class="listViewLoadingImage" src="{vimage_path('loading.gif')}" alt="no-image" title="{vtranslate('LBL_LOADING', $MODULE)}"/> - <p class="listViewLoadingMsg">{vtranslate('LBL_LOADING_LISTVIEW_CONTENTS', $MODULE)}........</p> - </span> - <div class="feedContainer"> - {if $RECORD} - <input id="recordId" type="hidden" value="{$RECORD->getId()}"> - <div class="row-fluid"> - <span class="btn-toolbar pull-right"> - <span class="btn-group"> - <button id="deleteButton" class="btn btn-default"> <strong>{vtranslate('LBL_DELETE', $MODULE)}</strong></button> - </span> - <span class="btn-group"> - <button id="makeDefaultButton" class="btn btn-default"> <strong>{vtranslate('LBL_SET_AS_DEFAULT', $MODULE)}</strong></button> - </span> - </span> - <span class="row-fluid" id="rssFeedHeading"> - <h3> {vtranslate('LBL_FEEDS_LIST_FROM',$MODULE)} : {$RECORD->getName()} </h3> - </span> - </div> - <div class="table-container feedListContainer" style="overflow: auto;"> - {include file='RssFeedContents.tpl'|@vtemplate_path:$MODULE} - </div> - {else} - <table class="table-container emptyRecordsDiv"> - <tbody> - <tr> - <td> - {assign var=SINGLE_MODULE value="SINGLE_$MODULE"} - {vtranslate('LBL_NO')} {vtranslate($MODULE, $MODULE)} {vtranslate('LBL_FOUND')}. {vtranslate('LBL_CREATE')}<a class="rssAddButton" href="#" data-href="{$QUICK_LINKS['SIDEBARLINK'][0]->getUrl()}"> {vtranslate($SINGLE_MODULE, $MODULE)}</a> - </td> - </tr> - </tbody> - </table> - {/if} - </div> -</div> -<br> -<div class="feedFrame"> -</div> -</div> - <div id="scroller_wrapper" class="bottom-fixed-scroll"> - <div id="scroller" class="scroller-div"></div> - </div> -</div> + <div class="listViewContentDiv" id="listViewContents"> + <div class="col-sm-12 col-xs-12"> + {assign var=LEFTPANELHIDE value=$CURRENT_USER_MODEL->get('leftpanelhide')} + <div class="essentials-toggle" title="{vtranslate('LBL_LEFT_PANEL_SHOW_HIDE', 'Vtiger')}"> + <span class="essentials-toggle-marker fa {if $LEFTPANELHIDE eq '1'}fa-chevron-right{else}fa-chevron-left{/if} cursorPointer"></span> + </div> + <input type="hidden" id="sourceModule" value="{$SOURCE_MODULE}" /> + <div class="listViewEntriesDiv"> + <span class="listViewLoadingImageBlock hide modal" id="loadingListViewModal"> + <img class="listViewLoadingImage" src="{vimage_path('loading.gif')}" alt="no-image" title="{vtranslate('LBL_LOADING', $MODULE)}"/> + <p class="listViewLoadingMsg">{vtranslate('LBL_LOADING_LISTVIEW_CONTENTS', $MODULE)}........</p> + </span> + <div class="feedContainer"> + {if $RECORD} + <input id="recordId" type="hidden" value="{$RECORD->getId()}"> + <div class="row-fluid detailViewButtoncontainer"> + <span class="btn-toolbar pull-right"> + <span class="btn-group"> + <button id="deleteButton" class="btn btn-default"> {vtranslate('LBL_DELETE', $MODULE)}</button> + <button id="makeDefaultButton" class="btn btn-default"> {vtranslate('LBL_SET_AS_DEFAULT', $MODULE)}</button> + </span> + </span> + <span class="row-fluid" id="rssFeedHeading"> + <h3> {vtranslate('LBL_FEEDS_LIST_FROM',$MODULE)} : {$RECORD->getName()} </h3> + </span> + </div> + <div class="table-container feedListContainer" style="overflow: auto;"> + {include file='RssFeedContents.tpl'|@vtemplate_path:$MODULE} + </div> + {else} + <table class="table-container emptyRecordsDiv"> + <tbody> + <tr> + <td> + {assign var=SINGLE_MODULE value="SINGLE_$MODULE"} + {vtranslate('LBL_NO')} {vtranslate($MODULE, $MODULE)} {vtranslate('LBL_FOUND')}. {vtranslate('LBL_CREATE')}<a class="rssAddButton" href="#" data-href="{$QUICK_LINKS['SIDEBARLINK'][0]->getUrl()}"> {vtranslate($SINGLE_MODULE, $MODULE)}</a> + </td> + </tr> + </tbody> + </table> + {/if} + </div> + </div> + <br> + <div class="feedFrame"> + </div> + </div> + <div id="scroller_wrapper" class="bottom-fixed-scroll"> + <div id="scroller" class="scroller-div"></div> + </div> + </div> {/strip} diff --git a/layouts/v7/modules/Rss/ModuleHeader.tpl b/layouts/v7/modules/Rss/ModuleHeader.tpl index abaabfd1d5135397b0dfebda6d98154dc9597804..3f9180b97925ff8a74bdaecbe5a3721669cdde9a 100644 --- a/layouts/v7/modules/Rss/ModuleHeader.tpl +++ b/layouts/v7/modules/Rss/ModuleHeader.tpl @@ -22,10 +22,10 @@ {else} {assign var=DEFAULT_FILTER_URL value=$MODULE_MODEL->getListViewUrlWithAllFilter()} {/if} - <a title="{vtranslate($MODULE, $MODULE)}" href='{$DEFAULT_FILTER_URL}'><h4 class="module-title pull-left text-uppercase"> {vtranslate($MODULE, $MODULE)} </h4></a> + <a title="{vtranslate($MODULE, $MODULE)}" href='{$DEFAULT_FILTER_URL}'><h4 class="module-title pull-left text-uppercase"> {vtranslate($MODULE, $MODULE)} </h4></a> </span> <span> - <p class="current-filter-name pull-left"> <span class="fa fa-angle-right" aria-hidden="true"></span> {$VIEW} </p> + <p class="current-filter-name pull-left"> <span class="fa fa-angle-right" aria-hidden="true"></span> {$VIEW} </p> </span> {if $VIEWID} {foreach item=FILTER_TYPES from=$CUSTOM_VIEWS} @@ -37,7 +37,7 @@ {/foreach} {/foreach} <span> - <p class="current-filter-name filter-name pull-left"> <span class="fa fa-angle-right" aria-hidden="true"></span> {$CVNAME} </p> + <p class="current-filter-name filter-name pull-left"> <span class="fa fa-angle-right" aria-hidden="true"></span> {$CVNAME} </p> </span> {/if} </div> @@ -47,7 +47,7 @@ {assign var=BASIC_ACTION value=$MODULE_BASIC_ACTIONS} <li> <button class="btn btn-default rssAddButton module-buttons" > - <i class="fa fa-plus"></i> {vtranslate('LBL_FEED_SOURCE',$MODULE)}</i> + <i class="fa fa-plus"></i> {vtranslate('LBL_FEED_SOURCE',$MODULE)}</i> </button> </li> </ul> diff --git a/layouts/v7/modules/Rss/partials/SidebarHeader.tpl b/layouts/v7/modules/Rss/partials/SidebarHeader.tpl index bf83fd1a53ece0af140b0c23f729157c2870c523..9fb2b634ce8a11d63322bbac2cd8476388311efa 100644 --- a/layouts/v7/modules/Rss/partials/SidebarHeader.tpl +++ b/layouts/v7/modules/Rss/partials/SidebarHeader.tpl @@ -6,13 +6,8 @@ * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. ************************************************************************************} -{assign var="APP_IMAGE_MAP" value=[ - 'MARKETING' => 'fa-users', - 'SALES' => 'fa-dot-circle-o', - 'SUPPORT' => 'fa-life-ring', - 'INVENTORY' => 'vicon-inventory', - 'PROJECT' => 'fa-briefcase' -]} + +{assign var=APP_IMAGE_MAP value=Vtiger_MenuStructure_Model::getAppIcons()} <div id="appnavigator" class="col-sm-12 col-xs-12 app-switcher-container app-{$SELECTED_MENU_CATEGORY}"> <a id="menu-toggle" class="menu-toggle" href="#"> <span class="icon-bar"></span> diff --git a/layouts/v7/modules/SalesOrder/DetailViewHeaderTitle.tpl b/layouts/v7/modules/SalesOrder/DetailViewHeaderTitle.tpl index b2608b9abc0ae83d4ef38f7eb97466de685d6009..965261dd62dfb80b818bfcebe8501fa259d7748c 100644 --- a/layouts/v7/modules/SalesOrder/DetailViewHeaderTitle.tpl +++ b/layouts/v7/modules/SalesOrder/DetailViewHeaderTitle.tpl @@ -21,9 +21,9 @@ <img src="{vimage_path('summary_organizations.png')}" class="summaryImg"/> {/if} {/foreach} - {if empty($IMAGE_DETAILS)} - <div class="name"><span><strong> <i class="vicon-salesorder"></i> </strong></span></div> - {/if} + {if empty($IMAGE_DETAILS)} + <div class="name"><span><strong>{$MODULE_MODEL->getModuleIcon()}</strong></span></div> + {/if} </div> <div class="recordBasicInfo"> <div class="info-row"> diff --git a/layouts/v7/modules/Settings/ExtensionStore/CardSetupModals.tpl b/layouts/v7/modules/Settings/ExtensionStore/CardSetupModals.tpl index f2e894a88b4e706d844770b47c4085006489025f..cfda6f15de9124466f0319b75f1e71fa7292c032 100644 --- a/layouts/v7/modules/Settings/ExtensionStore/CardSetupModals.tpl +++ b/layouts/v7/modules/Settings/ExtensionStore/CardSetupModals.tpl @@ -9,308 +9,311 @@ ************************************************************************************/ -->*} -<!-- Setup card detals form start--> +<!-- Setup card detals form start--> <div class="modal-dialog setUpCardModal hide"> - <div class="modal-content"> - {assign var=HEADER_TITLE value={vtranslate('LBL_SETUP_CARD', $QUALIFIED_MODULE)}} - {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} - <form class="form-horizontal setUpCardForm"> - <input type="hidden" name="customerId" value="{$CUSTOMER_PROFILE['id']}" /> - <input type="hidden" name="customerCardId" value="{$CUSTOMER_PROFILE['CustomerCardId']}" /> - <input type="hidden" name="module" value="ExtensionStore" /> - <input type="hidden" name="parent" value="Settings" /> - <input type="hidden" name="action" value="Basic" /> - <input type="hidden" name="mode" value="updateCardDetails" /> - <div class="modal-body"> - <div class="form-group"> - <span class="control-label col-sm-3 col-xs-3"> - {vtranslate('LBL_CARD_NUMBER', $QUALIFIED_MODULE)} - <span class="redColor">*</span> - </span> - <div class="controls col-sm-5 col-xs-5"> - <input class="col-sm-8 col-xs-8 inputElement" type="text" placeholder="{vtranslate('LBL_CARD_NUMBER_PLACEHOLDER', $QUALIFIED_MODULE)}" name="cardNumber" value="" data-rule-required="true" data-rule-WholeNumber="true"/> - </div> - </div> - <div class="form-group"> - <span class="control-label col-sm-3 col-xs-3"> - {vtranslate('LBL_EXPIRY_DATE', $QUALIFIED_MODULE)} - <span class="redColor">*</span> - </span> - <div class="controls col-sm-9 col-xs-9"> - <input class="inputElement" style="width: 50px;" placeholder="mm" type="text" name="expMonth" value="" data-rule-required="true" data-mask="99" /> - - - <input class="inputElement" style="width: 50px;" placeholder="yyyy" type="text" name="expYear" value="" data-rule-required="true" data-mask="9999" /> - </div> - </div> - <div class="form-group"> - <span class="control-label col-sm-3 col-xs-3"> - {vtranslate('LBL_SECURITY_CODE', $QUALIFIED_MODULE)} - <span class="redColor">*</span> - </span> - <div class="controls col-sm-9 col-xs-9"> - <input class="inputElement" style="width: 50px;" type="text" name="cvccode" value="" data-rule-required="true" data-mask="999"/> - - <span class="fa fa-info-circle" id="helpSecurityCode" onmouseover="Settings_ExtensionStore_ExtensionStore_Js.showPopover(this)" data-title="{vtranslate('LBL_WHAT_IS_SECURITY_CODE', $QUALIFIED_MODULE)}" data-content="{vtranslate('LBL_SECURITY_CODE_HELP_CONTENT', $QUALIFIED_MODULE)}" data-position="right"></span> - </div> - </div> - </div> - <div class="modal-footer"> - <div class="row"> - <div class="col-sm-3 col-xs-3"> - <span class="pull-left"><button class="btn btn-danger" type="button" name="resetButton"><strong>{vtranslate('LBL_RESET', $QUALIFIED_MODULE)}</strong></button></span> - </div> - <div class="col-sm-9 col-xs-9"> - <div class="pull-right"> - <div class="pull-right cancelLinkContainer" style="margin-top:0px;"> - <a class="cancelLink" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> - </div> - <button class="btn btn-success saveButton" type="submit" name="saveButton"><strong>{vtranslate('LBL_SAVE', $MODULE)}</strong></button> - </div> - </div> - </div> - </div> - </form> - </div> + <div class="modal-content"> + {assign var=HEADER_TITLE value={vtranslate('LBL_SETUP_CARD', $QUALIFIED_MODULE)}} + {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} + <form class="form-horizontal setUpCardForm"> + <input type="hidden" name="customerId" value="{$CUSTOMER_PROFILE['id']}" /> + <input type="hidden" name="customerCardId" value="{$CUSTOMER_PROFILE['CustomerCardId']}" /> + <input type="hidden" name="module" value="ExtensionStore" /> + <input type="hidden" name="parent" value="Settings" /> + <input type="hidden" name="action" value="Basic" /> + <input type="hidden" name="mode" value="updateCardDetails" /> + <div class="modal-body"> + <div class="form-group"> + <span class="control-label col-sm-3 col-xs-3"> + {vtranslate('LBL_CARD_NUMBER', $QUALIFIED_MODULE)} + <span class="redColor">*</span> + </span> + <div class="controls col-sm-5 col-xs-5"> + <input class="col-sm-8 col-xs-8 inputElement" type="text" placeholder="{vtranslate('LBL_CARD_NUMBER_PLACEHOLDER', $QUALIFIED_MODULE)}" name="cardNumber" value="" data-rule-required="true" data-rule-WholeNumber="true"/> + </div> + </div> + <div class="form-group"> + <span class="control-label col-sm-3 col-xs-3"> + {vtranslate('LBL_EXPIRY_DATE', $QUALIFIED_MODULE)} + <span class="redColor">*</span> + </span> + <div class="controls col-sm-9 col-xs-9"> + <input class="inputElement" style="width: 50px;" placeholder="mm" type="text" name="expMonth" value="" data-rule-required="true" data-mask="99" /> + - + <input class="inputElement" style="width: 50px;" placeholder="yyyy" type="text" name="expYear" value="" data-rule-required="true" data-mask="9999" /> + </div> + </div> + <div class="form-group"> + <span class="control-label col-sm-3 col-xs-3"> + {vtranslate('LBL_SECURITY_CODE', $QUALIFIED_MODULE)} + <span class="redColor">*</span> + </span> + <div class="controls col-sm-9 col-xs-9"> + <input class="inputElement" style="width: 50px;" type="text" name="cvccode" value="" data-rule-required="true" data-mask="999"/> + + <span class="fa fa-info-circle" id="helpSecurityCode" onmouseover="Settings_ExtensionStore_ExtensionStore_Js.showPopover(this)" data-title="{vtranslate('LBL_WHAT_IS_SECURITY_CODE', $QUALIFIED_MODULE)}" data-content="{vtranslate('LBL_SECURITY_CODE_HELP_CONTENT', $QUALIFIED_MODULE)}" data-position="right"></span> + </div> + </div> + </div> + <div class="modal-footer"> + <div class="row"> + <div class="col-sm-3 col-xs-3"> + <span class="pull-left"><button class="btn btn-danger" type="button" name="resetButton"><strong>{vtranslate('LBL_RESET', $QUALIFIED_MODULE)}</strong></button></span> + </div> + <div class="col-sm-9 col-xs-9"> + <div class="pull-right"> + <div class="pull-right cancelLinkContainer" style="margin-top:5px;"> + <a class="cancelLink" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> + </div> + <button class="btn btn-success saveButton" type="submit" name="saveButton" style="padding: 5px 12px;"><strong>{vtranslate('LBL_SAVE', $MODULE)}</strong></button> + </div> + </div> + </div> + </div> + </form> + </div> </div> -<!-- Setup card detals form end--> -<!-- View card detals start--> +<!-- Setup card detals form end--> +<!-- View card detals start--> <div class="modal-dialog viewCardInfoModal hide"> - <div class="modal-content"> - {assign var=HEADER_TITLE value={vtranslate('Card Information', $QUALIFIED_MODULE)}} - {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} - <div class="modal-body"> - <div class="row marginBottom10px"> - <div class="col-sm-3 col-xs-3"> - {vtranslate('LBL_CARD_NUMBER', $QUALIFIED_MODULE)} - </div> - <div class="col-sm-4 col-xs-4 cardNumber">{$CUSTOMER_CARD_INFO['number']}</div> - </div> - <div class="row marginBottom10px"> - <div class="col-sm-3 col-xs-3"> - {vtranslate('LBL_EXPIRY_DATE', $QUALIFIED_MODULE)} - </div> - <div class="col-sm-4 col-xs-4 expiryDate">{$CUSTOMER_CARD_INFO['expmonth']} - {$CUSTOMER_CARD_INFO['expyear']}</div> - </div> - <div class="row marginBottom10px"> - <div class="col-sm-3 col-xs-3 securityCode"> - {vtranslate('LBL_SECURITY_CODE', $QUALIFIED_MODULE)} - </div> - <div class="col-sm-4 col-xs-4">***</div> - </div> - </div> - <div class="modal-footer"> - <div class="row-fluid"> - <div class="pull-right"> - <div class="pull-right cancelLinkContainer" style="margin-top:0px;"> - <a class="cancelLink" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> - </div> - <button class="btn btn-success updateBtn">{vtranslate('Update', $MODULE)}</button> - </div> - </div> - </div> - </div> + <div class="modal-content"> + {assign var=HEADER_TITLE value={vtranslate('Card Information', $QUALIFIED_MODULE)}} + {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} + <div class="modal-body"> + <div class="row marginBottom10px"> + <div class="col-sm-3 col-xs-3"> + {vtranslate('LBL_CARD_NUMBER', $QUALIFIED_MODULE)} + </div> + <div class="col-sm-4 col-xs-4 cardNumber">{$CUSTOMER_CARD_INFO['number']}</div> + </div> + <div class="row marginBottom10px"> + <div class="col-sm-3 col-xs-3"> + {vtranslate('LBL_EXPIRY_DATE', $QUALIFIED_MODULE)} + </div> + <div class="col-sm-4 col-xs-4 expiryDate">{$CUSTOMER_CARD_INFO['expmonth']} - {$CUSTOMER_CARD_INFO['expyear']}</div> + </div> + <div class="row marginBottom10px"> + <div class="col-sm-3 col-xs-3 securityCode"> + {vtranslate('LBL_SECURITY_CODE', $QUALIFIED_MODULE)} + </div> + <div class="col-sm-4 col-xs-4">***</div> + </div> + </div> + <div class="modal-footer"> + <div class="row-fluid"> + <div class="pull-right"> + <div class="pull-right cancelLinkContainer" style="margin-top:5px;"> + <a class="cancelLink" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> + </div> + <button class="btn btn-success updateBtn">{vtranslate('Update', $MODULE)}</button> + </div> + </div> + </div> + </div> </div> -<!-- view card information end --> +<!-- view card information end --> -<!-- Signup form start--> +<!-- Signup form start--> <div class="modal-dialog signUpAccount hide"> - <div class="modal-content"> - {assign var=HEADER_TITLE value={vtranslate('LBL_SIGN_UP_FOR_FREE', $QUALIFIED_MODULE)}} - {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} - <form class="form-horizontal signUpForm"> - <input type="hidden" name="module" value="ExtensionStore" /> - <input type="hidden" name="parent" value="Settings" /> - <input type="hidden" name="action" value="Basic" /> - <input type="hidden" name="userAction" value="signup" /> - <input type="hidden" name="mode" value="registerAccount" /> - <div class="modal-body col-md-offset-2"> - <div class="form-group"> - <span class="control-label col-sm-4"> - {vtranslate('LBL_EMAIL_ADDRESS', $QUALIFIED_MODULE)} - </span> - <div class="controls col-sm-5"> - <input type="text" name="emailAddress" data-rule-required="true" data-rule-email="true"/> - </div> - </div> - <div class="form-group"> - <span class="control-label col-sm-4"> - {vtranslate('LBL_FIRST_NAME', $QUALIFIED_MODULE)} - </span> - <div class="controls col-sm-5"> - <input type="text" name="firstName" data-rule-required="true" /> - </div> - </div> - <div class="form-group"> - <span class="control-label col-sm-4"> - {vtranslate('LBL_LAST_NAME', $QUALIFIED_MODULE)} - </span> - <div class="controls col-sm-5"> - <input type="text" name="lastName" data-rule-required="true" /> - </div> - </div> - <div class="form-group"> - <span class="control-label col-sm-4"> - {vtranslate('LBL_COMPANY_NAME', $QUALIFIED_MODULE)} - </span> - <div class="controls col-sm-5"> - <input type="text" name="companyName" data-rule-required="true" /> - </div> - </div> - <div class="form-group"> - <span class="control-label col-sm-4"> - {vtranslate('LBL_PASSWORD', $QUALIFIED_MODULE)} - </span> - <div class="controls col-sm-5"> - <input type="password" name="password" data-rule-required="true" /> - </div> - </div> - <div class="form-group"> - <span class="control-label col-sm-4"> - {vtranslate('LBL_CONFIRM_PASSWORD', $QUALIFIED_MODULE)} - </span> - <div class="controls col-sm-5"> - <input type="password" name="confirmPassword" data-rule-required="true"/> - </div> - </div> - </div> - <div class="modal-footer"> - <div class="row-fluid"> - <span class="col-sm-6"> - </span> - <span class="col-sm-6"> - <div class="pull-right"> - <div class="pull-right cancelLinkContainer" style="margin-top:0px;"> - <a class="cancelLink" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> - </div> - <button class="btn btn-success" name="saveButton"><strong>{vtranslate('LBL_REGISTER', $QUALIFIED_MODULE)}</strong></button> - </div> - </span> - </div> - </div> - </form> - </div> + <div class="modal-content"> + {assign var=HEADER_TITLE value={vtranslate('LBL_SIGN_UP_FOR_FREE', $QUALIFIED_MODULE)}} + {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} + <form class="form-horizontal signUpForm"> + <input type="hidden" name="module" value="ExtensionStore" /> + <input type="hidden" name="parent" value="Settings" /> + <input type="hidden" name="action" value="Basic" /> + <input type="hidden" name="userAction" value="signup" /> + <input type="hidden" name="mode" value="registerAccount" /> + <div class="modal-body col-md-offset-2"> + <div class="form-group"> + <span class="control-label col-sm-4"> + {vtranslate('LBL_EMAIL_ADDRESS', $QUALIFIED_MODULE)} + </span> + <div class="controls col-sm-5"> + <input class="inputElement" type="text" name="emailAddress" data-rule-required="true" data-rule-email="true"/> + </div> + </div> + <div class="form-group"> + <span class="control-label col-sm-4"> + {vtranslate('LBL_FIRST_NAME', $QUALIFIED_MODULE)} + </span> + <div class="controls col-sm-5"> + <input class="inputElement" type="text" name="firstName" data-rule-required="true" /> + </div> + </div> + <div class="form-group"> + <span class="control-label col-sm-4"> + {vtranslate('LBL_LAST_NAME', $QUALIFIED_MODULE)} + </span> + <div class="controls col-sm-5"> + <input class="inputElement" type="text" name="lastName" data-rule-required="true" /> + </div> + </div> + <div class="form-group"> + <span class="control-label col-sm-4"> + {vtranslate('LBL_COMPANY_NAME', $QUALIFIED_MODULE)} + </span> + <div class="controls col-sm-5"> + <input class="inputElement" type="text" name="companyName" data-rule-required="true" /> + </div> + </div> + <div class="form-group"> + <span class="control-label col-sm-4"> + {vtranslate('LBL_PASSWORD', $QUALIFIED_MODULE)} + </span> + <div class="controls col-sm-5"> + <input class="inputElement" type="password" name="password" data-rule-required="true" /> + </div> + </div> + <div class="form-group"> + <span class="control-label col-sm-4"> + {vtranslate('LBL_CONFIRM_PASSWORD', $QUALIFIED_MODULE)} + </span> + <div class="controls col-sm-5"> + <input class="inputElement" type="password" name="confirmPassword" data-rule-required="true"/> + </div> + </div> + </div> + <div class="modal-footer"> + <div class="row-fluid"> + <span class="col-sm-6"> + </span> + <span class="col-sm-6"> + <div class="pull-right"> + <div class="pull-right cancelLinkContainer" style="margin-top:5px;"> + <a class="cancelLink" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> + </div> + <button class="btn btn-success" name="saveButton"><strong>{vtranslate('LBL_REGISTER', $QUALIFIED_MODULE)}</strong></button> + </div> + </span> + </div> + </div> + </form> + </div> </div> -<!-- Signup form end--> +<!-- Signup form end--> -<!-- Login form start--> +<!-- Login form start--> <div class="modal-dialog loginAccount hide"> - <div class="modal-content"> - {assign var=HEADER_TITLE value={vtranslate('LBL_MARKETPLACE_LOGIN', $QUALIFIED_MODULE)}} - {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} - <form class="form-horizontal loginForm"> - <input type="hidden" name="module" value="ExtensionStore" /> - <input type="hidden" name="parent" value="Settings" /> - <input type="hidden" name="action" value="Basic" /> - <input type="hidden" name="userAction" value="login" /> - <input type="hidden" name="mode" value="registerAccount" /> - <div class="modal-body col-md-offset-2"> - <div class="form-group"> - <span class="control-label col-sm-3 fieldLabel"> - {vtranslate('LBL_EMAIL', $QUALIFIED_MODULE)} - <span class="redColor">*</span> - </span> - <div class="controls col-sm-5"> - {if $REGISTRATION_STATUS} - <input type="hidden" name="emailAddress" value="{$USER_NAME}" /> - <span class="control-label"><span class="pull-left">{$USER_NAME}</span></span> - {else} - <input type="text" name="emailAddress" data-rule-required="true" data-rule-email="true" /> - {/if} - </div> - </div> - <div class="form-group"> - <span class="control-label fieldLabel col-sm-3"> - {vtranslate('LBL_PASSWORD', $QUALIFIED_MODULE)} - <span class="redColor">*</span> - </span> - <div class="controls col-sm-5"> - <input type="password" name="password" data-rule-required="true" /> - <br> - <br> - <a href="#" id="forgotPasswordLink">{vtranslate('LBL_FORGOT_PASSWORD', $QUALIFIED_MODULE)} ?</a> - </div> - </div> - </div> - <div class="modal-footer"> - <div class="row-fluid"> - <span class="col-sm-8"> - {if !$REGISTRATION_STATUS} - <a class="pull-left" href="#" name="signUp">{vtranslate('LBL_CREATE_AN_ACCOUNT', $QUALIFIED_MODULE)}</a> - {else} - {/if} - </span> - <span class="col-sm-4"> - <div class="pull-right"> - <div class="pull-right cancelLinkContainer" style="margin-top:0px;"> - <a class="cancelLink" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> - </div> - <button class="btn btn-success" name="saveButton" type="submit"><strong>{vtranslate('LBL_LOGIN', $QUALIFIED_MODULE)}</strong></button> - </div> - </span> - </div> - </div> - </form> - </div> + <div class="modal-content"> + {assign var=HEADER_TITLE value={vtranslate('LBL_MARKETPLACE_LOGIN', $QUALIFIED_MODULE)}} + {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} + <form class="form-horizontal loginForm"> + <input type="hidden" name="module" value="ExtensionStore" /> + <input type="hidden" name="parent" value="Settings" /> + <input type="hidden" name="action" value="Basic" /> + <input type="hidden" name="userAction" value="login" /> + <input type="hidden" name="mode" value="registerAccount" /> + <div class="modal-body col-md-offset-2"> + <div class="form-group"> + <span class="control-label col-sm-3 fieldLabel"> + {vtranslate('LBL_EMAIL', $QUALIFIED_MODULE)} + <span class="redColor">*</span> + </span> + <div class="controls col-sm-5"> + {if $REGISTRATION_STATUS} + <input class="inputElement" type="hidden" name="emailAddress" value="{$USER_NAME}" /> + <span class="control-label"><span class="pull-left">{$USER_NAME}</span></span> + {else} + <input class="inputElement" type="text" name="emailAddress" data-rule-required="true" data-rule-email="true" /> + {/if} + </div> + </div> + <div class="form-group"> + <span class="control-label fieldLabel col-sm-3"> + {vtranslate('LBL_PASSWORD', $QUALIFIED_MODULE)} + <span class="redColor">*</span> + </span> + <div class="controls col-sm-5"> + <input class="inputElement" type="password" name="password" data-rule-required="true" /> + <br> + <br> + <label style="font-weight:normal;"><input type="checkbox" name="savePassword" /> {vtranslate('LBL_REMEMBER_ME', $QUALIFIED_MODULE)}</label> + <br> + <br> + <a href="#" id="forgotPasswordLink" style="color: #15c !important">{vtranslate('LBL_FORGOT_PASSWORD', $QUALIFIED_MODULE)} ?</a> + </div> + </div> + </div> + <div class="modal-footer"> + <div class="row-fluid"> + <span class="col-sm-8"> + {if !$REGISTRATION_STATUS} + <a class="pull-left" href="#" name="signUp">{vtranslate('LBL_CREATE_AN_ACCOUNT', $QUALIFIED_MODULE)}</a> + {else} + {/if} + </span> + <span class="col-sm-4"> + <div class="pull-right"> + <div class="pull-right cancelLinkContainer" style="margin-top:5px;"> + <a class="cancelLink" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> + </div> + <button class="btn btn-success" name="saveButton" type="submit"><strong>{vtranslate('LBL_LOGIN', $QUALIFIED_MODULE)}</strong></button> + </div> + </span> + </div> + </div> + </form> + </div> </div> <!-- Login form end --> <!-- forgot password form --> <div class="modal-dialog forgotPasswordModal hide"> - <div class="modal-content"> - {assign var=HEADER_TITLE value={vtranslate('LBL_FORGOT_PASSWORD', $QUALIFIED_MODULE)}} - {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} - <form class="form-horizontal forgotPassword" method="POST"> - <input type="hidden" name="module" value="ExtensionStore" /> - <input type="hidden" name="parent" value="Settings" /> - <input type="hidden" name="action" value="Basic" /> - <input type="hidden" name="mode" value="forgotPassword" /> - <div class="modal-body col-md-offset-2"> - <div class="form-group"> - <span class="control-label col-sm-4"> - {vtranslate('LBL_ENTER_REGISTERED_EMAIL', $QUALIFIED_MODULE)} - <span class="redColor">*</span> - </span> - <div class="controls col-sm-5"> - <input type="text" name="emailAddress" data-rule-required="true" data-rule-email="true" /></div> - </div> - </div> - <div class="modal-footer"> - <div class="row-fluid"> - <div class="pull-right"> - <div class="pull-right cancelLinkContainer" style="margin-top:0px;"> - <a class="cancelLink" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> - </div> - <button class="btn btn-success okBtn" type="submit">{vtranslate('LBL_OK', $QUALIFIED_MODULE)}</button> - </div> - </div> - </div> - </form> - </div> + <div class="modal-content"> + {assign var=HEADER_TITLE value={vtranslate('LBL_FORGOT_PASSWORD', $QUALIFIED_MODULE)}} + {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} + <form class="form-horizontal forgotPassword" method="POST"> + <input type="hidden" name="module" value="ExtensionStore" /> + <input type="hidden" name="parent" value="Settings" /> + <input type="hidden" name="action" value="Basic" /> + <input type="hidden" name="mode" value="forgotPassword" /> + <div class="modal-body col-md-offset-1"> + <div class="form-group"> + <span class="control-label col-sm-5"> + {vtranslate('LBL_ENTER_REGISTERED_EMAIL', $QUALIFIED_MODULE)} + <span class="redColor">*</span> + </span> + <div class="controls col-sm-5"> + <input class="inputElement" type="text" name="emailAddress" data-rule-required="true" data-rule-email="true" /></div> + </div> + </div> + <div class="modal-footer"> + <div class="row-fluid"> + <div class="pull-right"> + <div class="pull-right cancelLinkContainer" style="margin-top:5px;"> + <a class="cancelLink" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> + </div> + <button class="btn btn-success okBtn" type="submit" style="padding: 5px 12px;">{vtranslate('LBL_OK', $QUALIFIED_MODULE)}</button> + </div> + </div> + </div> + </form> + </div> </div> <!-- forgot password form end --> {if $LOADER_REQUIRED} - <div class="modal extensionLoader hide"> - <div class="modal-header contentsBackground"> - <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> - <h3>{vtranslate('LBL_INSTALL_EXTENSION_LOADER', $QUALIFIED_MODULE)}</h3> - </div> - <div class="modal-body"> - <div class="row-fluid"> - <p>{vtranslate('LBL_TO_CONTINUE_USING_EXTENSION_STORE', $QUALIFIED_MODULE)}<a href="https://marketplace.vtiger.com/loaderfiles/{$LOADER_INFO['loader_file']}">{vtranslate('LBL_DOWNLOAD', $QUALIFIED_MODULE)}</a>{vtranslate('LBL_COMPATIABLE_EXTENSION', $QUALIFIED_MODULE)}</p> - </div> - <div class="row-fluid"> - <p>{vtranslate('LBL_MORE_DETAILS_ON_INSTALLATION', $QUALIFIED_MODULE)}<a onclick=window.open("http://community.vtiger.com/help/vtigercrm/php/extension-loader.html")>{vtranslate('LBL_READ_HERE', $QUALIFIED_MODULE)}</a></p> - </div> - </div> - <div class="modal-footer"> - <div class="row-fluid"> - <div class="pull-right"> - <div class="pull-right cancelLinkContainer" style="margin-top:0px;"> - <button class="btn btn-success" data-dismiss="modal">{vtranslate('LBL_OK', $QUALIFIED_MODULE)}</button> - </div> - </div> - </div> - </div> - </div> + <div class="modal extensionLoader hide"> + <div class="modal-header contentsBackground"> + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> + <h3>{vtranslate('LBL_INSTALL_EXTENSION_LOADER', $QUALIFIED_MODULE)}</h3> + </div> + <div class="modal-body"> + <div class="row-fluid"> + <p>{vtranslate('LBL_TO_CONTINUE_USING_EXTENSION_STORE', $QUALIFIED_MODULE)}<a href="https://marketplace.vtiger.com/loaderfiles/{$LOADER_INFO['loader_file']}">{vtranslate('LBL_DOWNLOAD', $QUALIFIED_MODULE)}</a>{vtranslate('LBL_COMPATIABLE_EXTENSION', $QUALIFIED_MODULE)}</p> + </div> + <div class="row-fluid"> + <p>{vtranslate('LBL_MORE_DETAILS_ON_INSTALLATION', $QUALIFIED_MODULE)}<a onclick=window.open("http://community.vtiger.com/help/vtigercrm/php/extension-loader.html")>{vtranslate('LBL_READ_HERE', $QUALIFIED_MODULE)}</a></p> + </div> + </div> + <div class="modal-footer"> + <div class="row-fluid"> + <div class="pull-right"> + <div class="pull-right cancelLinkContainer" style="margin-top:5px;"> + <button class="btn btn-success" data-dismiss="modal">{vtranslate('LBL_OK', $QUALIFIED_MODULE)}</button> + </div> + </div> + </div> + </div> + </div> {/if} \ No newline at end of file diff --git a/layouts/v7/modules/Settings/ExtensionStore/partials/SidebarHeader.tpl b/layouts/v7/modules/Settings/ExtensionStore/partials/SidebarHeader.tpl index 8dacc81dd7d222ae71ef14d28be9301835b1ec1d..fd4ad4ae874ec975575fdb7f82ce8292d2bda408 100644 --- a/layouts/v7/modules/Settings/ExtensionStore/partials/SidebarHeader.tpl +++ b/layouts/v7/modules/Settings/ExtensionStore/partials/SidebarHeader.tpl @@ -6,14 +6,8 @@ * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. ************************************************************************************} -{assign var="APP_IMAGE_MAP" value=[ - 'MARKETING' => 'fa-users', - 'SALES' => 'fa-dot-circle-o', - 'SUPPORT' => 'fa-life-ring', - 'INVENTORY' => 'vicon-inventory', - 'PROJECT' => 'fa-briefcase' - ]} - + +{assign var=APP_IMAGE_MAP value=Vtiger_MenuStructure_Model::getAppIcons()} <div class="col-sm-12 col-xs-12 app-indicator-icon-container extensionstore app-{$SELECTED_MENU_CATEGORY}"> <div class="row" title="{vtranslate('LBL_EXTENSION_STORE', 'Settings:ExtensionStore')}"> <span class="app-indicator-icon cursorPointer fa fa-shopping-cart"></span> diff --git a/layouts/v7/modules/Settings/LayoutEditor/DuplicateHandling.tpl b/layouts/v7/modules/Settings/LayoutEditor/DuplicateHandling.tpl new file mode 100644 index 0000000000000000000000000000000000000000..a21173657a85ba22349fdce245bbce569885b384 --- /dev/null +++ b/layouts/v7/modules/Settings/LayoutEditor/DuplicateHandling.tpl @@ -0,0 +1,79 @@ +{*+********************************************************************************** +* 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. +*************************************************************************************} + +{strip} + <div class="duplicateHandlingDiv padding20"> + <form class="duplicateHandlingForm"> + <input type="hidden" name="_source" value="{$SOURCE}" /> + <input type="hidden" name="sourceModule" value="{$SOURCE_MODULE}" id="sourceModule" /> + <input type="hidden" name="parent" value="Settings" /> + <input type="hidden" name="module" value="LayoutEditor" /> + <input type="hidden" name="action" value="Field" /> + <input type="hidden" name="mode" value="updateDuplicateHandling" /> + + <div> + <div class="vt-default-callout vt-info-callout"> + <h4 class="vt-callout-header"><span class="fa fa-info-circle"></span> Info </h4> + <div class="duplicationInfoMessage">{vtranslate('LBL_DUPLICATION_INFO_MESSAGE', $QUALIFIED_MODULE)}</div> + </div> + </div><br> + <div class="row"> + <div class="col-lg-12"> + <div class="col-lg-2 marginTop5px">{vtranslate('LBL_DUPLICATE_CHECK', $QUALIFIED_MODULE)}</div> + <div> + <input type="hidden" class="rule" name="rule" value=""> + <input type="checkbox" class="duplicateCheck" data-on-color="success" data-off-color="danger" data-current-rule="{$SOURCE_MODULE_MODEL->allowDuplicates}" {if !$SOURCE_MODULE_MODEL->isFieldsDuplicateCheckAllowed()}readonly="readonly"{/if} + data-on-text="{vtranslate('LBL_YES', $QUALIFIED_MODULE)}" data-off-text="{vtranslate('LBL_NO', $QUALIFIED_MODULE)}" /> + </div> + </div> + </div> + <br><br> + <div class="duplicateHandlingContainer show col-lg-12"> + <div class="fieldsBlock"> + <div><b>{vtranslate('LBL_SELECT_FIELDS_FOR_DUPLICATION', $QUALIFIED_MODULE)}</b></div><br> + <select class="col-lg-7 select" id="fieldsList" multiple name="fieldIdsList[]" data-placeholder="{vtranslate('LBL_SELECT_FIELDS', $QUALIFIED_MODULE)}" data-rule-required="true" > + {foreach key=BLOCK_LABEL item=FIELD_MODELS from=$FIELDS} + <optgroup label='{vtranslate($BLOCK_LABEL, $SOURCE_MODULE)}'> + {foreach key=KEY item=FIELD_MODEL from=$FIELD_MODELS} + <option {if $FIELD_MODEL->isUniqueField()}selected=""{/if} value={$FIELD_MODEL->getId()}> + {vtranslate($FIELD_MODEL->get('label'), $SOURCE_MODULE)} + </option> + {/foreach} + </optgroup> + {/foreach} + </select> + <div class="col-lg-5 marginTop5px marginLeftZero"> + <b> {vtranslate('LBL_MAX_3_FIELDS', $QUALIFIED_MODULE)}</b> + </div> + </div> + <br><br><br> + {if $SOURCE_MODULE_MODEL->isSyncable} + <div class="ruleBlock"> + <div><b>{vtranslate('LBL_DUPLICATES_IN_SYNC_MESSAGE', $QUALIFIED_MODULE)}</b></div><br> + <div> + <select class="select actionsList" name="syncActionId"> + {foreach key=ACTION_ID item=ACTION_NAME from=$ACTIONS} + <option {if $SOURCE_MODULE_MODEL->syncActionForDuplicate eq $ACTION_ID}selected=""{/if} value="{$ACTION_ID}">{vtranslate($ACTION_NAME, $QUALIFIED_MODULE)}</option> + {/foreach} + </select> + <span class="input-info-addon syncMessage"> + <a class="fa fa-info-circle" data-toggle="tooltip" data-html="true" data-placement="right" title="{vtranslate('LBL_SYNC_TOOLTIP_MESSAGE', $QUALIFIED_MODULE)}"></a> + </span> + </div> + </div> + <br><br> + {/if} + <div class="formFooter hide"> + <button class="btn btn-success" type="submit" name="saveButton"><strong>{vtranslate('LBL_SAVE', $MODULE)}</strong></button> + <a class="cancelLink" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> + </div> + </div> + </form> + </div> +{/strip} \ No newline at end of file diff --git a/layouts/v7/modules/Settings/LayoutEditor/FieldCreate.tpl b/layouts/v7/modules/Settings/LayoutEditor/FieldCreate.tpl index 226f493f2ef78c1905587c16f85baa1b9d47501d..db9c43a4e8630bfd386a164c8a998f9b1dfa9351 100644 --- a/layouts/v7/modules/Settings/LayoutEditor/FieldCreate.tpl +++ b/layouts/v7/modules/Settings/LayoutEditor/FieldCreate.tpl @@ -173,7 +173,7 @@ </div> <div class="form-group col-sm-6"> <label class="control-label fieldLabel col-sm-7"> - <i class="fa fa-plus"></i> {vtranslate('LBL_QUICK_CREATE',$QUALIFIED_MODULE)} + <i class="fa fa-plus"></i> {vtranslate('LBL_QUICK_CREATE',$QUALIFIED_MODULE)} </label> <div class="controls col-sm-5"> {if $FIELD_MODEL->isQuickCreateOptionDisabled()} diff --git a/layouts/v7/modules/Settings/LayoutEditor/FieldsList.tpl b/layouts/v7/modules/Settings/LayoutEditor/FieldsList.tpl index df7d6dc63f6ddca58314d655241a37cc5125e556..edff2721b7df09d16dc74f8e0d94dcb9d578ba7f 100644 --- a/layouts/v7/modules/Settings/LayoutEditor/FieldsList.tpl +++ b/layouts/v7/modules/Settings/LayoutEditor/FieldsList.tpl @@ -13,10 +13,10 @@ {assign var=IS_SORTABLE value=$SELECTED_MODULE_MODEL->isSortableAllowed()} {assign var=ALL_BLOCK_LABELS value=[]} - <div class="row" style="padding:1% 0"> + <div class="row fieldsListContainer" style="padding:1% 0"> <div class="col-sm-6"> <button class="btn btn-default addButton addCustomBlock" type="button"> - <i class="fa fa-plus"></i> + <i class="fa fa-plus"></i> {vtranslate('LBL_ADD_CUSTOM_BLOCK', $QUALIFIED_MODULE)} </button> </div> @@ -61,7 +61,7 @@ {if $BLOCK_MODEL->isAddCustomFieldEnabled()} <button class="btn btn-default addButton btn-sm addCustomField" type="button"> - <i class="fa fa-plus"></i> {vtranslate('LBL_ADD_CUSTOM_FIELD', $QUALIFIED_MODULE)} + <i class="fa fa-plus"></i> {vtranslate('LBL_ADD_CUSTOM_FIELD', $QUALIFIED_MODULE)} </button> {/if} {if $BLOCK_MODEL->isActionsAllowed()} @@ -254,7 +254,7 @@ {vtranslate('LBL_ADD_NEW_FIELD_HERE',$QUALIFIED_MODULE)} </span> <span class="col-sm-4" style="margin-top: 7%;margin-left: -15%;"> - <button class="btn btn-default btn-sm addButton" style="padding: 2px 15px;"><i class="fa fa-plus"></i> {vtranslate('LBL_ADD',$QUALIFIED_MODULE)}</button> + <button class="btn btn-default btn-sm addButton"><i class="fa fa-plus"></i> {vtranslate('LBL_ADD',$QUALIFIED_MODULE)}</button> </span> </li> {/if} @@ -427,7 +427,7 @@ {vtranslate('LBL_ADD_NEW_FIELD_HERE',$QUALIFIED_MODULE)} </span> <span class="col-sm-4" style="margin-top: 7%;margin-left: -15%;"> - <button class="btn btn-default btn-sm addButton" style="padding: 2px 15px;"><i class="fa fa-plus"></i> {vtranslate('LBL_ADD',$QUALIFIED_MODULE)}</button> + <button class="btn btn-default btn-sm addButton"><i class="fa fa-plus"></i> {vtranslate('LBL_ADD',$QUALIFIED_MODULE)}</button> </span> </li> {/if} @@ -458,7 +458,7 @@ data-on-text="{vtranslate('LBL_YES', $QUALIFIED_MODULE)}" data-off-text="{vtranslate('LBL_NO', $QUALIFIED_MODULE)}" data-on-color="primary" data-block-id="{$BLOCK_MODEL->get('id')}"/> </span> <button class="btn btn-default addButton addCustomField" type="button"> - <i class="fa fa-plus"></i> {vtranslate('LBL_ADD_CUSTOM_FIELD', $QUALIFIED_MODULE)} + <i class="fa fa-plus"></i> {vtranslate('LBL_ADD_CUSTOM_FIELD', $QUALIFIED_MODULE)} </button> <button class="inActiveFields addButton btn btn-default btn-sm">{vtranslate('LBL_SHOW_HIDDEN_FIELDS', $QUALIFIED_MODULE)}</button> <button class="deleteCustomBlock addButton btn btn-default btn-sm">{vtranslate('LBL_DELETE_CUSTOM_BLOCK', $QUALIFIED_MODULE)}</button> @@ -472,7 +472,7 @@ {vtranslate('LBL_ADD_NEW_FIELD_HERE',$QUALIFIED_MODULE)} </span> <span class="col-sm-4" style="margin-top: 7%;margin-left: -15%;"> - <button class="btn btn-default btn-sm addButton" style="padding: 2px 15px;"><i class="fa fa-plus"></i> {vtranslate('LBL_ADD',$QUALIFIED_MODULE)}</button> + <button class="btn btn-default btn-sm addButton"><i class="fa fa-plus"></i> {vtranslate('LBL_ADD',$QUALIFIED_MODULE)}</button> </span> </li> </ul> @@ -612,4 +612,44 @@ </form> </div> </div> + <div class="ps-scrollbar-y" style="height: 60px;"> + </div> + {if $FIELDS_INFO neq '[]'} + <script type="text/javascript"> + var uimeta = (function() { + var fieldInfo = {$FIELDS_INFO}; + var newFieldInfo = {$NEW_FIELDS_INFO}; + return { + field: { + get: function(name, property) { + if(name && property === undefined) { + return fieldInfo[name]; + } + if(name && property) { + return fieldInfo[name][property] + } + }, + isMandatory : function(name){ + if(fieldInfo[name]) { + return fieldInfo[name].mandatory; + } + return false; + }, + getType : function(name){ + if(fieldInfo[name]) { + return fieldInfo[name].type + } + return false; + }, + getNewFieldInfo : function() { + if(newFieldInfo['newfieldinfo']){ + return newFieldInfo['newfieldinfo'] + } + return false; + } + }, + }; + })(); + </script> + {/if} {/strip} diff --git a/layouts/v7/modules/Settings/LayoutEditor/Index.tpl b/layouts/v7/modules/Settings/LayoutEditor/Index.tpl index 4e4180225889a3ee91470c290a8000deda61eff6..36dfbaa1c118f6294054dec2ebdf244fb47abcad 100644 --- a/layouts/v7/modules/Settings/LayoutEditor/Index.tpl +++ b/layouts/v7/modules/Settings/LayoutEditor/Index.tpl @@ -1,32 +1,29 @@ {*+********************************************************************************** -* The contents of this file are subject to the vtiger CRM Public License Version 1.1 + * 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. -************************************************************************************} + ************************************************************************************} {* modules/Settings/LayoutEditor/views/Index.php *} {strip} - <div class="container-fluid" id="layoutEditorContainer"> + <div class="container-fluid main-scroll" id="layoutEditorContainer"> <input id="selectedModuleName" type="hidden" value="{$SELECTED_MODULE_NAME}" /> + <input class="selectedTab" type="hidden" value="{$SELECTED_TAB}"> + <input class="selectedMode" type="hidden" value="{$MODE}"> <input type="hidden" id="selectedModuleLabel" value="{vtranslate($SELECTED_MODULE_NAME,$SELECTED_MODULE_NAME)}" /> <div class="widget_header row"> - <label class="col-sm-2 textAlignCenter" style="padding-top: 8px;"> + <label class="col-sm-2 textAlignCenter" style="padding-top: 7px;"> {vtranslate('SELECT_MODULE', $QUALIFIED_MODULE)} </label> <div class="col-sm-6"> <select class="select2 col-sm-6" name="layoutEditorModules"> <option value=''>{vtranslate('LBL_SELECT_OPTION', $QUALIFIED_MODULE)}</option> - {foreach item=MODULE_NAME from=$SUPPORTED_MODULES} + {foreach item=MODULE_NAME key=TRANSLATED_MODULE_NAME from=$SUPPORTED_MODULES} <option value="{$MODULE_NAME}" {if $MODULE_NAME eq $SELECTED_MODULE_NAME} selected {/if}> - {* Calendar needs to be shown as TODO so we are translating using Layout editor specific translations*} - {if $MODULE_NAME eq 'Calendar'} - {vtranslate($MODULE_NAME, $QUALIFIED_MODULE)} - {else} - {vtranslate($MODULE_NAME, $MODULE_NAME)} - {/if} + {$TRANSLATED_MODULE_NAME} </option> {/foreach} </select> @@ -36,69 +33,30 @@ <br> {if $SELECTED_MODULE_NAME} <div class="contents tabbable"> - <ul class="nav nav-tabs layoutTabs massEditTabs"> - <li class="active detailviewTab"><a data-toggle="tab" href="#detailViewLayout"><strong>{vtranslate('LBL_DETAILVIEW_LAYOUT', $QUALIFIED_MODULE)}</strong></a></li> - <li class="relatedListTab"><a data-toggle="tab" href="#relatedTabOrder"><strong>{vtranslate('LBL_RELATION_SHIPS', $QUALIFIED_MODULE)}</strong></a></li> + <ul class="nav nav-tabs layoutTabs massEditTabs marginBottom10px"> + {assign var=URL value="index.php?module=LayoutEditor&parent=Settings&view=Index"} + <li class="{if $SELECTED_TAB eq 'detailViewTab'}active {/if}detailViewTab"><a data-toggle="tab" href="#detailViewLayout" data-url="{$URL}" data-mode="showFieldLayout"><strong>{vtranslate('LBL_DETAILVIEW_LAYOUT', $QUALIFIED_MODULE)}</strong></a></li> + <li class="{if $SELECTED_TAB eq 'relatedListTab'}active {/if}relatedListTab"><a data-toggle="tab" href="#relatedTabOrder" data-url="{$URL}" data-mode="showRelatedListLayout"><strong>{vtranslate('LBL_RELATION_SHIPS', $QUALIFIED_MODULE)}</strong></a></li> + <li class="{if $SELECTED_TAB eq 'duplicationTab'}active {/if}duplicationTab"><a data-toggle="tab" href="#duplicationContainer" data-url="{$URL}" data-mode="showDuplicationHandling"><strong>{vtranslate('LBL_DUPLICATE_HANDLING', $QUALIFIED_MODULE)}</strong></a></li> </ul> <div class="tab-content layoutContent themeTableColor overflowVisible"> - <div class="tab-pane active" id="detailViewLayout"> - {include file=vtemplate_path('FieldsList.tpl',$QUALIFIED_MODULE)} + <div class="tab-pane{if $SELECTED_TAB eq 'detailViewTab'} active{/if}" id="detailViewLayout"> + {if $SELECTED_TAB eq 'detailViewTab'} + {include file=vtemplate_path('FieldsList.tpl', $QUALIFIED_MODULE)} + {/if} </div> - <div class="tab-pane" id="relatedTabOrder"> + <div class="tab-pane {if $SELECTED_TAB eq 'relatedListTab'} active{/if}" id="relatedTabOrder"> + {if $SELECTED_TAB eq 'relatedListTab'} + {include file=vtemplate_path('RelatedList.tpl', $QUALIFIED_MODULE)} + {/if} + </div> + <div class="tab-pane{if $SELECTED_TAB eq 'duplicationTab'} active{/if}" id="duplicationContainer"> + {if $SELECTED_TAB eq 'duplicationTab'} + {include file=vtemplate_path('DuplicateHandling.tpl', $QUALIFIED_MODULE)} + {/if} </div> </div> </div> {/if} </div> - - {if $FIELDS_INFO neq '[]'} - <script type="text/javascript"> - var uimeta = (function () { - var fieldInfo = {$FIELDS_INFO}; - var newFieldInfo = {$NEW_FIELDS_INFO}; - return { - field: { - get: function (name, property) { - if (name && property === undefined) { - return fieldInfo[name]; - } - if (name && property) { - return fieldInfo[name][property] - } - }, - isMandatory: function (name) { - if (fieldInfo[name]) { - return fieldInfo[name].mandatory; - } - return false; - }, - getType: function (name) { - if (fieldInfo[name]) { - return fieldInfo[name].type - } - return false; - }, - getNewFieldInfo: function () { - if (newFieldInfo['newfieldinfo']) { - return newFieldInfo['newfieldinfo'] - } - return false; - } - } - }; - })(); - </script> - {/if} - - {if !$REQUEST_INSTANCE->isAjax()} - <script type="text/javascript"> - {literal} - jQuery(document).ready(function () { - var instance = new Settings_LayoutEditor_Js(); - instance.registerEvents(); - }); - {/literal} - </script> - {/if} - {/strip} \ No newline at end of file diff --git a/layouts/v7/modules/Settings/LayoutEditor/resources/LayoutEditor.js b/layouts/v7/modules/Settings/LayoutEditor/resources/LayoutEditor.js index 8987487685a5288f6b7b0e2e8bb6c3d8c9b576a0..0b70ee7040abee94271120d73d55b8a5df93c3bf 100644 --- a/layouts/v7/modules/Settings/LayoutEditor/resources/LayoutEditor.js +++ b/layouts/v7/modules/Settings/LayoutEditor/resources/LayoutEditor.js @@ -7,7 +7,7 @@ * All Rights Reserved. *************************************************************************************/ -jQuery.Class('Settings_LayoutEditor_Js', { +Vtiger.Class('Settings_LayoutEditor_Js', { }, { updatedBlockSequence: {}, reactiveFieldsList: [], @@ -1727,13 +1727,16 @@ jQuery.Class('Settings_LayoutEditor_Js', { /** * Function to register the click event for related modules list tab */ - relatedModulesTabClickEvent: function () { + triggerRelatedModulesTabClickEvent: function () { var thisInstance = this; var contents = jQuery('#layoutEditorContainer').find('.contents'); var relatedContainer = contents.find('#relatedTabOrder'); var relatedTab = contents.find('.relatedListTab'); - relatedTab.click(function () { + + relatedTab.click(function (e) { thisInstance.showRelatedTabModulesList(relatedContainer); + var mode = jQuery(e.currentTarget).find('a').data('mode'); + jQuery('.selectedMode').val(mode); }); }, /** @@ -1754,7 +1757,7 @@ jQuery.Class('Settings_LayoutEditor_Js', { params = jQuery.extend(params, extraParams); app.helper.showProgress(); - app.request.post({'data': params}).then( + app.request.pjax({'data': params}).then( function (err, data) { app.helper.hideProgress(); if (err === null) { @@ -1780,6 +1783,8 @@ jQuery.Class('Settings_LayoutEditor_Js', { params['parent'] = app.getParentModuleName(); params['view'] = 'Index'; params['sourceModule'] = selectedModule; + params['showFullContents'] = true; + params['mode'] = jQuery('.selectedMode').val(); app.request.pjax({'data': params}).then( function (err, data) { @@ -1816,6 +1821,7 @@ jQuery.Class('Settings_LayoutEditor_Js', { thisInstance.getModuleLayoutEditor(selectedModule).then( function (data) { contentsDiv.html(data); + thisInstance.fieldListTabClicked = false; thisInstance.registerEvents(); } ); @@ -2054,36 +2060,185 @@ jQuery.Class('Settings_LayoutEditor_Js', { container.find('[name="'+fieldNameAttr+'"]').closest('.form-group').removeClass('hide'); } }, + + fieldListTabClicked: false, + triggerFieldListTabClickEvent: function () { + var thisInstance = this; + var contents = jQuery('#layoutEditorContainer').find('.contents'); + contents.find('.detailViewTab').click(function (e) { + var detailViewLayout = contents.find('#detailViewLayout'); + thisInstance.showFieldsListUI(detailViewLayout, e).then(function (data) { + if (!thisInstance.fieldListTabClicked) { + thisInstance.registerBlockEvents(); + thisInstance.registerFieldEvents(); + thisInstance.setInactiveFieldsList(); + thisInstance.setHeaderFieldsCount(); + thisInstance.setHeaderFieldsMeta(); + thisInstance.setNameFields(); + thisInstance.registerAddCustomBlockEvent(); + thisInstance.registerFieldSequenceSaveClick(); + jQuery("input[name='collapseBlock']").bootstrapSwitch(); + jQuery("input[name='collapseBlock']").bootstrapSwitch('handleWidth', '27px'); + jQuery("input[name='collapseBlock']").bootstrapSwitch('labelWidth', '25px'); + thisInstance.registerSwitchActionOnFieldProperties(); + thisInstance.registerAddCustomField(); + app.helper.showVerticalScroll(jQuery('.addFieldTypes'), {'setHeight': '350px'}); + vtUtils.enableTooltips(); + thisInstance.fieldListTabClicked = true; + } + }); + }); + }, + showFieldsListUI: function (detailViewLayout, e) { + var aDeferred = jQuery.Deferred(); + var fieldUiContainer = detailViewLayout.find('.fieldsListContainer'); + + var selectedTab = jQuery(e.currentTarget).find('a'); + var mode = selectedTab.data('mode'); + var url = selectedTab.data('url')+'&sourceModule='+jQuery('#selectedModuleName').val()+'&mode='+mode; + jQuery('.selectedMode').val(mode); + + if (fieldUiContainer.length == 0) { + app.helper.showProgress(); + app.request.pjax({'url': url}).then(function (error, data) { + if (error === null) { + app.helper.hideProgress(); + detailViewLayout.html(data); + aDeferred.resolve(detailViewLayout); + } else { + aDeferred.reject(error); + } + }); + } else { + window.history.pushState('fieldUiContainer', '', url); + aDeferred.resolve(); + } + return aDeferred.promise(); + }, + triggerDuplicationTabClickEvent: function () { + var thisInstance = this; + var contents = jQuery('#layoutEditorContainer').find('.contents'); + + contents.find('.duplicationTab').click(function (e) { + var duplicationContainer = contents.find('#duplicationContainer'); + thisInstance.showDuplicationHandlingUI(duplicationContainer, e).then(function (data) { + var form = jQuery('.duplicateHandlingForm'); + var duplicateHandlingContainer = form.find('.duplicateHandlingContainer'); + + var dupliCheckEle = form.find('.duplicateCheck'); + if (dupliCheckEle.length > 0) { + if (dupliCheckEle.data('currentRule') == 1) { + dupliCheckEle.bootstrapSwitch('state', false, true); + duplicateHandlingContainer.removeClass('show').addClass('hide'); + } else { + dupliCheckEle.bootstrapSwitch('state', true, true); + duplicateHandlingContainer.removeClass('hide').addClass('show'); + } + dupliCheckEle.bootstrapSwitch('handleWidth', '43px').bootstrapSwitch('labelWidth', '43px').bootstrapSwitch('size', '86px'); + } + + var fieldsList = form.find('#fieldsList'); + form.off('switchChange.bootstrapSwitch'); + form.on('switchChange.bootstrapSwitch', '.duplicateCheck', function (e, state) { + if (state == true) { + duplicateHandlingContainer.removeClass('hide').addClass('show'); + fieldsList.removeAttr('data-validation-engine').attr('data-validation-engine', 'validate[required]'); + form.find('.rule').val('0'); + } else { + duplicateHandlingContainer.removeClass('show').addClass('hide'); + fieldsList.removeAttr('data-validation-engine'); + fieldsList.val('').trigger('liszt:updated').trigger('change', false); + form.find('.formFooter').removeClass('show').addClass('hide'); + form.find('.rule').val('1'); + if (dupliCheckEle.data('currentRule') != '1') { + form.submit(); + } + } + }); + + form.find('select').on('change', function () { + form.find('.formFooter').addClass('show').removeClass('hide'); + }); + + form.find('.cancelLink').on('click', function () { + duplicationContainer.html(''); + contents.find('.duplicationTab').trigger('click'); + }); + vtUtils.showSelect2ElementView(form.find('select').addClass('select2'), {maximumSelectionSize: 3}); + vtUtils.enableTooltips(); + + var params = { + submitHandler: function (form) { + var form = jQuery(form); + var params = form.serializeFormData(); + if ((typeof params['fieldIdsList[]'] == 'undefined') && (typeof params['fieldIdsList'] == 'undefined')) { + params['fieldIdsList'] = ''; + } + + app.helper.showProgress(); + app.request.post({'data': params}).then(function (error, data) { + app.helper.hideProgress(); + if (error == null) { + var message = app.vtranslate('JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE'); + if (params.rule == 1) { + message = app.vtranslate('JS_DUPLICATE_CHECK_DISABLED'); + } + app.helper.showSuccessNotification({'message': message}); + dupliCheckEle.data('currentRule', params.rule); + form.find('.formFooter').removeClass('show').addClass('hide'); + } else { + app.helper.showErrorNotification({'message': app.vtranslate('JS_DUPLICATE_HANDLING_FAILURE_MESSAGE')}); + } + }); + return false; + } + } + form.vtValidate(params); + }); + }); + }, + showDuplicationHandlingUI: function (duplicationContainer, e) { + var aDeferred = jQuery.Deferred(); + var duplicateUiContainer = duplicationContainer.find('.duplicateHandlingDiv'); + + var selectedTab = jQuery(e.currentTarget).find('a'); + var mode = selectedTab.data('mode'); + var url = selectedTab.data('url')+'&sourceModule='+jQuery('#selectedModuleName').val()+'&mode='+mode; + jQuery('.selectedMode').val(mode); + + if (duplicateUiContainer.length == 0) { + app.helper.showProgress(); + app.request.pjax({'url': url}).then(function (error, data) { + if (error === null) { + app.helper.hideProgress(); + duplicationContainer.html(data); + aDeferred.resolve(duplicationContainer); + } else { + aDeferred.reject(error); + } + }); + } else { + window.history.pushState('duplicateUiContainer', '', url); + aDeferred.resolve(); + } + return aDeferred.promise(); + }, /** * register events for layout editor */ registerEvents: function () { var thisInstance = this; - - thisInstance.registerBlockEvents(); - thisInstance.registerFieldEvents(); - thisInstance.setInactiveFieldsList(); - thisInstance.setHeaderFieldsCount(); - thisInstance.setHeaderFieldsMeta(); - thisInstance.setNameFields(); - thisInstance.registerAddCustomBlockEvent(); - thisInstance.registerFieldSequenceSaveClick(); - jQuery("input[name='collapseBlock']").bootstrapSwitch(); - jQuery("input[name='collapseBlock']").bootstrapSwitch('handleWidth', '27px'); - jQuery("input[name='collapseBlock']").bootstrapSwitch('labelWidth', '25px'); - thisInstance.relatedModulesTabClickEvent(); thisInstance.registerModulesChangeEvent(); - thisInstance.registerSwitchActionOnFieldProperties(); - this.registerAddCustomField(); - - app.helper.showVerticalScroll(jQuery('.addFieldTypes'), {'setHeight': '350px'}); + thisInstance.triggerFieldListTabClickEvent(); + thisInstance.triggerRelatedModulesTabClickEvent(); + thisInstance.triggerDuplicationTabClickEvent(); - vtUtils.enableTooltips(); + var selectedTab = jQuery('.selectedTab').val(); + jQuery('#layoutEditorContainer').find('.contents').find('.'+selectedTab).trigger('click'); } - }); -Vtiger.Class('Settings_LayoutEditor_Index_Js', {}, { +Settings_LayoutEditor_Js('Settings_LayoutEditor_Index_Js', {}, { init: function () { this.addComponents(); }, diff --git a/layouts/v7/modules/Settings/MailConverter/resources/MailConverter.js b/layouts/v7/modules/Settings/MailConverter/resources/MailConverter.js index 38bc5d2477ab79ee568c01f7f233b09d394652ef..a15cbfd366f84e862427258f63427eeeffb04555 100644 --- a/layouts/v7/modules/Settings/MailConverter/resources/MailConverter.js +++ b/layouts/v7/modules/Settings/MailConverter/resources/MailConverter.js @@ -25,7 +25,7 @@ jQuery.Class('Settings_MailConverter_Index_Js', { triggerDeleteRule: function (currentElement, url) { var deleteElement = jQuery(currentElement); app.helper.showConfirmationBox({'message': app.vtranslate('LBL_DELETE_CONFIRMATION')}).then(function () { - app.request.get({url:url}).then(function (err, data) { + app.request.post({url:url}).then(function (err, data) { if (data) { var closestBlock = deleteElement.closest('[data-blockid]'); var nextBlocks = closestBlock.nextAll('[data-blockid]'); @@ -182,4 +182,4 @@ jQuery.Class('Settings_MailConverter_Index_Js', { jQuery(document).ready(function () { var mcInstance = Settings_MailConverter_Index_Js.mailConverterInstance = new Settings_MailConverter_Index_Js(); mcInstance.registerEvents(); -}); \ No newline at end of file +}); diff --git a/layouts/v7/modules/Settings/MenuEditor/Index.tpl b/layouts/v7/modules/Settings/MenuEditor/Index.tpl index 93de1e619ced1ab970c22a5d1a0548302daf0431..2a6c55f2d88dca6c8a7be6352edce32901ea8130 100644 --- a/layouts/v7/modules/Settings/MenuEditor/Index.tpl +++ b/layouts/v7/modules/Settings/MenuEditor/Index.tpl @@ -9,13 +9,7 @@ {* modules/Settings/MenuEditor/views/Index.php *} {* START YOUR IMPLEMENTATION FROM BELOW. Use {debug} for information *} -{assign var="APP_IMAGE_MAP" value=[ - 'MARKETING' => 'fa-users', - 'SALES' => 'fa-dot-circle-o', - 'INVENTORY' => 'vicon-inventory', - 'SUPPORT' => 'fa-life-ring', - 'PROJECT' => 'fa-briefcase' -]} +{assign var=APP_IMAGE_MAP value=Vtiger_MenuStructure_Model::getAppIcons()} <div class="listViewPageDiv detailViewContainer col-sm-12" id="listViewContent"> <div class="col-sm-12"> <div class="row"> @@ -25,39 +19,40 @@ </div> </div> </div> - <br> - <div class="row"> - {assign var=APP_LIST value=Vtiger_MenuStructure_Model::getAppMenuList()} - {foreach item=APP_IMAGE key=APP_NAME from=$APP_IMAGE_MAP name=APP_MAP} - {if !in_array($APP_NAME, $APP_LIST)} {continue} {/if} - <div style="margin-left:25px;" class=" {if $smarty.foreach.APP_MAP.index eq 0 or count($APP_LIST) eq 1} {/if} col-lg-2"> - <div class="menuEditorItem app-{$APP_NAME}" data-app-name="{$APP_NAME}"> - <span class="fa {$APP_IMAGE}"></span> - {assign var=TRANSLATED_APP_NAME value={vtranslate("LBL_$APP_NAME")}} - <div class="textOverflowEllipsis" title="{$TRANSLATED_APP_NAME}">{$TRANSLATED_APP_NAME}</div> - </div> - <div class="sortable appContainer" data-appname="{$APP_NAME}"> - {foreach key=moduleName item=moduleModel from=$APP_MAPPED_MODULES[$APP_NAME]} - <div class="modules noConnect" data-module="{$moduleName}"> - <i data-appname="{$APP_NAME}" class="fa fa-times pull-right whiteIcon menuEditorRemoveItem" style="margin: 5%;"></i> - <div class="menuEditorItem menuEditorModuleItem"> - <span class="pull-left marginRight10px marginTop5px"> - <img class="alignMiddle cursorDrag" src="{vimage_path('drag.png')}"/> - </span> - {assign var='translatedModuleLabel' value=vtranslate($moduleModel->get('label'),$moduleName )} - <span> - <i class="vicon-{strtolower($moduleName)} marginRight10px pull-left"></i> - </span> - <div class="textOverflowEllipsis marginTop10px textAlignLeft" title="{$translatedModuleLabel}">{$translatedModuleLabel}</div> + <div class="col-lg-12" style="margin-top: 10px;"> + <div class="row" style="margin-left: -28px;"> + {assign var=APP_LIST value=Vtiger_MenuStructure_Model::getAppMenuList()} + {foreach item=APP_IMAGE key=APP_NAME from=$APP_IMAGE_MAP name=APP_MAP} + {if !in_array($APP_NAME, $APP_LIST)} {continue} {/if} + <div class="col-lg-2{if $smarty.foreach.APP_MAP.index eq 0 or count($APP_LIST) eq 1}{/if}"> + <div class="menuEditorItem app-{$APP_NAME}" data-app-name="{$APP_NAME}"> + <span class="fa {$APP_IMAGE}"></span> + {assign var=TRANSLATED_APP_NAME value={vtranslate("LBL_$APP_NAME")}} + <div class="textOverflowEllipsis" title="{$TRANSLATED_APP_NAME}">{$TRANSLATED_APP_NAME}</div> + </div> + <div class="sortable appContainer" data-appname="{$APP_NAME}"> + {foreach key=moduleName item=moduleModel from=$APP_MAPPED_MODULES[$APP_NAME]} + <div class="modules noConnect" data-module="{$moduleName}"> + <i data-appname="{$APP_NAME}" class="fa fa-times pull-right whiteIcon menuEditorRemoveItem" style="margin: 5%;"></i> + <div class="menuEditorItem menuEditorModuleItem"> + <span class="pull-left marginRight10px marginTop5px"> + <img class="alignMiddle cursorDrag" src="{vimage_path('drag.png')}"/> + </span> + {assign var='translatedModuleLabel' value=vtranslate($moduleModel->get('label'),$moduleName )} + <span> + <span class="marginRight10px pull-left">{$moduleModel->getModuleIcon()}</span> + </span> + <div class="textOverflowEllipsis marginTop10px textAlignLeft" title="{$translatedModuleLabel}">{$translatedModuleLabel}</div> + </div> </div> - </div> - {/foreach} - <div class="menuEditorItem menuEditorModuleItem menuEditorAddItem" data-appname="{$APP_NAME}"> - <i class="fa fa-plus pull-left marginTop5px"></i> - <div class="marginTop10px">{vtranslate('LBL_SELECT_HIDDEN_MODULE', $QUALIFIED_MODULE_NAME)}</div> - </div> + {/foreach} + <div class="menuEditorItem menuEditorModuleItem menuEditorAddItem" data-appname="{$APP_NAME}"> + <i class="fa fa-plus pull-left marginTop5px"></i> + <div class="marginTop10px">{vtranslate('LBL_SELECT_HIDDEN_MODULE', $QUALIFIED_MODULE_NAME)}</div> + </div> + </div> </div> - </div> - {/foreach} + {/foreach} + </div> </div> </div> diff --git a/layouts/v7/modules/Settings/ModuleManager/ImportUserModuleStep1.tpl b/layouts/v7/modules/Settings/ModuleManager/ImportUserModuleStep1.tpl index 13381134496c99a03692e20c68397e2a27fa6062..c95c6eafbae4e73515249ba7f6dd33d89b11fa95 100644 --- a/layouts/v7/modules/Settings/ModuleManager/ImportUserModuleStep1.tpl +++ b/layouts/v7/modules/Settings/ModuleManager/ImportUserModuleStep1.tpl @@ -28,7 +28,7 @@ <div> <input type="checkbox" name="acceptDisclaimer" /> <b>{vtranslate('LBL_ACCEPT_WITH_THE_DISCLAIMER', $QUALIFIED_MODULE)}</b> </div> - <div style="margin-top: 15px;"> + <div style="margin-top: 15px; display: none;"> <span name="proceedInstallation" class="fileUploadBtn btn btn-primary"> <span><i class="fa fa-laptop"></i> {vtranslate('Select from My Computer', $MODULE)}</span> <input type="file" name="moduleZip" id="moduleZip" size="80px" data-validation-engine="validate[required, funcCall[Vtiger_Base_Validator_Js.invokeValidation]]" @@ -49,4 +49,4 @@ </div> </form> </div> -{/strip} \ No newline at end of file +{/strip} diff --git a/layouts/v7/modules/Settings/ModuleManager/ImportUserModuleStep2.tpl b/layouts/v7/modules/Settings/ModuleManager/ImportUserModuleStep2.tpl index b7f0a9caa5cc4542ef1d91dcbb145ee347ed1675..aeaa9eaad9a930ade199c58b9e56c9ce3a376234 100644 --- a/layouts/v7/modules/Settings/ModuleManager/ImportUserModuleStep2.tpl +++ b/layouts/v7/modules/Settings/ModuleManager/ImportUserModuleStep2.tpl @@ -62,9 +62,6 @@ {/if} <br> <div class="col-lg-12"> - {if $MODULEIMPORT_EXISTS neq 'true'} - <input type="checkbox" class="acceptLicense"> {vtranslate('LBL_LICENSE_ACCEPT_AGREEMENT', $QUALIFIED_MODULE)} - {/if} {if $MODULEIMPORT_EXISTS eq 'true' || $MODULEIMPORT_DIR_EXISTS eq 'true'} {if $MODULEIMPORT_EXISTS eq 'true'} <input type="hidden" name="module_import_file" value="{$MODULEIMPORT_FILE}"> @@ -106,4 +103,4 @@ </div> </div> </div> -{/strip} \ No newline at end of file +{/strip} diff --git a/layouts/v7/modules/Settings/ModuleManager/resources/ModuleImport.js b/layouts/v7/modules/Settings/ModuleManager/resources/ModuleImport.js index 5b11638a71ac7f859d0b8187d09cd2f38cd5b6b3..12433a385ac9398bea8d548787633cd6dba17c25 100644 --- a/layouts/v7/modules/Settings/ModuleManager/resources/ModuleImport.js +++ b/layouts/v7/modules/Settings/ModuleManager/resources/ModuleImport.js @@ -7,4 +7,4 @@ * All Rights Reserved. *************************************************************************************/ -Settings_Module_Manager_Js('Settings_ModuleManager_ModuleImport_Js', {}, {}); \ No newline at end of file +Settings_ModuleManager_List_Js('Settings_ModuleManager_ModuleImport_Js', {}, {}); \ No newline at end of file diff --git a/layouts/v7/modules/Settings/ModuleManager/resources/ModuleManager.js b/layouts/v7/modules/Settings/ModuleManager/resources/ModuleManager.js index f90107f19c0d400148a473a8561ddac04f47861d..5bb6749fb149959cd5a89b74be0394d853d5a735 100644 --- a/layouts/v7/modules/Settings/ModuleManager/resources/ModuleManager.js +++ b/layouts/v7/modules/Settings/ModuleManager/resources/ModuleManager.js @@ -7,7 +7,7 @@ * All Rights Reserved. *************************************************************************************/ -Vtiger_Index_Js('Settings_Module_Manager_Js', { +Vtiger_Index_Js('Settings_ModuleManager_List_Js', { }, { /* * function to update the module status for the module @@ -42,33 +42,39 @@ Vtiger_Index_Js('Settings_Module_Manager_Js', { return aDeferred.promise(); }, registerEventsForImportFromZip: function (container) { + // Forcefully disable file-input and submit + var fileuploadWrap = container.find('.fileUploadBtn').parent(); + var importFromZip = container.find('[name="importFromZip"]'); + var moduleZip = container.find('[name="moduleZip"]'); + var fileDetails = jQuery('#moduleFileDetails'); + + fileuploadWrap.hide(); + importFromZip.attr('disabled', 'disabled'); + container.on('change', '[name="acceptDisclaimer"]', function (e) { var element = jQuery(e.currentTarget); - var importFromZip = container.find('[name="importFromZip"]'); - var uploadedFile = jQuery('#moduleZip').val(); - if (uploadedFile) { - jQuery('#moduleFileDetails').attr('title', uploadedFile).html(uploadedFile); - } - var disabledStatus = importFromZip.attr('disabled'); - if ((element.is(':checked')) && (uploadedFile != '')) { - if (typeof disabledStatus != "undefined") { - importFromZip.removeAttr('disabled'); - } + if (element.is(':checked')) { + fileuploadWrap.show(); } else { - if (typeof disabledStatus == "undefined") { - importFromZip.attr('disabled', "disabled"); - } + fileuploadWrap.hide(); + importFromZip.attr('disabled', 'disabled'); + fileDetails.removeAttr('title').html(''); + moduleZip.val(''); } }); container.on('change', '[name="moduleZip"]', function (e) { + var uploadedFile = moduleZip.val(); + if (uploadedFile) { + jQuery('#moduleFileDetails').attr('title', uploadedFile).html(uploadedFile); + } var acceptDisclaimer = container.find('[name="acceptDisclaimer"]'); - if (!acceptDisclaimer.is(':checked')) { - acceptDisclaimer.trigger('click'); + if (acceptDisclaimer.is(':checked') && uploadedFile) { + importFromZip.removeAttr('disabled'); } }); - container.on('click', '.finishButton', function() { + container.on('click', '.finishButton', function () { window.location.href = jQuery('[data-name="VTLIB_LBL_MODULE_MANAGER"]').attr('href'); }); @@ -96,9 +102,9 @@ Vtiger_Index_Js('Settings_Module_Manager_Js', { app.helper.showProgress(); - AppConnector.request(params).then( - function (data) { - app.helper.hideProgress(); + AppConnector.request(params).then( + function (data) { + app.helper.hideProgress(); element.addClass('hide'); var headerMessage, containerMessage; @@ -110,7 +116,7 @@ Vtiger_Index_Js('Settings_Module_Manager_Js', { containerMessage = app.vtranslate('JS_IMPORTED_MODULE'); } app.helper.showSuccessNotification({'title': headerMessage, 'message': data.result.importModuleName+' '+containerMessage}); - setTimeout(function() { + setTimeout(function () { window.location.href = jQuery('[data-name="VTLIB_LBL_MODULE_MANAGER"]').attr('href'); }, 3000); } diff --git a/layouts/v7/modules/Settings/Picklist/PickListValueDetail.tpl b/layouts/v7/modules/Settings/Picklist/PickListValueDetail.tpl index 8891d65478381f94fbebfd7e975e90222c013ab6..78285c3203333701107981cb55416f5511046b4f 100644 --- a/layouts/v7/modules/Settings/Picklist/PickListValueDetail.tpl +++ b/layouts/v7/modules/Settings/Picklist/PickListValueDetail.tpl @@ -43,6 +43,7 @@ </tr> </thead> <tbody> + <tr><td><!-- Placeholder role to allow drag-and-drop for last elements --></td></tr> <input type="hidden" id="dragImagePath" value="{vimage_path('drag.png')}" /> {assign var=PICKLIST_VALUES value=$SELECTED_PICKLISTFIELD_ALL_VALUES} {foreach key=PICKLIST_KEY item=PICKLIST_VALUE from=$PICKLIST_VALUES} @@ -93,4 +94,4 @@ </div> {/if} </div> -{/strip} \ No newline at end of file +{/strip} diff --git a/layouts/v7/modules/Settings/Roles/resources/Roles.js b/layouts/v7/modules/Settings/Roles/resources/Roles.js index fae93e891a247e882ed251bd68b735cb637001a8..ec6b97cabdaa5743bd76fedba6ac455963542953 100644 --- a/layouts/v7/modules/Settings/Roles/resources/Roles.js +++ b/layouts/v7/modules/Settings/Roles/resources/Roles.js @@ -214,9 +214,11 @@ var Settings_Roles_Js = { /** * To register Profile Edit View Events */ + _registeredProfileEvents: false, registerProfileEvents : function() { - if(typeof window['Settings_Profiles_Edit_Js'] != 'undefined'){ + if(!this._registeredProfileEvents && typeof window['Settings_Profiles_Edit_Js'] != 'undefined'){ var instance = new Settings_Profiles_Edit_Js(); + this._registeredProfileEvents = true; } }, @@ -397,4 +399,4 @@ Vtiger.Class("Settings_Roles_Edit_Js",{},{ addComponents : function() { this.addModuleSpecificComponent('Index','Vtiger',app.getParentModuleName()); } -}); \ No newline at end of file +}); diff --git a/layouts/v7/modules/Settings/Vtiger/ModuleHeader.tpl b/layouts/v7/modules/Settings/Vtiger/ModuleHeader.tpl index b5f6048ae9f77e225cc3a393c6ae935316ad2a62..43f60b6275832aea9a0d3048f4291316059b072e 100644 --- a/layouts/v7/modules/Settings/Vtiger/ModuleHeader.tpl +++ b/layouts/v7/modules/Settings/Vtiger/ModuleHeader.tpl @@ -17,7 +17,7 @@ <a title="{vtranslate('Home', $MODULE)}" href='index.php?module=Vtiger&parent=Settings&view=Index'> <h4 class="module-title pull-left text-uppercase">{vtranslate('LBL_HOME', $MODULE)} </h4> </a> - <span class="fa fa-angle-right pull-left {if $VIEW eq 'Index' && $MODULE eq 'Vtiger'} hide {/if}" aria-hidden="true" style="padding-top: 12px;padding-left: 5px;"></span> + <span class="fa fa-angle-right pull-left {if $VIEW eq 'Index' && $MODULE eq 'Vtiger'} hide {/if}" aria-hidden="true" style="padding-top: 12px;padding-left: 5px; padding-right: 5px;"></span> {/if} {if $MODULE neq 'Vtiger' or $smarty.request.view neq 'Index'} {if $ACTIVE_BLOCK['block']} @@ -38,7 +38,7 @@ {assign var=URL value=$URL|cat:'&parent='|cat:$smarty.request.parent} {/if} {/if} - <span class="current-filter-name settingModuleName filter-name pull-left"> + <span class="current-filter-name settingModuleName filter-name pull-left"> {if $smarty.request.view eq 'Calendar'} {if $smarty.request.mode eq 'Edit'} <a href="{"index.php?module="|cat:$smarty.request.module|cat:'&parent='|cat:$smarty.request.parent|cat:'&view='|cat:$smarty.request.view}"> @@ -139,13 +139,20 @@ {/if} <li> <div class="settingsIcon"> - <button type="button" class="btn btn-default module-buttons dropdown-toggle" data-toggle="dropdown" aria-expanded="false"> - <span class="fa fa-wrench" aria-hidden="true" title="{vtranslate('LBL_SETTINGS', $MODULE)}"></span> <span class="caret"></span> + <button type="button" class="btn btn-default module-buttons dropdown-toggle" data-toggle="dropdown" aria-expanded="false" title="{vtranslate('LBL_SETTINGS', $MODULE)}"> + <span class="fa fa-wrench" aria-hidden="true"></span> <span class="caret"></span> </button> <ul class="detailViewSetting dropdown-menu"> {foreach item=SETTING from=$LISTVIEW_LINKS['LISTVIEWSETTING']} - <li id="{$MODULE}_setings_lisview_advancedAction_{$SETTING->getLabel()}"><a href="javascript:void(0);" onclick="{$SETTING->getUrl()};">{vtranslate($SETTING->getLabel(), $QUALIFIEDMODULE)}</a></li> - {/foreach} + <li id="{$MODULE}_setings_lisview_advancedAction_{$SETTING->getLabel()}"> + <a {if stripos($SETTING->getUrl(), 'javascript:') === 0} + onclick='{$SETTING->getUrl()|substr:strlen("javascript:")};' + {else} + onclick='window.location.href="{$SETTING->getUrl()}"' + {/if}> + {vtranslate($SETTING->getLabel(), $QUALIFIEDMODULE)}</a> + </li> + {/foreach} </ul> </div> </li> diff --git a/layouts/v7/modules/Settings/Vtiger/OutgoingServerEdit.tpl b/layouts/v7/modules/Settings/Vtiger/OutgoingServerEdit.tpl index dd97f9ec0065524ba55965f349a21f09d678222e..2f99db328f7b2155c28873a96c8f22d81872afb4 100644 --- a/layouts/v7/modules/Settings/Vtiger/OutgoingServerEdit.tpl +++ b/layouts/v7/modules/Settings/Vtiger/OutgoingServerEdit.tpl @@ -29,6 +29,9 @@ </div> <div class="block"> <div> + <div class="btn-group pull-right"> + <button class="btn t-btn resetButton" type="button" title="{vtranslate('LBL_RESET_TO_DEFAULT', $QUALIFIED_MODULE)}"><strong>{vtranslate('LBL_RESET_TO_DEFAULT', $QUALIFIED_MODULE)}</strong></button> + </div> <h4>{vtranslate('LBL_MAIL_SERVER_SMTP', $QUALIFIED_MODULE)}</h4> </div> <hr> @@ -86,4 +89,4 @@ </form> </div> </div> -{/strip} \ No newline at end of file +{/strip} diff --git a/layouts/v7/modules/Settings/Vtiger/SidebarHeader.tpl b/layouts/v7/modules/Settings/Vtiger/SidebarHeader.tpl index 0fdcc9f4a3ef7aedaf14d213e381989dfdbc474c..7459dc13ab9b4ff7488541e20dba3d08c2a692b4 100644 --- a/layouts/v7/modules/Settings/Vtiger/SidebarHeader.tpl +++ b/layouts/v7/modules/Settings/Vtiger/SidebarHeader.tpl @@ -6,13 +6,8 @@ * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. ************************************************************************************} -{assign var="APP_IMAGE_MAP" value=[ - 'MARKETING' => 'fa-users', - 'SALES' => 'fa-dot-circle-o', - 'SUPPORT' => 'fa-life-ring', - 'INVENTORY' => 'vicon-inventory', - 'PROJECT' => 'fa-briefcase' -]} + +{assign var=APP_IMAGE_MAP value=Vtiger_MenuStructure_Model::getAppIcons()} <div class="col-sm-12 col-xs-12 app-indicator-icon-container app-{$SELECTED_MENU_CATEGORY}"> <div class="row" title="{vtranslate("LBL_SETTINGS",$MODULE)}"> <span class="app-indicator-icon fa fa-cog"></span> diff --git a/layouts/v7/modules/Settings/Vtiger/resources/OutgoingServer.js b/layouts/v7/modules/Settings/Vtiger/resources/OutgoingServer.js index ad66869d084546859e2110c2fa977a61481f5709..8392665ffcb7565f26836f8e6973b9a71fad41a0 100644 --- a/layouts/v7/modules/Settings/Vtiger/resources/OutgoingServer.js +++ b/layouts/v7/modules/Settings/Vtiger/resources/OutgoingServer.js @@ -105,11 +105,13 @@ Vtiger.Class("Settings_Vtiger_OutgoingServer_Js",{},{ thisInstance.saveOutgoingDetails(form); } }; - form.vtValidate(params); - form.on('submit', function(e){ - e.preventDefault(); - return false; - }); + if (form.length) { + form.vtValidate(params); + form.on('submit', function(e){ + e.preventDefault(); + return false; + }); + } //register click event for resetToDefault Button resetButton.click(function(e) { @@ -199,4 +201,4 @@ Vtiger.Class("Settings_Vtiger_OutgoingServer_Js",{},{ Settings_Vtiger_OutgoingServer_Js("Settings_Vtiger_OutgoingServerEdit_Js",{},{}); -Settings_Vtiger_OutgoingServer_Js("Settings_Vtiger_OutgoingServerDetail_Js",{},{}); \ No newline at end of file +Settings_Vtiger_OutgoingServer_Js("Settings_Vtiger_OutgoingServerDetail_Js",{},{}); diff --git a/layouts/v7/modules/Settings/Workflows/ListViewContents.tpl b/layouts/v7/modules/Settings/Workflows/ListViewContents.tpl index 64d50232509d88216b23e7866950b6740bf2a6d9..53b5d355113503890e0fe0c7c73180850d13ff98 100644 --- a/layouts/v7/modules/Settings/Workflows/ListViewContents.tpl +++ b/layouts/v7/modules/Settings/Workflows/ListViewContents.tpl @@ -127,10 +127,7 @@ {elseif $LISTVIEW_HEADERNAME eq 'module_name' && empty($SOURCE_MODULE)} <td class="listViewEntryValue {$WIDTHTYPE}" width="{$WIDTH}%" nowrap> {assign var="MODULE_ICON_NAME" value="{strtolower($LISTVIEW_ENTRY->get('raw_module_name'))}"} - {if $MODULE_ICON_NAME eq 'events'} - {assign var="MODULE_ICON_NAME" value="calendar"} - {/if} - <i class="vicon-{$MODULE_ICON_NAME}" title='{$LISTVIEW_ENTRY->get('module_name')}'> </i> + {Vtiger_Module_Model::getModuleIconPath($LISTVIEW_ENTRY->get('raw_module_name'))} </td> {else} {/if} diff --git a/layouts/v7/modules/Settings/Workflows/Tasks/VTCreateEntityTask.tpl b/layouts/v7/modules/Settings/Workflows/Tasks/VTCreateEntityTask.tpl index c07d53e5caebf7109acd66738eec4378c7e83be3..d59abbd21fdbd63f8b194abe92d8352eb87df922 100644 --- a/layouts/v7/modules/Settings/Workflows/Tasks/VTCreateEntityTask.tpl +++ b/layouts/v7/modules/Settings/Workflows/Tasks/VTCreateEntityTask.tpl @@ -35,7 +35,7 @@ </div> </div> </div><br> - <div id="addCreateEntityContainer"> + <div id="addCreateEntityContainer" style="margin-bottom: 70px;"> {include file="CreateEntity.tpl"|@vtemplate_path:$QUALIFIED_MODULE} </div> {/strip} diff --git a/layouts/v7/modules/Settings/Workflows/Tasks/VTCreateEventTask.tpl b/layouts/v7/modules/Settings/Workflows/Tasks/VTCreateEventTask.tpl index e11764ce2c1ba06525d25efed3e77dad65e5dc58..f67023b3189dac47e58694db7f535729e9d0961a 100644 --- a/layouts/v7/modules/Settings/Workflows/Tasks/VTCreateEventTask.tpl +++ b/layouts/v7/modules/Settings/Workflows/Tasks/VTCreateEventTask.tpl @@ -11,7 +11,7 @@ -->*} {strip} {assign var=SHOWN_FIELDS_LIST value=array()} - <div class="row"> + <div class="row" style="margin-bottom: 70px;"> <div class="col-sm-9 col-xs-9"> <div class="row form-group"> <div class="col-sm-2 col-xs-2">{vtranslate('LBL_EVENT_NAME',$QUALIFIED_MODULE)}<span class="redColor">*</span></div> diff --git a/layouts/v7/modules/Settings/Workflows/Tasks/VTCreateTodoTask.tpl b/layouts/v7/modules/Settings/Workflows/Tasks/VTCreateTodoTask.tpl index 63931b3e47fa6d08e7817a7008271bc7e2c445bd..c1149bd40d6bae7468fe6da6d86aff2721cf9162 100644 --- a/layouts/v7/modules/Settings/Workflows/Tasks/VTCreateTodoTask.tpl +++ b/layouts/v7/modules/Settings/Workflows/Tasks/VTCreateTodoTask.tpl @@ -11,7 +11,7 @@ -->*} {strip} {assign var=SHOWN_FIELDS_LIST value=array()} - <div class="row"> + <div class="row" style="margin-bottom: 70px;"> <div class="col-sm-9 col-xs-9"> <div class="row form-group"> <div class="col-sm-2 col-xs-2">{vtranslate('LBL_TITLE',$QUALIFIED_MODULE)}<span class="redColor">*</span></div> diff --git a/layouts/v7/modules/Settings/Workflows/Tasks/VTEmailTask.tpl b/layouts/v7/modules/Settings/Workflows/Tasks/VTEmailTask.tpl index 0ce9eb6f1d8e1bbae35885189ce84209071b74eb..9a8e0697d4f1c44b9c28bb0f028734edc82471c0 100644 --- a/layouts/v7/modules/Settings/Workflows/Tasks/VTEmailTask.tpl +++ b/layouts/v7/modules/Settings/Workflows/Tasks/VTEmailTask.tpl @@ -10,7 +10,7 @@ {strip} <div id="VtEmailTaskContainer"> <div class="row"> - <div class="col-sm-12 col-xs-12"> + <div class="col-sm-12 col-xs-12" style="margin-bottom: 70px;"> <div class="row form-group" > <div class="col-sm-6 col-xs-6"> <div class="row"> diff --git a/layouts/v7/modules/Settings/Workflows/Tasks/VTSMSTask.tpl b/layouts/v7/modules/Settings/Workflows/Tasks/VTSMSTask.tpl index c6d7b18d8d4162d5f91d4d24c72493a184f04188..9241c6696ee9f5fdac77a98b59c276484b59687a 100644 --- a/layouts/v7/modules/Settings/Workflows/Tasks/VTSMSTask.tpl +++ b/layouts/v7/modules/Settings/Workflows/Tasks/VTSMSTask.tpl @@ -10,7 +10,7 @@ ********************************************************************************/ -->*} {strip} - <div class="row"> + <div class="row" style="margin-bottom: 70px;"> <div class="col-lg-9"> <div class="row form-group"> <div class="col-lg-2">{vtranslate('LBL_RECEPIENTS',$QUALIFIED_MODULE)}<span class="redColor">*</span></div> @@ -33,7 +33,8 @@ <div class="row form-group"> <div class="col-lg-2">{vtranslate('LBL_ADD_FIELDS',$QUALIFIED_MODULE)}</div> <div class="col-lg-10"> - <select class="select2 task-fields" style="min-width: 150px;"> + <select class="select2 task-fields" style="min-width: 150px;" data-placeholder="{vtranslate('LBL_SELECT_FIELDS', $QUALIFIED_MODULE)}"> + <option></option> {$ALL_FIELD_OPTIONS} </select> </div> diff --git a/layouts/v7/modules/Settings/Workflows/Tasks/VTUpdateFieldsTask.tpl b/layouts/v7/modules/Settings/Workflows/Tasks/VTUpdateFieldsTask.tpl index 0f160d8a88e3c755eef3a813d378725b7688ab61..98e5d34ac7d798340d59f85480fd6ba9a128fb59 100644 --- a/layouts/v7/modules/Settings/Workflows/Tasks/VTUpdateFieldsTask.tpl +++ b/layouts/v7/modules/Settings/Workflows/Tasks/VTUpdateFieldsTask.tpl @@ -16,7 +16,7 @@ <div> <button type="button" class="btn btn-default" id="addFieldBtn">{vtranslate('LBL_ADD_FIELD',$QUALIFIED_MODULE)}</button> </div><br> - <div class="conditionsContainer" id="save_fieldvaluemapping"> + <div class="conditionsContainer" id="save_fieldvaluemapping" style="margin-bottom: 70px;"> {assign var=FIELD_VALUE_MAPPING value=ZEND_JSON::decode($TASK_OBJECT->field_value_mapping)} <input type="hidden" id="fieldValueMapping" name="field_value_mapping" value='{Vtiger_Util_Helper::toSafeHTML($TASK_OBJECT->field_value_mapping)}' /> {foreach from=$FIELD_VALUE_MAPPING item=FIELD_MAP} diff --git a/layouts/v7/modules/Users/DetailViewFullContents.tpl b/layouts/v7/modules/Users/DetailViewFullContents.tpl index 283ace02442484a47b7eb2678a8d480def4f7961..7df5fada1f440a4a55fb57fffabad8b6396db674 100644 --- a/layouts/v7/modules/Users/DetailViewFullContents.tpl +++ b/layouts/v7/modules/Users/DetailViewFullContents.tpl @@ -10,7 +10,11 @@ {* START YOUR IMPLEMENTATION FROM BELOW. Use {debug} for information *} {strip} - <form id="detailView" data-name-fields='{ZEND_JSON::encode($MODULE_MODEL->getNameFields())}' method="POST"> + {assign var=NAME_FIELDS value=array('first_name', 'last_name')} + {if $MODULE_MODEL} + {assign var=NAME_FIELDS value=$MODULE_MODEL->getNameFields()} + {/if} + <form id="detailView" data-name-fields='{ZEND_JSON::encode($NAME_FIELDS)}' method="POST"> {include file='DetailViewBlockView.tpl'|@vtemplate_path:$MODULE_NAME RECORD_STRUCTURE=$RECORD_STRUCTURE MODULE_NAME=$MODULE_NAME} </form> {/strip} diff --git a/layouts/v7/modules/Users/Login.tpl b/layouts/v7/modules/Users/Login.tpl index df06b143c61f3cc50a4263f90c6718c93815b941..9f87211f7e92c2c9453ee52880f9f37f3f174f2f 100644 --- a/layouts/v7/modules/Users/Login.tpl +++ b/layouts/v7/modules/Users/Login.tpl @@ -19,7 +19,7 @@ background-repeat: no-repeat; } hr { - margin-top: 15px; + margin-top: 15px; background-color: #7C7C7C; height: 2px; border-width: 0; @@ -79,7 +79,6 @@ } .marketingDiv { color: #303030; - padding: 10px 20px; } .separatorDiv { background-color: #7C7C7C; @@ -219,12 +218,12 @@ <input type="hidden" name="module" value="Users"/> <input type="hidden" name="action" value="Login"/> <div class="group"> - <input id="username" type="text" name="username" placeholder="Username" /> + <input id="username" type="text" name="username" placeholder="Username"> <span class="bar"></span> <label>Username</label> </div> <div class="group"> - <input id="password" type="password" name="password" placeholder="Password" /> + <input id="password" type="password" name="password" placeholder="Password"> <span class="bar"></span> <label>Password</label> </div> @@ -238,7 +237,7 @@ <div id="forgotPasswordDiv" class="hide"> <form class="form-horizontal" action="forgotPassword.php" method="POST"> <div class="group"> - <input id="username" type="text" name="username" placeholder="Username" > + <input id="fusername" type="text" name="username" placeholder="Username" > <span class="bar"></span> <label>Username</label> </div> @@ -263,38 +262,43 @@ <div class="col-lg-5"> <div class="marketingDiv widgetHeight"> {if $JSON_DATA} - {assign var=COUNTER value=0} - {foreach key=BLOCK_NAME item=BLOCKS_DATA from=$JSON_DATA} - {if $BLOCKS_DATA} - <div> - {assign var=COUNTER value=$COUNTER+1} - <h4>{$BLOCKS_DATA[0].heading}</h4> - {foreach item=BLOCK_DATA from=$BLOCKS_DATA} - <div class="row"> - {if $BLOCK_DATA.image} - <div class="col-lg-4" style="min-height: 100px;"><img src="{$BLOCK_DATA.image}" style="width: 100%;height: 100%;margin-top: 10px;"/></div> - <div class="col-lg-8"> - {else} - <div class="col-lg-12"> - {/if} - <div title="{$BLOCK_DATA.summary}"> - <h3><b>{$BLOCK_DATA.displayTitle}</b></h3> - {$BLOCK_DATA.displaySummary}<br><br> - </div> - <a href="{$BLOCK_DATA.url}" target="_blank"><u>{$BLOCK_DATA.urlalt}</u></a> - {if $BLOCK_DATA.image} - </div> - {else} - </div> - {/if} - </div> - {/foreach} - </div> - {if $COUNTER neq $DATA_COUNT} - <hr> + <div class="scrollContainer"> + {assign var=ALL_BLOCKS_COUNT value=0} + {foreach key=BLOCK_NAME item=BLOCKS_DATA from=$JSON_DATA} + {if $BLOCKS_DATA} + <div> + <h4>{$BLOCKS_DATA[0].heading}</h4> + <ul class="bxslider"> + {foreach item=BLOCK_DATA from=$BLOCKS_DATA} + <li class="slide"> + {assign var=ALL_BLOCKS_COUNT value=$ALL_BLOCKS_COUNT+1} + {if $BLOCK_DATA.image} + <div class="col-lg-3" style="min-height: 100px;"><img src="{$BLOCK_DATA.image}" style="width: 100%;height: 100%;margin-top: 10px;"/></div> + <div class="col-lg-9"> + {else} + <div class="col-lg-12"> + {/if} + <div title="{$BLOCK_DATA.summary}"> + <h3><b>{$BLOCK_DATA.displayTitle}</b></h3> + {$BLOCK_DATA.displaySummary}<br><br> + <a href="{$BLOCK_DATA.url}" target="_blank"><u>{$BLOCK_DATA.urlalt}</u></a> + </div> + {if $BLOCK_DATA.image} + </div> + {else} + </div> + {/if} + </li> + {/foreach} + </ul> + </div> + {if $ALL_BLOCKS_COUNT neq $DATA_COUNT} + <br> + <hr> + {/if} {/if} - {/if} - {/foreach} + {/foreach} + </div> {else} <div class="inActiveImgDiv"> <div> @@ -347,7 +351,7 @@ }); forgotPasswordDiv.find('button').on('click', function () { - var username = jQuery('#forgotPasswordDiv #username').val(); + var username = jQuery('#forgotPasswordDiv #fusername').val(); var email = jQuery('#email').val(); var email1 = email.replace(/^\s+/, '').replace(/\s+$/, ''); @@ -389,7 +393,29 @@ jQuery(e.currentTarget).removeClass('is-active'); }); loginFormDiv.find('#username').focus(); + + var slider = jQuery('.bxslider').bxSlider({ + auto: true, + pause: 4000, + nextText: "", + prevText: "", + autoHover: true + }); + jQuery('.bx-prev, .bx-next, .bx-pager-item').live('click',function(){ slider.startAuto(); }); + jQuery('.bx-wrapper .bx-viewport').css('background-color', 'transparent'); + jQuery('.bx-wrapper .bxslider li').css('text-align', 'left'); + jQuery('.bx-wrapper .bx-pager').css('bottom', '-15px'); + + var params = { + theme : 'dark-thick', + setHeight : '100%', + advanced : { + autoExpandHorizontalScroll:true, + setTop: 0 + } + }; + jQuery('.scrollContainer').mCustomScrollbar(params); }); </script> </div> - {/strip} + {/strip} \ No newline at end of file diff --git a/layouts/v7/modules/Users/UserViewHeader.tpl b/layouts/v7/modules/Users/UserViewHeader.tpl index 0b11b52f635115d94ca1d40204e94333dba876b0..0aaa035d57c8a0e97eb0dc77aebf792d496ff1c2 100644 --- a/layouts/v7/modules/Users/UserViewHeader.tpl +++ b/layouts/v7/modules/Users/UserViewHeader.tpl @@ -36,7 +36,7 @@ {$RECORD->getName()} </span> </div> - <div class="pull-right col-md-7"> + <div class="pull-right col-md-7 detailViewButtoncontainer"> <div class="btn-group pull-right"> {foreach item=DETAIL_VIEW_BASIC_LINK from=$DETAILVIEW_LINKS['DETAILVIEWBASIC']} <button class="btn btn-default {if $DETAIL_VIEW_BASIC_LINK->getLabel() eq 'LBL_EDIT'}{/if}" id="{$MODULE}_detailView_basicAction_{Vtiger_Util_Helper::replaceSpaceWithUnderScores($DETAIL_VIEW_BASIC_LINK->getLabel())}" diff --git a/layouts/v7/modules/Users/UsersSidebarHeader.tpl b/layouts/v7/modules/Users/UsersSidebarHeader.tpl index 30bc1d272ef569c03d402be0aaaf41040f9a602a..b5350c6e12e36f997c1b3674511cf094aa85134e 100644 --- a/layouts/v7/modules/Users/UsersSidebarHeader.tpl +++ b/layouts/v7/modules/Users/UsersSidebarHeader.tpl @@ -6,13 +6,8 @@ * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. ************************************************************************************} -{assign var="APP_IMAGE_MAP" value=[ - 'MARKETING' => 'fa-users', - 'SALES' => 'fa-dot-circle-o', - 'SUPPORT' => 'fa-life-ring', - 'INVENTORY' => 'vicon-inventory', - 'PROJECT' => 'fa-briefcase' -]} + +{assign var=APP_IMAGE_MAP value=Vtiger_MenuStructure_Model::getAppIcons()} <div class="col-sm-12 col-xs-12 app-indicator-icon-container app-{$SELECTED_MENU_CATEGORY}"> <div class="row" title="{vtranslate("LBL_SETTINGS",$MODULE)}"> <span class="app-indicator-icon cursorPointer fa fa-cog"></span> diff --git a/layouts/v7/modules/Vendors/DetailViewHeaderTitle.tpl b/layouts/v7/modules/Vendors/DetailViewHeaderTitle.tpl index d167c8af9a37c45dc5864ff9aadf26aafc58337d..dcde0e2a3632b192b937025bc7f1615ec990078f 100644 --- a/layouts/v7/modules/Vendors/DetailViewHeaderTitle.tpl +++ b/layouts/v7/modules/Vendors/DetailViewHeaderTitle.tpl @@ -10,55 +10,55 @@ ********************************************************************************/ -->*} {strip} - <div class="col-lg-6 col-md-6 col-sm-6"> - <div class="record-header clearfix"> - <div class="hidden-sm hidden-xs recordImage bgvendors app-{$SELECTED_MENU_CATEGORY}"> - <div class="name"><span><strong> <i class="vicon-vendors"></i> </strong></span></div> - </div> - <div class="recordBasicInfo"> - <div class="info-row"> - <h4> - <span class="recordLabel pushDown" title="{$RECORD->getName()}"> - {foreach item=NAME_FIELD from=$MODULE_MODEL->getNameFields()} - {assign var=FIELD_MODEL value=$MODULE_MODEL->getField($NAME_FIELD)} - {if $FIELD_MODEL->getPermissions()} - <span class="{$NAME_FIELD}">{$RECORD->get($NAME_FIELD)}</span> - {/if} - {/foreach} - </span> - </h4> - </div> - {include file="DetailViewHeaderFieldsView.tpl"|vtemplate_path:$MODULE} - - {* - <div class="info-row row"> - {assign var=FIELD_MODEL value=$MODULE_MODEL->getField('website')} - <div class="col-lg-7 fieldLabel"> - <span class="website" title="{vtranslate($FIELD_MODEL->get('label'),$MODULE)} : {$RECORD->get('website')}"> - {$RECORD->getDisplayValue("website")} - </span> - </div> - </div> + <div class="col-lg-6 col-md-6 col-sm-6"> + <div class="record-header clearfix"> + <div class="hidden-sm hidden-xs recordImage bgvendors app-{$SELECTED_MENU_CATEGORY}"> + <div class="name"><span><strong>{$MODULE_MODEL->getModuleIcon()}</strong></span></div> + </div> + <div class="recordBasicInfo"> + <div class="info-row"> + <h4> + <span class="recordLabel pushDown" title="{$RECORD->getName()}"> + {foreach item=NAME_FIELD from=$MODULE_MODEL->getNameFields()} + {assign var=FIELD_MODEL value=$MODULE_MODEL->getField($NAME_FIELD)} + {if $FIELD_MODEL->getPermissions()} + <span class="{$NAME_FIELD}">{$RECORD->get($NAME_FIELD)}</span> + {/if} + {/foreach} + </span> + </h4> + </div> + {include file="DetailViewHeaderFieldsView.tpl"|vtemplate_path:$MODULE} - <div class="info-row row"> - {assign var=FIELD_MODEL value=$MODULE_MODEL->getField('email')} - <div class="col-lg-7 fieldLabel"> - <span class="email" title="{vtranslate($FIELD_MODEL->get('label'),$MODULE)} : {$RECORD->get('email')}"> - {$RECORD->getDisplayValue("email")} - </span> - </div> - </div> + {* + <div class="info-row row"> + {assign var=FIELD_MODEL value=$MODULE_MODEL->getField('website')} + <div class="col-lg-7 fieldLabel"> + <span class="website" title="{vtranslate($FIELD_MODEL->get('label'),$MODULE)} : {$RECORD->get('website')}"> + {$RECORD->getDisplayValue("website")} + </span> + </div> + </div> - <div class="info-row row"> - {assign var=FIELD_MODEL value=$MODULE_MODEL->getField('phone')} - <div class="col-lg-7 fieldLabel"> - <span class="phone" title="{vtranslate($FIELD_MODEL->get('label'),$MODULE)} : {$RECORD->get('phone')}"> - {$RECORD->getDisplayValue("phone")} - </span> - </div> - </div> - *} - </div> - </div> - </div> + <div class="info-row row"> + {assign var=FIELD_MODEL value=$MODULE_MODEL->getField('email')} + <div class="col-lg-7 fieldLabel"> + <span class="email" title="{vtranslate($FIELD_MODEL->get('label'),$MODULE)} : {$RECORD->get('email')}"> + {$RECORD->getDisplayValue("email")} + </span> + </div> + </div> + + <div class="info-row row"> + {assign var=FIELD_MODEL value=$MODULE_MODEL->getField('phone')} + <div class="col-lg-7 fieldLabel"> + <span class="phone" title="{vtranslate($FIELD_MODEL->get('label'),$MODULE)} : {$RECORD->get('phone')}"> + {$RECORD->getDisplayValue("phone")} + </span> + </div> + </div> + *} + </div> + </div> + </div> {/strip} \ No newline at end of file diff --git a/layouts/v7/modules/Vtiger/DetailViewHeaderTitle.tpl b/layouts/v7/modules/Vtiger/DetailViewHeaderTitle.tpl index e414c299701ff036c174951dd927d463ddd45635..66ac8a4e45ac8d518fa6abd694a8ea5055ff3c28 100644 --- a/layouts/v7/modules/Vtiger/DetailViewHeaderTitle.tpl +++ b/layouts/v7/modules/Vtiger/DetailViewHeaderTitle.tpl @@ -14,9 +14,7 @@ {assign var=MODULE value=$MODULE_NAME} {/if} <div class="hidden-sm hidden-xs recordImage bg_{$MODULE} app-{$SELECTED_MENU_CATEGORY}"> - <div class="name"> - <span><strong><i class="vicon-{strtolower($MODULE)}"></i></strong></span> - </div> + <div class="name"><span><strong>{$MODULE_MODEL->getModuleIcon()}</strong></span></div> </div> <div class="recordBasicInfo"> diff --git a/layouts/v7/modules/Vtiger/EditView.tpl b/layouts/v7/modules/Vtiger/EditView.tpl index 271f4a88ee953a6618972f738bd836c872be1741..33791c6254c2ab769611c83611f10bc71eecf546 100644 --- a/layouts/v7/modules/Vtiger/EditView.tpl +++ b/layouts/v7/modules/Vtiger/EditView.tpl @@ -76,7 +76,7 @@ <div class="row clearfix"> <div class='textAlignCenter col-lg-12 col-md-12 col-sm-12 '> <button type='submit' class='btn btn-success saveButton' >{vtranslate('LBL_SAVE', $MODULE)}</button> - <a class='cancelLink' href="javascript:history.back()" type="reset">{vtranslate('LBL_CANCEL', $MODULE)}</a> + <a class='cancelLink' href="javascript:history.{if $DUPLICATE_RECORDS}go(-2){else}back(){/if}" type="reset">{vtranslate('LBL_CANCEL', $MODULE)}</a> </div> </div> </div> diff --git a/layouts/v7/modules/Vtiger/ExtensionListLog.tpl b/layouts/v7/modules/Vtiger/ExtensionListLog.tpl index 25ce91516e3242384134ac03764007e8942ed2f1..1df65187d59249c02f7f0ab4e8f27e8879d714b3 100644 --- a/layouts/v7/modules/Vtiger/ExtensionListLog.tpl +++ b/layouts/v7/modules/Vtiger/ExtensionListLog.tpl @@ -15,7 +15,7 @@ <div class="col-sm-6 col-xs-6"> <div class="pull-right"> <span class="module-title"> - <h3><a data-url="{$MODULE_MODEL->getExtensionSettingsUrl($SOURCE_MODULE)}" class="btn addButton btn-default settingsPage" type="button" id="Contacts_basicAction_LBL_Sync_Settings"><span aria-hidden="true" class="fa fa-cog"></span><strong> {vtranslate('LBL_SYNC_SETTINGS', $MODULE)} </strong></a></h3> + <h3><a data-url="{$MODULE_MODEL->getExtensionSettingsUrl($SOURCE_MODULE)}" class="btn addButton btn-default settingsPage" type="button" id="Contacts_basicAction_LBL_Sync_Settings"><span aria-hidden="true" class="fa fa-cog"></span> {vtranslate('LBL_SYNC_SETTINGS', $MODULE)}</a></h3> </span> </div> </div> diff --git a/layouts/v7/modules/Vtiger/ExtensionLogDetail.tpl b/layouts/v7/modules/Vtiger/ExtensionLogDetail.tpl index 057ad16ae67cff41b797c4767e69e65875a9ba3f..287a096d6b73c9ec633d4e180a31a958927da87e 100644 --- a/layouts/v7/modules/Vtiger/ExtensionLogDetail.tpl +++ b/layouts/v7/modules/Vtiger/ExtensionLogDetail.tpl @@ -19,7 +19,7 @@ <div class="col-sm-8 col-xs-8"></div> <div class="col-sm-4 col-xs-4"> <a id="downloadCsv" href="index.php?module={$SOURCE_MODULE}&view=ExportExtensionLog&logid={$LOG_ID}&type={$TYPE}" type="button" class="btn addButton btn-default downloadCsv pull-right"> - <span class="fa fa-download" aria-hidden="true"></span><strong> {vtranslate('LBL_DOWNLOAD_AS_CSV', $MODULE)} </strong> + <span class="fa fa-download" aria-hidden="true"></span> {vtranslate('LBL_DOWNLOAD_AS_CSV', $MODULE)} </a> </div> </div> diff --git a/layouts/v7/modules/Vtiger/Footer.tpl b/layouts/v7/modules/Vtiger/Footer.tpl index 7fb0130072c865b164291e79029ef8e7a4d9b559..db2747ea710765ab18b6ab6398b7a311e7045f67 100644 --- a/layouts/v7/modules/Vtiger/Footer.tpl +++ b/layouts/v7/modules/Vtiger/Footer.tpl @@ -9,7 +9,7 @@ <footer class="app-footer"> <p> - Powered by vtiger CRM - 7.0 © 2004 - {date('Y')} + Powered by vtiger CRM - {$VTIGER_VERSION} © 2004 - {date('Y')} <a href="//www.vtiger.com" target="_blank">Vtiger</a> | <a href="https://www.vtiger.com/privacy-policy" target="_blank">Privacy Policy</a> </p> diff --git a/layouts/v7/modules/Vtiger/ListViewActions.tpl b/layouts/v7/modules/Vtiger/ListViewActions.tpl index 979c6cd1fbf973de92efb2223671100de17cf3ed..428a2e9683631360367ed48a89e845f0eecf7785 100644 --- a/layouts/v7/modules/Vtiger/ListViewActions.tpl +++ b/layouts/v7/modules/Vtiger/ListViewActions.tpl @@ -137,7 +137,7 @@ {assign var=DEFAULT_FILTER_URL value=$MODULE_MODEL->getDefaultUrl()} {assign var=DEFAULT_FILTER_ID value=$MODULE_MODEL->getDefaultCustomFilter()} {if $DEFAULT_FILTER_ID} - {assign var=DEFAULT_FILTER_URL value=$MODULE_MODEL->getListViewUrl()|cat:"&viewname="|cat:$DEFAULT_FILTER_ID} + {assign var=DEFAULT_FILTER_URL value=$MODULE_MODEL->getListViewUrl()|cat:"&viewname="|cat:$DEFAULT_FILTER_ID|cat:"&app="|cat:$SELECTED_MENU_CATEGORY} {/if} {if $CVNAME neq 'All'} <div>{vtranslate('LBL_DISPLAYING_RESULTS',$MODULE)} {vtranslate('LBL_FROM',$MODULE)} <b>{$CVNAME}</b>. <a style="color:blue" href='{$DEFAULT_FILTER_URL}'>{vtranslate('LBL_SEARCH_IN',$MODULE)} {vtranslate('All',$MODULE)} {vtranslate($MODULE, $MODULE)}</a> </div> diff --git a/layouts/v7/modules/Vtiger/ListViewContents.tpl b/layouts/v7/modules/Vtiger/ListViewContents.tpl index 4a89cd1a97b0c9dcb87faa91c6b99e697f3acd51..e2c2e9f092c13f2d091961312546ab6b16190309 100644 --- a/layouts/v7/modules/Vtiger/ListViewContents.tpl +++ b/layouts/v7/modules/Vtiger/ListViewContents.tpl @@ -41,6 +41,7 @@ <input type="hidden" name="folder_value" value="{$FOLDER_VALUE}" /> <input type="hidden" name="viewType" value="{$VIEWTYPE}" /> <input type="hidden" name="app" id="appName" value="{$SELECTED_MENU_CATEGORY}"> + <input type="hidden" id="isExcelEditSupported" value="{if $MODULE_MODEL->isExcelEditAllowed()}yes{else}no{/if}" /> {if !empty($PICKIST_DEPENDENCY_DATASOURCE)} <input type="hidden" name="picklistDependency" value='{Vtiger_Util_Helper::toSafeHTML($PICKIST_DEPENDENCY_DATASOURCE)}' /> {/if} diff --git a/layouts/v7/modules/Vtiger/ListViewHeader.tpl b/layouts/v7/modules/Vtiger/ListViewHeader.tpl index 93ed81f647830ad517eef109e837a3790d22038e..77e9eccf82348dd29ae11e68aad53547211900cb 100644 --- a/layouts/v7/modules/Vtiger/ListViewHeader.tpl +++ b/layouts/v7/modules/Vtiger/ListViewHeader.tpl @@ -13,9 +13,9 @@ <div class="module-action-bar clearfix"> <div class="module-action-content clearfix row"> <div class="col-lg-4 col-md-4 col-sm-4"> - <h3 class="module-title pull-left"> {vtranslate($MODULE, $MODULE)} </h3> + <h3 class="module-title pull-left"> {vtranslate($MODULE, $MODULE)} </h3> <div> - <p class="current-filter-name pull-left"><span class="fa fa-chevron-right" aria-hidden="true"></span> {$VIEW} </p> + <p class="current-filter-name pull-left"><span class="fa fa-chevron-right" aria-hidden="true"></span> {$VIEW} </p> </div> </div> <div class="col-lg-4 col-md-4 col-sm-4"> diff --git a/layouts/v7/modules/Vtiger/ListViewRecordActions.tpl b/layouts/v7/modules/Vtiger/ListViewRecordActions.tpl index c50779526411eab6597fb1d1e83413d434805693..01e5953367336b37382fb2b4f4dd4d040677dca8 100644 --- a/layouts/v7/modules/Vtiger/ListViewRecordActions.tpl +++ b/layouts/v7/modules/Vtiger/ListViewRecordActions.tpl @@ -21,10 +21,14 @@ {assign var=STARRED value=false} {/if} {if $QUICK_PREVIEW_ENABLED eq 'true'} - <span class="quickView fa fa-eye icon action" data-app="{$SELECTED_MENU_CATEGORY}" title="{vtranslate('LBL_QUICK_VIEW', $MODULE)}"></span> + <span> + <a class="quickView fa fa-eye icon action" data-app="{$SELECTED_MENU_CATEGORY}" title="{vtranslate('LBL_QUICK_VIEW', $MODULE)}"></a> + </span> {/if} {if $MODULE_MODEL->isStarredEnabled()} - <span class="markStar fa icon action {if $STARRED} fa-star active {else} fa-star-o{/if}" title="{if $STARRED} {vtranslate('LBL_STARRED', $MODULE)} {else} {vtranslate('LBL_NOT_STARRED', $MODULE)}{/if}"></span> + <span> + <a class="markStar fa icon action {if $STARRED} fa-star active {else} fa-star-o{/if}" title="{if $STARRED} {vtranslate('LBL_STARRED', $MODULE)} {else} {vtranslate('LBL_NOT_STARRED', $MODULE)}{/if}"></a> + </span> {/if} <span class="more dropdown action"> <span href="javascript:;" class="dropdown-toggle" data-toggle="dropdown"> diff --git a/layouts/v7/modules/Vtiger/ModuleHeader.tpl b/layouts/v7/modules/Vtiger/ModuleHeader.tpl index 1bcdfb3d0849b192b7cf3d3b21c43dab777f12ee..808a48899ccd93936ecc7249a1474b4e39d5d1a6 100644 --- a/layouts/v7/modules/Vtiger/ModuleHeader.tpl +++ b/layouts/v7/modules/Vtiger/ModuleHeader.tpl @@ -81,8 +81,8 @@ {if $MODULE_SETTING_ACTIONS|@count gt 0} <li> <div class="settingsIcon"> - <button type="button" class="btn btn-default module-buttons dropdown-toggle" data-toggle="dropdown" aria-expanded="false"> - <span class="fa fa-wrench" aria-hidden="true" title="{vtranslate('LBL_SETTINGS', $MODULE)}"></span> {vtranslate('LBL_CUSTOMIZE', 'Reports')} <span class="caret"></span> + <button type="button" class="btn btn-default module-buttons dropdown-toggle" data-toggle="dropdown" aria-expanded="false" title="{vtranslate('LBL_SETTINGS', $MODULE)}"> + <span class="fa fa-wrench" aria-hidden="true"></span> {vtranslate('LBL_CUSTOMIZE', 'Reports')} <span class="caret"></span> </button> <ul class="detailViewSetting dropdown-menu"> {foreach item=SETTING from=$MODULE_SETTING_ACTIONS} diff --git a/layouts/v7/modules/Vtiger/ModuleRelatedTabs.tpl b/layouts/v7/modules/Vtiger/ModuleRelatedTabs.tpl index 7df8ada2ede51a8af2e27693454f319386e22fc8..3a81505a997bfa8aeaf39078ce82f0105f94a7c7 100644 --- a/layouts/v7/modules/Vtiger/ModuleRelatedTabs.tpl +++ b/layouts/v7/modules/Vtiger/ModuleRelatedTabs.tpl @@ -11,16 +11,9 @@ <div class='related-tabs row'> <ul class="nav nav-tabs"> {foreach item=RELATED_LINK from=$DETAILVIEW_LINKS['DETAILVIEWTAB']} - {$engagementEnabledModules = ['Accounts','Contacts','Leads']} - {if $MODULE_NAME|in_array:$engagementEnabledModules && (trim($RELATED_LINK->getLabel()) == 'LBL_UPDATES')} - {assign var=RELATEDLINK_URL value="index.php?view=Detail&mode=showHistory&page=1&module="|cat:$MODULE_NAME|cat:"&record="|cat:$RECORD->getId()} - {assign var=RELATEDLINK_LABEL value="LBL_HISTORY"} - {assign var=RELATED_TAB_LABEL value="LBL_HISTORY"} - {else} - {assign var=RELATEDLINK_URL value=$RELATED_LINK->getUrl()} - {assign var=RELATEDLINK_LABEL value=$RELATED_LINK->getLabel()} - {assign var=RELATED_TAB_LABEL value={vtranslate('SINGLE_'|cat:$MODULE_NAME, $MODULE_NAME)}|cat:" "|cat:$RELATEDLINK_LABEL} - {/if} + {assign var=RELATEDLINK_URL value=$RELATED_LINK->getUrl()} + {assign var=RELATEDLINK_LABEL value=$RELATED_LINK->getLabel()} + {assign var=RELATED_TAB_LABEL value={vtranslate('SINGLE_'|cat:$MODULE_NAME, $MODULE_NAME)}|cat:" "|cat:$RELATEDLINK_LABEL} <li class="tab-item {if $RELATED_TAB_LABEL==$SELECTED_TAB_LABEL}active{/if}" data-url="{$RELATEDLINK_URL}&tab_label={$RELATED_TAB_LABEL}&app={$SELECTED_MENU_CATEGORY}" data-label-key="{$RELATEDLINK_LABEL}" data-link-key="{$RELATED_LINK->get('linkKey')}" > <a href="{$RELATEDLINK_URL}&tab_label={$RELATEDLINK_LABEL}&app={$SELECTED_MENU_CATEGORY}" class="textOverflowEllipsis"> <span class="tab-label"><strong>{vtranslate($RELATEDLINK_LABEL,{$MODULE_NAME})}</strong></span> @@ -43,7 +36,7 @@ {assign var=RELATEDMODULENAME value=$RELATED_LINK->getRelatedModuleName()} {assign var=RELATEDFIELDNAME value=$RELATED_LINK->get('linkFieldName')} {assign var="DETAILVIEWRELATEDLINKLBL" value= vtranslate($RELATED_LINK->getLabel(),$RELATEDMODULENAME)} - <li class="tab-item {if (trim($RELATED_LINK->getLabel())== trim($SELECTED_TAB_LABEL)) && ($RELATED_LINK->getId() == $SELECTED_RELATION_ID)}active{/if}" data-url="{$RELATED_LINK->getUrl()}&tab_label={$RELATED_LINK->getLabel()}&app={$SELECTED_MENU_CATEGORY}" data-label-key="{$RELATED_LINK->getLabel()}" + <li class="tab-item {if (trim($RELATED_LINK->getLabel())== trim($SELECTED_TAB_LABEL)) && ($RELATED_LINK->getId() == $SELECTED_RELATION_ID)}active{/if}" data-url="{$RELATED_LINK->getUrl()}&tab_label={$RELATED_LINK->getLabel()}&app={$SELECTED_MENU_CATEGORY}" data-label-key="{$RELATED_LINK->getLabel()}" data-module="{$RELATEDMODULENAME}" data-relation-id="{$RELATED_LINK->getId()}" {if $RELATEDMODULENAME eq "ModComments"} title {else} title="{$DETAILVIEWRELATEDLINKLBL}"{/if} {if $RELATEDFIELDNAME}data-relatedfield ="{$RELATEDFIELDNAME}"{/if}> <a href="index.php?{$RELATED_LINK->getUrl()}&tab_label={$RELATED_LINK->getLabel()}&app={$SELECTED_MENU_CATEGORY}" class="textOverflowEllipsis" displaylabel="{$DETAILVIEWRELATEDLINKLBL}" recordsCount="" > {if $RELATEDMODULENAME eq "ModComments"} @@ -51,7 +44,7 @@ {else} <span class="tab-icon"> {assign var=RELATED_MODULE_MODEL value=Vtiger_Module_Model::getInstance($RELATEDMODULENAME)} - <i class="vicon-{strtolower($RELATEDMODULENAME)}" ></i> + {$RELATED_MODULE_MODEL->getModuleIcon()} </span> {/if} <span class="numberCircle hide">0</span> @@ -76,7 +69,7 @@ {else} <span class="tab-icon"> {assign var=RELATED_MODULE_MODEL value=Vtiger_Module_Model::getInstance($RELATEDMODULENAME)} - <i class="vicon-{strtolower($RELATEDMODULENAME)}" ></i> + {$RELATED_MODULE_MODEL->getModuleIcon()} </span> {/if} <span class="numberCircle hide">0</span> @@ -107,7 +100,7 @@ {else} {assign var=RELATED_MODULE_MODEL value=Vtiger_Module_Model::getInstance($RELATEDMODULENAME)} <span class="tab-icon textOverflowEllipsis"> - <i class="vicon-{strtolower($RELATEDMODULENAME)}"></i> + {$RELATED_MODULE_MODEL->getModuleIcon()} <span class="content"> {$DETAILVIEWRELATEDLINKLBL}</span> </span> {/if} diff --git a/layouts/v7/modules/Vtiger/NotAccessible.tpl b/layouts/v7/modules/Vtiger/NotAccessible.tpl new file mode 100644 index 0000000000000000000000000000000000000000..637173bb1c2fce14e8206ee36bf0ff1e8c5ed0e9 --- /dev/null +++ b/layouts/v7/modules/Vtiger/NotAccessible.tpl @@ -0,0 +1,20 @@ +{*+********************************************************************************** +* 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. +************************************************************************************} +<div id="sendSmsContainer" class='modal-xs modal-dialog'> + <div class = "modal-content"> + {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$TITLE} + + <div class="modal-body"> + {$BODY} + </div> + + <div class="modal-footer"> + </div> + </div> +</div> \ No newline at end of file diff --git a/layouts/v7/modules/Vtiger/RecentActivities.tpl b/layouts/v7/modules/Vtiger/RecentActivities.tpl index 852f2df3cf028e655bac0ee150209d6f17fd222b..0da6885c3a69677aadd46d28da47fb2e75db8761 100644 --- a/layouts/v7/modules/Vtiger/RecentActivities.tpl +++ b/layouts/v7/modules/Vtiger/RecentActivities.tpl @@ -112,14 +112,14 @@ <small title="{Vtiger_Util_Helper::formatDateTimeIntoDayString($RELATION->get('changedon'))}"> {Vtiger_Util_Helper::formatDateDiffInStrings($RELATION->get('changedon'))} </small> </time> - {if {$RELATED_MODULE|strtolower eq 'modcomments'}} - {assign var="VICON_MODULES" value="vicon-chat"} - {else} - {assign var="VICON_MODULES" value="vicon-{$RELATED_MODULE|strtolower}"} - {/if} - <div class="update_icon bg-info-{$RELATED_MODULE|strtolower}"> - <i class="update_image {$VICON_MODULES}"></i> - </div> + <div class="update_icon bg-info-{$RELATED_MODULE|strtolower}"> + {if {$RELATED_MODULE|strtolower eq 'modcomments'}} + {assign var="VICON_MODULES" value="vicon-chat"} + <i class="update_image {$VICON_MODULES}"></i> + {else} + <span class="update_image">{Vtiger_Module_Model::getModuleIconPath($RELATED_MODULE)}</span> + {/if} + </div> <div class="update_info"> <h5> {assign var=RELATION value=$RECENT_ACTIVITY->getRelationInstance()} diff --git a/layouts/v7/modules/Vtiger/RedirectToEditView.tpl b/layouts/v7/modules/Vtiger/RedirectToEditView.tpl new file mode 100644 index 0000000000000000000000000000000000000000..8e7f681da68ff56f2624a580fa7c568828928eba --- /dev/null +++ b/layouts/v7/modules/Vtiger/RedirectToEditView.tpl @@ -0,0 +1,41 @@ +{*+********************************************************************************** +* 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. +*************************************************************************************} + +{strip} + <form id="redirectForm" method="post" action="{$REQUEST_URL}" enctype="multipart/form-data"> + {foreach key=FIELD_NAME item=FIELD_VALUE from=$REQUEST_DATA} + {if $FIELD_NAME eq 'returnrelatedModule'} + {assign var=FIELD_NAME value=returnrelatedModuleName} + {/if} + {if is_array($FIELD_VALUE)} + {foreach key=KEY item=VALUE from=$FIELD_VALUE} + {if is_array($VALUE)} + {assign var=VALUE value=Zend_Json::encode($VALUE)} + <input type="hidden" name="{$FIELD_NAME}[{$KEY}]" value='{$VALUE}'> + {else} + <input type="hidden" name="{$FIELD_NAME}[{$KEY}]" value="{htmlentities($VALUE)}"> + {/if} + {/foreach} + {else if $FIELD_NAME eq 'notecontent'} + <input type="hidden" name="{$FIELD_NAME}" value='{decode_html($FIELD_VALUE)}' > + {else} + <input type="hidden" name="{$FIELD_NAME}" value="{htmlentities($FIELD_VALUE)}"> + {/if} + {/foreach} + </form> + + {literal} + <script type="text/javascript" src="libraries/jquery/jquery.min.js"></script> + <script type="text/javascript"> + jQuery(document).ready(function() { + jQuery('#redirectForm').submit(); + }); + </script> + {/literal} +{/strip} \ No newline at end of file diff --git a/layouts/v7/modules/Vtiger/dashboards/HistoryContents.tpl b/layouts/v7/modules/Vtiger/dashboards/HistoryContents.tpl index 44275ba1d52e4a0407a64ac91ed4d9dfa4fbe6c7..6cce186ed8b41154f57cc30b36b9f06a22210562 100644 --- a/layouts/v7/modules/Vtiger/dashboards/HistoryContents.tpl +++ b/layouts/v7/modules/Vtiger/dashboards/HistoryContents.tpl @@ -35,7 +35,7 @@ {else if $MOD_NAME eq "Calendar"} {assign var=VT_ICON value="Task"} {/if} - <span><i class="vicon-{strtolower($VT_ICON)} entryIcon" title={$TRANSLATED_MODULE_NAME}></i></span> + <span>{$HISTORY->getParent()->getModule()->getModuleIcon($VT_ICON)}</span> </div> <div class="col-lg-10 pull-left"> {assign var=DETAILVIEW_URL value=$PARENT->getDetailViewUrl()} diff --git a/layouts/v7/modules/Vtiger/partials/EditViewContents.tpl b/layouts/v7/modules/Vtiger/partials/EditViewContents.tpl index 85b9dbe6d12fb16a5bf0eb3f5fb9050c2685e7d0..1db8f29b5ee0eee5e44c575687043a48bd33411d 100644 --- a/layouts/v7/modules/Vtiger/partials/EditViewContents.tpl +++ b/layouts/v7/modules/Vtiger/partials/EditViewContents.tpl @@ -14,6 +14,12 @@ {/if} <div name='editContent'> + {if $DUPLICATE_RECORDS} + <div class="fieldBlockContainer duplicationMessageContainer"> + <div class="duplicationMessageHeader"><b>{vtranslate('LBL_DUPLICATES_DETECTED', $MODULE)}</b></div> + <div>{getDuplicatesPreventionMessage($MODULE, $DUPLICATE_RECORDS)}</div> + </div> + {/if} {foreach key=BLOCK_LABEL item=BLOCK_FIELDS from=$RECORD_STRUCTURE name=blockIterator} {if $BLOCK_FIELDS|@count gt 0} <div class='fieldBlockContainer' data-block="{$BLOCK_LABEL}"> diff --git a/layouts/v7/modules/Vtiger/partials/Menubar.tpl b/layouts/v7/modules/Vtiger/partials/Menubar.tpl index 6aa31ce053dd2b8745a97e5340409e54f83f967a..5b2db9be5a0952b87e46efcb9e8ab2809e81db0f 100644 --- a/layouts/v7/modules/Vtiger/partials/Menubar.tpl +++ b/layouts/v7/modules/Vtiger/partials/Menubar.tpl @@ -7,6 +7,7 @@ * All Rights Reserved. ************************************************************************************} +{if $MENU_STRUCTURE} {assign var="topMenus" value=$MENU_STRUCTURE->getTop()} {assign var="moreMenus" value=$MENU_STRUCTURE->getMore()} @@ -16,10 +17,11 @@ <ul title="{$translatedModuleLabel}" class="module-qtip"> <li {if $MODULE eq $moduleName}class="active"{else}class=""{/if}> <a href="{$moduleModel->getDefaultUrl()}&app={$SELECTED_MENU_CATEGORY}"> - <i class="vicon-{strtolower($moduleName)}"></i> + {$moduleModel->getModuleIcon()} <span>{$translatedModuleLabel}</span> </a> </li> </ul> {/foreach} </div> +{/if} diff --git a/layouts/v7/modules/Vtiger/partials/Sidebar.tpl b/layouts/v7/modules/Vtiger/partials/Sidebar.tpl index fee799a06ea3344d9edcb287c785e466d27c935a..421a0c280822cd9f57e0ba8a5e4910900456a4b8 100644 --- a/layouts/v7/modules/Vtiger/partials/Sidebar.tpl +++ b/layouts/v7/modules/Vtiger/partials/Sidebar.tpl @@ -8,12 +8,7 @@ ************************************************************************************} {strip} - {assign var="APP_IMAGE_MAP" value=[ 'MARKETING' => 'fa-users', - 'SALES' => 'fa-dot-circle-o', - 'SUPPORT' => 'fa-life-ring', - 'INVENTORY' => 'vicon-inventory', - 'PROJECT' => 'fa-briefcase' -]} + {assign var=APP_IMAGE_MAP value=Vtiger_MenuStructure_Model::getAppIcons()} <div id="sidebar" class="col-lg-3"> <div id="appnavigator" class="row app-nav"> <div class="col-sm-12 col-xs-12 app-switcher-container app-{$SELECTED_MENU_CATEGORY}"> diff --git a/layouts/v7/modules/Vtiger/partials/SidebarAppMenu.tpl b/layouts/v7/modules/Vtiger/partials/SidebarAppMenu.tpl index c7bb2e137c8dd7f6298d0a0c41224067f7f30df5..fbe89b8218ffa9685bda1603e74e8764e0b0592e 100644 --- a/layouts/v7/modules/Vtiger/partials/SidebarAppMenu.tpl +++ b/layouts/v7/modules/Vtiger/partials/SidebarAppMenu.tpl @@ -52,7 +52,7 @@ {assign var='translatedModuleLabel' value=vtranslate($moduleModel->get('label'),$moduleName )} <li> <a href="{$moduleModel->getDefaultUrl()}&app={$APP_NAME}" title="{$translatedModuleLabel}"> - <span class="vicon-{strtolower($moduleName)} module-icon"></span> + <span class="module-icon">{$moduleModel->getModuleIcon()}</span> <span class="module-name textOverflowEllipsis"> {$translatedModuleLabel}</span> </a> </li> @@ -66,7 +66,7 @@ {if $USER_PRIVILEGES_MODEL->hasModulePermission($MAILMANAGER_MODULE_MODEL->getId())} <div class="menu-item app-item app-item-misc" data-default-url="index.php?module=MailManager&view=List"> <div class="menu-items-wrapper"> - <span class="app-icon-list fa vicon-mailmanager"></span> + <span class="app-icon-list fa">{$MAILMANAGER_MODULE_MODEL->getModuleIcon()}</span> <span class="app-name textOverflowEllipsis"> {vtranslate('MailManager')}</span> </div> </div> @@ -75,7 +75,7 @@ {if $USER_PRIVILEGES_MODEL->hasModulePermission($DOCUMENTS_MODULE_MODEL->getId())} <div class="menu-item app-item app-item-misc" data-default-url="index.php?module=Documents&view=List"> <div class="menu-items-wrapper"> - <span class="app-icon-list fa vicon-documents"></span> + <span class="app-icon-list fa">{$DOCUMENTS_MODULE_MODEL->getModuleIcon()}</span> <span class="app-name textOverflowEllipsis"> {vtranslate('Documents')}</span> </div> </div> @@ -90,59 +90,6 @@ </div> {/if} {/if} - <div class="dropdown app-modules-dropdown-container dropdown-compact"> - {foreach item=APP_MENU_MODEL from=$APP_GROUPED_MENU.$APP_NAME} - {assign var=FIRST_MENU_MODEL value=$APP_MENU_MODEL} - {if $APP_MENU_MODEL} - {break} - {/if} - {/foreach} - <div class="menu-item app-item dropdown-toggle app-item-misc" data-app-name="TOOLS" id="TOOLS_modules_dropdownMenu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> - <div class="menu-items-wrapper app-menu-items-wrapper"> - <span class="app-icon-list fa fa-ellipsis-h"></span> - <span class="app-name textOverflowEllipsis"> {vtranslate("LBL_MORE")}</span> - <span class="fa fa-chevron-right pull-right"></span> - </div> - </div> - <ul class="dropdown-menu app-modules-dropdown dropdown-modules-compact" aria-labelledby="{$APP_NAME}_modules_dropdownMenu" data-height="0.34"> - {assign var=EMAILTEMPLATES_MODULE_MODEL value=Vtiger_Module_Model::getInstance('EmailTemplates')} - {if $EMAILTEMPLATES_MODULE_MODEL && $USER_PRIVILEGES_MODEL->hasModulePermission($EMAILTEMPLATES_MODULE_MODEL->getId())} - <li> - <a href="{$EMAILTEMPLATES_MODULE_MODEL->getDefaultUrl()}"> - <span class="fa vicon-emailtemplates module-icon"></span> - <span class="module-name textOverflowEllipsis"> {vtranslate($EMAILTEMPLATES_MODULE_MODEL->getName(), $EMAILTEMPLATES_MODULE_MODEL->getName())}</span> - </a> - </li> - {/if} - {assign var=RECYCLEBIN_MODULE_MODEL value=Vtiger_Module_Model::getInstance('RecycleBin')} - {if $RECYCLEBIN_MODULE_MODEL && $USER_PRIVILEGES_MODEL->hasModulePermission($RECYCLEBIN_MODULE_MODEL->getId())} - <li> - <a href="{$RECYCLEBIN_MODULE_MODEL->getDefaultUrl()}"> - <span class="fa fa-trash module-icon"></span> - <span class="module-name textOverflowEllipsis"> {vtranslate('Recycle Bin')}</span> - </a> - </li> - {/if} - {assign var=RSS_MODULE_MODEL value=Vtiger_Module_Model::getInstance('Rss')} - {if $RSS_MODULE_MODEL && $USER_PRIVILEGES_MODEL->hasModulePermission($RSS_MODULE_MODEL->getId())} - <li> - <a href="index.php?module=Rss&view=List"> - <span class="fa fa-rss module-icon"></span> - <span class="module-name textOverflowEllipsis">{vtranslate($RSS_MODULE_MODEL->getName(), $RSS_MODULE_MODEL->getName())}</span> - </a> - </li> - {/if} - {assign var=PORTAL_MODULE_MODEL value=Vtiger_Module_Model::getInstance('Portal')} - {if $PORTAL_MODULE_MODEL && $USER_PRIVILEGES_MODEL->hasModulePermission($PORTAL_MODULE_MODEL->getId())} - <li> - <a href="index.php?module=Portal&view=List"> - <span class="fa fa-desktop module-icon"></span> - <span class="module-name textOverflowEllipsis"> {vtranslate('Portal')}</span> - </a> - </li> - {/if} - </ul> - </div> {if $USER_MODEL->isAdminUser()} <div class="dropdown app-modules-dropdown-container dropdown-compact"> <div class="menu-item app-item dropdown-toggle app-item-misc" data-app-name="TOOLS" id="TOOLS_modules_dropdownMenu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true" data-default-url="{if $USER_MODEL->isAdminUser()}index.php?module=Vtiger&parent=Settings&view=Index{else}index.php?module=Users&view=Settings{/if}"> diff --git a/layouts/v7/modules/Vtiger/partials/SidebarEssentials.tpl b/layouts/v7/modules/Vtiger/partials/SidebarEssentials.tpl index 0d746c42664a3dadf78981a401d17cd0fcf10a27..cc6f933ef402db95dc6cf3fd81bb25afa985b384 100644 --- a/layouts/v7/modules/Vtiger/partials/SidebarEssentials.tpl +++ b/layouts/v7/modules/Vtiger/partials/SidebarEssentials.tpl @@ -52,7 +52,7 @@ <li style="font-size:12px;" class='listViewFilter {if $VIEWID eq $CUSTOM_VIEW->getId() && ($CURRENT_TAG eq '')} active {if $smarty.foreach.customView.iteration gt 10} {assign var=count value=1} {/if} {else if $smarty.foreach.customView.iteration gt 10} filterHidden hide{/if} '> {assign var=VIEWNAME value={vtranslate($CUSTOM_VIEW->get('viewname'), $MODULE)}} {append var="CUSTOM_VIEW_NAMES" value=$VIEWNAME} - <a class="filterName listViewFilterElipsis" href="{$LISTVIEW_URL|cat:'&viewname='|cat:$CUSTOM_VIEW->getId()}" oncontextmenu="return false;" data-filter-id="{$CUSTOM_VIEW->getId()}" title="{$VIEWNAME|@escape:'html'}">{$VIEWNAME|@escape:'html'}</a> + <a class="filterName listViewFilterElipsis" href="{$LISTVIEW_URL|cat:'&viewname='|cat:$CUSTOM_VIEW->getId()|cat:'&app='|cat:$SELECTED_MENU_CATEGORY}" oncontextmenu="return false;" data-filter-id="{$CUSTOM_VIEW->getId()}" title="{$VIEWNAME|@escape:'html'}">{$VIEWNAME|@escape:'html'}</a> <div class="pull-right"> <span class="js-popover-container" style="cursor:pointer;"> <span class="fa fa-angle-down" rel="popover" data-toggle="popover" aria-expanded="true" @@ -199,4 +199,4 @@ </div> </div> </div> -</div> \ No newline at end of file +</div> diff --git a/layouts/v7/modules/Vtiger/partials/SidebarHeader.tpl b/layouts/v7/modules/Vtiger/partials/SidebarHeader.tpl index 7480109ae47b7b4210479490ec768945d949d864..fd90692f530aa5b347d138f2f3aab0c3b50a7c3c 100644 --- a/layouts/v7/modules/Vtiger/partials/SidebarHeader.tpl +++ b/layouts/v7/modules/Vtiger/partials/SidebarHeader.tpl @@ -7,13 +7,7 @@ * All Rights Reserved. ************************************************************************************} -{assign var="APP_IMAGE_MAP" value=[ - 'MARKETING' => 'fa-users', - 'SALES' => 'fa-dot-circle-o', - 'SUPPORT' => 'fa-life-ring', - 'INVENTORY' => 'vicon-inventory', - 'PROJECT' => 'fa-briefcase' - ]} +{assign var=APP_IMAGE_MAP value=Vtiger_MenuStructure_Model::getAppIcons()} <div class="col-sm-12 col-xs-12 app-indicator-icon-container app-{$SELECTED_MENU_CATEGORY}"> <div class="row" title="{if $MODULE eq 'Home' || !$MODULE} {vtranslate('LBL_DASHBOARD')} {else}{$SELECTED_MENU_CATEGORY}{/if}"> diff --git a/layouts/v7/modules/Vtiger/partials/Topbar.tpl b/layouts/v7/modules/Vtiger/partials/Topbar.tpl index 50f71257254d3b461f69f3c4ee17df3cfcd84afb..fc673fa3ebb9f7fd8591a1d2037ce09f49c04854 100644 --- a/layouts/v7/modules/Vtiger/partials/Topbar.tpl +++ b/layouts/v7/modules/Vtiger/partials/Topbar.tpl @@ -10,12 +10,7 @@ {strip} {include file="modules/Vtiger/Header.tpl"} - {assign var="APP_IMAGE_MAP" value=[ 'MARKETING' => 'fa-users', - 'SALES' => 'fa-dot-circle-o', - 'SUPPORT' => 'fa-life-ring', - 'INVENTORY' => 'vicon-inventory', - 'PROJECT' => 'fa-briefcase' ]} - + {assign var=APP_IMAGE_MAP value=Vtiger_MenuStructure_Model::getAppIcons()} <nav class="navbar navbar-default navbar-fixed-top app-fixed-navbar"> <div class="container-fluid global-nav"> <div class="row"> @@ -70,7 +65,7 @@ {assign var='singularLabel' value='LBL_TASK'} <div class="{if $hideDiv}create_restricted_{$moduleModel->getName()} hide{else}col-lg-4{/if}"> <a id="menubar_quickCreate_Events" class="quickCreateModule" data-name="Events" - data-url="index.php?module=Events&view=QuickCreateAjax" href="javascript:void(0)"><i class="vicon-calendar pull-left"></i><span class="quick-create-module">{vtranslate('LBL_EVENT',$moduleName)}</span></a> + data-url="index.php?module=Events&view=QuickCreateAjax" href="javascript:void(0)">{$moduleModel->getModuleIcon('Event')}<span class="quick-create-module">{vtranslate('LBL_EVENT',$moduleName)}</span></a> </div> {if $count % 3 == 2} </div> @@ -79,7 +74,7 @@ {/if} <div class="{if $hideDiv}create_restricted_{$moduleModel->getName()} hide{else}col-lg-4{/if}"> <a id="menubar_quickCreate_{$moduleModel->getName()}" class="quickCreateModule" data-name="{$moduleModel->getName()}" - data-url="{$moduleModel->getQuickCreateUrl()}" href="javascript:void(0)"><i class="vicon-task pull-left"></i><span class="quick-create-module">{vtranslate($singularLabel,$moduleName)}</span></a> + data-url="{$moduleModel->getQuickCreateUrl()}" href="javascript:void(0)">{$moduleModel->getModuleIcon('Task')}<span class="quick-create-module">{vtranslate($singularLabel,$moduleName)}</span></a> </div> {if !$hideDiv} {assign var='count' value=$count+1} @@ -88,7 +83,7 @@ <div class="{if $hideDiv}create_restricted_{$moduleModel->getName()} hide{else}col-lg-4{/if} dropdown"> <a id="menubar_quickCreate_{$moduleModel->getName()}" class="quickCreateModuleSubmenu dropdown-toggle" data-name="{$moduleModel->getName()}" data-toggle="dropdown" data-url="{$moduleModel->getQuickCreateUrl()}" href="javascript:void(0)"> - <i class="vicon-{strtolower($moduleName)} pull-left"></i> + {$moduleModel->getModuleIcon()} <span class="quick-create-module"> {vtranslate($singularLabel,$moduleName)} <i class="fa fa-caret-down quickcreateMoreDropdownAction"></i> @@ -112,7 +107,7 @@ <div class="{if $hideDiv}create_restricted_{$moduleModel->getName()} hide{else}col-lg-4{/if}"> <a id="menubar_quickCreate_{$moduleModel->getName()}" class="quickCreateModule" data-name="{$moduleModel->getName()}" data-url="{$moduleModel->getQuickCreateUrl()}" href="javascript:void(0)"> - <i class="vicon-{strtolower($moduleName)} pull-left"></i> + {$moduleModel->getModuleIcon()} <span class="quick-create-module">{vtranslate($singularLabel,$moduleName)}</span> </a> </div> diff --git a/layouts/v7/modules/Vtiger/resources/AdvanceSearch.js b/layouts/v7/modules/Vtiger/resources/AdvanceSearch.js index 3a229ac5bf2d45632e38bfa51ccc29b7751cfed6..0eda8c92168deb5c5072a762ad0dd98f31fd3a30 100644 --- a/layouts/v7/modules/Vtiger/resources/AdvanceSearch.js +++ b/layouts/v7/modules/Vtiger/resources/AdvanceSearch.js @@ -316,9 +316,8 @@ Vtiger_BasicSearch_Js("Vtiger_AdvanceSearch_Js",{ var thisInstance = this; this.formValidationDeferred = jQuery.Deferred(); thisInstance.formValidationDeferred.resolve(); - return this.formValidationDeferred.promise(); + var controlForm = this.getFilterForm(); - var validationDone = function(form, status){ if(status) { thisInstance.formValidationDeferred.resolve(); @@ -445,4 +444,4 @@ Vtiger_BasicSearch_Js("Vtiger_AdvanceSearch_Js",{ //To set the search module with the currently selected values. this.setSearchModule(jQuery('#searchModuleList').val()); } -}) \ No newline at end of file +}) diff --git a/layouts/v7/modules/Vtiger/resources/Detail.js b/layouts/v7/modules/Vtiger/resources/Detail.js index 8ca9532e75299469259aa7040897bb5a471ae34e..8a61e3190b4f4cf7af036c368a0cc13eb8ac191c 100644 --- a/layouts/v7/modules/Vtiger/resources/Detail.js +++ b/layouts/v7/modules/Vtiger/resources/Detail.js @@ -208,8 +208,12 @@ Vtiger.Class("Vtiger_Detail_Js",{ app.request.post({data:reqParams}).then( function(error,data) { if(error === null){ + jQuery('.vt-notification').remove(); app.helper.hideModal(); - app.helper.showAlertBox({'message':app.vtranslate('JS_RECORDS_TRANSFERRED_SUCCESSFULLY')}); + app.helper.showSuccessNotification({message:app.vtranslate('JS_RECORDS_TRANSFERRED_SUCCESSFULLY')}); + } else { + app.event.trigger('post.save.failed', error); + jQuery(form).find("button[name='saveButton']").removeAttr('disabled'); } } ); @@ -309,13 +313,18 @@ Vtiger.Class("Vtiger_Detail_Js",{ app.helper.showProgress(); app.request.post(postParams).then(function(err,data){ app.helper.hideProgress(); - app.helper.hidePageContentOverlay(); - var relatedModuleName = formData.module; - if(relatedModuleName == 'Events') { - relatedModuleName = 'Calendar'; + if (err === null) { + jQuery('.vt-notification').remove(); + app.helper.hidePageContentOverlay(); + var relatedModuleName = formData.module; + if(relatedModuleName == 'Events') { + relatedModuleName = 'Calendar'; + } + var relatedController = thisInstance.getRelatedController(relatedModuleName); + relatedController.loadRelatedList(); + } else { + app.event.trigger('post.save.failed', err); } - var relatedController = thisInstance.getRelatedController(relatedModuleName); - relatedController.loadRelatedList(); }); return false; } @@ -658,7 +667,6 @@ Vtiger.Class("Vtiger_Detail_Js",{ //Detail tab is clicked if(tabElement.data('linkKey') == self.detailViewDetailTabLabel) { - self.triggerDetailViewContainerEvents(detailViewContainer); self.registerEventForPicklistDependencySetup(self.getForm()); } @@ -678,9 +686,6 @@ Vtiger.Class("Vtiger_Detail_Js",{ }); }, - triggerDetailViewContainerEvents: function(detailViewContainer) { - }, - registerRollupCommentsSwitchEvent : function() { var self = this; var commentsRelatedContainer = jQuery('.commentsRelatedContainer'); @@ -1075,11 +1080,9 @@ Vtiger.Class("Vtiger_Detail_Js",{ app.request.post({data:data}).then( function(err, reponseData){ if(err === null){ - app.helper.showSuccessNotification({"message":""}); - aDeferred.resolve(reponseData); - } else { - app.helper.showErrorNotification({"message":err}); + app.helper.showSuccessNotification({"message":app.vtranslate('JS_RECORD_UPDATED')}); } + aDeferred.resolve(err, reponseData); } ); @@ -1301,8 +1304,14 @@ Vtiger.Class("Vtiger_Detail_Js",{ jQuery(currentTdElement).find('.input-group-addon').addClass('disabled'); app.helper.showProgress(); - thisInstance.saveFieldValues(fieldNameValueMap).then(function(response) { + thisInstance.saveFieldValues(fieldNameValueMap).then(function(err, response) { app.helper.hideProgress(); + if (err !== null) { + app.event.trigger('post.save.failed', err); + jQuery(currentTdElement).find('.input-group-addon').removeClass('disabled'); + return true; + } + jQuery('.vt-notification').remove(); var postSaveRecordDetails = response; if(fieldBasicData.data('type') == 'picklist' && app.getModuleName() != 'Users') { var color = postSaveRecordDetails[fieldName].colormap[postSaveRecordDetails[fieldName].value]; @@ -1478,7 +1487,7 @@ Vtiger.Class("Vtiger_Detail_Js",{ if(typeof contentHolder === 'undefined') { contentHolder = this.getContentHolder(); } - contentHolder.off('click', 'clearReferenceSelection'); + contentHolder.off('click', '.clearReferenceSelection'); contentHolder.on('click','.clearReferenceSelection',function(e){ e.preventDefault(); var element = jQuery(e.currentTarget); @@ -1795,10 +1804,18 @@ Vtiger.Class("Vtiger_Detail_Js",{ app.request.post({"data":params}).then( function(err,data) { app.helper.hideProgress(); - detailViewElement.removeClass('hide'); - currentTarget.show(); - detailViewElement.html(translatedValue); - fieldnameElement.data('prevValue', ajaxEditNewValue); + if (err == null) { + jQuery('.vt-notification').remove(); + detailViewElement.removeClass('hide'); + currentTarget.show(); + detailViewElement.html(translatedValue); + fieldnameElement.data('prevValue', ajaxEditNewValue); + } else { + app.event.trigger('post.save.failed', err); + detailViewElement.removeClass('hide'); + currentTarget.show(); + fieldElement.select2('val', previousValue); + } }); } } diff --git a/layouts/v7/modules/Vtiger/resources/Edit.js b/layouts/v7/modules/Vtiger/resources/Edit.js index 6e64194823d01d576014b56d62aab12a5f5edc7a..2d589cde4221721162881d9268c3431ba5be007f 100644 --- a/layouts/v7/modules/Vtiger/resources/Edit.js +++ b/layouts/v7/modules/Vtiger/resources/Edit.js @@ -332,32 +332,6 @@ Vtiger_Index_Js("Vtiger_Edit_Js",{ this.referenceModulePopupRegisterEvent(form); this.registerPostReferenceEvent(this.getEditViewContainer()); }, - registerClearReferenceSelectionEvent : function(contentHolder) { - var thisInstance = this; - if(typeof contentHolder === 'undefined') { - contentHolder = this.getContentHolder(); - } - contentHolder.off('click', 'clearReferenceSelection'); - contentHolder.on('click','.clearReferenceSelection',function(e){ - e.preventDefault(); - var element = jQuery(e.currentTarget); - var parentTdElement = element.closest('td'); - if(parentTdElement.length == 0){ - parentTdElement = element.closest('.fieldValue'); - } - var inputElement = parentTdElement.find('.inputElement'); - var fieldName = parentTdElement.find('.sourceField').attr("name"); - - parentTdElement.find('.referencefield-wrapper').removeClass('selected'); - inputElement.removeAttr("disabled").removeAttr('readonly'); - inputElement.attr("value",""); - inputElement.data('value',''); - inputElement.val(""); - parentTdElement.find('input[name="'+fieldName+'"]').val(""); - element.addClass('hide'); - element.trigger(Vtiger_Edit_Js.referenceDeSelectionEvent); - }); - }, proceedRegisterEvents : function(){ if(jQuery('.recordEditView').length > 0){ return true; diff --git a/layouts/v7/modules/Vtiger/resources/Field.js b/layouts/v7/modules/Vtiger/resources/Field.js index 55043e606a68be2867b22ea81cf828f2e1f71d43..75a0fc4936eae69926373fa02aa8e7bc7dfdb639 100644 --- a/layouts/v7/modules/Vtiger/resources/Field.js +++ b/layouts/v7/modules/Vtiger/resources/Field.js @@ -243,7 +243,7 @@ Vtiger_Field_Js('Vtiger_Picklist_Field_Js',{},{ var selectedOption = app.htmlDecode(this.getValue()); if(typeof pickListValues[' '] == 'undefined' || pickListValues[' '].length <= 0 || pickListValues[' '] != 'Select an Option') { - html += '<option value="">Select an Option</option>'; + html += '<option value="">'+app.vtranslate('JS_SELECT_OPTION')+'</option>'; } var data = this.getData(); @@ -253,10 +253,12 @@ Vtiger_Field_Js('Vtiger_Picklist_Field_Js',{},{ for(var option in pickListValues) { html += '<option value="'+option+'" '; - var className = ''; - if (picklistColors[option]) { - className = 'picklistColor_'+fieldName+'_'+option.replace(' ', '_'); - html += 'class="'+className+'"'; + if (picklistColors) { + var className = ''; + if (picklistColors[option]) { + className = 'picklistColor_'+fieldName+'_'+option.replace(' ', '_'); + html += 'class="'+className+'"'; + } } if(option == selectedOption) { @@ -273,6 +275,9 @@ Vtiger_Field_Js('Vtiger_Picklist_Field_Js',{},{ if (picklistColor) { className = '.picklistColor_'+fieldName+'_'+option.replace(' ', '_'); html += className+'{background-color: '+picklistColor+' !important;}'; + + className = className + '.select2-highlighted'; + html += className+'{white: #ffffff !important; background-color: #337ab7 !important;}'; } } html +='<\style>'; @@ -351,10 +356,12 @@ Vtiger_Field_Js('Vtiger_Multipicklist_Field_Js',{},{ for(var option in pickListValues) { html += '<option value="'+option+'" '; - var className = ''; - if (picklistColors[option]) { - className = 'picklistColor_'+fieldName+'_'+option.replace(' ', '_'); - html += 'class="'+className+'"'; + if (picklistColors) { + var className = ''; + if (picklistColors[option]) { + className = 'picklistColor_'+fieldName+'_'+option.replace(' ', '_'); + html += 'class="'+className+'"'; + } } if(jQuery.inArray(option,selectedOptionsArray) != -1){ diff --git a/layouts/v7/modules/Vtiger/resources/List.js b/layouts/v7/modules/Vtiger/resources/List.js index 92902e6599bcf7b869b6c16f32f88a99ae7554ad..c73c6fdb09c64b0daae7bef733d50adaa58eb97c 100644 --- a/layouts/v7/modules/Vtiger/resources/List.js +++ b/layouts/v7/modules/Vtiger/resources/List.js @@ -901,6 +901,7 @@ Vtiger.Class("Vtiger_List_Js", { jQuery('.inline-save', currentTrElement).find('button').attr('disabled', 'disabled'); app.request.post({data: params}).then(function (err, result) { if (result) { + jQuery('.vt-notification').remove(); jQuery('.inline-save', currentTrElement).find('button').removeAttr('disabled'); var params = {}; thisInstance.loadListViewRecords(params).then(function (data) { @@ -912,7 +913,7 @@ Vtiger.Class("Vtiger_List_Js", { }); } else { app.helper.hideProgress(); - app.helper.showErrorNotification({"message": err}); + app.event.trigger('post.save.failed', err); jQuery('.inline-save', currentTrElement).find('button').removeAttr('disabled'); return false; } @@ -1112,6 +1113,10 @@ Vtiger.Class("Vtiger_List_Js", { // Double click event - ajax edit listViewContentDiv.on('dblclick', '.listViewEntries', function (e) { + if (listViewContentDiv.find('#isExcelEditSupported').val() == 'no') { + return; + } + var currentTrElement = jQuery(e.currentTarget); // added to unset the time out set for <a> tags var rows = currentTrElement.find('a'); @@ -1321,11 +1326,16 @@ Vtiger.Class("Vtiger_List_Js", { form_update_data += key + '=' + newData[key] + '&'; } form_update_data = form_update_data.slice(0, -1); - app.request.post({data: form_update_data}).then(function (data) { + app.request.post({data: form_update_data}).then(function (err, data) { app.helper.hideProgress(); - app.helper.hidePageContentOverlay(); - window.onbeforeunload = null; - app.event.trigger('post.listViewMassEditSave'); + if (data) { + jQuery('.vt-notification').remove(); + app.helper.hidePageContentOverlay(); + window.onbeforeunload = null; + app.event.trigger('post.listViewMassEditSave'); + } else { + app.event.trigger('post.save.failed', err); + } }); } else { app.helper.hideProgress(); @@ -1605,13 +1615,17 @@ Vtiger.Class("Vtiger_List_Js", { var data = jQuery.extend(formData, listSelectParams); app.helper.showProgress(); app.request.post({'data': data}).then(function (err, data) { + app.helper.hideProgress(); if (err == null) { - app.helper.hideProgress(); + jQuery('.vt-notification').remove(); app.helper.hideModal(); listInstance.loadListViewRecords().then(function (e) { listInstance.clearList(); app.helper.showSuccessNotification({message: app.vtranslate('JS_RECORDS_TRANSFERRED_SUCCESSFULLY')}); }); + } else { + app.event.trigger('post.save.failed', err); + jQuery(form).find("button[name='saveButton']").removeAttr('disabled'); } }); } @@ -2589,8 +2603,22 @@ Vtiger.Class("Vtiger_List_Js", { dropdown.on('hidden.bs.dropdown', function () { dropdown_menu.removeClass('invisible'); fixed_dropdown_menu.remove(); + jQuery('.listViewEntries').removeClass('dropDownOpen'); }); }); + jQuery('.listViewEntries').mouseleave(function (e) { + var currentDropDown = jQuery(e.currentTarget).find('.dropdown'); + setTimeout(function () { + if (jQuery('.dropdown-menu:hover').length == 0) { + if (currentDropDown.hasClass('open')) { + jQuery(e.currentTarget).find('.dropdown').trigger('click'); + } + jQuery(e.currentTarget).removeClass('dropDownOpen'); + } else { + jQuery(e.currentTarget).addClass('dropDownOpen'); + } + }, 50); + }); }, getListViewContentHeight: function () { var windowHeight = jQuery(window).height(); diff --git a/layouts/v7/modules/Vtiger/resources/ListSidebar.js b/layouts/v7/modules/Vtiger/resources/ListSidebar.js index f26c234e4fa3e52681994c5d58529d14be192e33..a8ecae4d28011dbb83ca4e5b77ff7b09bbdef55d 100644 --- a/layouts/v7/modules/Vtiger/resources/ListSidebar.js +++ b/layouts/v7/modules/Vtiger/resources/ListSidebar.js @@ -58,6 +58,7 @@ Vtiger.Class('Vtiger_ListSidebar_Js',{},{ this.registerFilterSeach(); filters.on('click','.listViewFilter', function(e){ + e.preventDefault(); var targetElement = jQuery(e.target); if(targetElement.is('.dropdown-toggle') || targetElement.closest('ul').hasClass('dropdown-menu') ) return; var element = jQuery(e.currentTarget); @@ -283,4 +284,4 @@ Vtiger.Class('Vtiger_ListSidebar_Js',{},{ } }); } -}); \ No newline at end of file +}); diff --git a/layouts/v7/modules/Vtiger/resources/MergeRecords.js b/layouts/v7/modules/Vtiger/resources/MergeRecords.js index 660f0bf271a3806183f93bf0b722fdce110235bc..774288f011df5a4846fbd4d6679a9b5f8becbf88 100644 --- a/layouts/v7/modules/Vtiger/resources/MergeRecords.js +++ b/layouts/v7/modules/Vtiger/resources/MergeRecords.js @@ -37,9 +37,15 @@ Vtiger.Class('Vtiger_MergeRecords_Js',{},{ app.helper.showProgress(); app.request.post({'data':formData}).then(function(error,data){ app.helper.hideProgress(); - app.helper.hidePageContentOverlay(); - app.event.trigger('post.MergeRecords',formData); - aDeferred.resolve(); + if (error === null) { + jQuery('.vt-notification').remove(); + app.helper.hidePageContentOverlay(); + app.event.trigger('post.MergeRecords',formData); + aDeferred.resolve(); + } else { + app.event.trigger('post.save.failed', error); + aDeferred.resolve(); + } }) return aDeferred.promise(); }, @@ -73,6 +79,8 @@ Vtiger.Class('Vtiger_MergeRecords_Js',{},{ registerListener : function() { var self = this; app.event.on('Request.MergeRecords.show',function(event,params){ + var vtigerInstance = Vtiger_Index_Js.getInstance(); + vtigerInstance.registerEventForPostSaveFail(); self.showMergeUI(params); }) }, diff --git a/layouts/v7/modules/Vtiger/resources/Popup.js b/layouts/v7/modules/Vtiger/resources/Popup.js index 477cff97bdeacf294bcefed4798cc6d9471a5ca8..d3bcfc25448ab8ff419491f2637d0dbf58c1a43d 100644 --- a/layouts/v7/modules/Vtiger/resources/Popup.js +++ b/layouts/v7/modules/Vtiger/resources/Popup.js @@ -332,10 +332,10 @@ jQuery.Class("Vtiger_Popup_Js",{ var aDeferred = jQuery.Deferred(); var completeParams = this.getCompleteParams(); completeParams['page'] = 1; - return this.getPageRecords(completeParams).then( + this.getPageRecords(completeParams).then( function(data){ aDeferred.resolve(data); - }); + }); return aDeferred.promise(); }, @@ -489,7 +489,7 @@ jQuery.Class("Vtiger_Popup_Js",{ } var completeParams = this.getCompleteParams(); jQuery.extend(completeParams,sortingParams); - return this.getPageRecords(completeParams).then( + this.getPageRecords(completeParams).then( function(data){ aDeferred.resolve(data); }, diff --git a/layouts/v7/modules/Vtiger/resources/SearchList.js b/layouts/v7/modules/Vtiger/resources/SearchList.js index ee0a6a40d6d91b8bdda3c084ebdac880f351ddee..958272c9cf6a1b276ef6642141e819da1213ec98 100644 --- a/layouts/v7/modules/Vtiger/resources/SearchList.js +++ b/layouts/v7/modules/Vtiger/resources/SearchList.js @@ -58,7 +58,7 @@ Vtiger_List_Js("Vtiger_ModuleList_Js", {}, { params.page= previousPageNumber; self.loadListViewRecords(params); } - + }); }, registerRemoveListViewSort: function () { @@ -174,7 +174,10 @@ Vtiger_List_Js("Vtiger_ModuleList_Js", {}, { }, registerDropdownPosition: function () { - var container = this.getListViewContainer(); + if (jQuery('.searchResults').height() <= 450) { + jQuery('.searchResults').css('padding-bottom', '100px'); + } + var container = jQuery('.searchResults'); jQuery('.table-actions').on('click', '.dropdown', function (e) { var containerTarget = jQuery(this).closest(container); var dropdown = jQuery(e.currentTarget); @@ -192,17 +195,18 @@ Vtiger_List_Js("Vtiger_ModuleList_Js", {}, { dropdown_menu.css('display', 'none'); var currtargetTop; var currtargetLeft; + var dropdownBottom; var ftop = 'auto'; var fbottom = 'auto'; - var ctop = container.offset().top; - currtargetTop = dropdown.offset().top-ctop+dropdown.height()+100; - currtargetLeft = dropdown.offset().left-15; - var dropdownftop = dropdown.position().top-dropdown_menu.height()+dropdown.height()+100; + var ctop = jQuery(container).offset().top; + currtargetTop = dropdown.offset().top-ctop+dropdown.height(); + currtargetLeft = dropdown.offset().left-3; + dropdownBottom = jQuery('.searchResults').height() - currtargetTop + dropdown.height(); var windowBottom = jQuery(window).height()-dropdown.offset().top; if (windowBottom < 250) { - ftop = dropdownftop+'px'; - fbottom = 'auto'; + ftop = 'auto'; + fbottom = dropdownBottom+'px'; } else { ftop = currtargetTop+'px'; fbottom = "auto"; @@ -215,9 +219,10 @@ Vtiger_List_Js("Vtiger_ModuleList_Js", {}, { 'bottom': fbottom }).appendTo(containerTarget); - dropdown.on('hidden.bs.getListViewContainerdropdown', function () { + dropdown.on('hidden.bs.dropdown', function () { dropdown_menu.removeClass('invisible'); fixed_dropdown_menu.remove(); + jQuery('.listViewEntries').removeClass('dropDownOpen'); }); }); }, diff --git a/layouts/v7/modules/Vtiger/resources/Utils.js b/layouts/v7/modules/Vtiger/resources/Utils.js index 452fc4c19527f773512899a3cae485afe247b4b9..455e205cd91d419dc756de58e1f148c87db0ca92 100644 --- a/layouts/v7/modules/Vtiger/resources/Utils.js +++ b/layouts/v7/modules/Vtiger/resources/Utils.js @@ -87,9 +87,10 @@ var vtUtils = { if(typeof selectElement == 'undefined') { return; } - var instance = selectElement.data('select2'); + var limit = params.maximumSelectionSize; selectElement.on('change',function(e){ + var instance = jQuery(e.currentTarget).data('select2'); var data = instance.data(); if (jQuery.isArray(data) && data.length >= limit ) { instance.updateResults(); diff --git a/layouts/v7/modules/Vtiger/resources/Vtiger.js b/layouts/v7/modules/Vtiger/resources/Vtiger.js index 8151620d404b5dfa8c9ab8a24fee774b208edf9f..09019627e0fe72af34e380937ccfbd632149d1fd 100644 --- a/layouts/v7/modules/Vtiger/resources/Vtiger.js +++ b/layouts/v7/modules/Vtiger/resources/Vtiger.js @@ -378,6 +378,9 @@ Vtiger.Class('Vtiger_Index_Js', { Vtiger_Index_Js.registerActivityReminder(); //reference preview event registeration this.registerReferencePreviewEvent(); + this.registerEventForPostSaveFail(); + + vtUtils.enableTooltips(); }, addBodyScroll: function () { @@ -523,7 +526,6 @@ Vtiger.Class('Vtiger_Index_Js', { vtUtils.applyFieldElementsView(form); targetInstance.quickCreateSave(form,params); - app.helper.hideProgress(); }); }); }, @@ -596,15 +598,19 @@ Vtiger.Class('Vtiger_Index_Js', { } var formData = jQuery(form).serialize(); app.request.post({data:formData}).then(function(err,data){ - app.event.trigger("post.QuickCreateForm.save",data,jQuery(form).serializeFormData()); + app.helper.hideProgress(); if(err === null) { + jQuery('.vt-notification').remove(); + app.event.trigger("post.QuickCreateForm.save",data,jQuery(form).serializeFormData()); app.helper.hideModal(); - app.helper.showSuccessNotification({"message":''}); + var message = typeof formData.record !== 'undefined' ? app.vtranslate('JS_RECORD_UPDATED'):app.vtranslate('JS_RECORD_CREATED'); + app.helper.showSuccessNotification({"message":message},{delay:4000}); invokeParams.callbackFunction(data, err); //To unregister onbefore unload event registered for quickcreate window.onbeforeunload = null; }else{ - app.helper.showErrorNotification({"message":err}); + app.event.trigger('post.save.failed', err); + jQuery("button[name='saveButton']").removeAttr('disabled'); } }); }, @@ -1589,6 +1595,25 @@ Vtiger.Class('Vtiger_Index_Js', { ); }, + /** + * Function to show duplication notification + */ + registerEventForPostSaveFail : function() { + app.event.on('post.save.failed', function (e, err) { + jQuery('.vt-notification').remove(); + var options = { + message: err.message + }; + if (err.title) { + options['title'] = err.title; + } + var settings = { + 'delay': 0 + }; + app.helper.showErrorNotification(options, settings); + }); + }, + postRefrenceSearch: function(resultData, container){ var thisInstance = this; var module; diff --git a/layouts/v7/modules/Vtiger/resources/validation.js b/layouts/v7/modules/Vtiger/resources/validation.js index c2e44ee3716797662277b153455ac9af3e4b67de..e870d8cbe1991076dceec7c148ba512038c0c96c 100644 --- a/layouts/v7/modules/Vtiger/resources/validation.js +++ b/layouts/v7/modules/Vtiger/resources/validation.js @@ -62,14 +62,15 @@ jQuery.validator.addMethod("double", function(value, element, params) { jQuery.validator.addMethod("WholeNumber", function(value, element, params) { - var regex= /[+]/; - if(value.match(regex)){ - return; + var regex= /[^+\-0-9.]+/; // not number? + + if(value.match(regex)){ + return false; + } - if((value % 1) != 0){ + if((value % 1) != 0){ // is decimal? return false; } - } return true; }, jQuery.validator.format(app.vtranslate('INVALID_NUMBER')) ); @@ -682,11 +683,11 @@ jQuery.validator.addMethod("percentage", function(value, element, params){ if(spacePattern.test(decimalSeparator)) { strippedValue = strippedValue.replace(/ /g, ''); } - if(isNaN(strippedValue) || strippedValue < 0) { + if(isNaN(strippedValue)) { return false; } return true; -}, jQuery.validator.format(app.vtranslate('JS_ACCEPT_POSITIVE_NUMBER'))); +}, jQuery.validator.format(app.vtranslate('JS_PLEASE_ENTER_VALID_VALUE'))); jQuery.validator.addMethod("inventory_percentage", function(value, element, params){ var valid = jQuery.validator.methods.percentage.call(this,value,element,params); diff --git a/layouts/v7/modules/Vtiger/uitypes/Owner.tpl b/layouts/v7/modules/Vtiger/uitypes/Owner.tpl index 99ac2b0ac0f8f048274fd27d6d86d4facb939b10..2b3905b9bb5a5eb58ad3a40d73af14a4122db92b 100644 --- a/layouts/v7/modules/Vtiger/uitypes/Owner.tpl +++ b/layouts/v7/modules/Vtiger/uitypes/Owner.tpl @@ -31,9 +31,10 @@ data-specific-rules='{ZEND_JSON::encode($FIELD_INFO["validator"])}' {/if} > + {if $FIELD_MODEL->isCustomField() || $VIEW_SOURCE eq 'MASSEDIT'} <option value="">{vtranslate('LBL_SELECT_OPTION','Vtiger')}</option> {/if} <optgroup label="{vtranslate('LBL_USERS')}"> {foreach key=OWNER_ID item=OWNER_NAME from=$ALL_ACTIVEUSER_LIST} - <option value="{$OWNER_ID}" data-picklistvalue= '{$OWNER_NAME}' {if $FIELD_VALUE eq $OWNER_ID} selected {/if} + <option value="{$OWNER_ID}" data-picklistvalue= '{$OWNER_NAME}' {if $FIELD_VALUE eq $OWNER_ID && $VIEW_SOURCE neq 'MASSEDIT'} selected {/if} {if array_key_exists($OWNER_ID, $ACCESSIBLE_USER_LIST)} data-recordaccess=true {else} data-recordaccess=false {/if} data-userId="{$CURRENT_USER_ID}"> {$OWNER_NAME} @@ -51,4 +52,4 @@ </select> {/if} {* TODO - UI type 52 needs to be handled *} -{/strip} \ No newline at end of file +{/strip} diff --git a/layouts/v7/modules/Vtiger/uitypes/OwnerGroup.tpl b/layouts/v7/modules/Vtiger/uitypes/OwnerGroup.tpl index 20bf89d4fd45d0dd0c70b77d537b21f246926154..7584b5402b9539dd27c62716936f4931ed880a73 100644 --- a/layouts/v7/modules/Vtiger/uitypes/OwnerGroup.tpl +++ b/layouts/v7/modules/Vtiger/uitypes/OwnerGroup.tpl @@ -25,10 +25,10 @@ {/if}> <option value="">{vtranslate('LBL_SELECT_OPTION','Vtiger')}</option> {foreach key=OWNER_ID item=OWNER_NAME from=$ALL_ACTIVEGROUP_LIST} - <option value="{$OWNER_ID}" data-picklistvalue='{$OWNER_NAME}' {if $FIELD_MODEL->get('fieldvalue') eq $OWNER_ID} selected {/if} + <option value="{$OWNER_ID}" data-picklistvalue='{$OWNER_NAME}' {if $VIEW_SOURCE neq 'MASSEDIT' && $FIELD_MODEL->get('fieldvalue') eq $OWNER_ID} selected {/if} {if array_key_exists($OWNER_ID, $ACCESSIBLE_GROUP_LIST)} data-recordaccess=true {else} data-recordaccess=false {/if} > {$OWNER_NAME} </option> {/foreach} </select> -{/strip} \ No newline at end of file +{/strip} diff --git a/layouts/v7/modules/Vtiger/uitypes/Picklist.tpl b/layouts/v7/modules/Vtiger/uitypes/Picklist.tpl index 49fb9d5726ddcc8e894702994cf0375d7b413224..0ab5518e2b71ca4847d4a700cf25553214709178 100644 --- a/layouts/v7/modules/Vtiger/uitypes/Picklist.tpl +++ b/layouts/v7/modules/Vtiger/uitypes/Picklist.tpl @@ -30,6 +30,13 @@ {assign var=CLASS_NAME value="{$FIELD_MODEL->getFieldName()}_{$PICKLIST_NAME|replace:' ':'_'}"} .picklistColor_{$CLASS_NAME} { background-color: {$PICKLIST_COLORS[$PICKLIST_NAME]} !important; + {if $PICKLIST_COLORS[$PICKLIST_NAME] eq '#ffffff'} + color: #000000 !important; + {/if} + } + .picklistColor_{$CLASS_NAME}.select2-highlighted { + white: #ffffff !important; + background-color: #337ab7 !important; } {/foreach} </style> diff --git a/layouts/v7/modules/Vtiger/uitypes/UserRole.tpl b/layouts/v7/modules/Vtiger/uitypes/UserRole.tpl index 1375eee3943a5f3a259c7f0ff3c2b22bf3fc85eb..ebf9e7b3758bcbebf0984cc687271080d6536ca5 100644 --- a/layouts/v7/modules/Vtiger/uitypes/UserRole.tpl +++ b/layouts/v7/modules/Vtiger/uitypes/UserRole.tpl @@ -21,7 +21,7 @@ {/if} > {foreach item=PICKLIST_VALUE key=PICKLIST_NAME from=$PICKLIST_VALUES} - <option value="{$PICKLIST_VALUE}" {if $FIELD_MODEL->get('fieldvalue') eq $PICKLIST_VALUE} selected {/if}>{vtranslate($PICKLIST_NAME, $MODULE)}</option> + <option value="{$PICKLIST_VALUE}" {if $FIELD_MODEL->get('fieldvalue') eq $PICKLIST_VALUE} selected {/if}>{$PICKLIST_NAME}</option> {/foreach} </select> {/strip} \ No newline at end of file diff --git a/layouts/v7/resources/application.js b/layouts/v7/resources/application.js index 760e09f6e635af4e4c6e5631b480762d3576c381..a62ae88e2a097596d27c0c9a2254aa5dc95baf59 100644 --- a/layouts/v7/resources/application.js +++ b/layouts/v7/resources/application.js @@ -38,7 +38,7 @@ window.app = (function () { jQuery(document).on('pjax:success', function (event, data, status, jqXHR) { if (typeof data == 'object') { if (!data['success'] && data['error']['message']) { - aDeferred.resolve(new Error(data['error']['message'])); + aDeferred.resolve(new VtError(data['error'])); return; } else if (data['result']) { data = data['result']; @@ -52,7 +52,7 @@ window.app = (function () { }); jQuery(document).on('pjax:error', function (event, jqXHR, textStatus, errorThrown) { - aDeferred.resolve(new Error(errorThrown.message)); + aDeferred.resolve(new VtError(errorThrown)); }); jQuery.pjax(params); return aDeferred.promise(); @@ -71,7 +71,7 @@ window.app = (function () { success: function (response) { if (typeof response == 'object') { if (!response['success'] && response['error']['message']) { - aDeferred.resolve(new Error(response['error']['message'])); + aDeferred.resolve(new VtError(response['error'])); return; } else if (response['result']) { response = response['result']; @@ -80,7 +80,7 @@ window.app = (function () { aDeferred.resolve(null, response); }, error: function (xhr, ajaxOptions, err) { - aDeferred.resolve(new Error(err.message)); + aDeferred.resolve(new VtError(err)); } }; @@ -503,4 +503,16 @@ jQuery(function () { var value = this.valueOf(); return value.charAt(0).toUpperCase()+value.slice(1).toLowerCase() } -}); \ No newline at end of file + /* To push focus on CKEditor Popup when shown with Bootstrap modal */ + /* ref https://stackoverflow.com/a/23667151 */ + jQuery.fn.modal.Constructor.prototype.enforceFocus = function() { + modal_this = this + jQuery(document).on('focusin.modal', function (e) { + if (modal_this.$element[0] !== e.target && !modal_this.$element.has(e.target).length + && !jQuery(e.target.parentNode).hasClass('cke_dialog_ui_input_select') + && !jQuery(e.target.parentNode).hasClass('cke_dialog_ui_input_textarea') + && !jQuery(e.target.parentNode).hasClass('cke_dialog_ui_input_text')) { + modal_this.$element.focus() + } + })}; +}); diff --git a/layouts/v7/resources/helper.js b/layouts/v7/resources/helper.js index fc92b0be518ea9f5f7ef10d47ec58a26ca6e0d05..4602b8bf95484eb83b73f64921deabee0e537fca 100644 --- a/layouts/v7/resources/helper.js +++ b/layouts/v7/resources/helper.js @@ -1021,4 +1021,13 @@ jQuery.Class("Vtiger_Helper_Js",{ return $parent && $parent.length ? $parent : $this.parent(); } -}); \ No newline at end of file +}); + +function VtError(params) { + this.name = 'VtError'; + this.stack = (new Error()).stack; + this.title = params.title || app.vtranslate('JS_ERROR'); + this.message= params.message || ''; +} +VtError.prototype = Object.create(Error.prototype); +VtError.prototype.constructor = VtError; \ No newline at end of file diff --git a/layouts/v7/skins/contact/style.css b/layouts/v7/skins/contact/style.css index 4c34a8a94dae1cb9bcdbdde24e35764ce7b99cc7..dccc32e8159096a177d36234081615fd0a404374 100644 --- a/layouts/v7/skins/contact/style.css +++ b/layouts/v7/skins/contact/style.css @@ -1,7 +1,9 @@ @font-face { font-family: 'Oswald'; src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot'); - src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot?#iefix') format('embedded-opentype'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.woff') format('woff'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.ttf') format('truetype'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.svg#Oswald') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.svg#Oswald') format('svg'); + /* Legacy iOS */ font-weight: normal; font-style: normal; text-rendering: optimizeLegibility; @@ -15,27 +17,37 @@ a:active { @font-face { font-family: 'OpenSans-Regular'; src: url('../fonts/OpenSans/Regular/OpenSans-Regular.eot'); - src: url('../fonts/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'), url('../fonts/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), url('../fonts/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), url('../fonts/OpenSans/Regular/OpenSans-Regular.svg#svgFontName') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/OpenSans/Regular/OpenSans-Regular.svg#svgFontName') format('svg'); + /* Legacy iOS */ } @font-face { font-family: 'OpenSans-Semibold'; src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot'); - src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.ttf') format('truetype'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff2') format('woff2'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff') format('woff'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.svg#svgFontName') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.svg#svgFontName') format('svg'); + /* Legacy iOS */ } @font-face { font-family: 'ProximaNova-Regular'; - src: url('../fonts/ProximanovaWebfont/ProximaNova-Regular.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.woff') format('woff'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'); + src: url('../fonts/ProximanovaWebfont/ProximaNova-Regular.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/ProximanovaWebfont/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'); + /* IE6-IE8 */ + /* Safari, Android, iOS */ font-style: normal; font-weight: normal; text-rendering: optimizeLegibility; } @font-face { font-family: 'ProximaNova-Semibold'; - src: url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.woff') format('woff'), url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.eot?#iefix') format('embedded-opentype'); + src: url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.eot?#iefix') format('embedded-opentype'); + /* IE6-IE8 */ font-style: normal; font-weight: normal; text-rendering: optimizeLegibility; } +/**********************************/ +/************ Layout **************/ +/**********************************/ html { height: 100%; overflow-y: auto; @@ -102,6 +114,7 @@ body { @media (min-width: 992px) { .global-nav .logo-container { display: inline-block; + width: 150px; z-index: 2; padding-left: 6%; margin-top: 1px; @@ -113,11 +126,13 @@ body { position: absolute; width: 100%; height: 42px; + /* border-top:1px solid #ddd;*/ border-bottom: 1px solid #ddd; } .app-nav .module-action-bar .module-action-content { background: #FBFBFB; height: 41px; + /* border-bottom: 1px solid #eee;*/ } .app-nav .module-action-bar .module-action-content .navbar-right { margin-right: 0; @@ -163,7 +178,7 @@ body { padding-left: 0; } } -.btn-toolbar >.btn-group:first-child { +.btn-toolbar > .btn-group:first-child { margin-left: 5px; } .vt-notification { @@ -196,8 +211,12 @@ body { .vt-notification [data-notify="message"] { color: #eaeaea; } +/**********************************/ +/******** Navigation styles *******/ +/**********************************/ .company-logo { height: 40px; + width: 150px; margin: 0 0; display: inline-block; margin-left: 1px; @@ -214,10 +233,13 @@ body { font-size: 16px; position: relative; } +/*.module-action-bar .module-action-content #appnav{ + padding-top:5px; +}*/ .global-nav .navbar-nav > li div a { padding: 15px; } -.global-nav>ul { +.global-nav > ul { margin-right: 20px; } .global-nav .search-links-container { @@ -267,26 +289,28 @@ body { float: right; height: 42px; } - .module-action-bar .navbar-right .nav>li { + .module-action-bar .navbar-right .nav > li { display: inline-block; } - .module-action-bar .navbar-right .nav>li a { + .module-action-bar .navbar-right .nav > li a { padding: 0 10px; } .global-nav .logo-container { border-bottom: 0; + width: 150px; } } @media (max-width: 991px) { .global-nav .logo-container { border-bottom: 0; + width: 150px; } .notificationMessageHolder { padding-left: 45%; } } @media (min-width: 991px) { - .nav>li>a.qc-button { + .nav > li > a.qc-button { padding: 2px 3px; margin-top: 13px; margin-right: 15px; @@ -294,7 +318,7 @@ body { color: #fff; border-radius: 20px; } - .nav>li>a.qc-button span { + .nav > li > a.qc-button span { vertical-align: top; } } @@ -313,6 +337,7 @@ body { width: 100%; height: 100%; } +/** App Nav Styles */ .active-app-title { white-space: nowrap; font-family: Oswald, "OpenSans-Semibold", "Helvetica Neue", Helvetica, sans-serif; @@ -367,7 +392,9 @@ body { height: 42px; text-align: center; line-height: 42px; + /* background-color: #2c3b49;*/ color: #ffffff; + /*border-bottom: 1px solid #272B46;*/ } .app-nav .app-indicator-icon-container .app-indicator-icon { font-size: 24px; @@ -391,6 +418,9 @@ body { .app-PROJECT { background: #8E44AD !important; } +.app-TOOLS { + background: #EF5E29 !important; +} .app-DEFAULT, .app-DASHBOARD { background: #56ccc8 !important; @@ -479,16 +509,16 @@ body { right: -4px; } #overlayPageContent .mCSB_scrollTools, -#overlayPageContent .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonUp, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonDown, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonLeft, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonRight, .app-list .mCSB_scrollTools, +#overlayPageContent .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .app-list .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonUp, .app-list .mCSB_scrollTools .mCSB_buttonUp, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonDown, .app-list .mCSB_scrollTools .mCSB_buttonDown, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonLeft, .app-list .mCSB_scrollTools .mCSB_buttonLeft, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonRight, .app-list .mCSB_scrollTools .mCSB_buttonRight { -webkit-transition: none; transition: none; @@ -534,6 +564,9 @@ a.menu-item:hover { .app-item-color-PROJECT { border-left: 4px solid #8E44AD; } +.app-item-color-TOOLS { + border-left: 4px solid #EF5E29; +} .app-item .fa { font-size: 1.5em; -webkit-transition: all 0.25s ease-in; @@ -700,6 +733,7 @@ a.menu-item:hover { width: 0px; overflow: hidden; } +/* User Logout */ .logout-content { padding: 10px; width: 350px; @@ -754,6 +788,9 @@ a.menu-item:hover { .app-settings { background: #FFFFFF; } +/*************************************************/ +/******** View styles (List/Edit/Detail..) *******/ +/*************************************************/ .viewContent .content-area { padding-left: 50px; } @@ -780,6 +817,9 @@ a.menu-item:hover { opacity: 0.5; pointer-events: none; } +.input-group.percentage-input-group .form-control { + width: 100% !important; +} .bottomscroll-div, .topscroll-div { display: table; @@ -793,6 +833,9 @@ a.menu-item:hover { display: inline-block; word-break: break-word; } +.fieldValue .value a { + color: #15c !important; +} .modal-header button.close { padding: 0; color: #ffffff; @@ -865,6 +908,9 @@ input[type="password"].inputElement { padding-right: 20px; padding-left: 20px; } +/**********************************/ +/**** Side vertical Nav styles ****/ +/**********************************/ .module-nav { background: #fff; z-index: 1004; @@ -880,6 +926,9 @@ input[type="password"].inputElement { left: 0; transition: 0s width; } +.module-nav:hover { + /*z-index: 1001;*/ +} .modules-menu ul { list-style: none; margin-left: 0; @@ -914,7 +963,7 @@ input[type="password"].inputElement { float: left; font-size: 20px; } -.modules-menu ul li a>span { +.modules-menu ul li a > span { margin-left: 10px; vertical-align: middle; font-size: 13px; @@ -954,6 +1003,7 @@ input[type="password"].inputElement { width: 100%; left: 0%; } +/** Lists Menu in Side bar */ .module-filters .settings-sidebar, .module-filters .sidebar-container { padding: 0 12px; @@ -987,6 +1037,7 @@ input[type="password"].inputElement { .lists-menu-container hr { margin: 5px 0; } +/* mScrollbar customization for lists widget */ .lists-menu-container .menu-scroller .mCSB_scrollTools { width: 13px; } @@ -998,8 +1049,10 @@ input[type="password"].inputElement { .modules-menu .mCSB_scrollTools .mCSB_draggerContainer { left: 8px; } +/* Customization ends */ .lists-menu-container .list-menu-content .more-less-link { color: #fff; + /*text-decoration: none;*/ } .lists-menu-container .list-menu-content .sub-header { color: #ddd; @@ -1085,7 +1138,6 @@ input[type="password"].inputElement { background-color: #FFFFFF; border: 1px solid #DDDDDD; margin: 5px 0 10px; - color: #ccc; padding: 5px 10px; } .search-folders:focus, @@ -1104,9 +1156,11 @@ input[type="password"].inputElement { .common-links-container > div a { color: #fff; } +/*Search Container styles */ .search-container { min-height: 300px; position: absolute; + /*z-index: 1030;*/ width: 100%; top: 0; background: #FBFBFB; @@ -1125,6 +1179,7 @@ input[type="password"].inputElement { .footer p { margin: 5px 0; } +/*** Utilities ***/ .showElement { display: block !important; height: 100%; @@ -1247,11 +1302,11 @@ ul.unstyled { } .emptyRecordsDiv .emptyRecordsContent { display: inline-block; - font-size: 16px; left: 50%; margin-left: -25%; position: absolute; width: 50%; + font-size: 16px; } .textOverflowEllipsis { overflow: hidden; @@ -1276,6 +1331,9 @@ ul.unstyled { .removeNoFileChosen { color: transparent !important; } +/*********************************** +**********Button Styles********** +***********************************/ .module-buttons-container { float: right; margin-right: 10px; @@ -1297,6 +1355,7 @@ ul.unstyled { margin: 4px 2px; border-radius: 2px; border: 1px solid #ddd; + text-transform: uppercase; color: #666; background: #fff; } @@ -1317,6 +1376,9 @@ ul.unstyled { color: #FFFFFF !important; background: #5bc0de !important; } +/*********************************** +**********List View Styles********** +***********************************/ .fa.pull-left { margin-right: 0; } @@ -1351,7 +1413,7 @@ ul.unstyled { font-size: 20px; } .listview-pagination .disabled { - color: rgba(0,0,0,0.2); + color: rgba(0, 0, 0, 0.2); } .listview-pagination .disabled:hover { cursor: default; @@ -1379,6 +1441,8 @@ ul.unstyled { .listview-table { margin-bottom: 0; border-top: 0; + /* Horizontal scroll will not work if table layout Fixed */ + /* table-layout: fixed;*/ } .listview-table tr td, .listview-table tr th { @@ -1408,7 +1472,7 @@ ul.unstyled { width: 100%; } .listViewEntries .relatedListEntryValues .fieldValue .value, -.listViewEntries .listViewEntryValue .fieldValue .value { +.listViewEntries .listViewEntryValue .fieldValue .value { vertical-align: middle; width: 100%; display: inline-block; @@ -1423,7 +1487,7 @@ ul.unstyled { } .listview-table-norecords .table-actions, .listview-table .table-actions { - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -1489,13 +1553,13 @@ input[type=checkbox]:checked { vertical-align: middle; display: table-cell; } -.listview-table tr.searchRow th { +.listview-table tr.searchRow th { padding: 5px 3px; } -.listview-table tr.searchRow th.inline-search-btn { +.listview-table tr.searchRow th.inline-search-btn { padding: 3px 10px; } -.listview-table tr.searchRow th.inline-search-btn button { +.listview-table tr.searchRow th.inline-search-btn button { text-align: center; width: 85%; text-shadow: none; @@ -1523,6 +1587,18 @@ input[type=checkbox]:checked { background-color: #FFEEEE !important; background-image: none !important; } +/*.floatThead-wrapper .table-container{ + z-index: 0 !important; +}*/ +/* List view bottom fixed scroll */ +/*.bottom-fixed-scroll{ + height: 14px; + position: relative; + top: -15px; + overflow-x: auto; + overflow-y: hidden; + width: 100%; +}*/ .scroller-div { height: 1px; } @@ -1644,9 +1720,15 @@ input[type=checkbox]:checked { #listColumnFilterContainer .disabled i { color: #ccc; } +/********************************** +**********Detail View Styles********** +**********************************/ .detailViewButtoncontainer { padding-top: 5px; } +.detailViewButtoncontainer button.btn { + margin: 0px 1px !important; +} .detailview-header .recordBasicInfo > .info-row { margin-bottom: 4px; } @@ -1727,6 +1809,9 @@ th { margin-top: 3%; margin-right: 2%; } +.overlayDetailHeader button.btn { + margin: 0px 1px !important; +} .referencefield-wrapper .createReferenceRecord { float: left; margin-left: 5px; @@ -1966,10 +2051,10 @@ th { z-index: 1030; } .overlay-container-60 { - margin-left: 42px; + margin-left: 42px ; } .overlay-container-300 { - margin-left: 230px; + margin-left: 230px ; } .overlayPageContent { background: #FFFFFF; @@ -2092,6 +2177,9 @@ th { height: 26px; line-height: 25px; } +/********************************** +**********Summary View Styles****** +**********************************/ .summary-table { width: 100%; table-layout: fixed; @@ -2212,33 +2300,33 @@ th { opacity: 1; cursor: pointer; } -.details.row >form .social-media-toggle { +.details.row > form .social-media-toggle { position: absolute; right: -15px; display: inline-block; width: 500px; border-left: 0px; } -.details.row >form .social-media-widget { +.details.row > form .social-media-widget { border-left: 1px solid #ddd; border-bottom: 1px solid #ddd; height: 100%; background: white; } -.details.row >form div[class*="col-"].resizable-summary-view { +.details.row > form div[class*="col-"].resizable-summary-view { padding-left: 0; padding-right: 0px; } -.details.row >form>div[class*="col-"], -.details.row >form .resizable-summary-view div[class*="col-"] { +.details.row > form > div[class*="col-"], +.details.row > form .resizable-summary-view div[class*="col-"] { padding-right: 0; padding: 0px 5px; } -.details.row >form>div[class*="col-"]:first-child, -.details.row >form .left-block { +.details.row > form > div[class*="col-"]:first-child, +.details.row > form .left-block { padding-left: 0 !important; } -.details.row >form>div[class*="col-"]:last-child { +.details.row > form > div[class*="col-"]:last-child { padding-right: 0; } .summaryWidgetContainer .noContent { @@ -2251,6 +2339,9 @@ th { .caseReplyArea .nav > li { padding: 0 10px; } +/********************************** +**********Edit View Styles******* +**********************************/ .main-container .editViewModNavigator.module-nav, .editViewModNavigator .mod-switcher-container, .editViewModNavigator .modules-menu { @@ -2291,9 +2382,28 @@ th { width: 100%; } .editViewContents .input-group { - width: 229px; + width: 208px; float: left; } +.editViewContents .fieldLabel { + min-width: 100px; + width: 20%; + word-break: break-all; +} +.editViewContents .fieldValue { + width: 30%; +} +.editViewContents td.fieldValue[colspan="3"] { + width: 80%; +} +.editViewContents textarea.textAreaElement { + width: 88%; +} +.editViewContents input[type="checkbox"], +.editViewContents input[type="radio"] { + width: 15px; + height: 15px; +} .input-group.inputElement .input-group-addon { border: none; border-left: 1px solid #ddd; @@ -2370,6 +2480,9 @@ th { z-index: 1000; padding: 7px; } +/********************************** +**********Advance Search styles********** +**********************************/ .op0.fadeInx { opacity: 1; } @@ -2442,7 +2555,11 @@ th { } .btn + input { margin-left: 5px; + /* margin-top : 3px;*/ } +/********************************** +**********Extension Store Styles********** +**********************************/ .extensionstore .app-trigger { width: 98%; } @@ -2473,6 +2590,9 @@ th { .extensionContents .extensionError { color: #F10404; } +/********************************** +**********Extension Store Nav Bar********** +**********************************/ .tabbable-line > .nav-tabs { border: none; margin: 0px; @@ -2541,6 +2661,9 @@ th { .extensionContents .listview-table { width: 100%; } +/******************************************* +******Detail View related list styles******* +********************************************/ .relatedContents .listViewContentHeaderValues:hover { text-decoration: none; color: #333; @@ -2598,6 +2721,9 @@ th { .relatedViewActions .btn-group { margin-right: 15px; } +/******************************************* +****************** Modal ******************* +********************************************/ .modal-header { padding: 5px 15px; background: #596875; @@ -2625,6 +2751,7 @@ th { width: 100%; float: left; background: #596875; + /* height: 100%;*/ } .settings-menu { display: inline-block; @@ -2641,7 +2768,7 @@ th { cursor: n-resize; } .settings-menu-items { - box-shadow: 0 1px 1px rgba(0,0,0,0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); margin-bottom: 10px; text-align: justify; } @@ -2770,6 +2897,7 @@ th { vertical-align: middle; color: #3399ff; } +/* .squaredFour */ .squaredFour { width: 20px; position: relative; @@ -2783,9 +2911,9 @@ th { top: 0; left: 0; background: #fcfff4; - background: linear-gradient(top,#fcfff4 0%,#dfe5d7 40%,#b3bead 100%); + background: linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); border-radius: 4px; - box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); + box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); } .squaredFour label:after { content: ''; @@ -2813,13 +2941,16 @@ th { .importBlockContainer { color: #596875; } +/******************************************* +************* Social Buttons *************** +********************************************/ .btn-block + .btn-block { margin-top: 5px; } .btn-google-plus { color: #FFFFFF !important; background-color: #DD4B39; - border-color: rgba(0,0,0,0.2); + border-color: rgba(0, 0, 0, 0.2); } .btn-social { position: relative; @@ -2838,15 +2969,18 @@ th { line-height: 34px; font-size: 1.6em; text-align: center; - border-right: 1px solid rgba(0,0,0,0.2); + border-right: 1px solid rgba(0, 0, 0, 0.2); } +/******************************************* +************* Updates Timeline *************** +********************************************/ .recentActivitiesContainer .history { margin: 0 auto; padding: 20px 20px 1px; max-width: 100%; overflow-x: visible; - -webkit-transition: opacity .2s ease-out; - transition: opacity .2s ease-out; + -webkit-transition: opacity 0.2s ease-out; + transition: opacity 0.2s ease-out; } .updates_timeline { padding-top: 20px; @@ -2855,6 +2989,7 @@ th { padding: 0; list-style: none; } +/* The line */ .updates_timeline:before { content: ''; position: absolute; @@ -2873,6 +3008,7 @@ th { min-height: 40px; z-index: 2; } +/* Left Content(Time) */ .updates_timeline > li .update_time { position: absolute; margin: 0; @@ -2884,6 +3020,7 @@ th { font-size: 15px; font-style: italic; } +/* Right content(Update info) */ .updates_timeline > li .update_info { padding: 10px 10px 1px; display: block; @@ -2892,10 +3029,11 @@ th { position: relative; top: -45px; } -.updates_timeline > li .update_info >h3 { +.updates_timeline > li .update_info > h3 { font-size: 1.1em; margin-left: -3%; } +/* The icons */ .updates_timeline > li .update_icon { position: relative; border-radius: 50%; @@ -2908,6 +3046,7 @@ th { color: #fff; line-height: 35px; } +/* More Button */ .updates_timeline #more_button .update_icon { position: relative; border-radius: 0; @@ -3015,6 +3154,9 @@ th { vertical-align: super; font-size: 13px; } +/******************************************* +************* Task Management ************** +********************************************/ #taskManagementContainer .data-body { margin-bottom: 50px; } @@ -3077,15 +3219,16 @@ th { #taskManagementContainer .other-details { color: #979797; } +/*overwriting jquery ui css*/ .ui-menu { z-index: 10000; } #taskManagementContainer button.active { background: #3B83F7; color: white; - text-shadow: 0 1px rgba(0,0,0,0.3); + text-shadow: 0 1px rgba(0, 0, 0, 0.3); border: 1px solid #135fd7; - box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); } .taskSubject { width: 99%; @@ -3093,6 +3236,9 @@ th { #taskManagementContainer .mCustomScrollbar .mCSB_inside > .mCSB_container { margin-right: 13px; } +/******************************************* +************* Settings Page ************** +********************************************/ .settingsPageDiv.content-area { margin-right: 0; } @@ -3126,6 +3272,9 @@ th { .settingsgroup-accordion a i { margin-right: 5px; } +.settingsgroup-accordion a span { + text-transform: uppercase; +} .settingsgroup { background: #2C3B49; height: 100%; @@ -3282,35 +3431,59 @@ th { } .mini-slider-control[data-value="0"] .ui-slider-handle { background: #7d7e7d; - background: -moz-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#7d7e7d),color-stop(100%,#0e0e0e)); - background: -webkit-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -o-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -ms-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: linear-gradient(to bottom,#7d7e7d 0%,#0e0e0e 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d',endColorstr='#0e0e0e',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #7d7e7d), color-stop(100%, #0e0e0e)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #7d7e7d 0%, #0e0e0e 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d', endColorstr='#0e0e0e', GradientType=0); + /* IE6-9 */ margin-left: 0px; } .mini-slider-control[data-value="1"] .ui-slider-handle { background: #ffb76b; - background: -moz-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#ffb76b),color-stop(0%,#ffa73d),color-stop(49%,#ff7c00),color-stop(100%,#ff7f04)); - background: -webkit-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -o-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -ms-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: linear-gradient(to bottom,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb76b',endColorstr='#ff7f04',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffb76b), color-stop(0%, #ffa73d), color-stop(49%, #ff7c00), color-stop(100%, #ff7f04)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb76b', endColorstr='#ff7f04', GradientType=0); + /* IE6-9 */ margin-left: -6px; } .mini-slider-control[data-value="2"] .ui-slider-handle { background: #bfd255; - background: -moz-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#bfd255),color-stop(79%,#8eb92a),color-stop(100%,#72aa00),color-stop(100%,#9ecb2d)); - background: -webkit-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -o-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -ms-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: linear-gradient(to bottom,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bfd255',endColorstr='#9ecb2d',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #bfd255), color-stop(79%, #8eb92a), color-stop(100%, #72aa00), color-stop(100%, #9ecb2d)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bfd255', endColorstr='#9ecb2d', GradientType=0); + /* IE6-9 */ margin-left: -13px; } .ModulemanagerSettings .moduleblock .hiden { @@ -3335,10 +3508,13 @@ th { th { padding: 6px; } +/******************************************* +********** CustomerPortal styles start ******** +********************************************/ .cp-tabs .enabledModules { display: inline-block ! important; - margin-left: 4px !important; - margin-right: 4px !important; + margin-left: 4px!important; + margin-right: 4px!important; vertical-align: top; } .drag-portal-module { @@ -3445,7 +3621,7 @@ th { margin-left: 5px; } .portal-field-delete { - margin-left: 45px !important; + margin-left: 45px!important; } .portalModuleRow { border-left: 4px solid #3498DB !important; @@ -3462,7 +3638,7 @@ th { content: "*"; color: red; } -.nav-tabs .cp-modules > .active >a, +.nav-tabs .cp-modules > .active > a, .nav-tabs .cp-modules > .active > a:hover { border: 0px !important; border-top-right-radius: 0px; @@ -3624,7 +3800,7 @@ th { display: inline-block; } .quickPreview .updates_timeline:before { - background: #e6e6e6; + background: #e5e5e5; width: 2px; margin-left: -1%; } @@ -3639,13 +3815,16 @@ th { .quickPreviewComments .recentComments .commentDetails .comment { line-height: 15px; } -.quickPreviewComments .summaryWidgetContainer { +.quickPreviewComments .summaryWidgetContainer { border: 0; padding: 0; } .quickPreview .recentActivitiesContainer .history { padding: 0; } +/******************************************* +********** Calendar view styles ************ +********************************************/ .calendar-sidebar { width: 100% !important; } @@ -3802,6 +3981,11 @@ th { display: inline-block; text-align: center; } +/******************************************* +********** Calendar view styles end ******** + +********** Documents Module styles ********* +********************************************/ .dragdrop-dotted { border: 2px dashed #C0C0C0; min-width: 300px; @@ -3861,13 +4045,16 @@ tr.file > td.fileOwnerData { width: 100px; white-space: pre-wrap; } +/******************************************* +********** Documents Module styles end ***** +********************************************/ .engagementsContainer .engagements_content { padding-top: 15px; } .summaryWidgetContainer .engagementsContainer table { width: inherit; } -.engagements_content table thead>tr:first-child { +.engagements_content table thead > tr:first-child { border: 1px solid #CCC; background-color: #F5F5F5; } @@ -3918,6 +4105,9 @@ tr.file > td.fileOwnerData { font-size: 15px; padding: 1% 0; } +/******************************************* +********** Mailroom view styles start ******** +********************************************/ .mailroomBanner { margin: 23px 0; height: 215px; @@ -4126,6 +4316,7 @@ tr.file > td.fileOwnerData { margin-left: 0; } .mentionMessages .mention_follow_up { + /*//load this color from variable.less*/ background-color: green; } .modelContainer .modal-content { @@ -4274,6 +4465,7 @@ form[name="notification_settings"] .select2-choice { margin-left: 0; } .mentionMessages .mention_follow_up { + /*//load this color from variable.less*/ background-color: green; } .modal-content .mention_followup .row { @@ -4305,6 +4497,9 @@ form[name="notification_settings"] .select2-choice { .mentionMessageHeader .MultiFile-remove { color: #FFFFFF; } +/******************************************* +********** Mailroom view styles end ******** +********************************************/ .detailview-header { margin-bottom: 10px; } @@ -4320,6 +4515,7 @@ form[name="notification_settings"] .select2-choice { margin: 0px 10px; text-decoration: underline !important; color: #3498DB; + /*font-size : 12px;*/ } .tag { display: inline-block; @@ -4403,11 +4599,11 @@ form[name="notification_settings"] .select2-choice { border: 1px solid #dcdcdc; } #tagCloud .tag { - color: #5ea9dd; padding: 0px; background-color: #FFFFFF; border-color: #FFFFFF; border-radius: 0px; + color: #5ea9dd; margin: 3px; } #tagCloud .tag[data-type="public"] { @@ -4418,6 +4614,9 @@ form[name="notification_settings"] .select2-choice { max-width: 80px; vertical-align: bottom; } +/******************************************* +********** Groups view styles ******** +********************************************/ #s2id_memberList li > div, .groupMembersColors li > div { margin-left: 10px; @@ -4492,6 +4691,12 @@ form[name="notification_settings"] .select2-choice { margin: 0px; color: #444444; } +/******************************************* +********** Groups view styles ends******** +********************************************/ +/******************************************* +********** Picklist Css ******** +********************************************/ .pickListValue { background-color: #FFFFFF; } @@ -4506,6 +4711,12 @@ form[name="notification_settings"] .select2-choice { padding: 2px 1px !important; line-height: 15px; } +/******************************************* +************* Dashboard Styles ************* +********************************************/ +li.dashboardWidget { + overflow: hidden; +} .dashboardWidgetHeader .title { padding-bottom: 10px; font-size: 15px; @@ -4526,9 +4737,6 @@ form[name="notification_settings"] .select2-choice { .dashBoardContainer .tabContainer .tab-content { margin-top: 10px; } -.dashBoardContainer .dashBoardTabContents ul { - margin: 0; -} .dashBoardContainer .dashBoardTabContents ul li { border: 3px solid #E2E2E4; box-shadow: 1px; @@ -4595,7 +4803,7 @@ form[name="notification_settings"] .select2-choice { display: inline-block; opacity: 1; } -.dashBoardContainer .tabContainer li a .deleteTab:hover { +.dashBoardContainer .tabContainer li a .deleteTab:hover { cursor: pointer; } #minilistWizardContainer .fieldLabel { @@ -4632,6 +4840,9 @@ form[name="notification_settings"] .select2-choice { resize: none; width: 100%; } +/******************************************* +********** Picklist DependencyGraph ******** +********************************************/ #dependencyGraph .tableHeading { text-align: center; padding-top: 30px; @@ -4657,6 +4868,9 @@ form[name="notification_settings"] .select2-choice { #dependencyGraph .dependencyMapping .pickListDependencyTable .selectedCell { background: #a9cbf5; } +/******************************************* +********** Rewriting select2 for consistency******** +********************************************/ .select2-container .select2-choice { height: 29px; border-radius: 1px; @@ -4750,6 +4964,7 @@ hr { position: fixed; bottom: 0; background: #EFEFEF; + /*width:100%;*/ border-left: 42px solid #2c3b49; height: 60px; left: 0; @@ -4768,7 +4983,6 @@ hr { } .settingsPageDiv .modal-overlay-footer { margin-left: 230px; - border-left: 0px solid; } .settingsOverlayContainer .modal-overlay-footer { margin: 0; @@ -4791,14 +5005,14 @@ hr { vertical-align: middle; margin-top: 6px; } -.list-menu-content .pull-right>.dropdown-menu { +.list-menu-content .pull-right > .dropdown-menu { left: -126px; position: relative; } -.dropdown-menu>li>a { +.dropdown-menu > li > a { padding: 4px 6px; } -.dropdown-menu>li>a span i { +.dropdown-menu > li > a span i { font-size: 15px; vertical-align: middle; } @@ -4806,11 +5020,11 @@ hr { max-height: 300px; padding-left: 0; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container { margin-right: 0; padding: 4px 6px; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container>li>a { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container > li > a { display: block; padding: 3px 5px; clear: both; @@ -4819,7 +5033,7 @@ hr { color: #333; white-space: nowrap; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container span i { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container span i { font-size: 15px; vertical-align: middle; } @@ -4842,16 +5056,16 @@ hr { .calendar-sidebar .calendar-sidebar-tabs.padding { padding-left: 20px !important; } -.related-tabs.row .nav>li { +.related-tabs.row .nav > li { padding: 0 10px; margin: 0 2px; } -.massEditTabs.nav>li { +.massEditTabs.nav > li { padding: 0 10px; margin: 0 4px; } -.row .nav>li>a, -.row .nav>li>a:hover { +.row .nav > li > a, +.row .nav > li > a:hover { padding: 10px 3px; border: none; vertical-align: bottom; @@ -4861,38 +5075,39 @@ hr { -webkit-box-sizing: border-box; -o-box-sizing: border-box; } -.row .nav>li>a:hover { +.row .nav > li > a:hover { border-bottom-color: #555; } -TN-34230 - -.row .nav>li>a:hover { +/*.row ul{ + padding:0; +}*/ +TN-34230 .row .nav > li > a:hover { border-bottom-color: #555; background: none; } .row ul li:first-child { margin-left: 0; } -.related-tabs .nav-tabs>li.active, -.related-tabs .nav-tabs>li:hover, -.related-tabs .nav-tabs>li.active:focus, -.dashBoardContainer .nav-tabs>li.active, -.dashBoardContainer .nav-tabs>li:hover, -.dashBoardContainer .nav-tabs>li.active:focus, -.contents.tabbable .nav-tabs>li.active, -.contents.tabbable .nav-tabs>li:hover, -.contents.tabbable .nav-tabs>li.active:focus { +.related-tabs .nav-tabs > li.active, +.dashBoardContainer .nav-tabs > li.active, +.contents.tabbable .nav-tabs > li.active, +.related-tabs .nav-tabs > li:hover, +.dashBoardContainer .nav-tabs > li:hover, +.contents.tabbable .nav-tabs > li:hover, +.related-tabs .nav-tabs > li.active:focus, +.dashBoardContainer .nav-tabs > li.active:focus, +.contents.tabbable .nav-tabs > li.active:focus { border: none; border-bottom: 3px solid #555; } -.nav-tabs>li.active>a, -.nav-tabs>li.active>a:hover, -.nav-tabs>li.active>a:focus, -.nav-tabs>li>a { +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus, +.nav-tabs > li > a { border: 0; } -.nav>li>a:hover, -.nav>li>a:focus { +.nav > li > a:hover, +.nav > li > a:focus { background-color: #FFFFFF; } .fa-pencil, @@ -4902,6 +5117,9 @@ TN-34230 .commentAttachmentName { font-size: 11px; } +/******************************************* +********** Layout Editor ******** +********************************************/ .marginBottom10px { margin-bottom: 10px; } @@ -4924,6 +5142,7 @@ TN-34230 } .zeroOpacity { opacity: 0; + /*for IE*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } @@ -4950,10 +5169,12 @@ TN-34230 .layoutContent .opacity:hover .actions { opacity: 1; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + /*for IE*/ filter: alpha(opacity=100); } .layoutContent .fieldPropertyContainer:hover .actions { opacity: 1; + /*for IE*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=100); } @@ -4976,6 +5197,7 @@ TN-34230 .relatedTabModulesList .addButton { border-radius: 2px; border: 1px solid #DDDDDD; + text-transform: uppercase; color: #666666; background: #FFFFFF; } @@ -5049,6 +5271,9 @@ TN-34230 margin-left: 5px; word-break: break-all; } +/******************************************* +************** Tax Management ************** +********************************************/ #TaxCalculationsContainer .table tr:first-child, .taxModalContainer #editTax .table tr:first-child { border-bottom: 1px solid #ccc; @@ -5088,6 +5313,9 @@ TN-34230 max-height: 500px; overflow-y: auto; } +/******************************************* +********** Workflows ******** +********************************************/ #workflow_edit .editViewBody { overflow: inherit; } @@ -5097,7 +5325,7 @@ TN-34230 } .timePicker { width: 9.5em !important; - z-index: 1101 !important; + z-index: 1070 !important; } .weekDaySelect .ui-state-default { background: inherit; @@ -5135,75 +5363,6 @@ TN-34230 .module-filters.active { background: #F7F7F7; } -.payment-type-selection { - margin-bottom: 30px; -} -.payment-type-selection img { - vertical-align: middle; -} -.currplan { - padding: 10px 20px; - background-color: #f3f3f3; - border: 1px solid #eee; - border-radius: 3px; -} -.currplan div { - display: inline-block; - font-size: 16px; -} -.planName { - display: inline-block; - color: #fff; - padding: 20px; - margin: 10px 20px; - font-size: 24px; - border-radius: 2px; -} -.plan-heading { - min-height: 168px; -} -.plan-title { - color: #fff; - font-size: 20px; - padding: 13px 0; -} -#sales_plan { - background: #3FC380; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#salespremium_plan { - background: #00B16A; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#support_plan { - background: #2980B9; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#supportpremium_plan { - background: #2980B9; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#ultimate_plan, -#exclusive_plan { - background: #F39C12; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#contact_plan { - background: #FF5959; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} .workflowListContainer .select2-container .select2-choice { height: 36px; } @@ -5218,6 +5377,7 @@ TN-34230 .contactAdd { border: 1px solid #eee; padding: 20px; + /*min-height: 310px !important;*/ } #subDetails table td { padding: 7px 10px; @@ -5340,9 +5500,9 @@ TN-34230 .productBundles { padding-left: 20px; } -.nav .open>a, -.nav .open>a:hover, -.nav .open>a:focus { +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { color: #000000; background-color: #FFFFFF; } @@ -5363,6 +5523,9 @@ TN-34230 width: 100%; overflow-x: auto; } +/******************************************* +*************** Mail Manager *************** +********************************************/ #mm_searchButton { height: 28px; background-color: #FFFFFF; @@ -5418,8 +5581,8 @@ TN-34230 padding: 1px 5px; border-radius: 3px; text-align: center; - text-shadow: 0 1px rgba(0,0,0,0.1); - background-image: -webkit-linear-gradient(top,#DD4B39 0,#D14836 100%); + text-shadow: 0 1px rgba(0, 0, 0, 0.1); + background-image: -webkit-linear-gradient(top, #DD4B39 0, #D14836 100%); border: 1px solid #C6322A; background-color: #DD4B39; } @@ -5637,6 +5800,7 @@ TN-34230 .width40per { width: 40%; } +/****** Mail Manager Ends ******/ .quickCreateContent .massEditTable textarea, .addCommentBlock .commentTextArea textarea { resize: vertical; @@ -5649,19 +5813,20 @@ TN-34230 .select2-container-multi .select2-choices { z-index: 1; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a:hover { +/****** Customer Portal Settings ******/ +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a:hover { background-color: #fff; } -.cp-nav-header-wrapper>li.disabled>a:hover { +.cp-nav-header-wrapper > li.disabled > a:hover { border: 0px ! important; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a { +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a { background-color: #fff; } -#portalModulesTable>li.portalModuleRow.active>a:hover { +#portalModulesTable > li.portalModuleRow.active > a:hover { background-color: #fff !important; } -#portalModulesTable>li.portalModuleRow.active>a:focus { +#portalModulesTable > li.portalModuleRow.active > a:focus { background-color: #fff !important; } .portal-dashboard { @@ -5760,7 +5925,7 @@ TN-34230 .portal-dashboard { border-bottom: 0px ! important; } -#portal-shortcutsContainer>ul { +#portal-shortcutsContainer > ul { border-bottom: 0px ! important; } .portalMenuHeader { @@ -5769,14 +5934,15 @@ TN-34230 } .cp-tabs .enabledModules { display: inline-block ! important; - margin-left: 4px !important; - margin-right: 4px !important; + margin-left: 4px!important; + margin-right: 4px!important; vertical-align: top; margin-top: 4px !important; } .portal-shortcut-list:hover { border-bottom: 3px solid transparent ! important; } +/****** Customer Portal Settings ******/ .label-radio label input[type="radio"] { position: relative; top: 2px; @@ -5788,6 +5954,9 @@ TN-34230 div.tooltip-inner { max-width: 400px; } +/******************************************* +********** Menu Editor ******** +********************************************/ .sortable.appContainer.ui-sortable { width: 160px; } @@ -5962,7 +6131,7 @@ div.tooltip-inner { width: 13px !important; margin-top: 8px; } -.detailview-table .input-group-addon+.inputElement.form-control, +.detailview-table .input-group-addon + .inputElement.form-control, .detailview-table .inputElement.form-control.input-medium { width: 100%; } @@ -6009,6 +6178,7 @@ div.tooltip-inner { float: left; margin-right: 5px; } +/***** Oursites Changes *****/ .portal-table .table-actions { width: inherit ! important; } @@ -6020,6 +6190,7 @@ div.tooltip-inner { padding: 10px 5px ! important; padding-left: 10px ! important; } +/***** Oursites Changes *****/ .ExtensionscontentsDiv .content-area { padding-left: 15px; padding-right: 15px; @@ -6033,14 +6204,14 @@ div.tooltip-inner { } .blockHeader { border-color: #F3F3F4 #F3F3F4 #cbcbcf; - border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); background-color: #474747; - background-image: -moz-linear-gradient(top,#555555,#333333); - background-image: -ms-linear-gradient(top,#555555,#333333); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#555555),to(#333333)); - background-image: -webkit-linear-gradient(top,#555555,#333333); - background-image: -o-linear-gradient(top,#555555,#333333); - background-image: linear-gradient(top,#555555,#333333); + background-image: -moz-linear-gradient(top, #555555, #333333); + background-image: -ms-linear-gradient(top, #555555, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); + background-image: -webkit-linear-gradient(top, #555555, #333333); + background-image: -o-linear-gradient(top, #555555, #333333); + background-image: linear-gradient(top, #555555, #333333); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333', GradientType=0); min-height: 30px; @@ -6133,8 +6304,8 @@ div.tooltip-inner { .markStar .starredStatus { display: none; } -.nav>li.addDashboardTab>a, -.nav>li.addDashboardTab>a:hover { +.nav > li.addDashboardTab > a, +.nav > li.addDashboardTab > a:hover { padding: 10px 15px; background: inherit; } @@ -6147,7 +6318,7 @@ div.tooltip-inner { height: 960px; width: 1260px; } -.nav-tabs>li { +.nav-tabs > li { border-bottom: 3px solid transparent; margin: 0 2px; } @@ -6225,16 +6396,14 @@ div.tooltip-inner { } .select2-container.select2-container-multi.select2, .editViewPageDiv .select2-container.select2-container-multi.select2 { - height: auto !important; + height: auto!important; } -.summaryViewFields .select2-container-multi.inputElement.form-control -.quickCreateContent .select2-container.select2-container-multi.select2, +.summaryViewFields .select2-container-multi.inputElement.form-control .quickCreateContent .select2-container.select2-container-multi.select2, #massEditContainer .select2-container.select2-container-multi.select2 { width: 150px; height: auto !important; } -.summaryViewFields .select2-container-multi.inputElement.form-control -.quickCreateContent .select2-container.select2-container-multi.select2 .input-save-wrap, +.summaryViewFields .select2-container-multi.inputElement.form-control .quickCreateContent .select2-container.select2-container-multi.select2 .input-save-wrap, #massEditContainer .select2-container.select2-container-multi.select2 .input-save-wrap { float: right; margin-right: 25px; @@ -6330,6 +6499,7 @@ a.cp-modules:hover { #RestrictionsLayout { background: #fafafb; margin-top: -92px; + /*to adjust with page padding top*/ } #RestrictionsLayout .vtImage { width: 22%; @@ -6363,6 +6533,7 @@ a.cp-modules:hover { .datepicker { z-index: 1100 !important; } +/*****RSS Changes****/ .feedListContainer .listview-table tr td:first-child, .listview-table tr th:first-child { width: inherit ! important; @@ -6370,12 +6541,14 @@ a.cp-modules:hover { .feedListContainer .listViewEntries .listViewEntryValue { max-width: inherit ! important; } -.ps-container>.ps-scrollbar-y-rail { +/*****RSS Changes****/ +.ps-container > .ps-scrollbar-y-rail { z-index: 1002; } #relationBlock .recordScroll { max-height: 150px; } +/*Start - List sidebar toggle*/ .essentials-toggle { background-color: white; font-weight: bold; @@ -6395,6 +6568,7 @@ a.cp-modules:hover { .essentials-toggle .fa-chevron-right { background-position: -460px -72px !important; } +/*End - List essentials toggle*/ .module-name-tooltip .qtip-content { font-size: 12px; padding: 3px; @@ -6403,23 +6577,6 @@ a.cp-modules:hover { .module-name-tooltip { padding: 3px; } -.main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, -.main-container-Reports .module-nav { - width: 0; -} -.main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, -.main-container-Reports .sidebar-essentials { - width: 283px; - left: 0; -} -.main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { - padding-left: 0px !important; -} .main-container-MailManager .module-nav { width: 230px; } @@ -6478,8 +6635,8 @@ li.select2-search-choice div { .popover ul.listmenu li { padding: 3px; } -.popover-content .disabled>a, -.popover .disabled>a { +.popover-content .disabled > a, +.popover .disabled > a { opacity: 0.5; cursor: not-allowed; } @@ -6490,6 +6647,7 @@ li.select2-search-choice div { -o-transform: rotate(180deg); transform: rotate(180deg); } +/*Start - List sidebar toggle*/ .essentials-toggle { background-color: white; font-weight: bold; @@ -6509,6 +6667,7 @@ li.select2-search-choice div { .essentials-toggle .fa-chevron-right { background-position: -460px -72px !important; } +/*End - List essentials toggle*/ .module-name-tooltip .qtip-content { font-size: 12px; padding: 3px; @@ -6520,25 +6679,20 @@ li.select2-search-choice div { border-left: 1px solid #DDDDDD; } .main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, .main-container-Reports .module-nav { width: 0; } .main-container-Documents .mod-switcher-container, -.main-container-RecycleBin .mod-switcher-container, .main-container-Reports .mod-switcher-container { width: 0; } .main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, .main-container-Reports .sidebar-essentials { width: 283px; left: 0; } .main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { +.main-container-Reports .full-width { padding-left: 0px !important; } .listViewPageDiv .ps-scrollbar-x-rail { @@ -6589,16 +6743,16 @@ li.select2-search-choice div { #reportDetails .pivot .toptitle.targetY0, #reportDetails .pivot .lefttitle.targetX0 { border-color: #F3F3F4 #F3F3F4 #cbcbcf; - border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); background-color: #474747; - background-image: -moz-linear-gradient(top,#555555,#333333); - background-image: -ms-linear-gradient(top,#555555,#333333); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#555555),to(#333333)); - background-image: -webkit-linear-gradient(top,#555555,#333333); - background-image: -o-linear-gradient(top,#555555,#333333); - background-image: linear-gradient(top,#555555,#333333); + background-image: -moz-linear-gradient(top, #555555, #333333); + background-image: -ms-linear-gradient(top, #555555, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); + background-image: -webkit-linear-gradient(top, #555555, #333333); + background-image: -o-linear-gradient(top, #555555, #333333); + background-image: linear-gradient(top, #555555, #333333); background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555',endColorstr='#333333',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333', GradientType=0); min-height: 30px; } #reportDetails .pivot th.toptitle.targetY0, @@ -6640,7 +6794,8 @@ li.select2-search-choice div { background: #FFFFFF; } .templateActions { - background: rgba(0,0,0,0.1); + background: rgba(0, 0, 0, 0.1); + /*padding: 4%;*/ bottom: 0; text-align: center; position: absolute; @@ -6648,6 +6803,9 @@ li.select2-search-choice div { zoom: 1; width: 100%; } +/*.templateActions i { + margin-right: 30px; +}*/ .thumbnails > li { float: left; height: 315px !important; @@ -6822,9 +6980,10 @@ a.btnReport:hover { left: 0px; } .bx-wrapper .bx-viewport { - width:99%; + width: 99%; left: 0px; background: #fff; + /*fix other elements on the page moving (on Chrome)*/ -webkit-transform: translatez(0); -moz-transform: translatez(0); -ms-transform: translatez(0); @@ -6882,7 +7041,7 @@ a.btnReport:hover { .filter-search-show { display: block !important; } -.emailTemplatesPopupTableContainer .listViewEntries .listViewEntryValue { +.emailTemplatesPopupTableContainer .listViewEntries .listViewEntryValue { max-width: 100%; min-width: 150px; } @@ -6917,12 +7076,15 @@ input:focus::-webkit-input-placeholder { input:focus:-moz-placeholder { color: transparent; } +/* FF 4-18 */ input:focus::-moz-placeholder { color: transparent; } +/* FF 19+ */ input:focus:-ms-input-placeholder { color: transparent; } +/* IE 10+ */ .global-actions .dropdown-menu:before { position: absolute; top: -7px; @@ -6931,7 +7093,7 @@ input:focus:-ms-input-placeholder { border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-left: 7px solid transparent; - border-bottom-color: rgba(0,0,0,0.2); + border-bottom-color: rgba(0, 0, 0, 0.2); content: ''; } .global-actions .dropdown-menu:after { @@ -7116,6 +7278,7 @@ input:focus:-ms-input-placeholder { text-align: center; } #OnBoardLayout #OnBoardPageContainer .crmGoals textarea::-webkit-input-placeholder { + /* WebKit browsers */ text-align: center; padding: 20%; font-size: 12px; @@ -7257,31 +7420,6 @@ input:focus:-ms-input-placeholder { .importServiceSelectionContainer .app-item { text-align: center; } -.fieldValue .value a { - color: #15c !important; -} -.editViewContents .fieldLabel { - min-width: 100px; - width: 20%; - word-break: break-all; -} -.editViewContents .fieldValue { - width:30%; -} -.editViewContents td.fieldValue[colspan="3"] { - width:80%; -} -.editViewContents textarea.textAreaElement { - width: 88%; -} -.editViewContents input[type="checkbox"] { - width: 15px; - height: 15px; -} -.editViewContents input[type="radio"] { - width: 15px; - height: 15px; -} #composeEmailContainer .modal-body .quickCreateContent, #QuickCreate .modal-body .quickCreateContent, #create .quickCreateContent { @@ -7293,4 +7431,90 @@ input:focus:-ms-input-placeholder { } .settingsgroup-panel .widgetContainer .menuItemLabel:hover .pinUnpinShortCut { display: inline-block; -} \ No newline at end of file +} +@-moz-document url-prefix() { + .duplicateHandlingContainer .tooltip-inner { + width: 550px; + max-width: 550px; + } +} +.duplicateHandlingContainer .tooltip-inner { + text-align: left !important; +} +.duplicateHandlingContainer .syncMessage { + margin-top: 5px !important; +} +.duplicateHandlingContainer .actionsList { + width: 230px !important; +} +.duplicationMessageContainer { + background-color: #f2dede !important; + color: #b94a48 !important; +} +.duplicationMessageContainer .duplicationMessageHeader { + margin-bottom: 8px; +} +.listViewRecordActions .quickView, +.listViewRecordActions .markStar, +.listViewRecordActions .markAsHeld, +.listViewRecordActions .holdFollowupOn { + margin-top: 4px; +} +.app-menu .module-icon .custom-module { + font-size: 14px; + border-radius: 4px; + color: #000; + background-color: #FFFFFF; + padding: 4px 10px 4px 5px !important; +} +.menu-item .custom-module { + font-family: 'OpenSans-Regular', sans-serif; + font-size: 12px; + border-radius: 4px; + padding: 2px; + color: #000; + background-color: #FFFFFF; +} +.modules-menu .custom-module { + color: #FFFFFF; + margin-left: 0px; + display: inline; + border: 1px solid #FFFFFF; + border-radius: 4px; + padding: 3px 4px 3px 2px !important; + font-weight: bold; +} +#quickCreateModules .custom-module, +.workflowListContainer .custom-module, +.dashBoardTabContents .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #FFFFFF; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #000000; + background-color: #FFFFFF; +} +.task-details .custom-module { + border-radius: 4px; + padding: 1px 4px; + color: #FFFFFF; + background-color: #777; +} +.related-tabs .custom-module, +#relatedmenuList .custom-module { + border-radius: 4px; + color: #FFFFFF; + background-color: #777; + padding: 5px 7px; + font-weight: bold; +} +.record-header .custom-module { + font-size: 30px; +} +.moduleIcon .custom-module { + font-weight: bold; +} diff --git a/layouts/v7/skins/inventory/style.css b/layouts/v7/skins/inventory/style.css index 5b177c0ca1cb6552111204ba45a53c8c5746ea5c..01d3bad98460bd8684b778ac820552b54b171287 100644 --- a/layouts/v7/skins/inventory/style.css +++ b/layouts/v7/skins/inventory/style.css @@ -1,7 +1,9 @@ @font-face { font-family: 'Oswald'; src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot'); - src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot?#iefix') format('embedded-opentype'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.woff') format('woff'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.ttf') format('truetype'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.svg#Oswald') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.svg#Oswald') format('svg'); + /* Legacy iOS */ font-weight: normal; font-style: normal; text-rendering: optimizeLegibility; @@ -15,27 +17,37 @@ a:active { @font-face { font-family: 'OpenSans-Regular'; src: url('../fonts/OpenSans/Regular/OpenSans-Regular.eot'); - src: url('../fonts/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'), url('../fonts/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), url('../fonts/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), url('../fonts/OpenSans/Regular/OpenSans-Regular.svg#svgFontName') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/OpenSans/Regular/OpenSans-Regular.svg#svgFontName') format('svg'); + /* Legacy iOS */ } @font-face { font-family: 'OpenSans-Semibold'; src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot'); - src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.ttf') format('truetype'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff2') format('woff2'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff') format('woff'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.svg#svgFontName') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.svg#svgFontName') format('svg'); + /* Legacy iOS */ } @font-face { font-family: 'ProximaNova-Regular'; - src: url('../fonts/ProximanovaWebfont/ProximaNova-Regular.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.woff') format('woff'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'); + src: url('../fonts/ProximanovaWebfont/ProximaNova-Regular.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/ProximanovaWebfont/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'); + /* IE6-IE8 */ + /* Safari, Android, iOS */ font-style: normal; font-weight: normal; text-rendering: optimizeLegibility; } @font-face { font-family: 'ProximaNova-Semibold'; - src: url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.woff') format('woff'), url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.eot?#iefix') format('embedded-opentype'); + src: url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.eot?#iefix') format('embedded-opentype'); + /* IE6-IE8 */ font-style: normal; font-weight: normal; text-rendering: optimizeLegibility; } +/**********************************/ +/************ Layout **************/ +/**********************************/ html { height: 100%; overflow-y: auto; @@ -102,6 +114,7 @@ body { @media (min-width: 992px) { .global-nav .logo-container { display: inline-block; + width: 150px; z-index: 2; padding-left: 6%; margin-top: 1px; @@ -113,11 +126,13 @@ body { position: absolute; width: 100%; height: 42px; + /* border-top:1px solid #ddd;*/ border-bottom: 1px solid #ddd; } .app-nav .module-action-bar .module-action-content { background: #FBFBFB; height: 41px; + /* border-bottom: 1px solid #eee;*/ } .app-nav .module-action-bar .module-action-content .navbar-right { margin-right: 0; @@ -163,7 +178,7 @@ body { padding-left: 0; } } -.btn-toolbar >.btn-group:first-child { +.btn-toolbar > .btn-group:first-child { margin-left: 5px; } .vt-notification { @@ -196,8 +211,12 @@ body { .vt-notification [data-notify="message"] { color: #eaeaea; } +/**********************************/ +/******** Navigation styles *******/ +/**********************************/ .company-logo { height: 40px; + width: 150px; margin: 0 0; display: inline-block; margin-left: 1px; @@ -214,10 +233,13 @@ body { font-size: 16px; position: relative; } +/*.module-action-bar .module-action-content #appnav{ + padding-top:5px; +}*/ .global-nav .navbar-nav > li div a { padding: 15px; } -.global-nav>ul { +.global-nav > ul { margin-right: 20px; } .global-nav .search-links-container { @@ -267,26 +289,28 @@ body { float: right; height: 42px; } - .module-action-bar .navbar-right .nav>li { + .module-action-bar .navbar-right .nav > li { display: inline-block; } - .module-action-bar .navbar-right .nav>li a { + .module-action-bar .navbar-right .nav > li a { padding: 0 10px; } .global-nav .logo-container { border-bottom: 0; + width: 150px; } } @media (max-width: 991px) { .global-nav .logo-container { border-bottom: 0; + width: 150px; } .notificationMessageHolder { padding-left: 45%; } } @media (min-width: 991px) { - .nav>li>a.qc-button { + .nav > li > a.qc-button { padding: 2px 3px; margin-top: 13px; margin-right: 15px; @@ -294,7 +318,7 @@ body { color: #fff; border-radius: 20px; } - .nav>li>a.qc-button span { + .nav > li > a.qc-button span { vertical-align: top; } } @@ -313,6 +337,7 @@ body { width: 100%; height: 100%; } +/** App Nav Styles */ .active-app-title { white-space: nowrap; font-family: Oswald, "OpenSans-Semibold", "Helvetica Neue", Helvetica, sans-serif; @@ -367,7 +392,9 @@ body { height: 42px; text-align: center; line-height: 42px; + /* background-color: #2c3b49;*/ color: #ffffff; + /*border-bottom: 1px solid #272B46;*/ } .app-nav .app-indicator-icon-container .app-indicator-icon { font-size: 24px; @@ -391,6 +418,9 @@ body { .app-PROJECT { background: #8E44AD !important; } +.app-TOOLS { + background: #EF5E29 !important; +} .app-DEFAULT, .app-DASHBOARD { background: #56ccc8 !important; @@ -479,16 +509,16 @@ body { right: -4px; } #overlayPageContent .mCSB_scrollTools, -#overlayPageContent .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonUp, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonDown, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonLeft, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonRight, .app-list .mCSB_scrollTools, +#overlayPageContent .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .app-list .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonUp, .app-list .mCSB_scrollTools .mCSB_buttonUp, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonDown, .app-list .mCSB_scrollTools .mCSB_buttonDown, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonLeft, .app-list .mCSB_scrollTools .mCSB_buttonLeft, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonRight, .app-list .mCSB_scrollTools .mCSB_buttonRight { -webkit-transition: none; transition: none; @@ -534,6 +564,9 @@ a.menu-item:hover { .app-item-color-PROJECT { border-left: 4px solid #8E44AD; } +.app-item-color-TOOLS { + border-left: 4px solid #EF5E29; +} .app-item .fa { font-size: 1.5em; -webkit-transition: all 0.25s ease-in; @@ -700,6 +733,7 @@ a.menu-item:hover { width: 0px; overflow: hidden; } +/* User Logout */ .logout-content { padding: 10px; width: 350px; @@ -754,6 +788,9 @@ a.menu-item:hover { .app-settings { background: #FFFFFF; } +/*************************************************/ +/******** View styles (List/Edit/Detail..) *******/ +/*************************************************/ .viewContent .content-area { padding-left: 50px; } @@ -780,6 +817,9 @@ a.menu-item:hover { opacity: 0.5; pointer-events: none; } +.input-group.percentage-input-group .form-control { + width: 100% !important; +} .bottomscroll-div, .topscroll-div { display: table; @@ -793,6 +833,9 @@ a.menu-item:hover { display: inline-block; word-break: break-word; } +.fieldValue .value a { + color: #15c !important; +} .modal-header button.close { padding: 0; color: #ffffff; @@ -865,6 +908,9 @@ input[type="password"].inputElement { padding-right: 20px; padding-left: 20px; } +/**********************************/ +/**** Side vertical Nav styles ****/ +/**********************************/ .module-nav { background: #fff; z-index: 1004; @@ -880,6 +926,9 @@ input[type="password"].inputElement { left: 0; transition: 0s width; } +.module-nav:hover { + /*z-index: 1001;*/ +} .modules-menu ul { list-style: none; margin-left: 0; @@ -914,7 +963,7 @@ input[type="password"].inputElement { float: left; font-size: 20px; } -.modules-menu ul li a>span { +.modules-menu ul li a > span { margin-left: 10px; vertical-align: middle; font-size: 13px; @@ -954,6 +1003,7 @@ input[type="password"].inputElement { width: 100%; left: 0%; } +/** Lists Menu in Side bar */ .module-filters .settings-sidebar, .module-filters .sidebar-container { padding: 0 12px; @@ -987,6 +1037,7 @@ input[type="password"].inputElement { .lists-menu-container hr { margin: 5px 0; } +/* mScrollbar customization for lists widget */ .lists-menu-container .menu-scroller .mCSB_scrollTools { width: 13px; } @@ -998,8 +1049,10 @@ input[type="password"].inputElement { .modules-menu .mCSB_scrollTools .mCSB_draggerContainer { left: 8px; } +/* Customization ends */ .lists-menu-container .list-menu-content .more-less-link { color: #fff; + /*text-decoration: none;*/ } .lists-menu-container .list-menu-content .sub-header { color: #ddd; @@ -1085,7 +1138,6 @@ input[type="password"].inputElement { background-color: #FFFFFF; border: 1px solid #DDDDDD; margin: 5px 0 10px; - color: #ccc; padding: 5px 10px; } .search-folders:focus, @@ -1104,9 +1156,11 @@ input[type="password"].inputElement { .common-links-container > div a { color: #fff; } +/*Search Container styles */ .search-container { min-height: 300px; position: absolute; + /*z-index: 1030;*/ width: 100%; top: 0; background: #FBFBFB; @@ -1125,6 +1179,7 @@ input[type="password"].inputElement { .footer p { margin: 5px 0; } +/*** Utilities ***/ .showElement { display: block !important; height: 100%; @@ -1247,11 +1302,11 @@ ul.unstyled { } .emptyRecordsDiv .emptyRecordsContent { display: inline-block; - font-size: 16px; left: 50%; margin-left: -25%; position: absolute; width: 50%; + font-size: 16px; } .textOverflowEllipsis { overflow: hidden; @@ -1276,6 +1331,9 @@ ul.unstyled { .removeNoFileChosen { color: transparent !important; } +/*********************************** +**********Button Styles********** +***********************************/ .module-buttons-container { float: right; margin-right: 10px; @@ -1297,6 +1355,7 @@ ul.unstyled { margin: 4px 2px; border-radius: 2px; border: 1px solid #ddd; + text-transform: uppercase; color: #666; background: #fff; } @@ -1317,6 +1376,9 @@ ul.unstyled { color: #FFFFFF !important; background: #5bc0de !important; } +/*********************************** +**********List View Styles********** +***********************************/ .fa.pull-left { margin-right: 0; } @@ -1351,7 +1413,7 @@ ul.unstyled { font-size: 20px; } .listview-pagination .disabled { - color: rgba(0,0,0,0.2); + color: rgba(0, 0, 0, 0.2); } .listview-pagination .disabled:hover { cursor: default; @@ -1379,6 +1441,8 @@ ul.unstyled { .listview-table { margin-bottom: 0; border-top: 0; + /* Horizontal scroll will not work if table layout Fixed */ + /* table-layout: fixed;*/ } .listview-table tr td, .listview-table tr th { @@ -1408,7 +1472,7 @@ ul.unstyled { width: 100%; } .listViewEntries .relatedListEntryValues .fieldValue .value, -.listViewEntries .listViewEntryValue .fieldValue .value { +.listViewEntries .listViewEntryValue .fieldValue .value { vertical-align: middle; width: 100%; display: inline-block; @@ -1423,7 +1487,7 @@ ul.unstyled { } .listview-table-norecords .table-actions, .listview-table .table-actions { - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -1489,13 +1553,13 @@ input[type=checkbox]:checked { vertical-align: middle; display: table-cell; } -.listview-table tr.searchRow th { +.listview-table tr.searchRow th { padding: 5px 3px; } -.listview-table tr.searchRow th.inline-search-btn { +.listview-table tr.searchRow th.inline-search-btn { padding: 3px 10px; } -.listview-table tr.searchRow th.inline-search-btn button { +.listview-table tr.searchRow th.inline-search-btn button { text-align: center; width: 85%; text-shadow: none; @@ -1523,6 +1587,18 @@ input[type=checkbox]:checked { background-color: #FFEEEE !important; background-image: none !important; } +/*.floatThead-wrapper .table-container{ + z-index: 0 !important; +}*/ +/* List view bottom fixed scroll */ +/*.bottom-fixed-scroll{ + height: 14px; + position: relative; + top: -15px; + overflow-x: auto; + overflow-y: hidden; + width: 100%; +}*/ .scroller-div { height: 1px; } @@ -1644,9 +1720,15 @@ input[type=checkbox]:checked { #listColumnFilterContainer .disabled i { color: #ccc; } +/********************************** +**********Detail View Styles********** +**********************************/ .detailViewButtoncontainer { padding-top: 5px; } +.detailViewButtoncontainer button.btn { + margin: 0px 1px !important; +} .detailview-header .recordBasicInfo > .info-row { margin-bottom: 4px; } @@ -1727,6 +1809,9 @@ th { margin-top: 3%; margin-right: 2%; } +.overlayDetailHeader button.btn { + margin: 0px 1px !important; +} .referencefield-wrapper .createReferenceRecord { float: left; margin-left: 5px; @@ -1966,10 +2051,10 @@ th { z-index: 1030; } .overlay-container-60 { - margin-left: 42px; + margin-left: 42px ; } .overlay-container-300 { - margin-left: 230px; + margin-left: 230px ; } .overlayPageContent { background: #FFFFFF; @@ -2092,6 +2177,9 @@ th { height: 26px; line-height: 25px; } +/********************************** +**********Summary View Styles****** +**********************************/ .summary-table { width: 100%; table-layout: fixed; @@ -2212,33 +2300,33 @@ th { opacity: 1; cursor: pointer; } -.details.row >form .social-media-toggle { +.details.row > form .social-media-toggle { position: absolute; right: -15px; display: inline-block; width: 500px; border-left: 0px; } -.details.row >form .social-media-widget { +.details.row > form .social-media-widget { border-left: 1px solid #ddd; border-bottom: 1px solid #ddd; height: 100%; background: white; } -.details.row >form div[class*="col-"].resizable-summary-view { +.details.row > form div[class*="col-"].resizable-summary-view { padding-left: 0; padding-right: 0px; } -.details.row >form>div[class*="col-"], -.details.row >form .resizable-summary-view div[class*="col-"] { +.details.row > form > div[class*="col-"], +.details.row > form .resizable-summary-view div[class*="col-"] { padding-right: 0; padding: 0px 5px; } -.details.row >form>div[class*="col-"]:first-child, -.details.row >form .left-block { +.details.row > form > div[class*="col-"]:first-child, +.details.row > form .left-block { padding-left: 0 !important; } -.details.row >form>div[class*="col-"]:last-child { +.details.row > form > div[class*="col-"]:last-child { padding-right: 0; } .summaryWidgetContainer .noContent { @@ -2251,6 +2339,9 @@ th { .caseReplyArea .nav > li { padding: 0 10px; } +/********************************** +**********Edit View Styles******* +**********************************/ .main-container .editViewModNavigator.module-nav, .editViewModNavigator .mod-switcher-container, .editViewModNavigator .modules-menu { @@ -2291,9 +2382,28 @@ th { width: 100%; } .editViewContents .input-group { - width: 229px; + width: 208px; float: left; } +.editViewContents .fieldLabel { + min-width: 100px; + width: 20%; + word-break: break-all; +} +.editViewContents .fieldValue { + width: 30%; +} +.editViewContents td.fieldValue[colspan="3"] { + width: 80%; +} +.editViewContents textarea.textAreaElement { + width: 88%; +} +.editViewContents input[type="checkbox"], +.editViewContents input[type="radio"] { + width: 15px; + height: 15px; +} .input-group.inputElement .input-group-addon { border: none; border-left: 1px solid #ddd; @@ -2370,6 +2480,9 @@ th { z-index: 1000; padding: 7px; } +/********************************** +**********Advance Search styles********** +**********************************/ .op0.fadeInx { opacity: 1; } @@ -2442,7 +2555,11 @@ th { } .btn + input { margin-left: 5px; + /* margin-top : 3px;*/ } +/********************************** +**********Extension Store Styles********** +**********************************/ .extensionstore .app-trigger { width: 98%; } @@ -2473,6 +2590,9 @@ th { .extensionContents .extensionError { color: #F10404; } +/********************************** +**********Extension Store Nav Bar********** +**********************************/ .tabbable-line > .nav-tabs { border: none; margin: 0px; @@ -2541,6 +2661,9 @@ th { .extensionContents .listview-table { width: 100%; } +/******************************************* +******Detail View related list styles******* +********************************************/ .relatedContents .listViewContentHeaderValues:hover { text-decoration: none; color: #333; @@ -2598,6 +2721,9 @@ th { .relatedViewActions .btn-group { margin-right: 15px; } +/******************************************* +****************** Modal ******************* +********************************************/ .modal-header { padding: 5px 15px; background: #596875; @@ -2625,6 +2751,7 @@ th { width: 100%; float: left; background: #596875; + /* height: 100%;*/ } .settings-menu { display: inline-block; @@ -2641,7 +2768,7 @@ th { cursor: n-resize; } .settings-menu-items { - box-shadow: 0 1px 1px rgba(0,0,0,0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); margin-bottom: 10px; text-align: justify; } @@ -2770,6 +2897,7 @@ th { vertical-align: middle; color: #3399ff; } +/* .squaredFour */ .squaredFour { width: 20px; position: relative; @@ -2783,9 +2911,9 @@ th { top: 0; left: 0; background: #fcfff4; - background: linear-gradient(top,#fcfff4 0%,#dfe5d7 40%,#b3bead 100%); + background: linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); border-radius: 4px; - box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); + box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); } .squaredFour label:after { content: ''; @@ -2813,13 +2941,16 @@ th { .importBlockContainer { color: #596875; } +/******************************************* +************* Social Buttons *************** +********************************************/ .btn-block + .btn-block { margin-top: 5px; } .btn-google-plus { color: #FFFFFF !important; background-color: #DD4B39; - border-color: rgba(0,0,0,0.2); + border-color: rgba(0, 0, 0, 0.2); } .btn-social { position: relative; @@ -2838,15 +2969,18 @@ th { line-height: 34px; font-size: 1.6em; text-align: center; - border-right: 1px solid rgba(0,0,0,0.2); + border-right: 1px solid rgba(0, 0, 0, 0.2); } +/******************************************* +************* Updates Timeline *************** +********************************************/ .recentActivitiesContainer .history { margin: 0 auto; padding: 20px 20px 1px; max-width: 100%; overflow-x: visible; - -webkit-transition: opacity .2s ease-out; - transition: opacity .2s ease-out; + -webkit-transition: opacity 0.2s ease-out; + transition: opacity 0.2s ease-out; } .updates_timeline { padding-top: 20px; @@ -2855,6 +2989,7 @@ th { padding: 0; list-style: none; } +/* The line */ .updates_timeline:before { content: ''; position: absolute; @@ -2873,6 +3008,7 @@ th { min-height: 40px; z-index: 2; } +/* Left Content(Time) */ .updates_timeline > li .update_time { position: absolute; margin: 0; @@ -2884,6 +3020,7 @@ th { font-size: 15px; font-style: italic; } +/* Right content(Update info) */ .updates_timeline > li .update_info { padding: 10px 10px 1px; display: block; @@ -2892,10 +3029,11 @@ th { position: relative; top: -45px; } -.updates_timeline > li .update_info >h3 { +.updates_timeline > li .update_info > h3 { font-size: 1.1em; margin-left: -3%; } +/* The icons */ .updates_timeline > li .update_icon { position: relative; border-radius: 50%; @@ -2908,6 +3046,7 @@ th { color: #fff; line-height: 35px; } +/* More Button */ .updates_timeline #more_button .update_icon { position: relative; border-radius: 0; @@ -3015,6 +3154,9 @@ th { vertical-align: super; font-size: 13px; } +/******************************************* +************* Task Management ************** +********************************************/ #taskManagementContainer .data-body { margin-bottom: 50px; } @@ -3077,15 +3219,16 @@ th { #taskManagementContainer .other-details { color: #979797; } +/*overwriting jquery ui css*/ .ui-menu { z-index: 10000; } #taskManagementContainer button.active { background: #3B83F7; color: white; - text-shadow: 0 1px rgba(0,0,0,0.3); + text-shadow: 0 1px rgba(0, 0, 0, 0.3); border: 1px solid #135fd7; - box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); } .taskSubject { width: 99%; @@ -3093,6 +3236,9 @@ th { #taskManagementContainer .mCustomScrollbar .mCSB_inside > .mCSB_container { margin-right: 13px; } +/******************************************* +************* Settings Page ************** +********************************************/ .settingsPageDiv.content-area { margin-right: 0; } @@ -3126,6 +3272,9 @@ th { .settingsgroup-accordion a i { margin-right: 5px; } +.settingsgroup-accordion a span { + text-transform: uppercase; +} .settingsgroup { background: #2C3B49; height: 100%; @@ -3282,35 +3431,59 @@ th { } .mini-slider-control[data-value="0"] .ui-slider-handle { background: #7d7e7d; - background: -moz-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#7d7e7d),color-stop(100%,#0e0e0e)); - background: -webkit-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -o-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -ms-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: linear-gradient(to bottom,#7d7e7d 0%,#0e0e0e 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d',endColorstr='#0e0e0e',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #7d7e7d), color-stop(100%, #0e0e0e)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #7d7e7d 0%, #0e0e0e 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d', endColorstr='#0e0e0e', GradientType=0); + /* IE6-9 */ margin-left: 0px; } .mini-slider-control[data-value="1"] .ui-slider-handle { background: #ffb76b; - background: -moz-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#ffb76b),color-stop(0%,#ffa73d),color-stop(49%,#ff7c00),color-stop(100%,#ff7f04)); - background: -webkit-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -o-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -ms-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: linear-gradient(to bottom,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb76b',endColorstr='#ff7f04',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffb76b), color-stop(0%, #ffa73d), color-stop(49%, #ff7c00), color-stop(100%, #ff7f04)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb76b', endColorstr='#ff7f04', GradientType=0); + /* IE6-9 */ margin-left: -6px; } .mini-slider-control[data-value="2"] .ui-slider-handle { background: #bfd255; - background: -moz-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#bfd255),color-stop(79%,#8eb92a),color-stop(100%,#72aa00),color-stop(100%,#9ecb2d)); - background: -webkit-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -o-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -ms-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: linear-gradient(to bottom,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bfd255',endColorstr='#9ecb2d',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #bfd255), color-stop(79%, #8eb92a), color-stop(100%, #72aa00), color-stop(100%, #9ecb2d)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bfd255', endColorstr='#9ecb2d', GradientType=0); + /* IE6-9 */ margin-left: -13px; } .ModulemanagerSettings .moduleblock .hiden { @@ -3335,10 +3508,13 @@ th { th { padding: 6px; } +/******************************************* +********** CustomerPortal styles start ******** +********************************************/ .cp-tabs .enabledModules { display: inline-block ! important; - margin-left: 4px !important; - margin-right: 4px !important; + margin-left: 4px!important; + margin-right: 4px!important; vertical-align: top; } .drag-portal-module { @@ -3445,7 +3621,7 @@ th { margin-left: 5px; } .portal-field-delete { - margin-left: 45px !important; + margin-left: 45px!important; } .portalModuleRow { border-left: 4px solid #F1C40F !important; @@ -3462,7 +3638,7 @@ th { content: "*"; color: red; } -.nav-tabs .cp-modules > .active >a, +.nav-tabs .cp-modules > .active > a, .nav-tabs .cp-modules > .active > a:hover { border: 0px !important; border-top-right-radius: 0px; @@ -3624,7 +3800,7 @@ th { display: inline-block; } .quickPreview .updates_timeline:before { - background: #e6e6e6; + background: #e5e5e5; width: 2px; margin-left: -1%; } @@ -3639,13 +3815,16 @@ th { .quickPreviewComments .recentComments .commentDetails .comment { line-height: 15px; } -.quickPreviewComments .summaryWidgetContainer { +.quickPreviewComments .summaryWidgetContainer { border: 0; padding: 0; } .quickPreview .recentActivitiesContainer .history { padding: 0; } +/******************************************* +********** Calendar view styles ************ +********************************************/ .calendar-sidebar { width: 100% !important; } @@ -3802,6 +3981,11 @@ th { display: inline-block; text-align: center; } +/******************************************* +********** Calendar view styles end ******** + +********** Documents Module styles ********* +********************************************/ .dragdrop-dotted { border: 2px dashed #C0C0C0; min-width: 300px; @@ -3861,13 +4045,16 @@ tr.file > td.fileOwnerData { width: 100px; white-space: pre-wrap; } +/******************************************* +********** Documents Module styles end ***** +********************************************/ .engagementsContainer .engagements_content { padding-top: 15px; } .summaryWidgetContainer .engagementsContainer table { width: inherit; } -.engagements_content table thead>tr:first-child { +.engagements_content table thead > tr:first-child { border: 1px solid #CCC; background-color: #F5F5F5; } @@ -3918,6 +4105,9 @@ tr.file > td.fileOwnerData { font-size: 15px; padding: 1% 0; } +/******************************************* +********** Mailroom view styles start ******** +********************************************/ .mailroomBanner { margin: 23px 0; height: 215px; @@ -4126,6 +4316,7 @@ tr.file > td.fileOwnerData { margin-left: 0; } .mentionMessages .mention_follow_up { + /*//load this color from variable.less*/ background-color: green; } .modelContainer .modal-content { @@ -4274,6 +4465,7 @@ form[name="notification_settings"] .select2-choice { margin-left: 0; } .mentionMessages .mention_follow_up { + /*//load this color from variable.less*/ background-color: green; } .modal-content .mention_followup .row { @@ -4305,6 +4497,9 @@ form[name="notification_settings"] .select2-choice { .mentionMessageHeader .MultiFile-remove { color: #FFFFFF; } +/******************************************* +********** Mailroom view styles end ******** +********************************************/ .detailview-header { margin-bottom: 10px; } @@ -4320,6 +4515,7 @@ form[name="notification_settings"] .select2-choice { margin: 0px 10px; text-decoration: underline !important; color: #3498DB; + /*font-size : 12px;*/ } .tag { display: inline-block; @@ -4403,11 +4599,11 @@ form[name="notification_settings"] .select2-choice { border: 1px solid #dcdcdc; } #tagCloud .tag { - color: #5ea9dd; padding: 0px; background-color: #FFFFFF; border-color: #FFFFFF; border-radius: 0px; + color: #5ea9dd; margin: 3px; } #tagCloud .tag[data-type="public"] { @@ -4418,6 +4614,9 @@ form[name="notification_settings"] .select2-choice { max-width: 80px; vertical-align: bottom; } +/******************************************* +********** Groups view styles ******** +********************************************/ #s2id_memberList li > div, .groupMembersColors li > div { margin-left: 10px; @@ -4492,6 +4691,12 @@ form[name="notification_settings"] .select2-choice { margin: 0px; color: #444444; } +/******************************************* +********** Groups view styles ends******** +********************************************/ +/******************************************* +********** Picklist Css ******** +********************************************/ .pickListValue { background-color: #FFFFFF; } @@ -4506,6 +4711,12 @@ form[name="notification_settings"] .select2-choice { padding: 2px 1px !important; line-height: 15px; } +/******************************************* +************* Dashboard Styles ************* +********************************************/ +li.dashboardWidget { + overflow: hidden; +} .dashboardWidgetHeader .title { padding-bottom: 10px; font-size: 15px; @@ -4526,9 +4737,6 @@ form[name="notification_settings"] .select2-choice { .dashBoardContainer .tabContainer .tab-content { margin-top: 10px; } -.dashBoardContainer .dashBoardTabContents ul { - margin: 0; -} .dashBoardContainer .dashBoardTabContents ul li { border: 3px solid #E2E2E4; box-shadow: 1px; @@ -4595,7 +4803,7 @@ form[name="notification_settings"] .select2-choice { display: inline-block; opacity: 1; } -.dashBoardContainer .tabContainer li a .deleteTab:hover { +.dashBoardContainer .tabContainer li a .deleteTab:hover { cursor: pointer; } #minilistWizardContainer .fieldLabel { @@ -4632,6 +4840,9 @@ form[name="notification_settings"] .select2-choice { resize: none; width: 100%; } +/******************************************* +********** Picklist DependencyGraph ******** +********************************************/ #dependencyGraph .tableHeading { text-align: center; padding-top: 30px; @@ -4657,6 +4868,9 @@ form[name="notification_settings"] .select2-choice { #dependencyGraph .dependencyMapping .pickListDependencyTable .selectedCell { background: #a9cbf5; } +/******************************************* +********** Rewriting select2 for consistency******** +********************************************/ .select2-container .select2-choice { height: 29px; border-radius: 1px; @@ -4750,6 +4964,7 @@ hr { position: fixed; bottom: 0; background: #EFEFEF; + /*width:100%;*/ border-left: 42px solid #2c3b49; height: 60px; left: 0; @@ -4768,7 +4983,6 @@ hr { } .settingsPageDiv .modal-overlay-footer { margin-left: 230px; - border-left: 0px solid; } .settingsOverlayContainer .modal-overlay-footer { margin: 0; @@ -4791,14 +5005,14 @@ hr { vertical-align: middle; margin-top: 6px; } -.list-menu-content .pull-right>.dropdown-menu { +.list-menu-content .pull-right > .dropdown-menu { left: -126px; position: relative; } -.dropdown-menu>li>a { +.dropdown-menu > li > a { padding: 4px 6px; } -.dropdown-menu>li>a span i { +.dropdown-menu > li > a span i { font-size: 15px; vertical-align: middle; } @@ -4806,11 +5020,11 @@ hr { max-height: 300px; padding-left: 0; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container { margin-right: 0; padding: 4px 6px; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container>li>a { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container > li > a { display: block; padding: 3px 5px; clear: both; @@ -4819,7 +5033,7 @@ hr { color: #333; white-space: nowrap; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container span i { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container span i { font-size: 15px; vertical-align: middle; } @@ -4842,16 +5056,16 @@ hr { .calendar-sidebar .calendar-sidebar-tabs.padding { padding-left: 20px !important; } -.related-tabs.row .nav>li { +.related-tabs.row .nav > li { padding: 0 10px; margin: 0 2px; } -.massEditTabs.nav>li { +.massEditTabs.nav > li { padding: 0 10px; margin: 0 4px; } -.row .nav>li>a, -.row .nav>li>a:hover { +.row .nav > li > a, +.row .nav > li > a:hover { padding: 10px 3px; border: none; vertical-align: bottom; @@ -4861,38 +5075,39 @@ hr { -webkit-box-sizing: border-box; -o-box-sizing: border-box; } -.row .nav>li>a:hover { +.row .nav > li > a:hover { border-bottom-color: #555; } -TN-34230 - -.row .nav>li>a:hover { +/*.row ul{ + padding:0; +}*/ +TN-34230 .row .nav > li > a:hover { border-bottom-color: #555; background: none; } .row ul li:first-child { margin-left: 0; } -.related-tabs .nav-tabs>li.active, -.related-tabs .nav-tabs>li:hover, -.related-tabs .nav-tabs>li.active:focus, -.dashBoardContainer .nav-tabs>li.active, -.dashBoardContainer .nav-tabs>li:hover, -.dashBoardContainer .nav-tabs>li.active:focus, -.contents.tabbable .nav-tabs>li.active, -.contents.tabbable .nav-tabs>li:hover, -.contents.tabbable .nav-tabs>li.active:focus { +.related-tabs .nav-tabs > li.active, +.dashBoardContainer .nav-tabs > li.active, +.contents.tabbable .nav-tabs > li.active, +.related-tabs .nav-tabs > li:hover, +.dashBoardContainer .nav-tabs > li:hover, +.contents.tabbable .nav-tabs > li:hover, +.related-tabs .nav-tabs > li.active:focus, +.dashBoardContainer .nav-tabs > li.active:focus, +.contents.tabbable .nav-tabs > li.active:focus { border: none; border-bottom: 3px solid #555; } -.nav-tabs>li.active>a, -.nav-tabs>li.active>a:hover, -.nav-tabs>li.active>a:focus, -.nav-tabs>li>a { +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus, +.nav-tabs > li > a { border: 0; } -.nav>li>a:hover, -.nav>li>a:focus { +.nav > li > a:hover, +.nav > li > a:focus { background-color: #FFFFFF; } .fa-pencil, @@ -4902,6 +5117,9 @@ TN-34230 .commentAttachmentName { font-size: 11px; } +/******************************************* +********** Layout Editor ******** +********************************************/ .marginBottom10px { margin-bottom: 10px; } @@ -4924,6 +5142,7 @@ TN-34230 } .zeroOpacity { opacity: 0; + /*for IE*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } @@ -4950,10 +5169,12 @@ TN-34230 .layoutContent .opacity:hover .actions { opacity: 1; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + /*for IE*/ filter: alpha(opacity=100); } .layoutContent .fieldPropertyContainer:hover .actions { opacity: 1; + /*for IE*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=100); } @@ -4976,6 +5197,7 @@ TN-34230 .relatedTabModulesList .addButton { border-radius: 2px; border: 1px solid #DDDDDD; + text-transform: uppercase; color: #666666; background: #FFFFFF; } @@ -5049,6 +5271,9 @@ TN-34230 margin-left: 5px; word-break: break-all; } +/******************************************* +************** Tax Management ************** +********************************************/ #TaxCalculationsContainer .table tr:first-child, .taxModalContainer #editTax .table tr:first-child { border-bottom: 1px solid #ccc; @@ -5088,6 +5313,9 @@ TN-34230 max-height: 500px; overflow-y: auto; } +/******************************************* +********** Workflows ******** +********************************************/ #workflow_edit .editViewBody { overflow: inherit; } @@ -5097,7 +5325,7 @@ TN-34230 } .timePicker { width: 9.5em !important; - z-index: 1101 !important; + z-index: 1070 !important; } .weekDaySelect .ui-state-default { background: inherit; @@ -5135,75 +5363,6 @@ TN-34230 .module-filters.active { background: #F7F7F7; } -.payment-type-selection { - margin-bottom: 30px; -} -.payment-type-selection img { - vertical-align: middle; -} -.currplan { - padding: 10px 20px; - background-color: #f3f3f3; - border: 1px solid #eee; - border-radius: 3px; -} -.currplan div { - display: inline-block; - font-size: 16px; -} -.planName { - display: inline-block; - color: #fff; - padding: 20px; - margin: 10px 20px; - font-size: 24px; - border-radius: 2px; -} -.plan-heading { - min-height: 168px; -} -.plan-title { - color: #fff; - font-size: 20px; - padding: 13px 0; -} -#sales_plan { - background: #3FC380; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#salespremium_plan { - background: #00B16A; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#support_plan { - background: #2980B9; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#supportpremium_plan { - background: #2980B9; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#ultimate_plan, -#exclusive_plan { - background: #F39C12; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#contact_plan { - background: #FF5959; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} .workflowListContainer .select2-container .select2-choice { height: 36px; } @@ -5218,6 +5377,7 @@ TN-34230 .contactAdd { border: 1px solid #eee; padding: 20px; + /*min-height: 310px !important;*/ } #subDetails table td { padding: 7px 10px; @@ -5340,9 +5500,9 @@ TN-34230 .productBundles { padding-left: 20px; } -.nav .open>a, -.nav .open>a:hover, -.nav .open>a:focus { +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { color: #000000; background-color: #FFFFFF; } @@ -5363,6 +5523,9 @@ TN-34230 width: 100%; overflow-x: auto; } +/******************************************* +*************** Mail Manager *************** +********************************************/ #mm_searchButton { height: 28px; background-color: #FFFFFF; @@ -5418,8 +5581,8 @@ TN-34230 padding: 1px 5px; border-radius: 3px; text-align: center; - text-shadow: 0 1px rgba(0,0,0,0.1); - background-image: -webkit-linear-gradient(top,#DD4B39 0,#D14836 100%); + text-shadow: 0 1px rgba(0, 0, 0, 0.1); + background-image: -webkit-linear-gradient(top, #DD4B39 0, #D14836 100%); border: 1px solid #C6322A; background-color: #DD4B39; } @@ -5637,6 +5800,7 @@ TN-34230 .width40per { width: 40%; } +/****** Mail Manager Ends ******/ .quickCreateContent .massEditTable textarea, .addCommentBlock .commentTextArea textarea { resize: vertical; @@ -5649,19 +5813,20 @@ TN-34230 .select2-container-multi .select2-choices { z-index: 1; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a:hover { +/****** Customer Portal Settings ******/ +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a:hover { background-color: #fff; } -.cp-nav-header-wrapper>li.disabled>a:hover { +.cp-nav-header-wrapper > li.disabled > a:hover { border: 0px ! important; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a { +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a { background-color: #fff; } -#portalModulesTable>li.portalModuleRow.active>a:hover { +#portalModulesTable > li.portalModuleRow.active > a:hover { background-color: #fff !important; } -#portalModulesTable>li.portalModuleRow.active>a:focus { +#portalModulesTable > li.portalModuleRow.active > a:focus { background-color: #fff !important; } .portal-dashboard { @@ -5760,7 +5925,7 @@ TN-34230 .portal-dashboard { border-bottom: 0px ! important; } -#portal-shortcutsContainer>ul { +#portal-shortcutsContainer > ul { border-bottom: 0px ! important; } .portalMenuHeader { @@ -5769,14 +5934,15 @@ TN-34230 } .cp-tabs .enabledModules { display: inline-block ! important; - margin-left: 4px !important; - margin-right: 4px !important; + margin-left: 4px!important; + margin-right: 4px!important; vertical-align: top; margin-top: 4px !important; } .portal-shortcut-list:hover { border-bottom: 3px solid transparent ! important; } +/****** Customer Portal Settings ******/ .label-radio label input[type="radio"] { position: relative; top: 2px; @@ -5788,6 +5954,9 @@ TN-34230 div.tooltip-inner { max-width: 400px; } +/******************************************* +********** Menu Editor ******** +********************************************/ .sortable.appContainer.ui-sortable { width: 160px; } @@ -5962,7 +6131,7 @@ div.tooltip-inner { width: 13px !important; margin-top: 8px; } -.detailview-table .input-group-addon+.inputElement.form-control, +.detailview-table .input-group-addon + .inputElement.form-control, .detailview-table .inputElement.form-control.input-medium { width: 100%; } @@ -6009,6 +6178,7 @@ div.tooltip-inner { float: left; margin-right: 5px; } +/***** Oursites Changes *****/ .portal-table .table-actions { width: inherit ! important; } @@ -6020,6 +6190,7 @@ div.tooltip-inner { padding: 10px 5px ! important; padding-left: 10px ! important; } +/***** Oursites Changes *****/ .ExtensionscontentsDiv .content-area { padding-left: 15px; padding-right: 15px; @@ -6033,14 +6204,14 @@ div.tooltip-inner { } .blockHeader { border-color: #F3F3F4 #F3F3F4 #cbcbcf; - border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); background-color: #474747; - background-image: -moz-linear-gradient(top,#555555,#333333); - background-image: -ms-linear-gradient(top,#555555,#333333); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#555555),to(#333333)); - background-image: -webkit-linear-gradient(top,#555555,#333333); - background-image: -o-linear-gradient(top,#555555,#333333); - background-image: linear-gradient(top,#555555,#333333); + background-image: -moz-linear-gradient(top, #555555, #333333); + background-image: -ms-linear-gradient(top, #555555, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); + background-image: -webkit-linear-gradient(top, #555555, #333333); + background-image: -o-linear-gradient(top, #555555, #333333); + background-image: linear-gradient(top, #555555, #333333); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333', GradientType=0); min-height: 30px; @@ -6133,8 +6304,8 @@ div.tooltip-inner { .markStar .starredStatus { display: none; } -.nav>li.addDashboardTab>a, -.nav>li.addDashboardTab>a:hover { +.nav > li.addDashboardTab > a, +.nav > li.addDashboardTab > a:hover { padding: 10px 15px; background: inherit; } @@ -6147,7 +6318,7 @@ div.tooltip-inner { height: 960px; width: 1260px; } -.nav-tabs>li { +.nav-tabs > li { border-bottom: 3px solid transparent; margin: 0 2px; } @@ -6225,16 +6396,14 @@ div.tooltip-inner { } .select2-container.select2-container-multi.select2, .editViewPageDiv .select2-container.select2-container-multi.select2 { - height: auto !important; + height: auto!important; } -.summaryViewFields .select2-container-multi.inputElement.form-control -.quickCreateContent .select2-container.select2-container-multi.select2, +.summaryViewFields .select2-container-multi.inputElement.form-control .quickCreateContent .select2-container.select2-container-multi.select2, #massEditContainer .select2-container.select2-container-multi.select2 { width: 150px; height: auto !important; } -.summaryViewFields .select2-container-multi.inputElement.form-control -.quickCreateContent .select2-container.select2-container-multi.select2 .input-save-wrap, +.summaryViewFields .select2-container-multi.inputElement.form-control .quickCreateContent .select2-container.select2-container-multi.select2 .input-save-wrap, #massEditContainer .select2-container.select2-container-multi.select2 .input-save-wrap { float: right; margin-right: 25px; @@ -6330,6 +6499,7 @@ a.cp-modules:hover { #RestrictionsLayout { background: #fafafb; margin-top: -92px; + /*to adjust with page padding top*/ } #RestrictionsLayout .vtImage { width: 22%; @@ -6363,6 +6533,7 @@ a.cp-modules:hover { .datepicker { z-index: 1100 !important; } +/*****RSS Changes****/ .feedListContainer .listview-table tr td:first-child, .listview-table tr th:first-child { width: inherit ! important; @@ -6370,12 +6541,14 @@ a.cp-modules:hover { .feedListContainer .listViewEntries .listViewEntryValue { max-width: inherit ! important; } -.ps-container>.ps-scrollbar-y-rail { +/*****RSS Changes****/ +.ps-container > .ps-scrollbar-y-rail { z-index: 1002; } #relationBlock .recordScroll { max-height: 150px; } +/*Start - List sidebar toggle*/ .essentials-toggle { background-color: white; font-weight: bold; @@ -6395,6 +6568,7 @@ a.cp-modules:hover { .essentials-toggle .fa-chevron-right { background-position: -460px -72px !important; } +/*End - List essentials toggle*/ .module-name-tooltip .qtip-content { font-size: 12px; padding: 3px; @@ -6403,23 +6577,6 @@ a.cp-modules:hover { .module-name-tooltip { padding: 3px; } -.main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, -.main-container-Reports .module-nav { - width: 0; -} -.main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, -.main-container-Reports .sidebar-essentials { - width: 283px; - left: 0; -} -.main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { - padding-left: 0px !important; -} .main-container-MailManager .module-nav { width: 230px; } @@ -6478,8 +6635,8 @@ li.select2-search-choice div { .popover ul.listmenu li { padding: 3px; } -.popover-content .disabled>a, -.popover .disabled>a { +.popover-content .disabled > a, +.popover .disabled > a { opacity: 0.5; cursor: not-allowed; } @@ -6490,6 +6647,7 @@ li.select2-search-choice div { -o-transform: rotate(180deg); transform: rotate(180deg); } +/*Start - List sidebar toggle*/ .essentials-toggle { background-color: white; font-weight: bold; @@ -6509,6 +6667,7 @@ li.select2-search-choice div { .essentials-toggle .fa-chevron-right { background-position: -460px -72px !important; } +/*End - List essentials toggle*/ .module-name-tooltip .qtip-content { font-size: 12px; padding: 3px; @@ -6520,25 +6679,20 @@ li.select2-search-choice div { border-left: 1px solid #DDDDDD; } .main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, .main-container-Reports .module-nav { width: 0; } .main-container-Documents .mod-switcher-container, -.main-container-RecycleBin .mod-switcher-container, .main-container-Reports .mod-switcher-container { width: 0; } .main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, .main-container-Reports .sidebar-essentials { width: 283px; left: 0; } .main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { +.main-container-Reports .full-width { padding-left: 0px !important; } .listViewPageDiv .ps-scrollbar-x-rail { @@ -6589,16 +6743,16 @@ li.select2-search-choice div { #reportDetails .pivot .toptitle.targetY0, #reportDetails .pivot .lefttitle.targetX0 { border-color: #F3F3F4 #F3F3F4 #cbcbcf; - border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); background-color: #474747; - background-image: -moz-linear-gradient(top,#555555,#333333); - background-image: -ms-linear-gradient(top,#555555,#333333); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#555555),to(#333333)); - background-image: -webkit-linear-gradient(top,#555555,#333333); - background-image: -o-linear-gradient(top,#555555,#333333); - background-image: linear-gradient(top,#555555,#333333); + background-image: -moz-linear-gradient(top, #555555, #333333); + background-image: -ms-linear-gradient(top, #555555, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); + background-image: -webkit-linear-gradient(top, #555555, #333333); + background-image: -o-linear-gradient(top, #555555, #333333); + background-image: linear-gradient(top, #555555, #333333); background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555',endColorstr='#333333',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333', GradientType=0); min-height: 30px; } #reportDetails .pivot th.toptitle.targetY0, @@ -6640,7 +6794,8 @@ li.select2-search-choice div { background: #FFFFFF; } .templateActions { - background: rgba(0,0,0,0.1); + background: rgba(0, 0, 0, 0.1); + /*padding: 4%;*/ bottom: 0; text-align: center; position: absolute; @@ -6648,6 +6803,9 @@ li.select2-search-choice div { zoom: 1; width: 100%; } +/*.templateActions i { + margin-right: 30px; +}*/ .thumbnails > li { float: left; height: 315px !important; @@ -6822,9 +6980,10 @@ a.btnReport:hover { left: 0px; } .bx-wrapper .bx-viewport { - width:99%; + width: 99%; left: 0px; background: #fff; + /*fix other elements on the page moving (on Chrome)*/ -webkit-transform: translatez(0); -moz-transform: translatez(0); -ms-transform: translatez(0); @@ -6882,7 +7041,7 @@ a.btnReport:hover { .filter-search-show { display: block !important; } -.emailTemplatesPopupTableContainer .listViewEntries .listViewEntryValue { +.emailTemplatesPopupTableContainer .listViewEntries .listViewEntryValue { max-width: 100%; min-width: 150px; } @@ -6917,12 +7076,15 @@ input:focus::-webkit-input-placeholder { input:focus:-moz-placeholder { color: transparent; } +/* FF 4-18 */ input:focus::-moz-placeholder { color: transparent; } +/* FF 19+ */ input:focus:-ms-input-placeholder { color: transparent; } +/* IE 10+ */ .global-actions .dropdown-menu:before { position: absolute; top: -7px; @@ -6931,7 +7093,7 @@ input:focus:-ms-input-placeholder { border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-left: 7px solid transparent; - border-bottom-color: rgba(0,0,0,0.2); + border-bottom-color: rgba(0, 0, 0, 0.2); content: ''; } .global-actions .dropdown-menu:after { @@ -7116,6 +7278,7 @@ input:focus:-ms-input-placeholder { text-align: center; } #OnBoardLayout #OnBoardPageContainer .crmGoals textarea::-webkit-input-placeholder { + /* WebKit browsers */ text-align: center; padding: 20%; font-size: 12px; @@ -7257,35 +7420,6 @@ input:focus:-ms-input-placeholder { .importServiceSelectionContainer .app-item { text-align: center; } -.modules-menu ul li.active a { - border-left: 3px solid #F1C40F; - opacity: 1; -} -.fieldValue .value a { - color: #15c !important; -} -.editViewContents .fieldLabel { - min-width: 100px; - width: 20%; - word-break: break-all; -} -.editViewContents .fieldValue { - width:30%; -} -.editViewContents td.fieldValue[colspan="3"] { - width:80%; -} -.editViewContents textarea.textAreaElement { - width: 88%; -} -.editViewContents input[type="checkbox"] { - width: 15px; - height: 15px; -} -.editViewContents input[type="radio"] { - width: 15px; - height: 15px; -} #composeEmailContainer .modal-body .quickCreateContent, #QuickCreate .modal-body .quickCreateContent, #create .quickCreateContent { @@ -7297,4 +7431,94 @@ input:focus:-ms-input-placeholder { } .settingsgroup-panel .widgetContainer .menuItemLabel:hover .pinUnpinShortCut { display: inline-block; -} \ No newline at end of file +} +@-moz-document url-prefix() { + .duplicateHandlingContainer .tooltip-inner { + width: 550px; + max-width: 550px; + } +} +.duplicateHandlingContainer .tooltip-inner { + text-align: left !important; +} +.duplicateHandlingContainer .syncMessage { + margin-top: 5px !important; +} +.duplicateHandlingContainer .actionsList { + width: 230px !important; +} +.duplicationMessageContainer { + background-color: #f2dede !important; + color: #b94a48 !important; +} +.duplicationMessageContainer .duplicationMessageHeader { + margin-bottom: 8px; +} +.listViewRecordActions .quickView, +.listViewRecordActions .markStar, +.listViewRecordActions .markAsHeld, +.listViewRecordActions .holdFollowupOn { + margin-top: 4px; +} +.app-menu .module-icon .custom-module { + font-size: 14px; + border-radius: 4px; + color: #000; + background-color: #FFFFFF; + padding: 4px 10px 4px 5px !important; +} +.menu-item .custom-module { + font-family: 'OpenSans-Regular', sans-serif; + font-size: 12px; + border-radius: 4px; + padding: 2px; + color: #000; + background-color: #FFFFFF; +} +.modules-menu .custom-module { + color: #FFFFFF; + margin-left: 0px; + display: inline; + border: 1px solid #FFFFFF; + border-radius: 4px; + padding: 3px 4px 3px 2px !important; + font-weight: bold; +} +#quickCreateModules .custom-module, +.workflowListContainer .custom-module, +.dashBoardTabContents .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #FFFFFF; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #000000; + background-color: #FFFFFF; +} +.task-details .custom-module { + border-radius: 4px; + padding: 1px 4px; + color: #FFFFFF; + background-color: #777; +} +.related-tabs .custom-module, +#relatedmenuList .custom-module { + border-radius: 4px; + color: #FFFFFF; + background-color: #777; + padding: 5px 7px; + font-weight: bold; +} +.record-header .custom-module { + font-size: 30px; +} +.moduleIcon .custom-module { + font-weight: bold; +} +.modules-menu ul li.active a { + border-left: 3px solid #F1C40F; + opacity: 1; +} diff --git a/layouts/v7/skins/marketing/style.css b/layouts/v7/skins/marketing/style.css index 5ad0f30e5c1abf5eeab68b6efc7cf38972513bf4..09a0a37aa6a00cdada6fbcab7a0fd9911e52bc4f 100644 --- a/layouts/v7/skins/marketing/style.css +++ b/layouts/v7/skins/marketing/style.css @@ -1,7 +1,9 @@ @font-face { font-family: 'Oswald'; src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot'); - src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot?#iefix') format('embedded-opentype'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.woff') format('woff'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.ttf') format('truetype'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.svg#Oswald') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.svg#Oswald') format('svg'); + /* Legacy iOS */ font-weight: normal; font-style: normal; text-rendering: optimizeLegibility; @@ -15,27 +17,37 @@ a:active { @font-face { font-family: 'OpenSans-Regular'; src: url('../fonts/OpenSans/Regular/OpenSans-Regular.eot'); - src: url('../fonts/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'), url('../fonts/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), url('../fonts/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), url('../fonts/OpenSans/Regular/OpenSans-Regular.svg#svgFontName') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/OpenSans/Regular/OpenSans-Regular.svg#svgFontName') format('svg'); + /* Legacy iOS */ } @font-face { font-family: 'OpenSans-Semibold'; src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot'); - src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.ttf') format('truetype'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff2') format('woff2'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff') format('woff'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.svg#svgFontName') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.svg#svgFontName') format('svg'); + /* Legacy iOS */ } @font-face { font-family: 'ProximaNova-Regular'; - src: url('../fonts/ProximanovaWebfont/ProximaNova-Regular.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.woff') format('woff'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'); + src: url('../fonts/ProximanovaWebfont/ProximaNova-Regular.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/ProximanovaWebfont/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'); + /* IE6-IE8 */ + /* Safari, Android, iOS */ font-style: normal; font-weight: normal; text-rendering: optimizeLegibility; } @font-face { font-family: 'ProximaNova-Semibold'; - src: url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.woff') format('woff'), url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.eot?#iefix') format('embedded-opentype'); + src: url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.eot?#iefix') format('embedded-opentype'); + /* IE6-IE8 */ font-style: normal; font-weight: normal; text-rendering: optimizeLegibility; } +/**********************************/ +/************ Layout **************/ +/**********************************/ html { height: 100%; overflow-y: auto; @@ -102,6 +114,7 @@ body { @media (min-width: 992px) { .global-nav .logo-container { display: inline-block; + width: 150px; z-index: 2; padding-left: 6%; margin-top: 1px; @@ -113,11 +126,13 @@ body { position: absolute; width: 100%; height: 42px; + /* border-top:1px solid #ddd;*/ border-bottom: 1px solid #ddd; } .app-nav .module-action-bar .module-action-content { background: #FBFBFB; height: 41px; + /* border-bottom: 1px solid #eee;*/ } .app-nav .module-action-bar .module-action-content .navbar-right { margin-right: 0; @@ -163,7 +178,7 @@ body { padding-left: 0; } } -.btn-toolbar >.btn-group:first-child { +.btn-toolbar > .btn-group:first-child { margin-left: 5px; } .vt-notification { @@ -196,8 +211,12 @@ body { .vt-notification [data-notify="message"] { color: #eaeaea; } +/**********************************/ +/******** Navigation styles *******/ +/**********************************/ .company-logo { height: 40px; + width: 150px; margin: 0 0; display: inline-block; margin-left: 1px; @@ -214,10 +233,13 @@ body { font-size: 16px; position: relative; } +/*.module-action-bar .module-action-content #appnav{ + padding-top:5px; +}*/ .global-nav .navbar-nav > li div a { padding: 15px; } -.global-nav>ul { +.global-nav > ul { margin-right: 20px; } .global-nav .search-links-container { @@ -267,26 +289,28 @@ body { float: right; height: 42px; } - .module-action-bar .navbar-right .nav>li { + .module-action-bar .navbar-right .nav > li { display: inline-block; } - .module-action-bar .navbar-right .nav>li a { + .module-action-bar .navbar-right .nav > li a { padding: 0 10px; } .global-nav .logo-container { border-bottom: 0; + width: 150px; } } @media (max-width: 991px) { .global-nav .logo-container { border-bottom: 0; + width: 150px; } .notificationMessageHolder { padding-left: 45%; } } @media (min-width: 991px) { - .nav>li>a.qc-button { + .nav > li > a.qc-button { padding: 2px 3px; margin-top: 13px; margin-right: 15px; @@ -294,7 +318,7 @@ body { color: #fff; border-radius: 20px; } - .nav>li>a.qc-button span { + .nav > li > a.qc-button span { vertical-align: top; } } @@ -313,6 +337,7 @@ body { width: 100%; height: 100%; } +/** App Nav Styles */ .active-app-title { white-space: nowrap; font-family: Oswald, "OpenSans-Semibold", "Helvetica Neue", Helvetica, sans-serif; @@ -367,7 +392,9 @@ body { height: 42px; text-align: center; line-height: 42px; + /* background-color: #2c3b49;*/ color: #ffffff; + /*border-bottom: 1px solid #272B46;*/ } .app-nav .app-indicator-icon-container .app-indicator-icon { font-size: 24px; @@ -391,6 +418,9 @@ body { .app-PROJECT { background: #8E44AD !important; } +.app-TOOLS { + background: #EF5E29 !important; +} .app-DEFAULT, .app-DASHBOARD { background: #56ccc8 !important; @@ -479,16 +509,16 @@ body { right: -4px; } #overlayPageContent .mCSB_scrollTools, -#overlayPageContent .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonUp, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonDown, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonLeft, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonRight, .app-list .mCSB_scrollTools, +#overlayPageContent .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .app-list .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonUp, .app-list .mCSB_scrollTools .mCSB_buttonUp, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonDown, .app-list .mCSB_scrollTools .mCSB_buttonDown, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonLeft, .app-list .mCSB_scrollTools .mCSB_buttonLeft, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonRight, .app-list .mCSB_scrollTools .mCSB_buttonRight { -webkit-transition: none; transition: none; @@ -534,6 +564,9 @@ a.menu-item:hover { .app-item-color-PROJECT { border-left: 4px solid #8E44AD; } +.app-item-color-TOOLS { + border-left: 4px solid #EF5E29; +} .app-item .fa { font-size: 1.5em; -webkit-transition: all 0.25s ease-in; @@ -700,6 +733,7 @@ a.menu-item:hover { width: 0px; overflow: hidden; } +/* User Logout */ .logout-content { padding: 10px; width: 350px; @@ -754,6 +788,9 @@ a.menu-item:hover { .app-settings { background: #FFFFFF; } +/*************************************************/ +/******** View styles (List/Edit/Detail..) *******/ +/*************************************************/ .viewContent .content-area { padding-left: 50px; } @@ -780,6 +817,9 @@ a.menu-item:hover { opacity: 0.5; pointer-events: none; } +.input-group.percentage-input-group .form-control { + width: 100% !important; +} .bottomscroll-div, .topscroll-div { display: table; @@ -793,6 +833,9 @@ a.menu-item:hover { display: inline-block; word-break: break-word; } +.fieldValue .value a { + color: #15c !important; +} .modal-header button.close { padding: 0; color: #ffffff; @@ -865,6 +908,9 @@ input[type="password"].inputElement { padding-right: 20px; padding-left: 20px; } +/**********************************/ +/**** Side vertical Nav styles ****/ +/**********************************/ .module-nav { background: #fff; z-index: 1004; @@ -880,6 +926,9 @@ input[type="password"].inputElement { left: 0; transition: 0s width; } +.module-nav:hover { + /*z-index: 1001;*/ +} .modules-menu ul { list-style: none; margin-left: 0; @@ -914,7 +963,7 @@ input[type="password"].inputElement { float: left; font-size: 20px; } -.modules-menu ul li a>span { +.modules-menu ul li a > span { margin-left: 10px; vertical-align: middle; font-size: 13px; @@ -954,6 +1003,7 @@ input[type="password"].inputElement { width: 100%; left: 0%; } +/** Lists Menu in Side bar */ .module-filters .settings-sidebar, .module-filters .sidebar-container { padding: 0 12px; @@ -987,6 +1037,7 @@ input[type="password"].inputElement { .lists-menu-container hr { margin: 5px 0; } +/* mScrollbar customization for lists widget */ .lists-menu-container .menu-scroller .mCSB_scrollTools { width: 13px; } @@ -998,8 +1049,10 @@ input[type="password"].inputElement { .modules-menu .mCSB_scrollTools .mCSB_draggerContainer { left: 8px; } +/* Customization ends */ .lists-menu-container .list-menu-content .more-less-link { color: #fff; + /*text-decoration: none;*/ } .lists-menu-container .list-menu-content .sub-header { color: #ddd; @@ -1085,7 +1138,6 @@ input[type="password"].inputElement { background-color: #FFFFFF; border: 1px solid #DDDDDD; margin: 5px 0 10px; - color: #ccc; padding: 5px 10px; } .search-folders:focus, @@ -1104,9 +1156,11 @@ input[type="password"].inputElement { .common-links-container > div a { color: #fff; } +/*Search Container styles */ .search-container { min-height: 300px; position: absolute; + /*z-index: 1030;*/ width: 100%; top: 0; background: #FBFBFB; @@ -1125,6 +1179,7 @@ input[type="password"].inputElement { .footer p { margin: 5px 0; } +/*** Utilities ***/ .showElement { display: block !important; height: 100%; @@ -1247,11 +1302,11 @@ ul.unstyled { } .emptyRecordsDiv .emptyRecordsContent { display: inline-block; - font-size: 16px; left: 50%; margin-left: -25%; position: absolute; width: 50%; + font-size: 16px; } .textOverflowEllipsis { overflow: hidden; @@ -1276,6 +1331,9 @@ ul.unstyled { .removeNoFileChosen { color: transparent !important; } +/*********************************** +**********Button Styles********** +***********************************/ .module-buttons-container { float: right; margin-right: 10px; @@ -1297,6 +1355,7 @@ ul.unstyled { margin: 4px 2px; border-radius: 2px; border: 1px solid #ddd; + text-transform: uppercase; color: #666; background: #fff; } @@ -1317,6 +1376,9 @@ ul.unstyled { color: #FFFFFF !important; background: #5bc0de !important; } +/*********************************** +**********List View Styles********** +***********************************/ .fa.pull-left { margin-right: 0; } @@ -1351,7 +1413,7 @@ ul.unstyled { font-size: 20px; } .listview-pagination .disabled { - color: rgba(0,0,0,0.2); + color: rgba(0, 0, 0, 0.2); } .listview-pagination .disabled:hover { cursor: default; @@ -1379,6 +1441,8 @@ ul.unstyled { .listview-table { margin-bottom: 0; border-top: 0; + /* Horizontal scroll will not work if table layout Fixed */ + /* table-layout: fixed;*/ } .listview-table tr td, .listview-table tr th { @@ -1408,7 +1472,7 @@ ul.unstyled { width: 100%; } .listViewEntries .relatedListEntryValues .fieldValue .value, -.listViewEntries .listViewEntryValue .fieldValue .value { +.listViewEntries .listViewEntryValue .fieldValue .value { vertical-align: middle; width: 100%; display: inline-block; @@ -1423,7 +1487,7 @@ ul.unstyled { } .listview-table-norecords .table-actions, .listview-table .table-actions { - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -1489,13 +1553,13 @@ input[type=checkbox]:checked { vertical-align: middle; display: table-cell; } -.listview-table tr.searchRow th { +.listview-table tr.searchRow th { padding: 5px 3px; } -.listview-table tr.searchRow th.inline-search-btn { +.listview-table tr.searchRow th.inline-search-btn { padding: 3px 10px; } -.listview-table tr.searchRow th.inline-search-btn button { +.listview-table tr.searchRow th.inline-search-btn button { text-align: center; width: 85%; text-shadow: none; @@ -1523,6 +1587,18 @@ input[type=checkbox]:checked { background-color: #FFEEEE !important; background-image: none !important; } +/*.floatThead-wrapper .table-container{ + z-index: 0 !important; +}*/ +/* List view bottom fixed scroll */ +/*.bottom-fixed-scroll{ + height: 14px; + position: relative; + top: -15px; + overflow-x: auto; + overflow-y: hidden; + width: 100%; +}*/ .scroller-div { height: 1px; } @@ -1644,9 +1720,15 @@ input[type=checkbox]:checked { #listColumnFilterContainer .disabled i { color: #ccc; } +/********************************** +**********Detail View Styles********** +**********************************/ .detailViewButtoncontainer { padding-top: 5px; } +.detailViewButtoncontainer button.btn { + margin: 0px 1px !important; +} .detailview-header .recordBasicInfo > .info-row { margin-bottom: 4px; } @@ -1727,6 +1809,9 @@ th { margin-top: 3%; margin-right: 2%; } +.overlayDetailHeader button.btn { + margin: 0px 1px !important; +} .referencefield-wrapper .createReferenceRecord { float: left; margin-left: 5px; @@ -1966,10 +2051,10 @@ th { z-index: 1030; } .overlay-container-60 { - margin-left: 42px; + margin-left: 42px ; } .overlay-container-300 { - margin-left: 230px; + margin-left: 230px ; } .overlayPageContent { background: #FFFFFF; @@ -2092,6 +2177,9 @@ th { height: 26px; line-height: 25px; } +/********************************** +**********Summary View Styles****** +**********************************/ .summary-table { width: 100%; table-layout: fixed; @@ -2212,33 +2300,33 @@ th { opacity: 1; cursor: pointer; } -.details.row >form .social-media-toggle { +.details.row > form .social-media-toggle { position: absolute; right: -15px; display: inline-block; width: 500px; border-left: 0px; } -.details.row >form .social-media-widget { +.details.row > form .social-media-widget { border-left: 1px solid #ddd; border-bottom: 1px solid #ddd; height: 100%; background: white; } -.details.row >form div[class*="col-"].resizable-summary-view { +.details.row > form div[class*="col-"].resizable-summary-view { padding-left: 0; padding-right: 0px; } -.details.row >form>div[class*="col-"], -.details.row >form .resizable-summary-view div[class*="col-"] { +.details.row > form > div[class*="col-"], +.details.row > form .resizable-summary-view div[class*="col-"] { padding-right: 0; padding: 0px 5px; } -.details.row >form>div[class*="col-"]:first-child, -.details.row >form .left-block { +.details.row > form > div[class*="col-"]:first-child, +.details.row > form .left-block { padding-left: 0 !important; } -.details.row >form>div[class*="col-"]:last-child { +.details.row > form > div[class*="col-"]:last-child { padding-right: 0; } .summaryWidgetContainer .noContent { @@ -2251,6 +2339,9 @@ th { .caseReplyArea .nav > li { padding: 0 10px; } +/********************************** +**********Edit View Styles******* +**********************************/ .main-container .editViewModNavigator.module-nav, .editViewModNavigator .mod-switcher-container, .editViewModNavigator .modules-menu { @@ -2291,9 +2382,28 @@ th { width: 100%; } .editViewContents .input-group { - width: 229px; + width: 208px; float: left; } +.editViewContents .fieldLabel { + min-width: 100px; + width: 20%; + word-break: break-all; +} +.editViewContents .fieldValue { + width: 30%; +} +.editViewContents td.fieldValue[colspan="3"] { + width: 80%; +} +.editViewContents textarea.textAreaElement { + width: 88%; +} +.editViewContents input[type="checkbox"], +.editViewContents input[type="radio"] { + width: 15px; + height: 15px; +} .input-group.inputElement .input-group-addon { border: none; border-left: 1px solid #ddd; @@ -2370,6 +2480,9 @@ th { z-index: 1000; padding: 7px; } +/********************************** +**********Advance Search styles********** +**********************************/ .op0.fadeInx { opacity: 1; } @@ -2442,7 +2555,11 @@ th { } .btn + input { margin-left: 5px; + /* margin-top : 3px;*/ } +/********************************** +**********Extension Store Styles********** +**********************************/ .extensionstore .app-trigger { width: 98%; } @@ -2473,6 +2590,9 @@ th { .extensionContents .extensionError { color: #F10404; } +/********************************** +**********Extension Store Nav Bar********** +**********************************/ .tabbable-line > .nav-tabs { border: none; margin: 0px; @@ -2541,6 +2661,9 @@ th { .extensionContents .listview-table { width: 100%; } +/******************************************* +******Detail View related list styles******* +********************************************/ .relatedContents .listViewContentHeaderValues:hover { text-decoration: none; color: #333; @@ -2598,6 +2721,9 @@ th { .relatedViewActions .btn-group { margin-right: 15px; } +/******************************************* +****************** Modal ******************* +********************************************/ .modal-header { padding: 5px 15px; background: #596875; @@ -2625,6 +2751,7 @@ th { width: 100%; float: left; background: #596875; + /* height: 100%;*/ } .settings-menu { display: inline-block; @@ -2641,7 +2768,7 @@ th { cursor: n-resize; } .settings-menu-items { - box-shadow: 0 1px 1px rgba(0,0,0,0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); margin-bottom: 10px; text-align: justify; } @@ -2770,6 +2897,7 @@ th { vertical-align: middle; color: #3399ff; } +/* .squaredFour */ .squaredFour { width: 20px; position: relative; @@ -2783,9 +2911,9 @@ th { top: 0; left: 0; background: #fcfff4; - background: linear-gradient(top,#fcfff4 0%,#dfe5d7 40%,#b3bead 100%); + background: linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); border-radius: 4px; - box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); + box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); } .squaredFour label:after { content: ''; @@ -2813,13 +2941,16 @@ th { .importBlockContainer { color: #596875; } +/******************************************* +************* Social Buttons *************** +********************************************/ .btn-block + .btn-block { margin-top: 5px; } .btn-google-plus { color: #FFFFFF !important; background-color: #DD4B39; - border-color: rgba(0,0,0,0.2); + border-color: rgba(0, 0, 0, 0.2); } .btn-social { position: relative; @@ -2838,15 +2969,18 @@ th { line-height: 34px; font-size: 1.6em; text-align: center; - border-right: 1px solid rgba(0,0,0,0.2); + border-right: 1px solid rgba(0, 0, 0, 0.2); } +/******************************************* +************* Updates Timeline *************** +********************************************/ .recentActivitiesContainer .history { margin: 0 auto; padding: 20px 20px 1px; max-width: 100%; overflow-x: visible; - -webkit-transition: opacity .2s ease-out; - transition: opacity .2s ease-out; + -webkit-transition: opacity 0.2s ease-out; + transition: opacity 0.2s ease-out; } .updates_timeline { padding-top: 20px; @@ -2855,6 +2989,7 @@ th { padding: 0; list-style: none; } +/* The line */ .updates_timeline:before { content: ''; position: absolute; @@ -2873,6 +3008,7 @@ th { min-height: 40px; z-index: 2; } +/* Left Content(Time) */ .updates_timeline > li .update_time { position: absolute; margin: 0; @@ -2884,6 +3020,7 @@ th { font-size: 15px; font-style: italic; } +/* Right content(Update info) */ .updates_timeline > li .update_info { padding: 10px 10px 1px; display: block; @@ -2892,10 +3029,11 @@ th { position: relative; top: -45px; } -.updates_timeline > li .update_info >h3 { +.updates_timeline > li .update_info > h3 { font-size: 1.1em; margin-left: -3%; } +/* The icons */ .updates_timeline > li .update_icon { position: relative; border-radius: 50%; @@ -2908,6 +3046,7 @@ th { color: #fff; line-height: 35px; } +/* More Button */ .updates_timeline #more_button .update_icon { position: relative; border-radius: 0; @@ -3015,6 +3154,9 @@ th { vertical-align: super; font-size: 13px; } +/******************************************* +************* Task Management ************** +********************************************/ #taskManagementContainer .data-body { margin-bottom: 50px; } @@ -3077,15 +3219,16 @@ th { #taskManagementContainer .other-details { color: #979797; } +/*overwriting jquery ui css*/ .ui-menu { z-index: 10000; } #taskManagementContainer button.active { background: #3B83F7; color: white; - text-shadow: 0 1px rgba(0,0,0,0.3); + text-shadow: 0 1px rgba(0, 0, 0, 0.3); border: 1px solid #135fd7; - box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); } .taskSubject { width: 99%; @@ -3093,6 +3236,9 @@ th { #taskManagementContainer .mCustomScrollbar .mCSB_inside > .mCSB_container { margin-right: 13px; } +/******************************************* +************* Settings Page ************** +********************************************/ .settingsPageDiv.content-area { margin-right: 0; } @@ -3126,6 +3272,9 @@ th { .settingsgroup-accordion a i { margin-right: 5px; } +.settingsgroup-accordion a span { + text-transform: uppercase; +} .settingsgroup { background: #2C3B49; height: 100%; @@ -3282,35 +3431,59 @@ th { } .mini-slider-control[data-value="0"] .ui-slider-handle { background: #7d7e7d; - background: -moz-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#7d7e7d),color-stop(100%,#0e0e0e)); - background: -webkit-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -o-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -ms-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: linear-gradient(to bottom,#7d7e7d 0%,#0e0e0e 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d',endColorstr='#0e0e0e',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #7d7e7d), color-stop(100%, #0e0e0e)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #7d7e7d 0%, #0e0e0e 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d', endColorstr='#0e0e0e', GradientType=0); + /* IE6-9 */ margin-left: 0px; } .mini-slider-control[data-value="1"] .ui-slider-handle { background: #ffb76b; - background: -moz-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#ffb76b),color-stop(0%,#ffa73d),color-stop(49%,#ff7c00),color-stop(100%,#ff7f04)); - background: -webkit-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -o-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -ms-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: linear-gradient(to bottom,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb76b',endColorstr='#ff7f04',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffb76b), color-stop(0%, #ffa73d), color-stop(49%, #ff7c00), color-stop(100%, #ff7f04)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb76b', endColorstr='#ff7f04', GradientType=0); + /* IE6-9 */ margin-left: -6px; } .mini-slider-control[data-value="2"] .ui-slider-handle { background: #bfd255; - background: -moz-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#bfd255),color-stop(79%,#8eb92a),color-stop(100%,#72aa00),color-stop(100%,#9ecb2d)); - background: -webkit-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -o-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -ms-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: linear-gradient(to bottom,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bfd255',endColorstr='#9ecb2d',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #bfd255), color-stop(79%, #8eb92a), color-stop(100%, #72aa00), color-stop(100%, #9ecb2d)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bfd255', endColorstr='#9ecb2d', GradientType=0); + /* IE6-9 */ margin-left: -13px; } .ModulemanagerSettings .moduleblock .hiden { @@ -3335,10 +3508,13 @@ th { th { padding: 6px; } +/******************************************* +********** CustomerPortal styles start ******** +********************************************/ .cp-tabs .enabledModules { display: inline-block ! important; - margin-left: 4px !important; - margin-right: 4px !important; + margin-left: 4px!important; + margin-right: 4px!important; vertical-align: top; } .drag-portal-module { @@ -3445,7 +3621,7 @@ th { margin-left: 5px; } .portal-field-delete { - margin-left: 45px !important; + margin-left: 45px!important; } .portalModuleRow { border-left: 4px solid #EF5E29 !important; @@ -3462,7 +3638,7 @@ th { content: "*"; color: red; } -.nav-tabs .cp-modules > .active >a, +.nav-tabs .cp-modules > .active > a, .nav-tabs .cp-modules > .active > a:hover { border: 0px !important; border-top-right-radius: 0px; @@ -3624,7 +3800,7 @@ th { display: inline-block; } .quickPreview .updates_timeline:before { - background: #e6e6e6; + background: #e5e5e5; width: 2px; margin-left: -1%; } @@ -3639,13 +3815,16 @@ th { .quickPreviewComments .recentComments .commentDetails .comment { line-height: 15px; } -.quickPreviewComments .summaryWidgetContainer { +.quickPreviewComments .summaryWidgetContainer { border: 0; padding: 0; } .quickPreview .recentActivitiesContainer .history { padding: 0; } +/******************************************* +********** Calendar view styles ************ +********************************************/ .calendar-sidebar { width: 100% !important; } @@ -3802,6 +3981,11 @@ th { display: inline-block; text-align: center; } +/******************************************* +********** Calendar view styles end ******** + +********** Documents Module styles ********* +********************************************/ .dragdrop-dotted { border: 2px dashed #C0C0C0; min-width: 300px; @@ -3861,13 +4045,16 @@ tr.file > td.fileOwnerData { width: 100px; white-space: pre-wrap; } +/******************************************* +********** Documents Module styles end ***** +********************************************/ .engagementsContainer .engagements_content { padding-top: 15px; } .summaryWidgetContainer .engagementsContainer table { width: inherit; } -.engagements_content table thead>tr:first-child { +.engagements_content table thead > tr:first-child { border: 1px solid #CCC; background-color: #F5F5F5; } @@ -3918,6 +4105,9 @@ tr.file > td.fileOwnerData { font-size: 15px; padding: 1% 0; } +/******************************************* +********** Mailroom view styles start ******** +********************************************/ .mailroomBanner { margin: 23px 0; height: 215px; @@ -4126,6 +4316,7 @@ tr.file > td.fileOwnerData { margin-left: 0; } .mentionMessages .mention_follow_up { + /*//load this color from variable.less*/ background-color: green; } .modelContainer .modal-content { @@ -4274,6 +4465,7 @@ form[name="notification_settings"] .select2-choice { margin-left: 0; } .mentionMessages .mention_follow_up { + /*//load this color from variable.less*/ background-color: green; } .modal-content .mention_followup .row { @@ -4305,6 +4497,9 @@ form[name="notification_settings"] .select2-choice { .mentionMessageHeader .MultiFile-remove { color: #FFFFFF; } +/******************************************* +********** Mailroom view styles end ******** +********************************************/ .detailview-header { margin-bottom: 10px; } @@ -4320,6 +4515,7 @@ form[name="notification_settings"] .select2-choice { margin: 0px 10px; text-decoration: underline !important; color: #3498DB; + /*font-size : 12px;*/ } .tag { display: inline-block; @@ -4403,11 +4599,11 @@ form[name="notification_settings"] .select2-choice { border: 1px solid #dcdcdc; } #tagCloud .tag { - color: #5ea9dd; padding: 0px; background-color: #FFFFFF; border-color: #FFFFFF; border-radius: 0px; + color: #5ea9dd; margin: 3px; } #tagCloud .tag[data-type="public"] { @@ -4418,6 +4614,9 @@ form[name="notification_settings"] .select2-choice { max-width: 80px; vertical-align: bottom; } +/******************************************* +********** Groups view styles ******** +********************************************/ #s2id_memberList li > div, .groupMembersColors li > div { margin-left: 10px; @@ -4492,6 +4691,12 @@ form[name="notification_settings"] .select2-choice { margin: 0px; color: #444444; } +/******************************************* +********** Groups view styles ends******** +********************************************/ +/******************************************* +********** Picklist Css ******** +********************************************/ .pickListValue { background-color: #FFFFFF; } @@ -4506,6 +4711,12 @@ form[name="notification_settings"] .select2-choice { padding: 2px 1px !important; line-height: 15px; } +/******************************************* +************* Dashboard Styles ************* +********************************************/ +li.dashboardWidget { + overflow: hidden; +} .dashboardWidgetHeader .title { padding-bottom: 10px; font-size: 15px; @@ -4526,9 +4737,6 @@ form[name="notification_settings"] .select2-choice { .dashBoardContainer .tabContainer .tab-content { margin-top: 10px; } -.dashBoardContainer .dashBoardTabContents ul { - margin: 0; -} .dashBoardContainer .dashBoardTabContents ul li { border: 3px solid #E2E2E4; box-shadow: 1px; @@ -4595,7 +4803,7 @@ form[name="notification_settings"] .select2-choice { display: inline-block; opacity: 1; } -.dashBoardContainer .tabContainer li a .deleteTab:hover { +.dashBoardContainer .tabContainer li a .deleteTab:hover { cursor: pointer; } #minilistWizardContainer .fieldLabel { @@ -4632,6 +4840,9 @@ form[name="notification_settings"] .select2-choice { resize: none; width: 100%; } +/******************************************* +********** Picklist DependencyGraph ******** +********************************************/ #dependencyGraph .tableHeading { text-align: center; padding-top: 30px; @@ -4657,6 +4868,9 @@ form[name="notification_settings"] .select2-choice { #dependencyGraph .dependencyMapping .pickListDependencyTable .selectedCell { background: #a9cbf5; } +/******************************************* +********** Rewriting select2 for consistency******** +********************************************/ .select2-container .select2-choice { height: 29px; border-radius: 1px; @@ -4750,6 +4964,7 @@ hr { position: fixed; bottom: 0; background: #EFEFEF; + /*width:100%;*/ border-left: 42px solid #2c3b49; height: 60px; left: 0; @@ -4768,7 +4983,6 @@ hr { } .settingsPageDiv .modal-overlay-footer { margin-left: 230px; - border-left: 0px solid; } .settingsOverlayContainer .modal-overlay-footer { margin: 0; @@ -4791,14 +5005,14 @@ hr { vertical-align: middle; margin-top: 6px; } -.list-menu-content .pull-right>.dropdown-menu { +.list-menu-content .pull-right > .dropdown-menu { left: -126px; position: relative; } -.dropdown-menu>li>a { +.dropdown-menu > li > a { padding: 4px 6px; } -.dropdown-menu>li>a span i { +.dropdown-menu > li > a span i { font-size: 15px; vertical-align: middle; } @@ -4806,11 +5020,11 @@ hr { max-height: 300px; padding-left: 0; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container { margin-right: 0; padding: 4px 6px; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container>li>a { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container > li > a { display: block; padding: 3px 5px; clear: both; @@ -4819,7 +5033,7 @@ hr { color: #333; white-space: nowrap; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container span i { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container span i { font-size: 15px; vertical-align: middle; } @@ -4842,16 +5056,16 @@ hr { .calendar-sidebar .calendar-sidebar-tabs.padding { padding-left: 20px !important; } -.related-tabs.row .nav>li { +.related-tabs.row .nav > li { padding: 0 10px; margin: 0 2px; } -.massEditTabs.nav>li { +.massEditTabs.nav > li { padding: 0 10px; margin: 0 4px; } -.row .nav>li>a, -.row .nav>li>a:hover { +.row .nav > li > a, +.row .nav > li > a:hover { padding: 10px 3px; border: none; vertical-align: bottom; @@ -4861,38 +5075,39 @@ hr { -webkit-box-sizing: border-box; -o-box-sizing: border-box; } -.row .nav>li>a:hover { +.row .nav > li > a:hover { border-bottom-color: #555; } -TN-34230 - -.row .nav>li>a:hover { +/*.row ul{ + padding:0; +}*/ +TN-34230 .row .nav > li > a:hover { border-bottom-color: #555; background: none; } .row ul li:first-child { margin-left: 0; } -.related-tabs .nav-tabs>li.active, -.related-tabs .nav-tabs>li:hover, -.related-tabs .nav-tabs>li.active:focus, -.dashBoardContainer .nav-tabs>li.active, -.dashBoardContainer .nav-tabs>li:hover, -.dashBoardContainer .nav-tabs>li.active:focus, -.contents.tabbable .nav-tabs>li.active, -.contents.tabbable .nav-tabs>li:hover, -.contents.tabbable .nav-tabs>li.active:focus { +.related-tabs .nav-tabs > li.active, +.dashBoardContainer .nav-tabs > li.active, +.contents.tabbable .nav-tabs > li.active, +.related-tabs .nav-tabs > li:hover, +.dashBoardContainer .nav-tabs > li:hover, +.contents.tabbable .nav-tabs > li:hover, +.related-tabs .nav-tabs > li.active:focus, +.dashBoardContainer .nav-tabs > li.active:focus, +.contents.tabbable .nav-tabs > li.active:focus { border: none; border-bottom: 3px solid #555; } -.nav-tabs>li.active>a, -.nav-tabs>li.active>a:hover, -.nav-tabs>li.active>a:focus, -.nav-tabs>li>a { +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus, +.nav-tabs > li > a { border: 0; } -.nav>li>a:hover, -.nav>li>a:focus { +.nav > li > a:hover, +.nav > li > a:focus { background-color: #FFFFFF; } .fa-pencil, @@ -4902,6 +5117,9 @@ TN-34230 .commentAttachmentName { font-size: 11px; } +/******************************************* +********** Layout Editor ******** +********************************************/ .marginBottom10px { margin-bottom: 10px; } @@ -4924,6 +5142,7 @@ TN-34230 } .zeroOpacity { opacity: 0; + /*for IE*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } @@ -4950,10 +5169,12 @@ TN-34230 .layoutContent .opacity:hover .actions { opacity: 1; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + /*for IE*/ filter: alpha(opacity=100); } .layoutContent .fieldPropertyContainer:hover .actions { opacity: 1; + /*for IE*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=100); } @@ -4976,6 +5197,7 @@ TN-34230 .relatedTabModulesList .addButton { border-radius: 2px; border: 1px solid #DDDDDD; + text-transform: uppercase; color: #666666; background: #FFFFFF; } @@ -5049,6 +5271,9 @@ TN-34230 margin-left: 5px; word-break: break-all; } +/******************************************* +************** Tax Management ************** +********************************************/ #TaxCalculationsContainer .table tr:first-child, .taxModalContainer #editTax .table tr:first-child { border-bottom: 1px solid #ccc; @@ -5088,6 +5313,9 @@ TN-34230 max-height: 500px; overflow-y: auto; } +/******************************************* +********** Workflows ******** +********************************************/ #workflow_edit .editViewBody { overflow: inherit; } @@ -5097,7 +5325,7 @@ TN-34230 } .timePicker { width: 9.5em !important; - z-index: 1101 !important; + z-index: 1070 !important; } .weekDaySelect .ui-state-default { background: inherit; @@ -5135,75 +5363,6 @@ TN-34230 .module-filters.active { background: #F7F7F7; } -.payment-type-selection { - margin-bottom: 30px; -} -.payment-type-selection img { - vertical-align: middle; -} -.currplan { - padding: 10px 20px; - background-color: #f3f3f3; - border: 1px solid #eee; - border-radius: 3px; -} -.currplan div { - display: inline-block; - font-size: 16px; -} -.planName { - display: inline-block; - color: #fff; - padding: 20px; - margin: 10px 20px; - font-size: 24px; - border-radius: 2px; -} -.plan-heading { - min-height: 168px; -} -.plan-title { - color: #fff; - font-size: 20px; - padding: 13px 0; -} -#sales_plan { - background: #3FC380; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#salespremium_plan { - background: #00B16A; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#support_plan { - background: #2980B9; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#supportpremium_plan { - background: #2980B9; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#ultimate_plan, -#exclusive_plan { - background: #F39C12; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#contact_plan { - background: #FF5959; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} .workflowListContainer .select2-container .select2-choice { height: 36px; } @@ -5218,6 +5377,7 @@ TN-34230 .contactAdd { border: 1px solid #eee; padding: 20px; + /*min-height: 310px !important;*/ } #subDetails table td { padding: 7px 10px; @@ -5340,9 +5500,9 @@ TN-34230 .productBundles { padding-left: 20px; } -.nav .open>a, -.nav .open>a:hover, -.nav .open>a:focus { +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { color: #000000; background-color: #FFFFFF; } @@ -5363,6 +5523,9 @@ TN-34230 width: 100%; overflow-x: auto; } +/******************************************* +*************** Mail Manager *************** +********************************************/ #mm_searchButton { height: 28px; background-color: #FFFFFF; @@ -5418,8 +5581,8 @@ TN-34230 padding: 1px 5px; border-radius: 3px; text-align: center; - text-shadow: 0 1px rgba(0,0,0,0.1); - background-image: -webkit-linear-gradient(top,#DD4B39 0,#D14836 100%); + text-shadow: 0 1px rgba(0, 0, 0, 0.1); + background-image: -webkit-linear-gradient(top, #DD4B39 0, #D14836 100%); border: 1px solid #C6322A; background-color: #DD4B39; } @@ -5637,6 +5800,7 @@ TN-34230 .width40per { width: 40%; } +/****** Mail Manager Ends ******/ .quickCreateContent .massEditTable textarea, .addCommentBlock .commentTextArea textarea { resize: vertical; @@ -5649,19 +5813,20 @@ TN-34230 .select2-container-multi .select2-choices { z-index: 1; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a:hover { +/****** Customer Portal Settings ******/ +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a:hover { background-color: #fff; } -.cp-nav-header-wrapper>li.disabled>a:hover { +.cp-nav-header-wrapper > li.disabled > a:hover { border: 0px ! important; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a { +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a { background-color: #fff; } -#portalModulesTable>li.portalModuleRow.active>a:hover { +#portalModulesTable > li.portalModuleRow.active > a:hover { background-color: #fff !important; } -#portalModulesTable>li.portalModuleRow.active>a:focus { +#portalModulesTable > li.portalModuleRow.active > a:focus { background-color: #fff !important; } .portal-dashboard { @@ -5760,7 +5925,7 @@ TN-34230 .portal-dashboard { border-bottom: 0px ! important; } -#portal-shortcutsContainer>ul { +#portal-shortcutsContainer > ul { border-bottom: 0px ! important; } .portalMenuHeader { @@ -5769,14 +5934,15 @@ TN-34230 } .cp-tabs .enabledModules { display: inline-block ! important; - margin-left: 4px !important; - margin-right: 4px !important; + margin-left: 4px!important; + margin-right: 4px!important; vertical-align: top; margin-top: 4px !important; } .portal-shortcut-list:hover { border-bottom: 3px solid transparent ! important; } +/****** Customer Portal Settings ******/ .label-radio label input[type="radio"] { position: relative; top: 2px; @@ -5788,6 +5954,9 @@ TN-34230 div.tooltip-inner { max-width: 400px; } +/******************************************* +********** Menu Editor ******** +********************************************/ .sortable.appContainer.ui-sortable { width: 160px; } @@ -5962,7 +6131,7 @@ div.tooltip-inner { width: 13px !important; margin-top: 8px; } -.detailview-table .input-group-addon+.inputElement.form-control, +.detailview-table .input-group-addon + .inputElement.form-control, .detailview-table .inputElement.form-control.input-medium { width: 100%; } @@ -6009,6 +6178,7 @@ div.tooltip-inner { float: left; margin-right: 5px; } +/***** Oursites Changes *****/ .portal-table .table-actions { width: inherit ! important; } @@ -6020,6 +6190,7 @@ div.tooltip-inner { padding: 10px 5px ! important; padding-left: 10px ! important; } +/***** Oursites Changes *****/ .ExtensionscontentsDiv .content-area { padding-left: 15px; padding-right: 15px; @@ -6033,14 +6204,14 @@ div.tooltip-inner { } .blockHeader { border-color: #F3F3F4 #F3F3F4 #cbcbcf; - border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); background-color: #474747; - background-image: -moz-linear-gradient(top,#555555,#333333); - background-image: -ms-linear-gradient(top,#555555,#333333); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#555555),to(#333333)); - background-image: -webkit-linear-gradient(top,#555555,#333333); - background-image: -o-linear-gradient(top,#555555,#333333); - background-image: linear-gradient(top,#555555,#333333); + background-image: -moz-linear-gradient(top, #555555, #333333); + background-image: -ms-linear-gradient(top, #555555, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); + background-image: -webkit-linear-gradient(top, #555555, #333333); + background-image: -o-linear-gradient(top, #555555, #333333); + background-image: linear-gradient(top, #555555, #333333); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333', GradientType=0); min-height: 30px; @@ -6133,8 +6304,8 @@ div.tooltip-inner { .markStar .starredStatus { display: none; } -.nav>li.addDashboardTab>a, -.nav>li.addDashboardTab>a:hover { +.nav > li.addDashboardTab > a, +.nav > li.addDashboardTab > a:hover { padding: 10px 15px; background: inherit; } @@ -6147,7 +6318,7 @@ div.tooltip-inner { height: 960px; width: 1260px; } -.nav-tabs>li { +.nav-tabs > li { border-bottom: 3px solid transparent; margin: 0 2px; } @@ -6225,16 +6396,14 @@ div.tooltip-inner { } .select2-container.select2-container-multi.select2, .editViewPageDiv .select2-container.select2-container-multi.select2 { - height: auto !important; + height: auto!important; } -.summaryViewFields .select2-container-multi.inputElement.form-control -.quickCreateContent .select2-container.select2-container-multi.select2, +.summaryViewFields .select2-container-multi.inputElement.form-control .quickCreateContent .select2-container.select2-container-multi.select2, #massEditContainer .select2-container.select2-container-multi.select2 { width: 150px; height: auto !important; } -.summaryViewFields .select2-container-multi.inputElement.form-control -.quickCreateContent .select2-container.select2-container-multi.select2 .input-save-wrap, +.summaryViewFields .select2-container-multi.inputElement.form-control .quickCreateContent .select2-container.select2-container-multi.select2 .input-save-wrap, #massEditContainer .select2-container.select2-container-multi.select2 .input-save-wrap { float: right; margin-right: 25px; @@ -6330,6 +6499,7 @@ a.cp-modules:hover { #RestrictionsLayout { background: #fafafb; margin-top: -92px; + /*to adjust with page padding top*/ } #RestrictionsLayout .vtImage { width: 22%; @@ -6363,6 +6533,7 @@ a.cp-modules:hover { .datepicker { z-index: 1100 !important; } +/*****RSS Changes****/ .feedListContainer .listview-table tr td:first-child, .listview-table tr th:first-child { width: inherit ! important; @@ -6370,12 +6541,14 @@ a.cp-modules:hover { .feedListContainer .listViewEntries .listViewEntryValue { max-width: inherit ! important; } -.ps-container>.ps-scrollbar-y-rail { +/*****RSS Changes****/ +.ps-container > .ps-scrollbar-y-rail { z-index: 1002; } #relationBlock .recordScroll { max-height: 150px; } +/*Start - List sidebar toggle*/ .essentials-toggle { background-color: white; font-weight: bold; @@ -6395,6 +6568,7 @@ a.cp-modules:hover { .essentials-toggle .fa-chevron-right { background-position: -460px -72px !important; } +/*End - List essentials toggle*/ .module-name-tooltip .qtip-content { font-size: 12px; padding: 3px; @@ -6403,23 +6577,6 @@ a.cp-modules:hover { .module-name-tooltip { padding: 3px; } -.main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, -.main-container-Reports .module-nav { - width: 0; -} -.main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, -.main-container-Reports .sidebar-essentials { - width: 283px; - left: 0; -} -.main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { - padding-left: 0px !important; -} .main-container-MailManager .module-nav { width: 230px; } @@ -6478,8 +6635,8 @@ li.select2-search-choice div { .popover ul.listmenu li { padding: 3px; } -.popover-content .disabled>a, -.popover .disabled>a { +.popover-content .disabled > a, +.popover .disabled > a { opacity: 0.5; cursor: not-allowed; } @@ -6490,6 +6647,7 @@ li.select2-search-choice div { -o-transform: rotate(180deg); transform: rotate(180deg); } +/*Start - List sidebar toggle*/ .essentials-toggle { background-color: white; font-weight: bold; @@ -6509,6 +6667,7 @@ li.select2-search-choice div { .essentials-toggle .fa-chevron-right { background-position: -460px -72px !important; } +/*End - List essentials toggle*/ .module-name-tooltip .qtip-content { font-size: 12px; padding: 3px; @@ -6520,25 +6679,20 @@ li.select2-search-choice div { border-left: 1px solid #DDDDDD; } .main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, .main-container-Reports .module-nav { width: 0; } .main-container-Documents .mod-switcher-container, -.main-container-RecycleBin .mod-switcher-container, .main-container-Reports .mod-switcher-container { width: 0; } .main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, .main-container-Reports .sidebar-essentials { width: 283px; left: 0; } .main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { +.main-container-Reports .full-width { padding-left: 0px !important; } .listViewPageDiv .ps-scrollbar-x-rail { @@ -6589,16 +6743,16 @@ li.select2-search-choice div { #reportDetails .pivot .toptitle.targetY0, #reportDetails .pivot .lefttitle.targetX0 { border-color: #F3F3F4 #F3F3F4 #cbcbcf; - border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); background-color: #474747; - background-image: -moz-linear-gradient(top,#555555,#333333); - background-image: -ms-linear-gradient(top,#555555,#333333); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#555555),to(#333333)); - background-image: -webkit-linear-gradient(top,#555555,#333333); - background-image: -o-linear-gradient(top,#555555,#333333); - background-image: linear-gradient(top,#555555,#333333); + background-image: -moz-linear-gradient(top, #555555, #333333); + background-image: -ms-linear-gradient(top, #555555, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); + background-image: -webkit-linear-gradient(top, #555555, #333333); + background-image: -o-linear-gradient(top, #555555, #333333); + background-image: linear-gradient(top, #555555, #333333); background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555',endColorstr='#333333',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333', GradientType=0); min-height: 30px; } #reportDetails .pivot th.toptitle.targetY0, @@ -6640,7 +6794,8 @@ li.select2-search-choice div { background: #FFFFFF; } .templateActions { - background: rgba(0,0,0,0.1); + background: rgba(0, 0, 0, 0.1); + /*padding: 4%;*/ bottom: 0; text-align: center; position: absolute; @@ -6648,6 +6803,9 @@ li.select2-search-choice div { zoom: 1; width: 100%; } +/*.templateActions i { + margin-right: 30px; +}*/ .thumbnails > li { float: left; height: 315px !important; @@ -6822,9 +6980,10 @@ a.btnReport:hover { left: 0px; } .bx-wrapper .bx-viewport { - width:99%; + width: 99%; left: 0px; background: #fff; + /*fix other elements on the page moving (on Chrome)*/ -webkit-transform: translatez(0); -moz-transform: translatez(0); -ms-transform: translatez(0); @@ -6882,7 +7041,7 @@ a.btnReport:hover { .filter-search-show { display: block !important; } -.emailTemplatesPopupTableContainer .listViewEntries .listViewEntryValue { +.emailTemplatesPopupTableContainer .listViewEntries .listViewEntryValue { max-width: 100%; min-width: 150px; } @@ -6917,12 +7076,15 @@ input:focus::-webkit-input-placeholder { input:focus:-moz-placeholder { color: transparent; } +/* FF 4-18 */ input:focus::-moz-placeholder { color: transparent; } +/* FF 19+ */ input:focus:-ms-input-placeholder { color: transparent; } +/* IE 10+ */ .global-actions .dropdown-menu:before { position: absolute; top: -7px; @@ -6931,7 +7093,7 @@ input:focus:-ms-input-placeholder { border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-left: 7px solid transparent; - border-bottom-color: rgba(0,0,0,0.2); + border-bottom-color: rgba(0, 0, 0, 0.2); content: ''; } .global-actions .dropdown-menu:after { @@ -7116,6 +7278,7 @@ input:focus:-ms-input-placeholder { text-align: center; } #OnBoardLayout #OnBoardPageContainer .crmGoals textarea::-webkit-input-placeholder { + /* WebKit browsers */ text-align: center; padding: 20%; font-size: 12px; @@ -7257,23 +7420,121 @@ input:focus:-ms-input-placeholder { .importServiceSelectionContainer .app-item { text-align: center; } +#composeEmailContainer .modal-body .quickCreateContent, +#QuickCreate .modal-body .quickCreateContent, +#create .quickCreateContent { + margin-top: 25px; +} +.settingsgroup-panel .widgetContainer .menuItemLabel .pinUnpinShortCut { + display: none; + margin-top: 2px; +} +.settingsgroup-panel .widgetContainer .menuItemLabel:hover .pinUnpinShortCut { + display: inline-block; +} +@-moz-document url-prefix() { + .duplicateHandlingContainer .tooltip-inner { + width: 550px; + max-width: 550px; + } +} +.duplicateHandlingContainer .tooltip-inner { + text-align: left !important; +} +.duplicateHandlingContainer .syncMessage { + margin-top: 5px !important; +} +.duplicateHandlingContainer .actionsList { + width: 230px !important; +} +.duplicationMessageContainer { + background-color: #f2dede !important; + color: #b94a48 !important; +} +.duplicationMessageContainer .duplicationMessageHeader { + margin-bottom: 8px; +} +.listViewRecordActions .quickView, +.listViewRecordActions .markStar, +.listViewRecordActions .markAsHeld, +.listViewRecordActions .holdFollowupOn { + margin-top: 4px; +} +.app-menu .module-icon .custom-module { + font-size: 14px; + border-radius: 4px; + color: #000; + background-color: #FFFFFF; + padding: 4px 10px 4px 5px !important; +} +.menu-item .custom-module { + font-family: 'OpenSans-Regular', sans-serif; + font-size: 12px; + border-radius: 4px; + padding: 2px; + color: #000; + background-color: #FFFFFF; +} +.modules-menu .custom-module { + color: #FFFFFF; + margin-left: 0px; + display: inline; + border: 1px solid #FFFFFF; + border-radius: 4px; + padding: 3px 4px 3px 2px !important; + font-weight: bold; +} +#quickCreateModules .custom-module, +.workflowListContainer .custom-module, +.dashBoardTabContents .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #FFFFFF; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #000000; + background-color: #FFFFFF; +} +.task-details .custom-module { + border-radius: 4px; + padding: 1px 4px; + color: #FFFFFF; + background-color: #777; +} +.related-tabs .custom-module, +#relatedmenuList .custom-module { + border-radius: 4px; + color: #FFFFFF; + background-color: #777; + padding: 5px 7px; + font-weight: bold; +} +.record-header .custom-module { + font-size: 30px; +} +.moduleIcon .custom-module { + font-weight: bold; +} .modules-menu ul li.active a { border-left: 3px solid #EF5E29; opacity: 1; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a:hover { +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a:hover { background-color: #fff; } -.cp-nav-header-wrapper>li.disabled>a:hover { +.cp-nav-header-wrapper > li.disabled > a:hover { border: 1px solid transparent; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a { +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a { background-color: #fff; } -#portalModulesTable>li.portalModuleRow.active>a:hover { +#portalModulesTable > li.portalModuleRow.active > a:hover { background-color: #fff !important; } -#portalModulesTable>li.portalModuleRow.active>a:focus { +#portalModulesTable > li.portalModuleRow.active > a:focus { background-color: #fff !important; } .portal-dashboard { @@ -7369,14 +7630,14 @@ input:focus:-ms-input-placeholder { .portal-dashboard { border-bottom: 0px ! important; } -#portal-shortcutsContainer>ul { +#portal-shortcutsContainer > ul { border-bottom: 0px ! important; } #reportDetails .table-bordered { background: white; } .templateActions { - background: rgba(0,0,0,0.1); + background: rgba(0, 0, 0, 0.1); bottom: 0; text-align: center; position: absolute; @@ -7523,40 +7784,3 @@ a.btnReport:hover { height: 450px; overflow: auto; } -.fieldValue .value a { - color: #15c !important; -} -.editViewContents .fieldLabel { - min-width: 100px; - width: 20%; - word-break: break-all; -} -.editViewContents .fieldValue { - width:30%; -} -.editViewContents td.fieldValue[colspan="3"] { - width:80%; -} -.editViewContents textarea.textAreaElement { - width: 88%; -} -.editViewContents input[type="checkbox"] { - width: 15px; - height: 15px; -} -.editViewContents input[type="radio"] { - width: 15px; - height: 15px; -} -#composeEmailContainer .modal-body .quickCreateContent, -#QuickCreate .modal-body .quickCreateContent, -#create .quickCreateContent { - margin-top: 25px; -} -.settingsgroup-panel .widgetContainer .menuItemLabel .pinUnpinShortCut { - display: none; - margin-top: 2px; -} -.settingsgroup-panel .widgetContainer .menuItemLabel:hover .pinUnpinShortCut { - display: inline-block; -} \ No newline at end of file diff --git a/layouts/v7/skins/marketing_and_sales/style.css b/layouts/v7/skins/marketing_and_sales/style.css index 0a5c6c0cdce0a97b1428042ad645e71b869af4b1..510bcede736bf6a1123bd3aa080e94743699c140 100644 --- a/layouts/v7/skins/marketing_and_sales/style.css +++ b/layouts/v7/skins/marketing_and_sales/style.css @@ -1,7 +1,9 @@ @font-face { font-family: 'Oswald'; src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot'); - src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot?#iefix') format('embedded-opentype'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.woff') format('woff'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.ttf') format('truetype'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.svg#Oswald') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.svg#Oswald') format('svg'); + /* Legacy iOS */ font-weight: normal; font-style: normal; text-rendering: optimizeLegibility; @@ -15,27 +17,37 @@ a:active { @font-face { font-family: 'OpenSans-Regular'; src: url('../fonts/OpenSans/Regular/OpenSans-Regular.eot'); - src: url('../fonts/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'), url('../fonts/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), url('../fonts/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), url('../fonts/OpenSans/Regular/OpenSans-Regular.svg#svgFontName') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/OpenSans/Regular/OpenSans-Regular.svg#svgFontName') format('svg'); + /* Legacy iOS */ } @font-face { font-family: 'OpenSans-Semibold'; src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot'); - src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.ttf') format('truetype'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff2') format('woff2'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff') format('woff'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.svg#svgFontName') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.svg#svgFontName') format('svg'); + /* Legacy iOS */ } @font-face { font-family: 'ProximaNova-Regular'; - src: url('../fonts/ProximanovaWebfont/ProximaNova-Regular.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.woff') format('woff'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'); + src: url('../fonts/ProximanovaWebfont/ProximaNova-Regular.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/ProximanovaWebfont/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'); + /* IE6-IE8 */ + /* Safari, Android, iOS */ font-style: normal; font-weight: normal; text-rendering: optimizeLegibility; } @font-face { font-family: 'ProximaNova-Semibold'; - src: url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.woff') format('woff'), url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.eot?#iefix') format('embedded-opentype'); + src: url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.eot?#iefix') format('embedded-opentype'); + /* IE6-IE8 */ font-style: normal; font-weight: normal; text-rendering: optimizeLegibility; } +/**********************************/ +/************ Layout **************/ +/**********************************/ html { height: 100%; overflow-y: auto; @@ -102,6 +114,7 @@ body { @media (min-width: 992px) { .global-nav .logo-container { display: inline-block; + width: 150px; z-index: 2; padding-left: 6%; margin-top: 1px; @@ -113,11 +126,13 @@ body { position: absolute; width: 100%; height: 42px; + /* border-top:1px solid #ddd;*/ border-bottom: 1px solid #ddd; } .app-nav .module-action-bar .module-action-content { background: #FBFBFB; height: 41px; + /* border-bottom: 1px solid #eee;*/ } .app-nav .module-action-bar .module-action-content .navbar-right { margin-right: 0; @@ -163,7 +178,7 @@ body { padding-left: 0; } } -.btn-toolbar >.btn-group:first-child { +.btn-toolbar > .btn-group:first-child { margin-left: 5px; } .vt-notification { @@ -196,8 +211,12 @@ body { .vt-notification [data-notify="message"] { color: #eaeaea; } +/**********************************/ +/******** Navigation styles *******/ +/**********************************/ .company-logo { height: 40px; + width: 150px; margin: 0 0; display: inline-block; margin-left: 1px; @@ -214,10 +233,13 @@ body { font-size: 16px; position: relative; } +/*.module-action-bar .module-action-content #appnav{ + padding-top:5px; +}*/ .global-nav .navbar-nav > li div a { padding: 15px; } -.global-nav>ul { +.global-nav > ul { margin-right: 20px; } .global-nav .search-links-container { @@ -267,26 +289,28 @@ body { float: right; height: 42px; } - .module-action-bar .navbar-right .nav>li { + .module-action-bar .navbar-right .nav > li { display: inline-block; } - .module-action-bar .navbar-right .nav>li a { + .module-action-bar .navbar-right .nav > li a { padding: 0 10px; } .global-nav .logo-container { border-bottom: 0; + width: 150px; } } @media (max-width: 991px) { .global-nav .logo-container { border-bottom: 0; + width: 150px; } .notificationMessageHolder { padding-left: 45%; } } @media (min-width: 991px) { - .nav>li>a.qc-button { + .nav > li > a.qc-button { padding: 2px 3px; margin-top: 13px; margin-right: 15px; @@ -294,7 +318,7 @@ body { color: #fff; border-radius: 20px; } - .nav>li>a.qc-button span { + .nav > li > a.qc-button span { vertical-align: top; } } @@ -313,6 +337,7 @@ body { width: 100%; height: 100%; } +/** App Nav Styles */ .active-app-title { white-space: nowrap; font-family: Oswald, "OpenSans-Semibold", "Helvetica Neue", Helvetica, sans-serif; @@ -367,7 +392,9 @@ body { height: 42px; text-align: center; line-height: 42px; + /* background-color: #2c3b49;*/ color: #ffffff; + /*border-bottom: 1px solid #272B46;*/ } .app-nav .app-indicator-icon-container .app-indicator-icon { font-size: 24px; @@ -391,6 +418,9 @@ body { .app-PROJECT { background: #8E44AD !important; } +.app-TOOLS { + background: #EF5E29 !important; +} .app-DEFAULT, .app-DASHBOARD { background: #56ccc8 !important; @@ -479,16 +509,16 @@ body { right: -4px; } #overlayPageContent .mCSB_scrollTools, -#overlayPageContent .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonUp, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonDown, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonLeft, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonRight, .app-list .mCSB_scrollTools, +#overlayPageContent .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .app-list .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonUp, .app-list .mCSB_scrollTools .mCSB_buttonUp, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonDown, .app-list .mCSB_scrollTools .mCSB_buttonDown, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonLeft, .app-list .mCSB_scrollTools .mCSB_buttonLeft, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonRight, .app-list .mCSB_scrollTools .mCSB_buttonRight { -webkit-transition: none; transition: none; @@ -534,6 +564,9 @@ a.menu-item:hover { .app-item-color-PROJECT { border-left: 4px solid #8E44AD; } +.app-item-color-TOOLS { + border-left: 4px solid #EF5E29; +} .app-item .fa { font-size: 1.5em; -webkit-transition: all 0.25s ease-in; @@ -700,6 +733,7 @@ a.menu-item:hover { width: 0px; overflow: hidden; } +/* User Logout */ .logout-content { padding: 10px; width: 350px; @@ -754,6 +788,9 @@ a.menu-item:hover { .app-settings { background: #FFFFFF; } +/*************************************************/ +/******** View styles (List/Edit/Detail..) *******/ +/*************************************************/ .viewContent .content-area { padding-left: 50px; } @@ -780,6 +817,9 @@ a.menu-item:hover { opacity: 0.5; pointer-events: none; } +.input-group.percentage-input-group .form-control { + width: 100% !important; +} .bottomscroll-div, .topscroll-div { display: table; @@ -793,6 +833,9 @@ a.menu-item:hover { display: inline-block; word-break: break-word; } +.fieldValue .value a { + color: #15c !important; +} .modal-header button.close { padding: 0; color: #ffffff; @@ -865,6 +908,9 @@ input[type="password"].inputElement { padding-right: 20px; padding-left: 20px; } +/**********************************/ +/**** Side vertical Nav styles ****/ +/**********************************/ .module-nav { background: #fff; z-index: 1004; @@ -880,6 +926,9 @@ input[type="password"].inputElement { left: 0; transition: 0s width; } +.module-nav:hover { + /*z-index: 1001;*/ +} .modules-menu ul { list-style: none; margin-left: 0; @@ -914,7 +963,7 @@ input[type="password"].inputElement { float: left; font-size: 20px; } -.modules-menu ul li a>span { +.modules-menu ul li a > span { margin-left: 10px; vertical-align: middle; font-size: 13px; @@ -954,6 +1003,7 @@ input[type="password"].inputElement { width: 100%; left: 0%; } +/** Lists Menu in Side bar */ .module-filters .settings-sidebar, .module-filters .sidebar-container { padding: 0 12px; @@ -987,6 +1037,7 @@ input[type="password"].inputElement { .lists-menu-container hr { margin: 5px 0; } +/* mScrollbar customization for lists widget */ .lists-menu-container .menu-scroller .mCSB_scrollTools { width: 13px; } @@ -998,8 +1049,10 @@ input[type="password"].inputElement { .modules-menu .mCSB_scrollTools .mCSB_draggerContainer { left: 8px; } +/* Customization ends */ .lists-menu-container .list-menu-content .more-less-link { color: #fff; + /*text-decoration: none;*/ } .lists-menu-container .list-menu-content .sub-header { color: #ddd; @@ -1085,7 +1138,6 @@ input[type="password"].inputElement { background-color: #FFFFFF; border: 1px solid #DDDDDD; margin: 5px 0 10px; - color: #ccc; padding: 5px 10px; } .search-folders:focus, @@ -1104,9 +1156,11 @@ input[type="password"].inputElement { .common-links-container > div a { color: #fff; } +/*Search Container styles */ .search-container { min-height: 300px; position: absolute; + /*z-index: 1030;*/ width: 100%; top: 0; background: #FBFBFB; @@ -1125,6 +1179,7 @@ input[type="password"].inputElement { .footer p { margin: 5px 0; } +/*** Utilities ***/ .showElement { display: block !important; height: 100%; @@ -1247,11 +1302,11 @@ ul.unstyled { } .emptyRecordsDiv .emptyRecordsContent { display: inline-block; - font-size: 16px; left: 50%; margin-left: -25%; position: absolute; width: 50%; + font-size: 16px; } .textOverflowEllipsis { overflow: hidden; @@ -1276,6 +1331,9 @@ ul.unstyled { .removeNoFileChosen { color: transparent !important; } +/*********************************** +**********Button Styles********** +***********************************/ .module-buttons-container { float: right; margin-right: 10px; @@ -1297,6 +1355,7 @@ ul.unstyled { margin: 4px 2px; border-radius: 2px; border: 1px solid #ddd; + text-transform: uppercase; color: #666; background: #fff; } @@ -1317,6 +1376,9 @@ ul.unstyled { color: #FFFFFF !important; background: #5bc0de !important; } +/*********************************** +**********List View Styles********** +***********************************/ .fa.pull-left { margin-right: 0; } @@ -1351,7 +1413,7 @@ ul.unstyled { font-size: 20px; } .listview-pagination .disabled { - color: rgba(0,0,0,0.2); + color: rgba(0, 0, 0, 0.2); } .listview-pagination .disabled:hover { cursor: default; @@ -1379,6 +1441,8 @@ ul.unstyled { .listview-table { margin-bottom: 0; border-top: 0; + /* Horizontal scroll will not work if table layout Fixed */ + /* table-layout: fixed;*/ } .listview-table tr td, .listview-table tr th { @@ -1408,7 +1472,7 @@ ul.unstyled { width: 100%; } .listViewEntries .relatedListEntryValues .fieldValue .value, -.listViewEntries .listViewEntryValue .fieldValue .value { +.listViewEntries .listViewEntryValue .fieldValue .value { vertical-align: middle; width: 100%; display: inline-block; @@ -1423,7 +1487,7 @@ ul.unstyled { } .listview-table-norecords .table-actions, .listview-table .table-actions { - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -1489,13 +1553,13 @@ input[type=checkbox]:checked { vertical-align: middle; display: table-cell; } -.listview-table tr.searchRow th { +.listview-table tr.searchRow th { padding: 5px 3px; } -.listview-table tr.searchRow th.inline-search-btn { +.listview-table tr.searchRow th.inline-search-btn { padding: 3px 10px; } -.listview-table tr.searchRow th.inline-search-btn button { +.listview-table tr.searchRow th.inline-search-btn button { text-align: center; width: 85%; text-shadow: none; @@ -1523,6 +1587,18 @@ input[type=checkbox]:checked { background-color: #FFEEEE !important; background-image: none !important; } +/*.floatThead-wrapper .table-container{ + z-index: 0 !important; +}*/ +/* List view bottom fixed scroll */ +/*.bottom-fixed-scroll{ + height: 14px; + position: relative; + top: -15px; + overflow-x: auto; + overflow-y: hidden; + width: 100%; +}*/ .scroller-div { height: 1px; } @@ -1644,9 +1720,15 @@ input[type=checkbox]:checked { #listColumnFilterContainer .disabled i { color: #ccc; } +/********************************** +**********Detail View Styles********** +**********************************/ .detailViewButtoncontainer { padding-top: 5px; } +.detailViewButtoncontainer button.btn { + margin: 0px 1px !important; +} .detailview-header .recordBasicInfo > .info-row { margin-bottom: 4px; } @@ -1727,6 +1809,9 @@ th { margin-top: 3%; margin-right: 2%; } +.overlayDetailHeader button.btn { + margin: 0px 1px !important; +} .referencefield-wrapper .createReferenceRecord { float: left; margin-left: 5px; @@ -1966,10 +2051,10 @@ th { z-index: 1030; } .overlay-container-60 { - margin-left: 42px; + margin-left: 42px ; } .overlay-container-300 { - margin-left: 230px; + margin-left: 230px ; } .overlayPageContent { background: #FFFFFF; @@ -2092,6 +2177,9 @@ th { height: 26px; line-height: 25px; } +/********************************** +**********Summary View Styles****** +**********************************/ .summary-table { width: 100%; table-layout: fixed; @@ -2212,33 +2300,33 @@ th { opacity: 1; cursor: pointer; } -.details.row >form .social-media-toggle { +.details.row > form .social-media-toggle { position: absolute; right: -15px; display: inline-block; width: 500px; border-left: 0px; } -.details.row >form .social-media-widget { +.details.row > form .social-media-widget { border-left: 1px solid #ddd; border-bottom: 1px solid #ddd; height: 100%; background: white; } -.details.row >form div[class*="col-"].resizable-summary-view { +.details.row > form div[class*="col-"].resizable-summary-view { padding-left: 0; padding-right: 0px; } -.details.row >form>div[class*="col-"], -.details.row >form .resizable-summary-view div[class*="col-"] { +.details.row > form > div[class*="col-"], +.details.row > form .resizable-summary-view div[class*="col-"] { padding-right: 0; padding: 0px 5px; } -.details.row >form>div[class*="col-"]:first-child, -.details.row >form .left-block { +.details.row > form > div[class*="col-"]:first-child, +.details.row > form .left-block { padding-left: 0 !important; } -.details.row >form>div[class*="col-"]:last-child { +.details.row > form > div[class*="col-"]:last-child { padding-right: 0; } .summaryWidgetContainer .noContent { @@ -2251,6 +2339,9 @@ th { .caseReplyArea .nav > li { padding: 0 10px; } +/********************************** +**********Edit View Styles******* +**********************************/ .main-container .editViewModNavigator.module-nav, .editViewModNavigator .mod-switcher-container, .editViewModNavigator .modules-menu { @@ -2291,9 +2382,28 @@ th { width: 100%; } .editViewContents .input-group { - width: 229px; + width: 208px; float: left; } +.editViewContents .fieldLabel { + min-width: 100px; + width: 20%; + word-break: break-all; +} +.editViewContents .fieldValue { + width: 30%; +} +.editViewContents td.fieldValue[colspan="3"] { + width: 80%; +} +.editViewContents textarea.textAreaElement { + width: 88%; +} +.editViewContents input[type="checkbox"], +.editViewContents input[type="radio"] { + width: 15px; + height: 15px; +} .input-group.inputElement .input-group-addon { border: none; border-left: 1px solid #ddd; @@ -2370,6 +2480,9 @@ th { z-index: 1000; padding: 7px; } +/********************************** +**********Advance Search styles********** +**********************************/ .op0.fadeInx { opacity: 1; } @@ -2442,7 +2555,11 @@ th { } .btn + input { margin-left: 5px; + /* margin-top : 3px;*/ } +/********************************** +**********Extension Store Styles********** +**********************************/ .extensionstore .app-trigger { width: 98%; } @@ -2473,6 +2590,9 @@ th { .extensionContents .extensionError { color: #F10404; } +/********************************** +**********Extension Store Nav Bar********** +**********************************/ .tabbable-line > .nav-tabs { border: none; margin: 0px; @@ -2541,6 +2661,9 @@ th { .extensionContents .listview-table { width: 100%; } +/******************************************* +******Detail View related list styles******* +********************************************/ .relatedContents .listViewContentHeaderValues:hover { text-decoration: none; color: #333; @@ -2598,6 +2721,9 @@ th { .relatedViewActions .btn-group { margin-right: 15px; } +/******************************************* +****************** Modal ******************* +********************************************/ .modal-header { padding: 5px 15px; background: #596875; @@ -2625,6 +2751,7 @@ th { width: 100%; float: left; background: #596875; + /* height: 100%;*/ } .settings-menu { display: inline-block; @@ -2641,7 +2768,7 @@ th { cursor: n-resize; } .settings-menu-items { - box-shadow: 0 1px 1px rgba(0,0,0,0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); margin-bottom: 10px; text-align: justify; } @@ -2770,6 +2897,7 @@ th { vertical-align: middle; color: #3399ff; } +/* .squaredFour */ .squaredFour { width: 20px; position: relative; @@ -2783,9 +2911,9 @@ th { top: 0; left: 0; background: #fcfff4; - background: linear-gradient(top,#fcfff4 0%,#dfe5d7 40%,#b3bead 100%); + background: linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); border-radius: 4px; - box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); + box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); } .squaredFour label:after { content: ''; @@ -2813,13 +2941,16 @@ th { .importBlockContainer { color: #596875; } +/******************************************* +************* Social Buttons *************** +********************************************/ .btn-block + .btn-block { margin-top: 5px; } .btn-google-plus { color: #FFFFFF !important; background-color: #DD4B39; - border-color: rgba(0,0,0,0.2); + border-color: rgba(0, 0, 0, 0.2); } .btn-social { position: relative; @@ -2838,15 +2969,18 @@ th { line-height: 34px; font-size: 1.6em; text-align: center; - border-right: 1px solid rgba(0,0,0,0.2); + border-right: 1px solid rgba(0, 0, 0, 0.2); } +/******************************************* +************* Updates Timeline *************** +********************************************/ .recentActivitiesContainer .history { margin: 0 auto; padding: 20px 20px 1px; max-width: 100%; overflow-x: visible; - -webkit-transition: opacity .2s ease-out; - transition: opacity .2s ease-out; + -webkit-transition: opacity 0.2s ease-out; + transition: opacity 0.2s ease-out; } .updates_timeline { padding-top: 20px; @@ -2855,6 +2989,7 @@ th { padding: 0; list-style: none; } +/* The line */ .updates_timeline:before { content: ''; position: absolute; @@ -2873,6 +3008,7 @@ th { min-height: 40px; z-index: 2; } +/* Left Content(Time) */ .updates_timeline > li .update_time { position: absolute; margin: 0; @@ -2884,6 +3020,7 @@ th { font-size: 15px; font-style: italic; } +/* Right content(Update info) */ .updates_timeline > li .update_info { padding: 10px 10px 1px; display: block; @@ -2892,10 +3029,11 @@ th { position: relative; top: -45px; } -.updates_timeline > li .update_info >h3 { +.updates_timeline > li .update_info > h3 { font-size: 1.1em; margin-left: -3%; } +/* The icons */ .updates_timeline > li .update_icon { position: relative; border-radius: 50%; @@ -2908,6 +3046,7 @@ th { color: #fff; line-height: 35px; } +/* More Button */ .updates_timeline #more_button .update_icon { position: relative; border-radius: 0; @@ -3015,6 +3154,9 @@ th { vertical-align: super; font-size: 13px; } +/******************************************* +************* Task Management ************** +********************************************/ #taskManagementContainer .data-body { margin-bottom: 50px; } @@ -3077,15 +3219,16 @@ th { #taskManagementContainer .other-details { color: #979797; } +/*overwriting jquery ui css*/ .ui-menu { z-index: 10000; } #taskManagementContainer button.active { background: #3B83F7; color: white; - text-shadow: 0 1px rgba(0,0,0,0.3); + text-shadow: 0 1px rgba(0, 0, 0, 0.3); border: 1px solid #135fd7; - box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); } .taskSubject { width: 99%; @@ -3093,6 +3236,9 @@ th { #taskManagementContainer .mCustomScrollbar .mCSB_inside > .mCSB_container { margin-right: 13px; } +/******************************************* +************* Settings Page ************** +********************************************/ .settingsPageDiv.content-area { margin-right: 0; } @@ -3126,6 +3272,9 @@ th { .settingsgroup-accordion a i { margin-right: 5px; } +.settingsgroup-accordion a span { + text-transform: uppercase; +} .settingsgroup { background: #2C3B49; height: 100%; @@ -3282,35 +3431,59 @@ th { } .mini-slider-control[data-value="0"] .ui-slider-handle { background: #7d7e7d; - background: -moz-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#7d7e7d),color-stop(100%,#0e0e0e)); - background: -webkit-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -o-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -ms-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: linear-gradient(to bottom,#7d7e7d 0%,#0e0e0e 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d',endColorstr='#0e0e0e',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #7d7e7d), color-stop(100%, #0e0e0e)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #7d7e7d 0%, #0e0e0e 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d', endColorstr='#0e0e0e', GradientType=0); + /* IE6-9 */ margin-left: 0px; } .mini-slider-control[data-value="1"] .ui-slider-handle { background: #ffb76b; - background: -moz-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#ffb76b),color-stop(0%,#ffa73d),color-stop(49%,#ff7c00),color-stop(100%,#ff7f04)); - background: -webkit-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -o-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -ms-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: linear-gradient(to bottom,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb76b',endColorstr='#ff7f04',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffb76b), color-stop(0%, #ffa73d), color-stop(49%, #ff7c00), color-stop(100%, #ff7f04)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb76b', endColorstr='#ff7f04', GradientType=0); + /* IE6-9 */ margin-left: -6px; } .mini-slider-control[data-value="2"] .ui-slider-handle { background: #bfd255; - background: -moz-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#bfd255),color-stop(79%,#8eb92a),color-stop(100%,#72aa00),color-stop(100%,#9ecb2d)); - background: -webkit-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -o-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -ms-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: linear-gradient(to bottom,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bfd255',endColorstr='#9ecb2d',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #bfd255), color-stop(79%, #8eb92a), color-stop(100%, #72aa00), color-stop(100%, #9ecb2d)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bfd255', endColorstr='#9ecb2d', GradientType=0); + /* IE6-9 */ margin-left: -13px; } .ModulemanagerSettings .moduleblock .hiden { @@ -3335,10 +3508,13 @@ th { th { padding: 6px; } +/******************************************* +********** CustomerPortal styles start ******** +********************************************/ .cp-tabs .enabledModules { display: inline-block ! important; - margin-left: 4px !important; - margin-right: 4px !important; + margin-left: 4px!important; + margin-right: 4px!important; vertical-align: top; } .drag-portal-module { @@ -3445,7 +3621,7 @@ th { margin-left: 5px; } .portal-field-delete { - margin-left: 45px !important; + margin-left: 45px!important; } .portalModuleRow { border-left: 4px solid #3CB878 !important; @@ -3462,7 +3638,7 @@ th { content: "*"; color: red; } -.nav-tabs .cp-modules > .active >a, +.nav-tabs .cp-modules > .active > a, .nav-tabs .cp-modules > .active > a:hover { border: 0px !important; border-top-right-radius: 0px; @@ -3624,7 +3800,7 @@ th { display: inline-block; } .quickPreview .updates_timeline:before { - background: #e6e6e6; + background: #e5e5e5; width: 2px; margin-left: -1%; } @@ -3639,13 +3815,16 @@ th { .quickPreviewComments .recentComments .commentDetails .comment { line-height: 15px; } -.quickPreviewComments .summaryWidgetContainer { +.quickPreviewComments .summaryWidgetContainer { border: 0; padding: 0; } .quickPreview .recentActivitiesContainer .history { padding: 0; } +/******************************************* +********** Calendar view styles ************ +********************************************/ .calendar-sidebar { width: 100% !important; } @@ -3802,6 +3981,11 @@ th { display: inline-block; text-align: center; } +/******************************************* +********** Calendar view styles end ******** + +********** Documents Module styles ********* +********************************************/ .dragdrop-dotted { border: 2px dashed #C0C0C0; min-width: 300px; @@ -3861,13 +4045,16 @@ tr.file > td.fileOwnerData { width: 100px; white-space: pre-wrap; } +/******************************************* +********** Documents Module styles end ***** +********************************************/ .engagementsContainer .engagements_content { padding-top: 15px; } .summaryWidgetContainer .engagementsContainer table { width: inherit; } -.engagements_content table thead>tr:first-child { +.engagements_content table thead > tr:first-child { border: 1px solid #CCC; background-color: #F5F5F5; } @@ -3918,6 +4105,9 @@ tr.file > td.fileOwnerData { font-size: 15px; padding: 1% 0; } +/******************************************* +********** Mailroom view styles start ******** +********************************************/ .mailroomBanner { margin: 23px 0; height: 215px; @@ -4126,6 +4316,7 @@ tr.file > td.fileOwnerData { margin-left: 0; } .mentionMessages .mention_follow_up { + /*//load this color from variable.less*/ background-color: green; } .modelContainer .modal-content { @@ -4274,6 +4465,7 @@ form[name="notification_settings"] .select2-choice { margin-left: 0; } .mentionMessages .mention_follow_up { + /*//load this color from variable.less*/ background-color: green; } .modal-content .mention_followup .row { @@ -4305,6 +4497,9 @@ form[name="notification_settings"] .select2-choice { .mentionMessageHeader .MultiFile-remove { color: #FFFFFF; } +/******************************************* +********** Mailroom view styles end ******** +********************************************/ .detailview-header { margin-bottom: 10px; } @@ -4320,6 +4515,7 @@ form[name="notification_settings"] .select2-choice { margin: 0px 10px; text-decoration: underline !important; color: #3498DB; + /*font-size : 12px;*/ } .tag { display: inline-block; @@ -4403,11 +4599,11 @@ form[name="notification_settings"] .select2-choice { border: 1px solid #dcdcdc; } #tagCloud .tag { - color: #5ea9dd; padding: 0px; background-color: #FFFFFF; border-color: #FFFFFF; border-radius: 0px; + color: #5ea9dd; margin: 3px; } #tagCloud .tag[data-type="public"] { @@ -4418,6 +4614,9 @@ form[name="notification_settings"] .select2-choice { max-width: 80px; vertical-align: bottom; } +/******************************************* +********** Groups view styles ******** +********************************************/ #s2id_memberList li > div, .groupMembersColors li > div { margin-left: 10px; @@ -4492,6 +4691,12 @@ form[name="notification_settings"] .select2-choice { margin: 0px; color: #444444; } +/******************************************* +********** Groups view styles ends******** +********************************************/ +/******************************************* +********** Picklist Css ******** +********************************************/ .pickListValue { background-color: #FFFFFF; } @@ -4506,6 +4711,12 @@ form[name="notification_settings"] .select2-choice { padding: 2px 1px !important; line-height: 15px; } +/******************************************* +************* Dashboard Styles ************* +********************************************/ +li.dashboardWidget { + overflow: hidden; +} .dashboardWidgetHeader .title { padding-bottom: 10px; font-size: 15px; @@ -4526,9 +4737,6 @@ form[name="notification_settings"] .select2-choice { .dashBoardContainer .tabContainer .tab-content { margin-top: 10px; } -.dashBoardContainer .dashBoardTabContents ul { - margin: 0; -} .dashBoardContainer .dashBoardTabContents ul li { border: 3px solid #E2E2E4; box-shadow: 1px; @@ -4595,7 +4803,7 @@ form[name="notification_settings"] .select2-choice { display: inline-block; opacity: 1; } -.dashBoardContainer .tabContainer li a .deleteTab:hover { +.dashBoardContainer .tabContainer li a .deleteTab:hover { cursor: pointer; } #minilistWizardContainer .fieldLabel { @@ -4632,6 +4840,9 @@ form[name="notification_settings"] .select2-choice { resize: none; width: 100%; } +/******************************************* +********** Picklist DependencyGraph ******** +********************************************/ #dependencyGraph .tableHeading { text-align: center; padding-top: 30px; @@ -4657,6 +4868,9 @@ form[name="notification_settings"] .select2-choice { #dependencyGraph .dependencyMapping .pickListDependencyTable .selectedCell { background: #a9cbf5; } +/******************************************* +********** Rewriting select2 for consistency******** +********************************************/ .select2-container .select2-choice { height: 29px; border-radius: 1px; @@ -4750,6 +4964,7 @@ hr { position: fixed; bottom: 0; background: #EFEFEF; + /*width:100%;*/ border-left: 42px solid #2c3b49; height: 60px; left: 0; @@ -4768,7 +4983,6 @@ hr { } .settingsPageDiv .modal-overlay-footer { margin-left: 230px; - border-left: 0px solid; } .settingsOverlayContainer .modal-overlay-footer { margin: 0; @@ -4791,14 +5005,14 @@ hr { vertical-align: middle; margin-top: 6px; } -.list-menu-content .pull-right>.dropdown-menu { +.list-menu-content .pull-right > .dropdown-menu { left: -126px; position: relative; } -.dropdown-menu>li>a { +.dropdown-menu > li > a { padding: 4px 6px; } -.dropdown-menu>li>a span i { +.dropdown-menu > li > a span i { font-size: 15px; vertical-align: middle; } @@ -4806,11 +5020,11 @@ hr { max-height: 300px; padding-left: 0; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container { margin-right: 0; padding: 4px 6px; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container>li>a { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container > li > a { display: block; padding: 3px 5px; clear: both; @@ -4819,7 +5033,7 @@ hr { color: #333; white-space: nowrap; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container span i { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container span i { font-size: 15px; vertical-align: middle; } @@ -4842,16 +5056,16 @@ hr { .calendar-sidebar .calendar-sidebar-tabs.padding { padding-left: 20px !important; } -.related-tabs.row .nav>li { +.related-tabs.row .nav > li { padding: 0 10px; margin: 0 2px; } -.massEditTabs.nav>li { +.massEditTabs.nav > li { padding: 0 10px; margin: 0 4px; } -.row .nav>li>a, -.row .nav>li>a:hover { +.row .nav > li > a, +.row .nav > li > a:hover { padding: 10px 3px; border: none; vertical-align: bottom; @@ -4861,38 +5075,39 @@ hr { -webkit-box-sizing: border-box; -o-box-sizing: border-box; } -.row .nav>li>a:hover { +.row .nav > li > a:hover { border-bottom-color: #555; } -TN-34230 - -.row .nav>li>a:hover { +/*.row ul{ + padding:0; +}*/ +TN-34230 .row .nav > li > a:hover { border-bottom-color: #555; background: none; } .row ul li:first-child { margin-left: 0; } -.related-tabs .nav-tabs>li.active, -.related-tabs .nav-tabs>li:hover, -.related-tabs .nav-tabs>li.active:focus, -.dashBoardContainer .nav-tabs>li.active, -.dashBoardContainer .nav-tabs>li:hover, -.dashBoardContainer .nav-tabs>li.active:focus, -.contents.tabbable .nav-tabs>li.active, -.contents.tabbable .nav-tabs>li:hover, -.contents.tabbable .nav-tabs>li.active:focus { +.related-tabs .nav-tabs > li.active, +.dashBoardContainer .nav-tabs > li.active, +.contents.tabbable .nav-tabs > li.active, +.related-tabs .nav-tabs > li:hover, +.dashBoardContainer .nav-tabs > li:hover, +.contents.tabbable .nav-tabs > li:hover, +.related-tabs .nav-tabs > li.active:focus, +.dashBoardContainer .nav-tabs > li.active:focus, +.contents.tabbable .nav-tabs > li.active:focus { border: none; border-bottom: 3px solid #555; } -.nav-tabs>li.active>a, -.nav-tabs>li.active>a:hover, -.nav-tabs>li.active>a:focus, -.nav-tabs>li>a { +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus, +.nav-tabs > li > a { border: 0; } -.nav>li>a:hover, -.nav>li>a:focus { +.nav > li > a:hover, +.nav > li > a:focus { background-color: #FFFFFF; } .fa-pencil, @@ -4902,6 +5117,9 @@ TN-34230 .commentAttachmentName { font-size: 11px; } +/******************************************* +********** Layout Editor ******** +********************************************/ .marginBottom10px { margin-bottom: 10px; } @@ -4924,6 +5142,7 @@ TN-34230 } .zeroOpacity { opacity: 0; + /*for IE*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } @@ -4950,10 +5169,12 @@ TN-34230 .layoutContent .opacity:hover .actions { opacity: 1; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + /*for IE*/ filter: alpha(opacity=100); } .layoutContent .fieldPropertyContainer:hover .actions { opacity: 1; + /*for IE*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=100); } @@ -4976,6 +5197,7 @@ TN-34230 .relatedTabModulesList .addButton { border-radius: 2px; border: 1px solid #DDDDDD; + text-transform: uppercase; color: #666666; background: #FFFFFF; } @@ -5049,6 +5271,9 @@ TN-34230 margin-left: 5px; word-break: break-all; } +/******************************************* +************** Tax Management ************** +********************************************/ #TaxCalculationsContainer .table tr:first-child, .taxModalContainer #editTax .table tr:first-child { border-bottom: 1px solid #ccc; @@ -5088,6 +5313,9 @@ TN-34230 max-height: 500px; overflow-y: auto; } +/******************************************* +********** Workflows ******** +********************************************/ #workflow_edit .editViewBody { overflow: inherit; } @@ -5097,7 +5325,7 @@ TN-34230 } .timePicker { width: 9.5em !important; - z-index: 1101 !important; + z-index: 1070 !important; } .weekDaySelect .ui-state-default { background: inherit; @@ -5135,75 +5363,6 @@ TN-34230 .module-filters.active { background: #F7F7F7; } -.payment-type-selection { - margin-bottom: 30px; -} -.payment-type-selection img { - vertical-align: middle; -} -.currplan { - padding: 10px 20px; - background-color: #f3f3f3; - border: 1px solid #eee; - border-radius: 3px; -} -.currplan div { - display: inline-block; - font-size: 16px; -} -.planName { - display: inline-block; - color: #fff; - padding: 20px; - margin: 10px 20px; - font-size: 24px; - border-radius: 2px; -} -.plan-heading { - min-height: 168px; -} -.plan-title { - color: #fff; - font-size: 20px; - padding: 13px 0; -} -#sales_plan { - background: #3FC380; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#salespremium_plan { - background: #00B16A; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#support_plan { - background: #2980B9; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#supportpremium_plan { - background: #2980B9; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#ultimate_plan, -#exclusive_plan { - background: #F39C12; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#contact_plan { - background: #FF5959; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} .workflowListContainer .select2-container .select2-choice { height: 36px; } @@ -5218,6 +5377,7 @@ TN-34230 .contactAdd { border: 1px solid #eee; padding: 20px; + /*min-height: 310px !important;*/ } #subDetails table td { padding: 7px 10px; @@ -5340,9 +5500,9 @@ TN-34230 .productBundles { padding-left: 20px; } -.nav .open>a, -.nav .open>a:hover, -.nav .open>a:focus { +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { color: #000000; background-color: #FFFFFF; } @@ -5363,6 +5523,9 @@ TN-34230 width: 100%; overflow-x: auto; } +/******************************************* +*************** Mail Manager *************** +********************************************/ #mm_searchButton { height: 28px; background-color: #FFFFFF; @@ -5418,8 +5581,8 @@ TN-34230 padding: 1px 5px; border-radius: 3px; text-align: center; - text-shadow: 0 1px rgba(0,0,0,0.1); - background-image: -webkit-linear-gradient(top,#DD4B39 0,#D14836 100%); + text-shadow: 0 1px rgba(0, 0, 0, 0.1); + background-image: -webkit-linear-gradient(top, #DD4B39 0, #D14836 100%); border: 1px solid #C6322A; background-color: #DD4B39; } @@ -5637,6 +5800,7 @@ TN-34230 .width40per { width: 40%; } +/****** Mail Manager Ends ******/ .quickCreateContent .massEditTable textarea, .addCommentBlock .commentTextArea textarea { resize: vertical; @@ -5649,19 +5813,20 @@ TN-34230 .select2-container-multi .select2-choices { z-index: 1; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a:hover { +/****** Customer Portal Settings ******/ +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a:hover { background-color: #fff; } -.cp-nav-header-wrapper>li.disabled>a:hover { +.cp-nav-header-wrapper > li.disabled > a:hover { border: 0px ! important; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a { +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a { background-color: #fff; } -#portalModulesTable>li.portalModuleRow.active>a:hover { +#portalModulesTable > li.portalModuleRow.active > a:hover { background-color: #fff !important; } -#portalModulesTable>li.portalModuleRow.active>a:focus { +#portalModulesTable > li.portalModuleRow.active > a:focus { background-color: #fff !important; } .portal-dashboard { @@ -5760,7 +5925,7 @@ TN-34230 .portal-dashboard { border-bottom: 0px ! important; } -#portal-shortcutsContainer>ul { +#portal-shortcutsContainer > ul { border-bottom: 0px ! important; } .portalMenuHeader { @@ -5769,14 +5934,15 @@ TN-34230 } .cp-tabs .enabledModules { display: inline-block ! important; - margin-left: 4px !important; - margin-right: 4px !important; + margin-left: 4px!important; + margin-right: 4px!important; vertical-align: top; margin-top: 4px !important; } .portal-shortcut-list:hover { border-bottom: 3px solid transparent ! important; } +/****** Customer Portal Settings ******/ .label-radio label input[type="radio"] { position: relative; top: 2px; @@ -5788,6 +5954,9 @@ TN-34230 div.tooltip-inner { max-width: 400px; } +/******************************************* +********** Menu Editor ******** +********************************************/ .sortable.appContainer.ui-sortable { width: 160px; } @@ -5962,7 +6131,7 @@ div.tooltip-inner { width: 13px !important; margin-top: 8px; } -.detailview-table .input-group-addon+.inputElement.form-control, +.detailview-table .input-group-addon + .inputElement.form-control, .detailview-table .inputElement.form-control.input-medium { width: 100%; } @@ -6009,6 +6178,7 @@ div.tooltip-inner { float: left; margin-right: 5px; } +/***** Oursites Changes *****/ .portal-table .table-actions { width: inherit ! important; } @@ -6020,6 +6190,7 @@ div.tooltip-inner { padding: 10px 5px ! important; padding-left: 10px ! important; } +/***** Oursites Changes *****/ .ExtensionscontentsDiv .content-area { padding-left: 15px; padding-right: 15px; @@ -6033,14 +6204,14 @@ div.tooltip-inner { } .blockHeader { border-color: #F3F3F4 #F3F3F4 #cbcbcf; - border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); background-color: #474747; - background-image: -moz-linear-gradient(top,#555555,#333333); - background-image: -ms-linear-gradient(top,#555555,#333333); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#555555),to(#333333)); - background-image: -webkit-linear-gradient(top,#555555,#333333); - background-image: -o-linear-gradient(top,#555555,#333333); - background-image: linear-gradient(top,#555555,#333333); + background-image: -moz-linear-gradient(top, #555555, #333333); + background-image: -ms-linear-gradient(top, #555555, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); + background-image: -webkit-linear-gradient(top, #555555, #333333); + background-image: -o-linear-gradient(top, #555555, #333333); + background-image: linear-gradient(top, #555555, #333333); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333', GradientType=0); min-height: 30px; @@ -6133,8 +6304,8 @@ div.tooltip-inner { .markStar .starredStatus { display: none; } -.nav>li.addDashboardTab>a, -.nav>li.addDashboardTab>a:hover { +.nav > li.addDashboardTab > a, +.nav > li.addDashboardTab > a:hover { padding: 10px 15px; background: inherit; } @@ -6147,7 +6318,7 @@ div.tooltip-inner { height: 960px; width: 1260px; } -.nav-tabs>li { +.nav-tabs > li { border-bottom: 3px solid transparent; margin: 0 2px; } @@ -6225,16 +6396,14 @@ div.tooltip-inner { } .select2-container.select2-container-multi.select2, .editViewPageDiv .select2-container.select2-container-multi.select2 { - height: auto !important; + height: auto!important; } -.summaryViewFields .select2-container-multi.inputElement.form-control -.quickCreateContent .select2-container.select2-container-multi.select2, +.summaryViewFields .select2-container-multi.inputElement.form-control .quickCreateContent .select2-container.select2-container-multi.select2, #massEditContainer .select2-container.select2-container-multi.select2 { width: 150px; height: auto !important; } -.summaryViewFields .select2-container-multi.inputElement.form-control -.quickCreateContent .select2-container.select2-container-multi.select2 .input-save-wrap, +.summaryViewFields .select2-container-multi.inputElement.form-control .quickCreateContent .select2-container.select2-container-multi.select2 .input-save-wrap, #massEditContainer .select2-container.select2-container-multi.select2 .input-save-wrap { float: right; margin-right: 25px; @@ -6330,6 +6499,7 @@ a.cp-modules:hover { #RestrictionsLayout { background: #fafafb; margin-top: -92px; + /*to adjust with page padding top*/ } #RestrictionsLayout .vtImage { width: 22%; @@ -6363,6 +6533,7 @@ a.cp-modules:hover { .datepicker { z-index: 1100 !important; } +/*****RSS Changes****/ .feedListContainer .listview-table tr td:first-child, .listview-table tr th:first-child { width: inherit ! important; @@ -6370,12 +6541,14 @@ a.cp-modules:hover { .feedListContainer .listViewEntries .listViewEntryValue { max-width: inherit ! important; } -.ps-container>.ps-scrollbar-y-rail { +/*****RSS Changes****/ +.ps-container > .ps-scrollbar-y-rail { z-index: 1002; } #relationBlock .recordScroll { max-height: 150px; } +/*Start - List sidebar toggle*/ .essentials-toggle { background-color: white; font-weight: bold; @@ -6395,6 +6568,7 @@ a.cp-modules:hover { .essentials-toggle .fa-chevron-right { background-position: -460px -72px !important; } +/*End - List essentials toggle*/ .module-name-tooltip .qtip-content { font-size: 12px; padding: 3px; @@ -6403,23 +6577,6 @@ a.cp-modules:hover { .module-name-tooltip { padding: 3px; } -.main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, -.main-container-Reports .module-nav { - width: 0; -} -.main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, -.main-container-Reports .sidebar-essentials { - width: 283px; - left: 0; -} -.main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { - padding-left: 0px !important; -} .main-container-MailManager .module-nav { width: 230px; } @@ -6478,8 +6635,8 @@ li.select2-search-choice div { .popover ul.listmenu li { padding: 3px; } -.popover-content .disabled>a, -.popover .disabled>a { +.popover-content .disabled > a, +.popover .disabled > a { opacity: 0.5; cursor: not-allowed; } @@ -6490,6 +6647,7 @@ li.select2-search-choice div { -o-transform: rotate(180deg); transform: rotate(180deg); } +/*Start - List sidebar toggle*/ .essentials-toggle { background-color: white; font-weight: bold; @@ -6509,6 +6667,7 @@ li.select2-search-choice div { .essentials-toggle .fa-chevron-right { background-position: -460px -72px !important; } +/*End - List essentials toggle*/ .module-name-tooltip .qtip-content { font-size: 12px; padding: 3px; @@ -6520,25 +6679,20 @@ li.select2-search-choice div { border-left: 1px solid #DDDDDD; } .main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, .main-container-Reports .module-nav { width: 0; } .main-container-Documents .mod-switcher-container, -.main-container-RecycleBin .mod-switcher-container, .main-container-Reports .mod-switcher-container { width: 0; } .main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, .main-container-Reports .sidebar-essentials { width: 283px; left: 0; } .main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { +.main-container-Reports .full-width { padding-left: 0px !important; } .listViewPageDiv .ps-scrollbar-x-rail { @@ -6589,16 +6743,16 @@ li.select2-search-choice div { #reportDetails .pivot .toptitle.targetY0, #reportDetails .pivot .lefttitle.targetX0 { border-color: #F3F3F4 #F3F3F4 #cbcbcf; - border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); background-color: #474747; - background-image: -moz-linear-gradient(top,#555555,#333333); - background-image: -ms-linear-gradient(top,#555555,#333333); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#555555),to(#333333)); - background-image: -webkit-linear-gradient(top,#555555,#333333); - background-image: -o-linear-gradient(top,#555555,#333333); - background-image: linear-gradient(top,#555555,#333333); + background-image: -moz-linear-gradient(top, #555555, #333333); + background-image: -ms-linear-gradient(top, #555555, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); + background-image: -webkit-linear-gradient(top, #555555, #333333); + background-image: -o-linear-gradient(top, #555555, #333333); + background-image: linear-gradient(top, #555555, #333333); background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555',endColorstr='#333333',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333', GradientType=0); min-height: 30px; } #reportDetails .pivot th.toptitle.targetY0, @@ -6640,7 +6794,8 @@ li.select2-search-choice div { background: #FFFFFF; } .templateActions { - background: rgba(0,0,0,0.1); + background: rgba(0, 0, 0, 0.1); + /*padding: 4%;*/ bottom: 0; text-align: center; position: absolute; @@ -6648,6 +6803,9 @@ li.select2-search-choice div { zoom: 1; width: 100%; } +/*.templateActions i { + margin-right: 30px; +}*/ .thumbnails > li { float: left; height: 315px !important; @@ -6822,9 +6980,10 @@ a.btnReport:hover { left: 0px; } .bx-wrapper .bx-viewport { - width:99%; + width: 99%; left: 0px; background: #fff; + /*fix other elements on the page moving (on Chrome)*/ -webkit-transform: translatez(0); -moz-transform: translatez(0); -ms-transform: translatez(0); @@ -6882,7 +7041,7 @@ a.btnReport:hover { .filter-search-show { display: block !important; } -.emailTemplatesPopupTableContainer .listViewEntries .listViewEntryValue { +.emailTemplatesPopupTableContainer .listViewEntries .listViewEntryValue { max-width: 100%; min-width: 150px; } @@ -6917,12 +7076,15 @@ input:focus::-webkit-input-placeholder { input:focus:-moz-placeholder { color: transparent; } +/* FF 4-18 */ input:focus::-moz-placeholder { color: transparent; } +/* FF 19+ */ input:focus:-ms-input-placeholder { color: transparent; } +/* IE 10+ */ .global-actions .dropdown-menu:before { position: absolute; top: -7px; @@ -6931,7 +7093,7 @@ input:focus:-ms-input-placeholder { border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-left: 7px solid transparent; - border-bottom-color: rgba(0,0,0,0.2); + border-bottom-color: rgba(0, 0, 0, 0.2); content: ''; } .global-actions .dropdown-menu:after { @@ -7116,6 +7278,7 @@ input:focus:-ms-input-placeholder { text-align: center; } #OnBoardLayout #OnBoardPageContainer .crmGoals textarea::-webkit-input-placeholder { + /* WebKit browsers */ text-align: center; padding: 20%; font-size: 12px; @@ -7257,35 +7420,6 @@ input:focus:-ms-input-placeholder { .importServiceSelectionContainer .app-item { text-align: center; } -.modules-menu ul li.active a { - border-left: 3px solid #3CB878; - opacity: 1; -} -.fieldValue .value a { - color: #15c !important; -} -.editViewContents .fieldLabel { - min-width: 100px; - width: 20%; - word-break: break-all; -} -.editViewContents .fieldValue { - width:30%; -} -.editViewContents td.fieldValue[colspan="3"] { - width:80%; -} -.editViewContents textarea.textAreaElement { - width: 88%; -} -.editViewContents input[type="checkbox"] { - width: 15px; - height: 15px; -} -.editViewContents input[type="radio"] { - width: 15px; - height: 15px; -} #composeEmailContainer .modal-body .quickCreateContent, #QuickCreate .modal-body .quickCreateContent, #create .quickCreateContent { @@ -7298,3 +7432,93 @@ input:focus:-ms-input-placeholder { .settingsgroup-panel .widgetContainer .menuItemLabel:hover .pinUnpinShortCut { display: inline-block; } +@-moz-document url-prefix() { + .duplicateHandlingContainer .tooltip-inner { + width: 550px; + max-width: 550px; + } +} +.duplicateHandlingContainer .tooltip-inner { + text-align: left !important; +} +.duplicateHandlingContainer .syncMessage { + margin-top: 5px !important; +} +.duplicateHandlingContainer .actionsList { + width: 230px !important; +} +.duplicationMessageContainer { + background-color: #f2dede !important; + color: #b94a48 !important; +} +.duplicationMessageContainer .duplicationMessageHeader { + margin-bottom: 8px; +} +.listViewRecordActions .quickView, +.listViewRecordActions .markStar, +.listViewRecordActions .markAsHeld, +.listViewRecordActions .holdFollowupOn { + margin-top: 4px; +} +.app-menu .module-icon .custom-module { + font-size: 14px; + border-radius: 4px; + color: #000; + background-color: #FFFFFF; + padding: 4px 10px 4px 5px !important; +} +.menu-item .custom-module { + font-family: 'OpenSans-Regular', sans-serif; + font-size: 12px; + border-radius: 4px; + padding: 2px; + color: #000; + background-color: #FFFFFF; +} +.modules-menu .custom-module { + color: #FFFFFF; + margin-left: 0px; + display: inline; + border: 1px solid #FFFFFF; + border-radius: 4px; + padding: 3px 4px 3px 2px !important; + font-weight: bold; +} +#quickCreateModules .custom-module, +.workflowListContainer .custom-module, +.dashBoardTabContents .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #FFFFFF; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #000000; + background-color: #FFFFFF; +} +.task-details .custom-module { + border-radius: 4px; + padding: 1px 4px; + color: #FFFFFF; + background-color: #777; +} +.related-tabs .custom-module, +#relatedmenuList .custom-module { + border-radius: 4px; + color: #FFFFFF; + background-color: #777; + padding: 5px 7px; + font-weight: bold; +} +.record-header .custom-module { + font-size: 30px; +} +.moduleIcon .custom-module { + font-weight: bold; +} +.modules-menu ul li.active a { + border-left: 3px solid #3CB878; + opacity: 1; +} diff --git a/layouts/v7/skins/project/style.css b/layouts/v7/skins/project/style.css index c45bc18d03626ddb5dc84ca050842a91d938f207..38260ff1b2c8357e38cb8eba31042723dfcce523 100644 --- a/layouts/v7/skins/project/style.css +++ b/layouts/v7/skins/project/style.css @@ -1,7 +1,9 @@ @font-face { font-family: 'Oswald'; src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot'); - src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot?#iefix') format('embedded-opentype'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.woff') format('woff'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.ttf') format('truetype'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.svg#Oswald') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.svg#Oswald') format('svg'); + /* Legacy iOS */ font-weight: normal; font-style: normal; text-rendering: optimizeLegibility; @@ -15,27 +17,37 @@ a:active { @font-face { font-family: 'OpenSans-Regular'; src: url('../fonts/OpenSans/Regular/OpenSans-Regular.eot'); - src: url('../fonts/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'), url('../fonts/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), url('../fonts/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), url('../fonts/OpenSans/Regular/OpenSans-Regular.svg#svgFontName') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/OpenSans/Regular/OpenSans-Regular.svg#svgFontName') format('svg'); + /* Legacy iOS */ } @font-face { font-family: 'OpenSans-Semibold'; src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot'); - src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.ttf') format('truetype'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff2') format('woff2'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff') format('woff'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.svg#svgFontName') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.svg#svgFontName') format('svg'); + /* Legacy iOS */ } @font-face { font-family: 'ProximaNova-Regular'; - src: url('../fonts/ProximanovaWebfont/ProximaNova-Regular.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.woff') format('woff'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'); + src: url('../fonts/ProximanovaWebfont/ProximaNova-Regular.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/ProximanovaWebfont/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'); + /* IE6-IE8 */ + /* Safari, Android, iOS */ font-style: normal; font-weight: normal; text-rendering: optimizeLegibility; } @font-face { font-family: 'ProximaNova-Semibold'; - src: url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.woff') format('woff'), url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.eot?#iefix') format('embedded-opentype'); + src: url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.eot?#iefix') format('embedded-opentype'); + /* IE6-IE8 */ font-style: normal; font-weight: normal; text-rendering: optimizeLegibility; } +/**********************************/ +/************ Layout **************/ +/**********************************/ html { height: 100%; overflow-y: auto; @@ -102,6 +114,7 @@ body { @media (min-width: 992px) { .global-nav .logo-container { display: inline-block; + width: 150px; z-index: 2; padding-left: 6%; margin-top: 1px; @@ -113,11 +126,13 @@ body { position: absolute; width: 100%; height: 42px; + /* border-top:1px solid #ddd;*/ border-bottom: 1px solid #ddd; } .app-nav .module-action-bar .module-action-content { background: #FBFBFB; height: 41px; + /* border-bottom: 1px solid #eee;*/ } .app-nav .module-action-bar .module-action-content .navbar-right { margin-right: 0; @@ -163,7 +178,7 @@ body { padding-left: 0; } } -.btn-toolbar >.btn-group:first-child { +.btn-toolbar > .btn-group:first-child { margin-left: 5px; } .vt-notification { @@ -196,8 +211,12 @@ body { .vt-notification [data-notify="message"] { color: #eaeaea; } +/**********************************/ +/******** Navigation styles *******/ +/**********************************/ .company-logo { height: 40px; + width: 150px; margin: 0 0; display: inline-block; margin-left: 1px; @@ -214,10 +233,13 @@ body { font-size: 16px; position: relative; } +/*.module-action-bar .module-action-content #appnav{ + padding-top:5px; +}*/ .global-nav .navbar-nav > li div a { padding: 15px; } -.global-nav>ul { +.global-nav > ul { margin-right: 20px; } .global-nav .search-links-container { @@ -267,26 +289,28 @@ body { float: right; height: 42px; } - .module-action-bar .navbar-right .nav>li { + .module-action-bar .navbar-right .nav > li { display: inline-block; } - .module-action-bar .navbar-right .nav>li a { + .module-action-bar .navbar-right .nav > li a { padding: 0 10px; } .global-nav .logo-container { border-bottom: 0; + width: 150px; } } @media (max-width: 991px) { .global-nav .logo-container { border-bottom: 0; + width: 150px; } .notificationMessageHolder { padding-left: 45%; } } @media (min-width: 991px) { - .nav>li>a.qc-button { + .nav > li > a.qc-button { padding: 2px 3px; margin-top: 13px; margin-right: 15px; @@ -294,7 +318,7 @@ body { color: #fff; border-radius: 20px; } - .nav>li>a.qc-button span { + .nav > li > a.qc-button span { vertical-align: top; } } @@ -313,6 +337,7 @@ body { width: 100%; height: 100%; } +/** App Nav Styles */ .active-app-title { white-space: nowrap; font-family: Oswald, "OpenSans-Semibold", "Helvetica Neue", Helvetica, sans-serif; @@ -367,7 +392,9 @@ body { height: 42px; text-align: center; line-height: 42px; + /* background-color: #2c3b49;*/ color: #ffffff; + /*border-bottom: 1px solid #272B46;*/ } .app-nav .app-indicator-icon-container .app-indicator-icon { font-size: 24px; @@ -391,6 +418,9 @@ body { .app-PROJECT { background: #8E44AD !important; } +.app-TOOLS { + background: #EF5E29 !important; +} .app-DEFAULT, .app-DASHBOARD { background: #56ccc8 !important; @@ -479,16 +509,16 @@ body { right: -4px; } #overlayPageContent .mCSB_scrollTools, -#overlayPageContent .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonUp, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonDown, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonLeft, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonRight, .app-list .mCSB_scrollTools, +#overlayPageContent .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .app-list .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonUp, .app-list .mCSB_scrollTools .mCSB_buttonUp, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonDown, .app-list .mCSB_scrollTools .mCSB_buttonDown, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonLeft, .app-list .mCSB_scrollTools .mCSB_buttonLeft, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonRight, .app-list .mCSB_scrollTools .mCSB_buttonRight { -webkit-transition: none; transition: none; @@ -534,6 +564,9 @@ a.menu-item:hover { .app-item-color-PROJECT { border-left: 4px solid #8E44AD; } +.app-item-color-TOOLS { + border-left: 4px solid #EF5E29; +} .app-item .fa { font-size: 1.5em; -webkit-transition: all 0.25s ease-in; @@ -700,6 +733,7 @@ a.menu-item:hover { width: 0px; overflow: hidden; } +/* User Logout */ .logout-content { padding: 10px; width: 350px; @@ -754,6 +788,9 @@ a.menu-item:hover { .app-settings { background: #FFFFFF; } +/*************************************************/ +/******** View styles (List/Edit/Detail..) *******/ +/*************************************************/ .viewContent .content-area { padding-left: 50px; } @@ -780,6 +817,9 @@ a.menu-item:hover { opacity: 0.5; pointer-events: none; } +.input-group.percentage-input-group .form-control { + width: 100% !important; +} .bottomscroll-div, .topscroll-div { display: table; @@ -793,6 +833,9 @@ a.menu-item:hover { display: inline-block; word-break: break-word; } +.fieldValue .value a { + color: #15c !important; +} .modal-header button.close { padding: 0; color: #ffffff; @@ -865,6 +908,9 @@ input[type="password"].inputElement { padding-right: 20px; padding-left: 20px; } +/**********************************/ +/**** Side vertical Nav styles ****/ +/**********************************/ .module-nav { background: #fff; z-index: 1004; @@ -880,6 +926,9 @@ input[type="password"].inputElement { left: 0; transition: 0s width; } +.module-nav:hover { + /*z-index: 1001;*/ +} .modules-menu ul { list-style: none; margin-left: 0; @@ -914,7 +963,7 @@ input[type="password"].inputElement { float: left; font-size: 20px; } -.modules-menu ul li a>span { +.modules-menu ul li a > span { margin-left: 10px; vertical-align: middle; font-size: 13px; @@ -954,6 +1003,7 @@ input[type="password"].inputElement { width: 100%; left: 0%; } +/** Lists Menu in Side bar */ .module-filters .settings-sidebar, .module-filters .sidebar-container { padding: 0 12px; @@ -987,6 +1037,7 @@ input[type="password"].inputElement { .lists-menu-container hr { margin: 5px 0; } +/* mScrollbar customization for lists widget */ .lists-menu-container .menu-scroller .mCSB_scrollTools { width: 13px; } @@ -998,8 +1049,10 @@ input[type="password"].inputElement { .modules-menu .mCSB_scrollTools .mCSB_draggerContainer { left: 8px; } +/* Customization ends */ .lists-menu-container .list-menu-content .more-less-link { color: #fff; + /*text-decoration: none;*/ } .lists-menu-container .list-menu-content .sub-header { color: #ddd; @@ -1085,7 +1138,6 @@ input[type="password"].inputElement { background-color: #FFFFFF; border: 1px solid #DDDDDD; margin: 5px 0 10px; - color: #ccc; padding: 5px 10px; } .search-folders:focus, @@ -1104,9 +1156,11 @@ input[type="password"].inputElement { .common-links-container > div a { color: #fff; } +/*Search Container styles */ .search-container { min-height: 300px; position: absolute; + /*z-index: 1030;*/ width: 100%; top: 0; background: #FBFBFB; @@ -1125,6 +1179,7 @@ input[type="password"].inputElement { .footer p { margin: 5px 0; } +/*** Utilities ***/ .showElement { display: block !important; height: 100%; @@ -1247,11 +1302,11 @@ ul.unstyled { } .emptyRecordsDiv .emptyRecordsContent { display: inline-block; - font-size: 16px; left: 50%; margin-left: -25%; position: absolute; width: 50%; + font-size: 16px; } .textOverflowEllipsis { overflow: hidden; @@ -1276,6 +1331,9 @@ ul.unstyled { .removeNoFileChosen { color: transparent !important; } +/*********************************** +**********Button Styles********** +***********************************/ .module-buttons-container { float: right; margin-right: 10px; @@ -1297,6 +1355,7 @@ ul.unstyled { margin: 4px 2px; border-radius: 2px; border: 1px solid #ddd; + text-transform: uppercase; color: #666; background: #fff; } @@ -1317,6 +1376,9 @@ ul.unstyled { color: #FFFFFF !important; background: #5bc0de !important; } +/*********************************** +**********List View Styles********** +***********************************/ .fa.pull-left { margin-right: 0; } @@ -1351,7 +1413,7 @@ ul.unstyled { font-size: 20px; } .listview-pagination .disabled { - color: rgba(0,0,0,0.2); + color: rgba(0, 0, 0, 0.2); } .listview-pagination .disabled:hover { cursor: default; @@ -1379,6 +1441,8 @@ ul.unstyled { .listview-table { margin-bottom: 0; border-top: 0; + /* Horizontal scroll will not work if table layout Fixed */ + /* table-layout: fixed;*/ } .listview-table tr td, .listview-table tr th { @@ -1408,7 +1472,7 @@ ul.unstyled { width: 100%; } .listViewEntries .relatedListEntryValues .fieldValue .value, -.listViewEntries .listViewEntryValue .fieldValue .value { +.listViewEntries .listViewEntryValue .fieldValue .value { vertical-align: middle; width: 100%; display: inline-block; @@ -1423,7 +1487,7 @@ ul.unstyled { } .listview-table-norecords .table-actions, .listview-table .table-actions { - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -1489,13 +1553,13 @@ input[type=checkbox]:checked { vertical-align: middle; display: table-cell; } -.listview-table tr.searchRow th { +.listview-table tr.searchRow th { padding: 5px 3px; } -.listview-table tr.searchRow th.inline-search-btn { +.listview-table tr.searchRow th.inline-search-btn { padding: 3px 10px; } -.listview-table tr.searchRow th.inline-search-btn button { +.listview-table tr.searchRow th.inline-search-btn button { text-align: center; width: 85%; text-shadow: none; @@ -1523,6 +1587,18 @@ input[type=checkbox]:checked { background-color: #FFEEEE !important; background-image: none !important; } +/*.floatThead-wrapper .table-container{ + z-index: 0 !important; +}*/ +/* List view bottom fixed scroll */ +/*.bottom-fixed-scroll{ + height: 14px; + position: relative; + top: -15px; + overflow-x: auto; + overflow-y: hidden; + width: 100%; +}*/ .scroller-div { height: 1px; } @@ -1644,9 +1720,15 @@ input[type=checkbox]:checked { #listColumnFilterContainer .disabled i { color: #ccc; } +/********************************** +**********Detail View Styles********** +**********************************/ .detailViewButtoncontainer { padding-top: 5px; } +.detailViewButtoncontainer button.btn { + margin: 0px 1px !important; +} .detailview-header .recordBasicInfo > .info-row { margin-bottom: 4px; } @@ -1727,6 +1809,9 @@ th { margin-top: 3%; margin-right: 2%; } +.overlayDetailHeader button.btn { + margin: 0px 1px !important; +} .referencefield-wrapper .createReferenceRecord { float: left; margin-left: 5px; @@ -1966,10 +2051,10 @@ th { z-index: 1030; } .overlay-container-60 { - margin-left: 42px; + margin-left: 42px ; } .overlay-container-300 { - margin-left: 230px; + margin-left: 230px ; } .overlayPageContent { background: #FFFFFF; @@ -2092,6 +2177,9 @@ th { height: 26px; line-height: 25px; } +/********************************** +**********Summary View Styles****** +**********************************/ .summary-table { width: 100%; table-layout: fixed; @@ -2212,33 +2300,33 @@ th { opacity: 1; cursor: pointer; } -.details.row >form .social-media-toggle { +.details.row > form .social-media-toggle { position: absolute; right: -15px; display: inline-block; width: 500px; border-left: 0px; } -.details.row >form .social-media-widget { +.details.row > form .social-media-widget { border-left: 1px solid #ddd; border-bottom: 1px solid #ddd; height: 100%; background: white; } -.details.row >form div[class*="col-"].resizable-summary-view { +.details.row > form div[class*="col-"].resizable-summary-view { padding-left: 0; padding-right: 0px; } -.details.row >form>div[class*="col-"], -.details.row >form .resizable-summary-view div[class*="col-"] { +.details.row > form > div[class*="col-"], +.details.row > form .resizable-summary-view div[class*="col-"] { padding-right: 0; padding: 0px 5px; } -.details.row >form>div[class*="col-"]:first-child, -.details.row >form .left-block { +.details.row > form > div[class*="col-"]:first-child, +.details.row > form .left-block { padding-left: 0 !important; } -.details.row >form>div[class*="col-"]:last-child { +.details.row > form > div[class*="col-"]:last-child { padding-right: 0; } .summaryWidgetContainer .noContent { @@ -2251,6 +2339,9 @@ th { .caseReplyArea .nav > li { padding: 0 10px; } +/********************************** +**********Edit View Styles******* +**********************************/ .main-container .editViewModNavigator.module-nav, .editViewModNavigator .mod-switcher-container, .editViewModNavigator .modules-menu { @@ -2291,9 +2382,28 @@ th { width: 100%; } .editViewContents .input-group { - width: 229px; + width: 208px; float: left; } +.editViewContents .fieldLabel { + min-width: 100px; + width: 20%; + word-break: break-all; +} +.editViewContents .fieldValue { + width: 30%; +} +.editViewContents td.fieldValue[colspan="3"] { + width: 80%; +} +.editViewContents textarea.textAreaElement { + width: 88%; +} +.editViewContents input[type="checkbox"], +.editViewContents input[type="radio"] { + width: 15px; + height: 15px; +} .input-group.inputElement .input-group-addon { border: none; border-left: 1px solid #ddd; @@ -2370,6 +2480,9 @@ th { z-index: 1000; padding: 7px; } +/********************************** +**********Advance Search styles********** +**********************************/ .op0.fadeInx { opacity: 1; } @@ -2442,7 +2555,11 @@ th { } .btn + input { margin-left: 5px; + /* margin-top : 3px;*/ } +/********************************** +**********Extension Store Styles********** +**********************************/ .extensionstore .app-trigger { width: 98%; } @@ -2473,6 +2590,9 @@ th { .extensionContents .extensionError { color: #F10404; } +/********************************** +**********Extension Store Nav Bar********** +**********************************/ .tabbable-line > .nav-tabs { border: none; margin: 0px; @@ -2541,6 +2661,9 @@ th { .extensionContents .listview-table { width: 100%; } +/******************************************* +******Detail View related list styles******* +********************************************/ .relatedContents .listViewContentHeaderValues:hover { text-decoration: none; color: #333; @@ -2598,6 +2721,9 @@ th { .relatedViewActions .btn-group { margin-right: 15px; } +/******************************************* +****************** Modal ******************* +********************************************/ .modal-header { padding: 5px 15px; background: #596875; @@ -2625,6 +2751,7 @@ th { width: 100%; float: left; background: #596875; + /* height: 100%;*/ } .settings-menu { display: inline-block; @@ -2641,7 +2768,7 @@ th { cursor: n-resize; } .settings-menu-items { - box-shadow: 0 1px 1px rgba(0,0,0,0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); margin-bottom: 10px; text-align: justify; } @@ -2770,6 +2897,7 @@ th { vertical-align: middle; color: #3399ff; } +/* .squaredFour */ .squaredFour { width: 20px; position: relative; @@ -2783,9 +2911,9 @@ th { top: 0; left: 0; background: #fcfff4; - background: linear-gradient(top,#fcfff4 0%,#dfe5d7 40%,#b3bead 100%); + background: linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); border-radius: 4px; - box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); + box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); } .squaredFour label:after { content: ''; @@ -2813,13 +2941,16 @@ th { .importBlockContainer { color: #596875; } +/******************************************* +************* Social Buttons *************** +********************************************/ .btn-block + .btn-block { margin-top: 5px; } .btn-google-plus { color: #FFFFFF !important; background-color: #DD4B39; - border-color: rgba(0,0,0,0.2); + border-color: rgba(0, 0, 0, 0.2); } .btn-social { position: relative; @@ -2838,15 +2969,18 @@ th { line-height: 34px; font-size: 1.6em; text-align: center; - border-right: 1px solid rgba(0,0,0,0.2); + border-right: 1px solid rgba(0, 0, 0, 0.2); } +/******************************************* +************* Updates Timeline *************** +********************************************/ .recentActivitiesContainer .history { margin: 0 auto; padding: 20px 20px 1px; max-width: 100%; overflow-x: visible; - -webkit-transition: opacity .2s ease-out; - transition: opacity .2s ease-out; + -webkit-transition: opacity 0.2s ease-out; + transition: opacity 0.2s ease-out; } .updates_timeline { padding-top: 20px; @@ -2855,6 +2989,7 @@ th { padding: 0; list-style: none; } +/* The line */ .updates_timeline:before { content: ''; position: absolute; @@ -2873,6 +3008,7 @@ th { min-height: 40px; z-index: 2; } +/* Left Content(Time) */ .updates_timeline > li .update_time { position: absolute; margin: 0; @@ -2884,6 +3020,7 @@ th { font-size: 15px; font-style: italic; } +/* Right content(Update info) */ .updates_timeline > li .update_info { padding: 10px 10px 1px; display: block; @@ -2892,10 +3029,11 @@ th { position: relative; top: -45px; } -.updates_timeline > li .update_info >h3 { +.updates_timeline > li .update_info > h3 { font-size: 1.1em; margin-left: -3%; } +/* The icons */ .updates_timeline > li .update_icon { position: relative; border-radius: 50%; @@ -2908,6 +3046,7 @@ th { color: #fff; line-height: 35px; } +/* More Button */ .updates_timeline #more_button .update_icon { position: relative; border-radius: 0; @@ -3015,6 +3154,9 @@ th { vertical-align: super; font-size: 13px; } +/******************************************* +************* Task Management ************** +********************************************/ #taskManagementContainer .data-body { margin-bottom: 50px; } @@ -3077,15 +3219,16 @@ th { #taskManagementContainer .other-details { color: #979797; } +/*overwriting jquery ui css*/ .ui-menu { z-index: 10000; } #taskManagementContainer button.active { background: #3B83F7; color: white; - text-shadow: 0 1px rgba(0,0,0,0.3); + text-shadow: 0 1px rgba(0, 0, 0, 0.3); border: 1px solid #135fd7; - box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); } .taskSubject { width: 99%; @@ -3093,6 +3236,9 @@ th { #taskManagementContainer .mCustomScrollbar .mCSB_inside > .mCSB_container { margin-right: 13px; } +/******************************************* +************* Settings Page ************** +********************************************/ .settingsPageDiv.content-area { margin-right: 0; } @@ -3126,6 +3272,9 @@ th { .settingsgroup-accordion a i { margin-right: 5px; } +.settingsgroup-accordion a span { + text-transform: uppercase; +} .settingsgroup { background: #2C3B49; height: 100%; @@ -3282,35 +3431,59 @@ th { } .mini-slider-control[data-value="0"] .ui-slider-handle { background: #7d7e7d; - background: -moz-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#7d7e7d),color-stop(100%,#0e0e0e)); - background: -webkit-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -o-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -ms-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: linear-gradient(to bottom,#7d7e7d 0%,#0e0e0e 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d',endColorstr='#0e0e0e',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #7d7e7d), color-stop(100%, #0e0e0e)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #7d7e7d 0%, #0e0e0e 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d', endColorstr='#0e0e0e', GradientType=0); + /* IE6-9 */ margin-left: 0px; } .mini-slider-control[data-value="1"] .ui-slider-handle { background: #ffb76b; - background: -moz-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#ffb76b),color-stop(0%,#ffa73d),color-stop(49%,#ff7c00),color-stop(100%,#ff7f04)); - background: -webkit-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -o-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -ms-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: linear-gradient(to bottom,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb76b',endColorstr='#ff7f04',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffb76b), color-stop(0%, #ffa73d), color-stop(49%, #ff7c00), color-stop(100%, #ff7f04)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb76b', endColorstr='#ff7f04', GradientType=0); + /* IE6-9 */ margin-left: -6px; } .mini-slider-control[data-value="2"] .ui-slider-handle { background: #bfd255; - background: -moz-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#bfd255),color-stop(79%,#8eb92a),color-stop(100%,#72aa00),color-stop(100%,#9ecb2d)); - background: -webkit-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -o-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -ms-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: linear-gradient(to bottom,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bfd255',endColorstr='#9ecb2d',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #bfd255), color-stop(79%, #8eb92a), color-stop(100%, #72aa00), color-stop(100%, #9ecb2d)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bfd255', endColorstr='#9ecb2d', GradientType=0); + /* IE6-9 */ margin-left: -13px; } .ModulemanagerSettings .moduleblock .hiden { @@ -3335,10 +3508,13 @@ th { th { padding: 6px; } +/******************************************* +********** CustomerPortal styles start ******** +********************************************/ .cp-tabs .enabledModules { display: inline-block ! important; - margin-left: 4px !important; - margin-right: 4px !important; + margin-left: 4px!important; + margin-right: 4px!important; vertical-align: top; } .drag-portal-module { @@ -3445,7 +3621,7 @@ th { margin-left: 5px; } .portal-field-delete { - margin-left: 45px !important; + margin-left: 45px!important; } .portalModuleRow { border-left: 4px solid #8E44AD !important; @@ -3462,7 +3638,7 @@ th { content: "*"; color: red; } -.nav-tabs .cp-modules > .active >a, +.nav-tabs .cp-modules > .active > a, .nav-tabs .cp-modules > .active > a:hover { border: 0px !important; border-top-right-radius: 0px; @@ -3624,7 +3800,7 @@ th { display: inline-block; } .quickPreview .updates_timeline:before { - background: #e6e6e6; + background: #e5e5e5; width: 2px; margin-left: -1%; } @@ -3639,13 +3815,16 @@ th { .quickPreviewComments .recentComments .commentDetails .comment { line-height: 15px; } -.quickPreviewComments .summaryWidgetContainer { +.quickPreviewComments .summaryWidgetContainer { border: 0; padding: 0; } .quickPreview .recentActivitiesContainer .history { padding: 0; } +/******************************************* +********** Calendar view styles ************ +********************************************/ .calendar-sidebar { width: 100% !important; } @@ -3802,6 +3981,11 @@ th { display: inline-block; text-align: center; } +/******************************************* +********** Calendar view styles end ******** + +********** Documents Module styles ********* +********************************************/ .dragdrop-dotted { border: 2px dashed #C0C0C0; min-width: 300px; @@ -3861,13 +4045,16 @@ tr.file > td.fileOwnerData { width: 100px; white-space: pre-wrap; } +/******************************************* +********** Documents Module styles end ***** +********************************************/ .engagementsContainer .engagements_content { padding-top: 15px; } .summaryWidgetContainer .engagementsContainer table { width: inherit; } -.engagements_content table thead>tr:first-child { +.engagements_content table thead > tr:first-child { border: 1px solid #CCC; background-color: #F5F5F5; } @@ -3918,6 +4105,9 @@ tr.file > td.fileOwnerData { font-size: 15px; padding: 1% 0; } +/******************************************* +********** Mailroom view styles start ******** +********************************************/ .mailroomBanner { margin: 23px 0; height: 215px; @@ -4126,6 +4316,7 @@ tr.file > td.fileOwnerData { margin-left: 0; } .mentionMessages .mention_follow_up { + /*//load this color from variable.less*/ background-color: green; } .modelContainer .modal-content { @@ -4274,6 +4465,7 @@ form[name="notification_settings"] .select2-choice { margin-left: 0; } .mentionMessages .mention_follow_up { + /*//load this color from variable.less*/ background-color: green; } .modal-content .mention_followup .row { @@ -4305,6 +4497,9 @@ form[name="notification_settings"] .select2-choice { .mentionMessageHeader .MultiFile-remove { color: #FFFFFF; } +/******************************************* +********** Mailroom view styles end ******** +********************************************/ .detailview-header { margin-bottom: 10px; } @@ -4320,6 +4515,7 @@ form[name="notification_settings"] .select2-choice { margin: 0px 10px; text-decoration: underline !important; color: #3498DB; + /*font-size : 12px;*/ } .tag { display: inline-block; @@ -4403,11 +4599,11 @@ form[name="notification_settings"] .select2-choice { border: 1px solid #dcdcdc; } #tagCloud .tag { - color: #5ea9dd; padding: 0px; background-color: #FFFFFF; border-color: #FFFFFF; border-radius: 0px; + color: #5ea9dd; margin: 3px; } #tagCloud .tag[data-type="public"] { @@ -4418,6 +4614,9 @@ form[name="notification_settings"] .select2-choice { max-width: 80px; vertical-align: bottom; } +/******************************************* +********** Groups view styles ******** +********************************************/ #s2id_memberList li > div, .groupMembersColors li > div { margin-left: 10px; @@ -4492,6 +4691,12 @@ form[name="notification_settings"] .select2-choice { margin: 0px; color: #444444; } +/******************************************* +********** Groups view styles ends******** +********************************************/ +/******************************************* +********** Picklist Css ******** +********************************************/ .pickListValue { background-color: #FFFFFF; } @@ -4506,6 +4711,12 @@ form[name="notification_settings"] .select2-choice { padding: 2px 1px !important; line-height: 15px; } +/******************************************* +************* Dashboard Styles ************* +********************************************/ +li.dashboardWidget { + overflow: hidden; +} .dashboardWidgetHeader .title { padding-bottom: 10px; font-size: 15px; @@ -4526,9 +4737,6 @@ form[name="notification_settings"] .select2-choice { .dashBoardContainer .tabContainer .tab-content { margin-top: 10px; } -.dashBoardContainer .dashBoardTabContents ul { - margin: 0; -} .dashBoardContainer .dashBoardTabContents ul li { border: 3px solid #E2E2E4; box-shadow: 1px; @@ -4595,7 +4803,7 @@ form[name="notification_settings"] .select2-choice { display: inline-block; opacity: 1; } -.dashBoardContainer .tabContainer li a .deleteTab:hover { +.dashBoardContainer .tabContainer li a .deleteTab:hover { cursor: pointer; } #minilistWizardContainer .fieldLabel { @@ -4632,6 +4840,9 @@ form[name="notification_settings"] .select2-choice { resize: none; width: 100%; } +/******************************************* +********** Picklist DependencyGraph ******** +********************************************/ #dependencyGraph .tableHeading { text-align: center; padding-top: 30px; @@ -4657,6 +4868,9 @@ form[name="notification_settings"] .select2-choice { #dependencyGraph .dependencyMapping .pickListDependencyTable .selectedCell { background: #a9cbf5; } +/******************************************* +********** Rewriting select2 for consistency******** +********************************************/ .select2-container .select2-choice { height: 29px; border-radius: 1px; @@ -4750,6 +4964,7 @@ hr { position: fixed; bottom: 0; background: #EFEFEF; + /*width:100%;*/ border-left: 42px solid #2c3b49; height: 60px; left: 0; @@ -4768,7 +4983,6 @@ hr { } .settingsPageDiv .modal-overlay-footer { margin-left: 230px; - border-left: 0px solid; } .settingsOverlayContainer .modal-overlay-footer { margin: 0; @@ -4791,14 +5005,14 @@ hr { vertical-align: middle; margin-top: 6px; } -.list-menu-content .pull-right>.dropdown-menu { +.list-menu-content .pull-right > .dropdown-menu { left: -126px; position: relative; } -.dropdown-menu>li>a { +.dropdown-menu > li > a { padding: 4px 6px; } -.dropdown-menu>li>a span i { +.dropdown-menu > li > a span i { font-size: 15px; vertical-align: middle; } @@ -4806,11 +5020,11 @@ hr { max-height: 300px; padding-left: 0; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container { margin-right: 0; padding: 4px 6px; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container>li>a { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container > li > a { display: block; padding: 3px 5px; clear: both; @@ -4819,7 +5033,7 @@ hr { color: #333; white-space: nowrap; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container span i { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container span i { font-size: 15px; vertical-align: middle; } @@ -4842,16 +5056,16 @@ hr { .calendar-sidebar .calendar-sidebar-tabs.padding { padding-left: 20px !important; } -.related-tabs.row .nav>li { +.related-tabs.row .nav > li { padding: 0 10px; margin: 0 2px; } -.massEditTabs.nav>li { +.massEditTabs.nav > li { padding: 0 10px; margin: 0 4px; } -.row .nav>li>a, -.row .nav>li>a:hover { +.row .nav > li > a, +.row .nav > li > a:hover { padding: 10px 3px; border: none; vertical-align: bottom; @@ -4861,38 +5075,39 @@ hr { -webkit-box-sizing: border-box; -o-box-sizing: border-box; } -.row .nav>li>a:hover { +.row .nav > li > a:hover { border-bottom-color: #555; } -TN-34230 - -.row .nav>li>a:hover { +/*.row ul{ + padding:0; +}*/ +TN-34230 .row .nav > li > a:hover { border-bottom-color: #555; background: none; } .row ul li:first-child { margin-left: 0; } -.related-tabs .nav-tabs>li.active, -.related-tabs .nav-tabs>li:hover, -.related-tabs .nav-tabs>li.active:focus, -.dashBoardContainer .nav-tabs>li.active, -.dashBoardContainer .nav-tabs>li:hover, -.dashBoardContainer .nav-tabs>li.active:focus, -.contents.tabbable .nav-tabs>li.active, -.contents.tabbable .nav-tabs>li:hover, -.contents.tabbable .nav-tabs>li.active:focus { +.related-tabs .nav-tabs > li.active, +.dashBoardContainer .nav-tabs > li.active, +.contents.tabbable .nav-tabs > li.active, +.related-tabs .nav-tabs > li:hover, +.dashBoardContainer .nav-tabs > li:hover, +.contents.tabbable .nav-tabs > li:hover, +.related-tabs .nav-tabs > li.active:focus, +.dashBoardContainer .nav-tabs > li.active:focus, +.contents.tabbable .nav-tabs > li.active:focus { border: none; border-bottom: 3px solid #555; } -.nav-tabs>li.active>a, -.nav-tabs>li.active>a:hover, -.nav-tabs>li.active>a:focus, -.nav-tabs>li>a { +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus, +.nav-tabs > li > a { border: 0; } -.nav>li>a:hover, -.nav>li>a:focus { +.nav > li > a:hover, +.nav > li > a:focus { background-color: #FFFFFF; } .fa-pencil, @@ -4902,6 +5117,9 @@ TN-34230 .commentAttachmentName { font-size: 11px; } +/******************************************* +********** Layout Editor ******** +********************************************/ .marginBottom10px { margin-bottom: 10px; } @@ -4924,6 +5142,7 @@ TN-34230 } .zeroOpacity { opacity: 0; + /*for IE*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } @@ -4950,10 +5169,12 @@ TN-34230 .layoutContent .opacity:hover .actions { opacity: 1; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + /*for IE*/ filter: alpha(opacity=100); } .layoutContent .fieldPropertyContainer:hover .actions { opacity: 1; + /*for IE*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=100); } @@ -4976,6 +5197,7 @@ TN-34230 .relatedTabModulesList .addButton { border-radius: 2px; border: 1px solid #DDDDDD; + text-transform: uppercase; color: #666666; background: #FFFFFF; } @@ -5049,6 +5271,9 @@ TN-34230 margin-left: 5px; word-break: break-all; } +/******************************************* +************** Tax Management ************** +********************************************/ #TaxCalculationsContainer .table tr:first-child, .taxModalContainer #editTax .table tr:first-child { border-bottom: 1px solid #ccc; @@ -5088,6 +5313,9 @@ TN-34230 max-height: 500px; overflow-y: auto; } +/******************************************* +********** Workflows ******** +********************************************/ #workflow_edit .editViewBody { overflow: inherit; } @@ -5097,7 +5325,7 @@ TN-34230 } .timePicker { width: 9.5em !important; - z-index: 1101 !important; + z-index: 1070 !important; } .weekDaySelect .ui-state-default { background: inherit; @@ -5135,75 +5363,6 @@ TN-34230 .module-filters.active { background: #F7F7F7; } -.payment-type-selection { - margin-bottom: 30px; -} -.payment-type-selection img { - vertical-align: middle; -} -.currplan { - padding: 10px 20px; - background-color: #f3f3f3; - border: 1px solid #eee; - border-radius: 3px; -} -.currplan div { - display: inline-block; - font-size: 16px; -} -.planName { - display: inline-block; - color: #fff; - padding: 20px; - margin: 10px 20px; - font-size: 24px; - border-radius: 2px; -} -.plan-heading { - min-height: 168px; -} -.plan-title { - color: #fff; - font-size: 20px; - padding: 13px 0; -} -#sales_plan { - background: #3FC380; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#salespremium_plan { - background: #00B16A; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#support_plan { - background: #2980B9; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#supportpremium_plan { - background: #2980B9; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#ultimate_plan, -#exclusive_plan { - background: #F39C12; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#contact_plan { - background: #FF5959; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} .workflowListContainer .select2-container .select2-choice { height: 36px; } @@ -5218,6 +5377,7 @@ TN-34230 .contactAdd { border: 1px solid #eee; padding: 20px; + /*min-height: 310px !important;*/ } #subDetails table td { padding: 7px 10px; @@ -5340,9 +5500,9 @@ TN-34230 .productBundles { padding-left: 20px; } -.nav .open>a, -.nav .open>a:hover, -.nav .open>a:focus { +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { color: #000000; background-color: #FFFFFF; } @@ -5363,6 +5523,9 @@ TN-34230 width: 100%; overflow-x: auto; } +/******************************************* +*************** Mail Manager *************** +********************************************/ #mm_searchButton { height: 28px; background-color: #FFFFFF; @@ -5418,8 +5581,8 @@ TN-34230 padding: 1px 5px; border-radius: 3px; text-align: center; - text-shadow: 0 1px rgba(0,0,0,0.1); - background-image: -webkit-linear-gradient(top,#DD4B39 0,#D14836 100%); + text-shadow: 0 1px rgba(0, 0, 0, 0.1); + background-image: -webkit-linear-gradient(top, #DD4B39 0, #D14836 100%); border: 1px solid #C6322A; background-color: #DD4B39; } @@ -5637,6 +5800,7 @@ TN-34230 .width40per { width: 40%; } +/****** Mail Manager Ends ******/ .quickCreateContent .massEditTable textarea, .addCommentBlock .commentTextArea textarea { resize: vertical; @@ -5649,19 +5813,20 @@ TN-34230 .select2-container-multi .select2-choices { z-index: 1; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a:hover { +/****** Customer Portal Settings ******/ +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a:hover { background-color: #fff; } -.cp-nav-header-wrapper>li.disabled>a:hover { +.cp-nav-header-wrapper > li.disabled > a:hover { border: 0px ! important; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a { +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a { background-color: #fff; } -#portalModulesTable>li.portalModuleRow.active>a:hover { +#portalModulesTable > li.portalModuleRow.active > a:hover { background-color: #fff !important; } -#portalModulesTable>li.portalModuleRow.active>a:focus { +#portalModulesTable > li.portalModuleRow.active > a:focus { background-color: #fff !important; } .portal-dashboard { @@ -5760,7 +5925,7 @@ TN-34230 .portal-dashboard { border-bottom: 0px ! important; } -#portal-shortcutsContainer>ul { +#portal-shortcutsContainer > ul { border-bottom: 0px ! important; } .portalMenuHeader { @@ -5769,14 +5934,15 @@ TN-34230 } .cp-tabs .enabledModules { display: inline-block ! important; - margin-left: 4px !important; - margin-right: 4px !important; + margin-left: 4px!important; + margin-right: 4px!important; vertical-align: top; margin-top: 4px !important; } .portal-shortcut-list:hover { border-bottom: 3px solid transparent ! important; } +/****** Customer Portal Settings ******/ .label-radio label input[type="radio"] { position: relative; top: 2px; @@ -5788,6 +5954,9 @@ TN-34230 div.tooltip-inner { max-width: 400px; } +/******************************************* +********** Menu Editor ******** +********************************************/ .sortable.appContainer.ui-sortable { width: 160px; } @@ -5962,7 +6131,7 @@ div.tooltip-inner { width: 13px !important; margin-top: 8px; } -.detailview-table .input-group-addon+.inputElement.form-control, +.detailview-table .input-group-addon + .inputElement.form-control, .detailview-table .inputElement.form-control.input-medium { width: 100%; } @@ -6009,6 +6178,7 @@ div.tooltip-inner { float: left; margin-right: 5px; } +/***** Oursites Changes *****/ .portal-table .table-actions { width: inherit ! important; } @@ -6020,6 +6190,7 @@ div.tooltip-inner { padding: 10px 5px ! important; padding-left: 10px ! important; } +/***** Oursites Changes *****/ .ExtensionscontentsDiv .content-area { padding-left: 15px; padding-right: 15px; @@ -6033,14 +6204,14 @@ div.tooltip-inner { } .blockHeader { border-color: #F3F3F4 #F3F3F4 #cbcbcf; - border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); background-color: #474747; - background-image: -moz-linear-gradient(top,#555555,#333333); - background-image: -ms-linear-gradient(top,#555555,#333333); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#555555),to(#333333)); - background-image: -webkit-linear-gradient(top,#555555,#333333); - background-image: -o-linear-gradient(top,#555555,#333333); - background-image: linear-gradient(top,#555555,#333333); + background-image: -moz-linear-gradient(top, #555555, #333333); + background-image: -ms-linear-gradient(top, #555555, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); + background-image: -webkit-linear-gradient(top, #555555, #333333); + background-image: -o-linear-gradient(top, #555555, #333333); + background-image: linear-gradient(top, #555555, #333333); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333', GradientType=0); min-height: 30px; @@ -6133,8 +6304,8 @@ div.tooltip-inner { .markStar .starredStatus { display: none; } -.nav>li.addDashboardTab>a, -.nav>li.addDashboardTab>a:hover { +.nav > li.addDashboardTab > a, +.nav > li.addDashboardTab > a:hover { padding: 10px 15px; background: inherit; } @@ -6147,7 +6318,7 @@ div.tooltip-inner { height: 960px; width: 1260px; } -.nav-tabs>li { +.nav-tabs > li { border-bottom: 3px solid transparent; margin: 0 2px; } @@ -6225,16 +6396,14 @@ div.tooltip-inner { } .select2-container.select2-container-multi.select2, .editViewPageDiv .select2-container.select2-container-multi.select2 { - height: auto !important; + height: auto!important; } -.summaryViewFields .select2-container-multi.inputElement.form-control -.quickCreateContent .select2-container.select2-container-multi.select2, +.summaryViewFields .select2-container-multi.inputElement.form-control .quickCreateContent .select2-container.select2-container-multi.select2, #massEditContainer .select2-container.select2-container-multi.select2 { width: 150px; height: auto !important; } -.summaryViewFields .select2-container-multi.inputElement.form-control -.quickCreateContent .select2-container.select2-container-multi.select2 .input-save-wrap, +.summaryViewFields .select2-container-multi.inputElement.form-control .quickCreateContent .select2-container.select2-container-multi.select2 .input-save-wrap, #massEditContainer .select2-container.select2-container-multi.select2 .input-save-wrap { float: right; margin-right: 25px; @@ -6330,6 +6499,7 @@ a.cp-modules:hover { #RestrictionsLayout { background: #fafafb; margin-top: -92px; + /*to adjust with page padding top*/ } #RestrictionsLayout .vtImage { width: 22%; @@ -6363,6 +6533,7 @@ a.cp-modules:hover { .datepicker { z-index: 1100 !important; } +/*****RSS Changes****/ .feedListContainer .listview-table tr td:first-child, .listview-table tr th:first-child { width: inherit ! important; @@ -6370,12 +6541,14 @@ a.cp-modules:hover { .feedListContainer .listViewEntries .listViewEntryValue { max-width: inherit ! important; } -.ps-container>.ps-scrollbar-y-rail { +/*****RSS Changes****/ +.ps-container > .ps-scrollbar-y-rail { z-index: 1002; } #relationBlock .recordScroll { max-height: 150px; } +/*Start - List sidebar toggle*/ .essentials-toggle { background-color: white; font-weight: bold; @@ -6395,6 +6568,7 @@ a.cp-modules:hover { .essentials-toggle .fa-chevron-right { background-position: -460px -72px !important; } +/*End - List essentials toggle*/ .module-name-tooltip .qtip-content { font-size: 12px; padding: 3px; @@ -6403,23 +6577,6 @@ a.cp-modules:hover { .module-name-tooltip { padding: 3px; } -.main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, -.main-container-Reports .module-nav { - width: 0; -} -.main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, -.main-container-Reports .sidebar-essentials { - width: 283px; - left: 0; -} -.main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { - padding-left: 0px !important; -} .main-container-MailManager .module-nav { width: 230px; } @@ -6478,8 +6635,8 @@ li.select2-search-choice div { .popover ul.listmenu li { padding: 3px; } -.popover-content .disabled>a, -.popover .disabled>a { +.popover-content .disabled > a, +.popover .disabled > a { opacity: 0.5; cursor: not-allowed; } @@ -6490,6 +6647,7 @@ li.select2-search-choice div { -o-transform: rotate(180deg); transform: rotate(180deg); } +/*Start - List sidebar toggle*/ .essentials-toggle { background-color: white; font-weight: bold; @@ -6509,6 +6667,7 @@ li.select2-search-choice div { .essentials-toggle .fa-chevron-right { background-position: -460px -72px !important; } +/*End - List essentials toggle*/ .module-name-tooltip .qtip-content { font-size: 12px; padding: 3px; @@ -6520,25 +6679,20 @@ li.select2-search-choice div { border-left: 1px solid #DDDDDD; } .main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, .main-container-Reports .module-nav { width: 0; } .main-container-Documents .mod-switcher-container, -.main-container-RecycleBin .mod-switcher-container, .main-container-Reports .mod-switcher-container { width: 0; } .main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, .main-container-Reports .sidebar-essentials { width: 283px; left: 0; } .main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { +.main-container-Reports .full-width { padding-left: 0px !important; } .listViewPageDiv .ps-scrollbar-x-rail { @@ -6589,16 +6743,16 @@ li.select2-search-choice div { #reportDetails .pivot .toptitle.targetY0, #reportDetails .pivot .lefttitle.targetX0 { border-color: #F3F3F4 #F3F3F4 #cbcbcf; - border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); background-color: #474747; - background-image: -moz-linear-gradient(top,#555555,#333333); - background-image: -ms-linear-gradient(top,#555555,#333333); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#555555),to(#333333)); - background-image: -webkit-linear-gradient(top,#555555,#333333); - background-image: -o-linear-gradient(top,#555555,#333333); - background-image: linear-gradient(top,#555555,#333333); + background-image: -moz-linear-gradient(top, #555555, #333333); + background-image: -ms-linear-gradient(top, #555555, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); + background-image: -webkit-linear-gradient(top, #555555, #333333); + background-image: -o-linear-gradient(top, #555555, #333333); + background-image: linear-gradient(top, #555555, #333333); background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555',endColorstr='#333333',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333', GradientType=0); min-height: 30px; } #reportDetails .pivot th.toptitle.targetY0, @@ -6640,7 +6794,8 @@ li.select2-search-choice div { background: #FFFFFF; } .templateActions { - background: rgba(0,0,0,0.1); + background: rgba(0, 0, 0, 0.1); + /*padding: 4%;*/ bottom: 0; text-align: center; position: absolute; @@ -6648,6 +6803,9 @@ li.select2-search-choice div { zoom: 1; width: 100%; } +/*.templateActions i { + margin-right: 30px; +}*/ .thumbnails > li { float: left; height: 315px !important; @@ -6822,9 +6980,10 @@ a.btnReport:hover { left: 0px; } .bx-wrapper .bx-viewport { - width:99%; + width: 99%; left: 0px; background: #fff; + /*fix other elements on the page moving (on Chrome)*/ -webkit-transform: translatez(0); -moz-transform: translatez(0); -ms-transform: translatez(0); @@ -6882,7 +7041,7 @@ a.btnReport:hover { .filter-search-show { display: block !important; } -.emailTemplatesPopupTableContainer .listViewEntries .listViewEntryValue { +.emailTemplatesPopupTableContainer .listViewEntries .listViewEntryValue { max-width: 100%; min-width: 150px; } @@ -6917,12 +7076,15 @@ input:focus::-webkit-input-placeholder { input:focus:-moz-placeholder { color: transparent; } +/* FF 4-18 */ input:focus::-moz-placeholder { color: transparent; } +/* FF 19+ */ input:focus:-ms-input-placeholder { color: transparent; } +/* IE 10+ */ .global-actions .dropdown-menu:before { position: absolute; top: -7px; @@ -6931,7 +7093,7 @@ input:focus:-ms-input-placeholder { border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-left: 7px solid transparent; - border-bottom-color: rgba(0,0,0,0.2); + border-bottom-color: rgba(0, 0, 0, 0.2); content: ''; } .global-actions .dropdown-menu:after { @@ -7116,6 +7278,7 @@ input:focus:-ms-input-placeholder { text-align: center; } #OnBoardLayout #OnBoardPageContainer .crmGoals textarea::-webkit-input-placeholder { + /* WebKit browsers */ text-align: center; padding: 20%; font-size: 12px; @@ -7257,35 +7420,6 @@ input:focus:-ms-input-placeholder { .importServiceSelectionContainer .app-item { text-align: center; } -.modules-menu ul li.active a { - border-left: 3px solid #8E44AD; - opacity: 1; -} -.fieldValue .value a { - color: #15c !important; -} -.editViewContents .fieldLabel { - min-width: 100px; - width: 20%; - word-break: break-all; -} -.editViewContents .fieldValue { - width:30%; -} -.editViewContents td.fieldValue[colspan="3"] { - width:80%; -} -.editViewContents textarea.textAreaElement { - width: 88%; -} -.editViewContents input[type="checkbox"] { - width: 15px; - height: 15px; -} -.editViewContents input[type="radio"] { - width: 15px; - height: 15px; -} #composeEmailContainer .modal-body .quickCreateContent, #QuickCreate .modal-body .quickCreateContent, #create .quickCreateContent { @@ -7297,4 +7431,94 @@ input:focus:-ms-input-placeholder { } .settingsgroup-panel .widgetContainer .menuItemLabel:hover .pinUnpinShortCut { display: inline-block; -} \ No newline at end of file +} +@-moz-document url-prefix() { + .duplicateHandlingContainer .tooltip-inner { + width: 550px; + max-width: 550px; + } +} +.duplicateHandlingContainer .tooltip-inner { + text-align: left !important; +} +.duplicateHandlingContainer .syncMessage { + margin-top: 5px !important; +} +.duplicateHandlingContainer .actionsList { + width: 230px !important; +} +.duplicationMessageContainer { + background-color: #f2dede !important; + color: #b94a48 !important; +} +.duplicationMessageContainer .duplicationMessageHeader { + margin-bottom: 8px; +} +.listViewRecordActions .quickView, +.listViewRecordActions .markStar, +.listViewRecordActions .markAsHeld, +.listViewRecordActions .holdFollowupOn { + margin-top: 4px; +} +.app-menu .module-icon .custom-module { + font-size: 14px; + border-radius: 4px; + color: #000; + background-color: #FFFFFF; + padding: 4px 10px 4px 5px !important; +} +.menu-item .custom-module { + font-family: 'OpenSans-Regular', sans-serif; + font-size: 12px; + border-radius: 4px; + padding: 2px; + color: #000; + background-color: #FFFFFF; +} +.modules-menu .custom-module { + color: #FFFFFF; + margin-left: 0px; + display: inline; + border: 1px solid #FFFFFF; + border-radius: 4px; + padding: 3px 4px 3px 2px !important; + font-weight: bold; +} +#quickCreateModules .custom-module, +.workflowListContainer .custom-module, +.dashBoardTabContents .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #FFFFFF; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #000000; + background-color: #FFFFFF; +} +.task-details .custom-module { + border-radius: 4px; + padding: 1px 4px; + color: #FFFFFF; + background-color: #777; +} +.related-tabs .custom-module, +#relatedmenuList .custom-module { + border-radius: 4px; + color: #FFFFFF; + background-color: #777; + padding: 5px 7px; + font-weight: bold; +} +.record-header .custom-module { + font-size: 30px; +} +.moduleIcon .custom-module { + font-weight: bold; +} +.modules-menu ul li.active a { + border-left: 3px solid #8E44AD; + opacity: 1; +} diff --git a/layouts/v7/skins/sales/style.css b/layouts/v7/skins/sales/style.css index 2fb98bb5b8815db85e10b59d7739309c117e6d3b..510bcede736bf6a1123bd3aa080e94743699c140 100644 --- a/layouts/v7/skins/sales/style.css +++ b/layouts/v7/skins/sales/style.css @@ -1,7 +1,9 @@ @font-face { font-family: 'Oswald'; src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot'); - src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot?#iefix') format('embedded-opentype'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.woff') format('woff'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.ttf') format('truetype'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.svg#Oswald') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.svg#Oswald') format('svg'); + /* Legacy iOS */ font-weight: normal; font-style: normal; text-rendering: optimizeLegibility; @@ -15,27 +17,37 @@ a:active { @font-face { font-family: 'OpenSans-Regular'; src: url('../fonts/OpenSans/Regular/OpenSans-Regular.eot'); - src: url('../fonts/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'), url('../fonts/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), url('../fonts/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), url('../fonts/OpenSans/Regular/OpenSans-Regular.svg#svgFontName') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/OpenSans/Regular/OpenSans-Regular.svg#svgFontName') format('svg'); + /* Legacy iOS */ } @font-face { font-family: 'OpenSans-Semibold'; src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot'); - src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.ttf') format('truetype'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff2') format('woff2'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff') format('woff'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.svg#svgFontName') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.svg#svgFontName') format('svg'); + /* Legacy iOS */ } @font-face { font-family: 'ProximaNova-Regular'; - src: url('../fonts/ProximanovaWebfont/ProximaNova-Regular.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.woff') format('woff'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'); + src: url('../fonts/ProximanovaWebfont/ProximaNova-Regular.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/ProximanovaWebfont/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'); + /* IE6-IE8 */ + /* Safari, Android, iOS */ font-style: normal; font-weight: normal; text-rendering: optimizeLegibility; } @font-face { font-family: 'ProximaNova-Semibold'; - src: url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.woff') format('woff'), url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.eot?#iefix') format('embedded-opentype'); + src: url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.eot?#iefix') format('embedded-opentype'); + /* IE6-IE8 */ font-style: normal; font-weight: normal; text-rendering: optimizeLegibility; } +/**********************************/ +/************ Layout **************/ +/**********************************/ html { height: 100%; overflow-y: auto; @@ -102,6 +114,7 @@ body { @media (min-width: 992px) { .global-nav .logo-container { display: inline-block; + width: 150px; z-index: 2; padding-left: 6%; margin-top: 1px; @@ -113,11 +126,13 @@ body { position: absolute; width: 100%; height: 42px; + /* border-top:1px solid #ddd;*/ border-bottom: 1px solid #ddd; } .app-nav .module-action-bar .module-action-content { background: #FBFBFB; height: 41px; + /* border-bottom: 1px solid #eee;*/ } .app-nav .module-action-bar .module-action-content .navbar-right { margin-right: 0; @@ -163,7 +178,7 @@ body { padding-left: 0; } } -.btn-toolbar >.btn-group:first-child { +.btn-toolbar > .btn-group:first-child { margin-left: 5px; } .vt-notification { @@ -196,8 +211,12 @@ body { .vt-notification [data-notify="message"] { color: #eaeaea; } +/**********************************/ +/******** Navigation styles *******/ +/**********************************/ .company-logo { height: 40px; + width: 150px; margin: 0 0; display: inline-block; margin-left: 1px; @@ -214,10 +233,13 @@ body { font-size: 16px; position: relative; } +/*.module-action-bar .module-action-content #appnav{ + padding-top:5px; +}*/ .global-nav .navbar-nav > li div a { padding: 15px; } -.global-nav>ul { +.global-nav > ul { margin-right: 20px; } .global-nav .search-links-container { @@ -267,26 +289,28 @@ body { float: right; height: 42px; } - .module-action-bar .navbar-right .nav>li { + .module-action-bar .navbar-right .nav > li { display: inline-block; } - .module-action-bar .navbar-right .nav>li a { + .module-action-bar .navbar-right .nav > li a { padding: 0 10px; } .global-nav .logo-container { border-bottom: 0; + width: 150px; } } @media (max-width: 991px) { .global-nav .logo-container { border-bottom: 0; + width: 150px; } .notificationMessageHolder { padding-left: 45%; } } @media (min-width: 991px) { - .nav>li>a.qc-button { + .nav > li > a.qc-button { padding: 2px 3px; margin-top: 13px; margin-right: 15px; @@ -294,7 +318,7 @@ body { color: #fff; border-radius: 20px; } - .nav>li>a.qc-button span { + .nav > li > a.qc-button span { vertical-align: top; } } @@ -313,6 +337,7 @@ body { width: 100%; height: 100%; } +/** App Nav Styles */ .active-app-title { white-space: nowrap; font-family: Oswald, "OpenSans-Semibold", "Helvetica Neue", Helvetica, sans-serif; @@ -367,7 +392,9 @@ body { height: 42px; text-align: center; line-height: 42px; + /* background-color: #2c3b49;*/ color: #ffffff; + /*border-bottom: 1px solid #272B46;*/ } .app-nav .app-indicator-icon-container .app-indicator-icon { font-size: 24px; @@ -391,6 +418,9 @@ body { .app-PROJECT { background: #8E44AD !important; } +.app-TOOLS { + background: #EF5E29 !important; +} .app-DEFAULT, .app-DASHBOARD { background: #56ccc8 !important; @@ -479,16 +509,16 @@ body { right: -4px; } #overlayPageContent .mCSB_scrollTools, -#overlayPageContent .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonUp, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonDown, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonLeft, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonRight, .app-list .mCSB_scrollTools, +#overlayPageContent .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .app-list .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonUp, .app-list .mCSB_scrollTools .mCSB_buttonUp, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonDown, .app-list .mCSB_scrollTools .mCSB_buttonDown, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonLeft, .app-list .mCSB_scrollTools .mCSB_buttonLeft, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonRight, .app-list .mCSB_scrollTools .mCSB_buttonRight { -webkit-transition: none; transition: none; @@ -534,6 +564,9 @@ a.menu-item:hover { .app-item-color-PROJECT { border-left: 4px solid #8E44AD; } +.app-item-color-TOOLS { + border-left: 4px solid #EF5E29; +} .app-item .fa { font-size: 1.5em; -webkit-transition: all 0.25s ease-in; @@ -700,6 +733,7 @@ a.menu-item:hover { width: 0px; overflow: hidden; } +/* User Logout */ .logout-content { padding: 10px; width: 350px; @@ -754,6 +788,9 @@ a.menu-item:hover { .app-settings { background: #FFFFFF; } +/*************************************************/ +/******** View styles (List/Edit/Detail..) *******/ +/*************************************************/ .viewContent .content-area { padding-left: 50px; } @@ -780,6 +817,9 @@ a.menu-item:hover { opacity: 0.5; pointer-events: none; } +.input-group.percentage-input-group .form-control { + width: 100% !important; +} .bottomscroll-div, .topscroll-div { display: table; @@ -793,6 +833,9 @@ a.menu-item:hover { display: inline-block; word-break: break-word; } +.fieldValue .value a { + color: #15c !important; +} .modal-header button.close { padding: 0; color: #ffffff; @@ -865,6 +908,9 @@ input[type="password"].inputElement { padding-right: 20px; padding-left: 20px; } +/**********************************/ +/**** Side vertical Nav styles ****/ +/**********************************/ .module-nav { background: #fff; z-index: 1004; @@ -880,6 +926,9 @@ input[type="password"].inputElement { left: 0; transition: 0s width; } +.module-nav:hover { + /*z-index: 1001;*/ +} .modules-menu ul { list-style: none; margin-left: 0; @@ -914,7 +963,7 @@ input[type="password"].inputElement { float: left; font-size: 20px; } -.modules-menu ul li a>span { +.modules-menu ul li a > span { margin-left: 10px; vertical-align: middle; font-size: 13px; @@ -954,6 +1003,7 @@ input[type="password"].inputElement { width: 100%; left: 0%; } +/** Lists Menu in Side bar */ .module-filters .settings-sidebar, .module-filters .sidebar-container { padding: 0 12px; @@ -987,6 +1037,7 @@ input[type="password"].inputElement { .lists-menu-container hr { margin: 5px 0; } +/* mScrollbar customization for lists widget */ .lists-menu-container .menu-scroller .mCSB_scrollTools { width: 13px; } @@ -998,8 +1049,10 @@ input[type="password"].inputElement { .modules-menu .mCSB_scrollTools .mCSB_draggerContainer { left: 8px; } +/* Customization ends */ .lists-menu-container .list-menu-content .more-less-link { color: #fff; + /*text-decoration: none;*/ } .lists-menu-container .list-menu-content .sub-header { color: #ddd; @@ -1085,7 +1138,6 @@ input[type="password"].inputElement { background-color: #FFFFFF; border: 1px solid #DDDDDD; margin: 5px 0 10px; - color: #ccc; padding: 5px 10px; } .search-folders:focus, @@ -1104,9 +1156,11 @@ input[type="password"].inputElement { .common-links-container > div a { color: #fff; } +/*Search Container styles */ .search-container { min-height: 300px; position: absolute; + /*z-index: 1030;*/ width: 100%; top: 0; background: #FBFBFB; @@ -1125,6 +1179,7 @@ input[type="password"].inputElement { .footer p { margin: 5px 0; } +/*** Utilities ***/ .showElement { display: block !important; height: 100%; @@ -1247,11 +1302,11 @@ ul.unstyled { } .emptyRecordsDiv .emptyRecordsContent { display: inline-block; - font-size: 16px; left: 50%; margin-left: -25%; position: absolute; width: 50%; + font-size: 16px; } .textOverflowEllipsis { overflow: hidden; @@ -1276,6 +1331,9 @@ ul.unstyled { .removeNoFileChosen { color: transparent !important; } +/*********************************** +**********Button Styles********** +***********************************/ .module-buttons-container { float: right; margin-right: 10px; @@ -1297,6 +1355,7 @@ ul.unstyled { margin: 4px 2px; border-radius: 2px; border: 1px solid #ddd; + text-transform: uppercase; color: #666; background: #fff; } @@ -1317,6 +1376,9 @@ ul.unstyled { color: #FFFFFF !important; background: #5bc0de !important; } +/*********************************** +**********List View Styles********** +***********************************/ .fa.pull-left { margin-right: 0; } @@ -1351,7 +1413,7 @@ ul.unstyled { font-size: 20px; } .listview-pagination .disabled { - color: rgba(0,0,0,0.2); + color: rgba(0, 0, 0, 0.2); } .listview-pagination .disabled:hover { cursor: default; @@ -1379,6 +1441,8 @@ ul.unstyled { .listview-table { margin-bottom: 0; border-top: 0; + /* Horizontal scroll will not work if table layout Fixed */ + /* table-layout: fixed;*/ } .listview-table tr td, .listview-table tr th { @@ -1408,7 +1472,7 @@ ul.unstyled { width: 100%; } .listViewEntries .relatedListEntryValues .fieldValue .value, -.listViewEntries .listViewEntryValue .fieldValue .value { +.listViewEntries .listViewEntryValue .fieldValue .value { vertical-align: middle; width: 100%; display: inline-block; @@ -1423,7 +1487,7 @@ ul.unstyled { } .listview-table-norecords .table-actions, .listview-table .table-actions { - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -1489,13 +1553,13 @@ input[type=checkbox]:checked { vertical-align: middle; display: table-cell; } -.listview-table tr.searchRow th { +.listview-table tr.searchRow th { padding: 5px 3px; } -.listview-table tr.searchRow th.inline-search-btn { +.listview-table tr.searchRow th.inline-search-btn { padding: 3px 10px; } -.listview-table tr.searchRow th.inline-search-btn button { +.listview-table tr.searchRow th.inline-search-btn button { text-align: center; width: 85%; text-shadow: none; @@ -1523,6 +1587,18 @@ input[type=checkbox]:checked { background-color: #FFEEEE !important; background-image: none !important; } +/*.floatThead-wrapper .table-container{ + z-index: 0 !important; +}*/ +/* List view bottom fixed scroll */ +/*.bottom-fixed-scroll{ + height: 14px; + position: relative; + top: -15px; + overflow-x: auto; + overflow-y: hidden; + width: 100%; +}*/ .scroller-div { height: 1px; } @@ -1644,9 +1720,15 @@ input[type=checkbox]:checked { #listColumnFilterContainer .disabled i { color: #ccc; } +/********************************** +**********Detail View Styles********** +**********************************/ .detailViewButtoncontainer { padding-top: 5px; } +.detailViewButtoncontainer button.btn { + margin: 0px 1px !important; +} .detailview-header .recordBasicInfo > .info-row { margin-bottom: 4px; } @@ -1727,6 +1809,9 @@ th { margin-top: 3%; margin-right: 2%; } +.overlayDetailHeader button.btn { + margin: 0px 1px !important; +} .referencefield-wrapper .createReferenceRecord { float: left; margin-left: 5px; @@ -1966,10 +2051,10 @@ th { z-index: 1030; } .overlay-container-60 { - margin-left: 42px; + margin-left: 42px ; } .overlay-container-300 { - margin-left: 230px; + margin-left: 230px ; } .overlayPageContent { background: #FFFFFF; @@ -2092,6 +2177,9 @@ th { height: 26px; line-height: 25px; } +/********************************** +**********Summary View Styles****** +**********************************/ .summary-table { width: 100%; table-layout: fixed; @@ -2212,33 +2300,33 @@ th { opacity: 1; cursor: pointer; } -.details.row >form .social-media-toggle { +.details.row > form .social-media-toggle { position: absolute; right: -15px; display: inline-block; width: 500px; border-left: 0px; } -.details.row >form .social-media-widget { +.details.row > form .social-media-widget { border-left: 1px solid #ddd; border-bottom: 1px solid #ddd; height: 100%; background: white; } -.details.row >form div[class*="col-"].resizable-summary-view { +.details.row > form div[class*="col-"].resizable-summary-view { padding-left: 0; padding-right: 0px; } -.details.row >form>div[class*="col-"], -.details.row >form .resizable-summary-view div[class*="col-"] { +.details.row > form > div[class*="col-"], +.details.row > form .resizable-summary-view div[class*="col-"] { padding-right: 0; padding: 0px 5px; } -.details.row >form>div[class*="col-"]:first-child, -.details.row >form .left-block { +.details.row > form > div[class*="col-"]:first-child, +.details.row > form .left-block { padding-left: 0 !important; } -.details.row >form>div[class*="col-"]:last-child { +.details.row > form > div[class*="col-"]:last-child { padding-right: 0; } .summaryWidgetContainer .noContent { @@ -2251,6 +2339,9 @@ th { .caseReplyArea .nav > li { padding: 0 10px; } +/********************************** +**********Edit View Styles******* +**********************************/ .main-container .editViewModNavigator.module-nav, .editViewModNavigator .mod-switcher-container, .editViewModNavigator .modules-menu { @@ -2291,9 +2382,28 @@ th { width: 100%; } .editViewContents .input-group { - width: 229px; + width: 208px; float: left; } +.editViewContents .fieldLabel { + min-width: 100px; + width: 20%; + word-break: break-all; +} +.editViewContents .fieldValue { + width: 30%; +} +.editViewContents td.fieldValue[colspan="3"] { + width: 80%; +} +.editViewContents textarea.textAreaElement { + width: 88%; +} +.editViewContents input[type="checkbox"], +.editViewContents input[type="radio"] { + width: 15px; + height: 15px; +} .input-group.inputElement .input-group-addon { border: none; border-left: 1px solid #ddd; @@ -2370,6 +2480,9 @@ th { z-index: 1000; padding: 7px; } +/********************************** +**********Advance Search styles********** +**********************************/ .op0.fadeInx { opacity: 1; } @@ -2442,7 +2555,11 @@ th { } .btn + input { margin-left: 5px; + /* margin-top : 3px;*/ } +/********************************** +**********Extension Store Styles********** +**********************************/ .extensionstore .app-trigger { width: 98%; } @@ -2473,6 +2590,9 @@ th { .extensionContents .extensionError { color: #F10404; } +/********************************** +**********Extension Store Nav Bar********** +**********************************/ .tabbable-line > .nav-tabs { border: none; margin: 0px; @@ -2541,6 +2661,9 @@ th { .extensionContents .listview-table { width: 100%; } +/******************************************* +******Detail View related list styles******* +********************************************/ .relatedContents .listViewContentHeaderValues:hover { text-decoration: none; color: #333; @@ -2598,6 +2721,9 @@ th { .relatedViewActions .btn-group { margin-right: 15px; } +/******************************************* +****************** Modal ******************* +********************************************/ .modal-header { padding: 5px 15px; background: #596875; @@ -2625,6 +2751,7 @@ th { width: 100%; float: left; background: #596875; + /* height: 100%;*/ } .settings-menu { display: inline-block; @@ -2641,7 +2768,7 @@ th { cursor: n-resize; } .settings-menu-items { - box-shadow: 0 1px 1px rgba(0,0,0,0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); margin-bottom: 10px; text-align: justify; } @@ -2770,6 +2897,7 @@ th { vertical-align: middle; color: #3399ff; } +/* .squaredFour */ .squaredFour { width: 20px; position: relative; @@ -2783,9 +2911,9 @@ th { top: 0; left: 0; background: #fcfff4; - background: linear-gradient(top,#fcfff4 0%,#dfe5d7 40%,#b3bead 100%); + background: linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); border-radius: 4px; - box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); + box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); } .squaredFour label:after { content: ''; @@ -2813,13 +2941,16 @@ th { .importBlockContainer { color: #596875; } +/******************************************* +************* Social Buttons *************** +********************************************/ .btn-block + .btn-block { margin-top: 5px; } .btn-google-plus { color: #FFFFFF !important; background-color: #DD4B39; - border-color: rgba(0,0,0,0.2); + border-color: rgba(0, 0, 0, 0.2); } .btn-social { position: relative; @@ -2838,15 +2969,18 @@ th { line-height: 34px; font-size: 1.6em; text-align: center; - border-right: 1px solid rgba(0,0,0,0.2); + border-right: 1px solid rgba(0, 0, 0, 0.2); } +/******************************************* +************* Updates Timeline *************** +********************************************/ .recentActivitiesContainer .history { margin: 0 auto; padding: 20px 20px 1px; max-width: 100%; overflow-x: visible; - -webkit-transition: opacity .2s ease-out; - transition: opacity .2s ease-out; + -webkit-transition: opacity 0.2s ease-out; + transition: opacity 0.2s ease-out; } .updates_timeline { padding-top: 20px; @@ -2855,6 +2989,7 @@ th { padding: 0; list-style: none; } +/* The line */ .updates_timeline:before { content: ''; position: absolute; @@ -2873,6 +3008,7 @@ th { min-height: 40px; z-index: 2; } +/* Left Content(Time) */ .updates_timeline > li .update_time { position: absolute; margin: 0; @@ -2884,6 +3020,7 @@ th { font-size: 15px; font-style: italic; } +/* Right content(Update info) */ .updates_timeline > li .update_info { padding: 10px 10px 1px; display: block; @@ -2892,10 +3029,11 @@ th { position: relative; top: -45px; } -.updates_timeline > li .update_info >h3 { +.updates_timeline > li .update_info > h3 { font-size: 1.1em; margin-left: -3%; } +/* The icons */ .updates_timeline > li .update_icon { position: relative; border-radius: 50%; @@ -2908,6 +3046,7 @@ th { color: #fff; line-height: 35px; } +/* More Button */ .updates_timeline #more_button .update_icon { position: relative; border-radius: 0; @@ -3015,6 +3154,9 @@ th { vertical-align: super; font-size: 13px; } +/******************************************* +************* Task Management ************** +********************************************/ #taskManagementContainer .data-body { margin-bottom: 50px; } @@ -3077,15 +3219,16 @@ th { #taskManagementContainer .other-details { color: #979797; } +/*overwriting jquery ui css*/ .ui-menu { z-index: 10000; } #taskManagementContainer button.active { background: #3B83F7; color: white; - text-shadow: 0 1px rgba(0,0,0,0.3); + text-shadow: 0 1px rgba(0, 0, 0, 0.3); border: 1px solid #135fd7; - box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); } .taskSubject { width: 99%; @@ -3093,6 +3236,9 @@ th { #taskManagementContainer .mCustomScrollbar .mCSB_inside > .mCSB_container { margin-right: 13px; } +/******************************************* +************* Settings Page ************** +********************************************/ .settingsPageDiv.content-area { margin-right: 0; } @@ -3126,6 +3272,9 @@ th { .settingsgroup-accordion a i { margin-right: 5px; } +.settingsgroup-accordion a span { + text-transform: uppercase; +} .settingsgroup { background: #2C3B49; height: 100%; @@ -3282,35 +3431,59 @@ th { } .mini-slider-control[data-value="0"] .ui-slider-handle { background: #7d7e7d; - background: -moz-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#7d7e7d),color-stop(100%,#0e0e0e)); - background: -webkit-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -o-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -ms-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: linear-gradient(to bottom,#7d7e7d 0%,#0e0e0e 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d',endColorstr='#0e0e0e',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #7d7e7d), color-stop(100%, #0e0e0e)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #7d7e7d 0%, #0e0e0e 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d', endColorstr='#0e0e0e', GradientType=0); + /* IE6-9 */ margin-left: 0px; } .mini-slider-control[data-value="1"] .ui-slider-handle { background: #ffb76b; - background: -moz-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#ffb76b),color-stop(0%,#ffa73d),color-stop(49%,#ff7c00),color-stop(100%,#ff7f04)); - background: -webkit-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -o-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -ms-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: linear-gradient(to bottom,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb76b',endColorstr='#ff7f04',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffb76b), color-stop(0%, #ffa73d), color-stop(49%, #ff7c00), color-stop(100%, #ff7f04)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb76b', endColorstr='#ff7f04', GradientType=0); + /* IE6-9 */ margin-left: -6px; } .mini-slider-control[data-value="2"] .ui-slider-handle { background: #bfd255; - background: -moz-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#bfd255),color-stop(79%,#8eb92a),color-stop(100%,#72aa00),color-stop(100%,#9ecb2d)); - background: -webkit-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -o-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -ms-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: linear-gradient(to bottom,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bfd255',endColorstr='#9ecb2d',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #bfd255), color-stop(79%, #8eb92a), color-stop(100%, #72aa00), color-stop(100%, #9ecb2d)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bfd255', endColorstr='#9ecb2d', GradientType=0); + /* IE6-9 */ margin-left: -13px; } .ModulemanagerSettings .moduleblock .hiden { @@ -3335,10 +3508,13 @@ th { th { padding: 6px; } +/******************************************* +********** CustomerPortal styles start ******** +********************************************/ .cp-tabs .enabledModules { display: inline-block ! important; - margin-left: 4px !important; - margin-right: 4px !important; + margin-left: 4px!important; + margin-right: 4px!important; vertical-align: top; } .drag-portal-module { @@ -3445,7 +3621,7 @@ th { margin-left: 5px; } .portal-field-delete { - margin-left: 45px !important; + margin-left: 45px!important; } .portalModuleRow { border-left: 4px solid #3CB878 !important; @@ -3462,7 +3638,7 @@ th { content: "*"; color: red; } -.nav-tabs .cp-modules > .active >a, +.nav-tabs .cp-modules > .active > a, .nav-tabs .cp-modules > .active > a:hover { border: 0px !important; border-top-right-radius: 0px; @@ -3624,7 +3800,7 @@ th { display: inline-block; } .quickPreview .updates_timeline:before { - background: #e6e6e6; + background: #e5e5e5; width: 2px; margin-left: -1%; } @@ -3639,13 +3815,16 @@ th { .quickPreviewComments .recentComments .commentDetails .comment { line-height: 15px; } -.quickPreviewComments .summaryWidgetContainer { +.quickPreviewComments .summaryWidgetContainer { border: 0; padding: 0; } .quickPreview .recentActivitiesContainer .history { padding: 0; } +/******************************************* +********** Calendar view styles ************ +********************************************/ .calendar-sidebar { width: 100% !important; } @@ -3802,6 +3981,11 @@ th { display: inline-block; text-align: center; } +/******************************************* +********** Calendar view styles end ******** + +********** Documents Module styles ********* +********************************************/ .dragdrop-dotted { border: 2px dashed #C0C0C0; min-width: 300px; @@ -3861,13 +4045,16 @@ tr.file > td.fileOwnerData { width: 100px; white-space: pre-wrap; } +/******************************************* +********** Documents Module styles end ***** +********************************************/ .engagementsContainer .engagements_content { padding-top: 15px; } .summaryWidgetContainer .engagementsContainer table { width: inherit; } -.engagements_content table thead>tr:first-child { +.engagements_content table thead > tr:first-child { border: 1px solid #CCC; background-color: #F5F5F5; } @@ -3918,6 +4105,9 @@ tr.file > td.fileOwnerData { font-size: 15px; padding: 1% 0; } +/******************************************* +********** Mailroom view styles start ******** +********************************************/ .mailroomBanner { margin: 23px 0; height: 215px; @@ -4126,6 +4316,7 @@ tr.file > td.fileOwnerData { margin-left: 0; } .mentionMessages .mention_follow_up { + /*//load this color from variable.less*/ background-color: green; } .modelContainer .modal-content { @@ -4274,6 +4465,7 @@ form[name="notification_settings"] .select2-choice { margin-left: 0; } .mentionMessages .mention_follow_up { + /*//load this color from variable.less*/ background-color: green; } .modal-content .mention_followup .row { @@ -4305,6 +4497,9 @@ form[name="notification_settings"] .select2-choice { .mentionMessageHeader .MultiFile-remove { color: #FFFFFF; } +/******************************************* +********** Mailroom view styles end ******** +********************************************/ .detailview-header { margin-bottom: 10px; } @@ -4320,6 +4515,7 @@ form[name="notification_settings"] .select2-choice { margin: 0px 10px; text-decoration: underline !important; color: #3498DB; + /*font-size : 12px;*/ } .tag { display: inline-block; @@ -4403,11 +4599,11 @@ form[name="notification_settings"] .select2-choice { border: 1px solid #dcdcdc; } #tagCloud .tag { - color: #5ea9dd; padding: 0px; background-color: #FFFFFF; border-color: #FFFFFF; border-radius: 0px; + color: #5ea9dd; margin: 3px; } #tagCloud .tag[data-type="public"] { @@ -4418,6 +4614,9 @@ form[name="notification_settings"] .select2-choice { max-width: 80px; vertical-align: bottom; } +/******************************************* +********** Groups view styles ******** +********************************************/ #s2id_memberList li > div, .groupMembersColors li > div { margin-left: 10px; @@ -4492,6 +4691,12 @@ form[name="notification_settings"] .select2-choice { margin: 0px; color: #444444; } +/******************************************* +********** Groups view styles ends******** +********************************************/ +/******************************************* +********** Picklist Css ******** +********************************************/ .pickListValue { background-color: #FFFFFF; } @@ -4506,6 +4711,12 @@ form[name="notification_settings"] .select2-choice { padding: 2px 1px !important; line-height: 15px; } +/******************************************* +************* Dashboard Styles ************* +********************************************/ +li.dashboardWidget { + overflow: hidden; +} .dashboardWidgetHeader .title { padding-bottom: 10px; font-size: 15px; @@ -4526,9 +4737,6 @@ form[name="notification_settings"] .select2-choice { .dashBoardContainer .tabContainer .tab-content { margin-top: 10px; } -.dashBoardContainer .dashBoardTabContents ul { - margin: 0; -} .dashBoardContainer .dashBoardTabContents ul li { border: 3px solid #E2E2E4; box-shadow: 1px; @@ -4595,7 +4803,7 @@ form[name="notification_settings"] .select2-choice { display: inline-block; opacity: 1; } -.dashBoardContainer .tabContainer li a .deleteTab:hover { +.dashBoardContainer .tabContainer li a .deleteTab:hover { cursor: pointer; } #minilistWizardContainer .fieldLabel { @@ -4632,6 +4840,9 @@ form[name="notification_settings"] .select2-choice { resize: none; width: 100%; } +/******************************************* +********** Picklist DependencyGraph ******** +********************************************/ #dependencyGraph .tableHeading { text-align: center; padding-top: 30px; @@ -4657,6 +4868,9 @@ form[name="notification_settings"] .select2-choice { #dependencyGraph .dependencyMapping .pickListDependencyTable .selectedCell { background: #a9cbf5; } +/******************************************* +********** Rewriting select2 for consistency******** +********************************************/ .select2-container .select2-choice { height: 29px; border-radius: 1px; @@ -4750,6 +4964,7 @@ hr { position: fixed; bottom: 0; background: #EFEFEF; + /*width:100%;*/ border-left: 42px solid #2c3b49; height: 60px; left: 0; @@ -4768,7 +4983,6 @@ hr { } .settingsPageDiv .modal-overlay-footer { margin-left: 230px; - border-left: 0px solid; } .settingsOverlayContainer .modal-overlay-footer { margin: 0; @@ -4791,14 +5005,14 @@ hr { vertical-align: middle; margin-top: 6px; } -.list-menu-content .pull-right>.dropdown-menu { +.list-menu-content .pull-right > .dropdown-menu { left: -126px; position: relative; } -.dropdown-menu>li>a { +.dropdown-menu > li > a { padding: 4px 6px; } -.dropdown-menu>li>a span i { +.dropdown-menu > li > a span i { font-size: 15px; vertical-align: middle; } @@ -4806,11 +5020,11 @@ hr { max-height: 300px; padding-left: 0; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container { margin-right: 0; padding: 4px 6px; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container>li>a { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container > li > a { display: block; padding: 3px 5px; clear: both; @@ -4819,7 +5033,7 @@ hr { color: #333; white-space: nowrap; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container span i { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container span i { font-size: 15px; vertical-align: middle; } @@ -4842,16 +5056,16 @@ hr { .calendar-sidebar .calendar-sidebar-tabs.padding { padding-left: 20px !important; } -.related-tabs.row .nav>li { +.related-tabs.row .nav > li { padding: 0 10px; margin: 0 2px; } -.massEditTabs.nav>li { +.massEditTabs.nav > li { padding: 0 10px; margin: 0 4px; } -.row .nav>li>a, -.row .nav>li>a:hover { +.row .nav > li > a, +.row .nav > li > a:hover { padding: 10px 3px; border: none; vertical-align: bottom; @@ -4861,38 +5075,39 @@ hr { -webkit-box-sizing: border-box; -o-box-sizing: border-box; } -.row .nav>li>a:hover { +.row .nav > li > a:hover { border-bottom-color: #555; } -TN-34230 - -.row .nav>li>a:hover { +/*.row ul{ + padding:0; +}*/ +TN-34230 .row .nav > li > a:hover { border-bottom-color: #555; background: none; } .row ul li:first-child { margin-left: 0; } -.related-tabs .nav-tabs>li.active, -.related-tabs .nav-tabs>li:hover, -.related-tabs .nav-tabs>li.active:focus, -.dashBoardContainer .nav-tabs>li.active, -.dashBoardContainer .nav-tabs>li:hover, -.dashBoardContainer .nav-tabs>li.active:focus, -.contents.tabbable .nav-tabs>li.active, -.contents.tabbable .nav-tabs>li:hover, -.contents.tabbable .nav-tabs>li.active:focus { +.related-tabs .nav-tabs > li.active, +.dashBoardContainer .nav-tabs > li.active, +.contents.tabbable .nav-tabs > li.active, +.related-tabs .nav-tabs > li:hover, +.dashBoardContainer .nav-tabs > li:hover, +.contents.tabbable .nav-tabs > li:hover, +.related-tabs .nav-tabs > li.active:focus, +.dashBoardContainer .nav-tabs > li.active:focus, +.contents.tabbable .nav-tabs > li.active:focus { border: none; border-bottom: 3px solid #555; } -.nav-tabs>li.active>a, -.nav-tabs>li.active>a:hover, -.nav-tabs>li.active>a:focus, -.nav-tabs>li>a { +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus, +.nav-tabs > li > a { border: 0; } -.nav>li>a:hover, -.nav>li>a:focus { +.nav > li > a:hover, +.nav > li > a:focus { background-color: #FFFFFF; } .fa-pencil, @@ -4902,6 +5117,9 @@ TN-34230 .commentAttachmentName { font-size: 11px; } +/******************************************* +********** Layout Editor ******** +********************************************/ .marginBottom10px { margin-bottom: 10px; } @@ -4924,6 +5142,7 @@ TN-34230 } .zeroOpacity { opacity: 0; + /*for IE*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } @@ -4950,10 +5169,12 @@ TN-34230 .layoutContent .opacity:hover .actions { opacity: 1; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + /*for IE*/ filter: alpha(opacity=100); } .layoutContent .fieldPropertyContainer:hover .actions { opacity: 1; + /*for IE*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=100); } @@ -4976,6 +5197,7 @@ TN-34230 .relatedTabModulesList .addButton { border-radius: 2px; border: 1px solid #DDDDDD; + text-transform: uppercase; color: #666666; background: #FFFFFF; } @@ -5049,6 +5271,9 @@ TN-34230 margin-left: 5px; word-break: break-all; } +/******************************************* +************** Tax Management ************** +********************************************/ #TaxCalculationsContainer .table tr:first-child, .taxModalContainer #editTax .table tr:first-child { border-bottom: 1px solid #ccc; @@ -5088,6 +5313,9 @@ TN-34230 max-height: 500px; overflow-y: auto; } +/******************************************* +********** Workflows ******** +********************************************/ #workflow_edit .editViewBody { overflow: inherit; } @@ -5097,7 +5325,7 @@ TN-34230 } .timePicker { width: 9.5em !important; - z-index: 1101 !important; + z-index: 1070 !important; } .weekDaySelect .ui-state-default { background: inherit; @@ -5135,75 +5363,6 @@ TN-34230 .module-filters.active { background: #F7F7F7; } -.payment-type-selection { - margin-bottom: 30px; -} -.payment-type-selection img { - vertical-align: middle; -} -.currplan { - padding: 10px 20px; - background-color: #f3f3f3; - border: 1px solid #eee; - border-radius: 3px; -} -.currplan div { - display: inline-block; - font-size: 16px; -} -.planName { - display: inline-block; - color: #fff; - padding: 20px; - margin: 10px 20px; - font-size: 24px; - border-radius: 2px; -} -.plan-heading { - min-height: 168px; -} -.plan-title { - color: #fff; - font-size: 20px; - padding: 13px 0; -} -#sales_plan { - background: #3FC380; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#salespremium_plan { - background: #00B16A; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#support_plan { - background: #2980B9; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#supportpremium_plan { - background: #2980B9; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#ultimate_plan, -#exclusive_plan { - background: #F39C12; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#contact_plan { - background: #FF5959; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} .workflowListContainer .select2-container .select2-choice { height: 36px; } @@ -5218,6 +5377,7 @@ TN-34230 .contactAdd { border: 1px solid #eee; padding: 20px; + /*min-height: 310px !important;*/ } #subDetails table td { padding: 7px 10px; @@ -5340,9 +5500,9 @@ TN-34230 .productBundles { padding-left: 20px; } -.nav .open>a, -.nav .open>a:hover, -.nav .open>a:focus { +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { color: #000000; background-color: #FFFFFF; } @@ -5363,6 +5523,9 @@ TN-34230 width: 100%; overflow-x: auto; } +/******************************************* +*************** Mail Manager *************** +********************************************/ #mm_searchButton { height: 28px; background-color: #FFFFFF; @@ -5418,8 +5581,8 @@ TN-34230 padding: 1px 5px; border-radius: 3px; text-align: center; - text-shadow: 0 1px rgba(0,0,0,0.1); - background-image: -webkit-linear-gradient(top,#DD4B39 0,#D14836 100%); + text-shadow: 0 1px rgba(0, 0, 0, 0.1); + background-image: -webkit-linear-gradient(top, #DD4B39 0, #D14836 100%); border: 1px solid #C6322A; background-color: #DD4B39; } @@ -5637,6 +5800,7 @@ TN-34230 .width40per { width: 40%; } +/****** Mail Manager Ends ******/ .quickCreateContent .massEditTable textarea, .addCommentBlock .commentTextArea textarea { resize: vertical; @@ -5649,19 +5813,20 @@ TN-34230 .select2-container-multi .select2-choices { z-index: 1; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a:hover { +/****** Customer Portal Settings ******/ +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a:hover { background-color: #fff; } -.cp-nav-header-wrapper>li.disabled>a:hover { +.cp-nav-header-wrapper > li.disabled > a:hover { border: 0px ! important; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a { +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a { background-color: #fff; } -#portalModulesTable>li.portalModuleRow.active>a:hover { +#portalModulesTable > li.portalModuleRow.active > a:hover { background-color: #fff !important; } -#portalModulesTable>li.portalModuleRow.active>a:focus { +#portalModulesTable > li.portalModuleRow.active > a:focus { background-color: #fff !important; } .portal-dashboard { @@ -5760,7 +5925,7 @@ TN-34230 .portal-dashboard { border-bottom: 0px ! important; } -#portal-shortcutsContainer>ul { +#portal-shortcutsContainer > ul { border-bottom: 0px ! important; } .portalMenuHeader { @@ -5769,14 +5934,15 @@ TN-34230 } .cp-tabs .enabledModules { display: inline-block ! important; - margin-left: 4px !important; - margin-right: 4px !important; + margin-left: 4px!important; + margin-right: 4px!important; vertical-align: top; margin-top: 4px !important; } .portal-shortcut-list:hover { border-bottom: 3px solid transparent ! important; } +/****** Customer Portal Settings ******/ .label-radio label input[type="radio"] { position: relative; top: 2px; @@ -5788,6 +5954,9 @@ TN-34230 div.tooltip-inner { max-width: 400px; } +/******************************************* +********** Menu Editor ******** +********************************************/ .sortable.appContainer.ui-sortable { width: 160px; } @@ -5962,7 +6131,7 @@ div.tooltip-inner { width: 13px !important; margin-top: 8px; } -.detailview-table .input-group-addon+.inputElement.form-control, +.detailview-table .input-group-addon + .inputElement.form-control, .detailview-table .inputElement.form-control.input-medium { width: 100%; } @@ -6009,6 +6178,7 @@ div.tooltip-inner { float: left; margin-right: 5px; } +/***** Oursites Changes *****/ .portal-table .table-actions { width: inherit ! important; } @@ -6020,6 +6190,7 @@ div.tooltip-inner { padding: 10px 5px ! important; padding-left: 10px ! important; } +/***** Oursites Changes *****/ .ExtensionscontentsDiv .content-area { padding-left: 15px; padding-right: 15px; @@ -6033,14 +6204,14 @@ div.tooltip-inner { } .blockHeader { border-color: #F3F3F4 #F3F3F4 #cbcbcf; - border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); background-color: #474747; - background-image: -moz-linear-gradient(top,#555555,#333333); - background-image: -ms-linear-gradient(top,#555555,#333333); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#555555),to(#333333)); - background-image: -webkit-linear-gradient(top,#555555,#333333); - background-image: -o-linear-gradient(top,#555555,#333333); - background-image: linear-gradient(top,#555555,#333333); + background-image: -moz-linear-gradient(top, #555555, #333333); + background-image: -ms-linear-gradient(top, #555555, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); + background-image: -webkit-linear-gradient(top, #555555, #333333); + background-image: -o-linear-gradient(top, #555555, #333333); + background-image: linear-gradient(top, #555555, #333333); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333', GradientType=0); min-height: 30px; @@ -6133,8 +6304,8 @@ div.tooltip-inner { .markStar .starredStatus { display: none; } -.nav>li.addDashboardTab>a, -.nav>li.addDashboardTab>a:hover { +.nav > li.addDashboardTab > a, +.nav > li.addDashboardTab > a:hover { padding: 10px 15px; background: inherit; } @@ -6147,7 +6318,7 @@ div.tooltip-inner { height: 960px; width: 1260px; } -.nav-tabs>li { +.nav-tabs > li { border-bottom: 3px solid transparent; margin: 0 2px; } @@ -6225,16 +6396,14 @@ div.tooltip-inner { } .select2-container.select2-container-multi.select2, .editViewPageDiv .select2-container.select2-container-multi.select2 { - height: auto !important; + height: auto!important; } -.summaryViewFields .select2-container-multi.inputElement.form-control -.quickCreateContent .select2-container.select2-container-multi.select2, +.summaryViewFields .select2-container-multi.inputElement.form-control .quickCreateContent .select2-container.select2-container-multi.select2, #massEditContainer .select2-container.select2-container-multi.select2 { width: 150px; height: auto !important; } -.summaryViewFields .select2-container-multi.inputElement.form-control -.quickCreateContent .select2-container.select2-container-multi.select2 .input-save-wrap, +.summaryViewFields .select2-container-multi.inputElement.form-control .quickCreateContent .select2-container.select2-container-multi.select2 .input-save-wrap, #massEditContainer .select2-container.select2-container-multi.select2 .input-save-wrap { float: right; margin-right: 25px; @@ -6330,6 +6499,7 @@ a.cp-modules:hover { #RestrictionsLayout { background: #fafafb; margin-top: -92px; + /*to adjust with page padding top*/ } #RestrictionsLayout .vtImage { width: 22%; @@ -6363,6 +6533,7 @@ a.cp-modules:hover { .datepicker { z-index: 1100 !important; } +/*****RSS Changes****/ .feedListContainer .listview-table tr td:first-child, .listview-table tr th:first-child { width: inherit ! important; @@ -6370,12 +6541,14 @@ a.cp-modules:hover { .feedListContainer .listViewEntries .listViewEntryValue { max-width: inherit ! important; } -.ps-container>.ps-scrollbar-y-rail { +/*****RSS Changes****/ +.ps-container > .ps-scrollbar-y-rail { z-index: 1002; } #relationBlock .recordScroll { max-height: 150px; } +/*Start - List sidebar toggle*/ .essentials-toggle { background-color: white; font-weight: bold; @@ -6395,6 +6568,7 @@ a.cp-modules:hover { .essentials-toggle .fa-chevron-right { background-position: -460px -72px !important; } +/*End - List essentials toggle*/ .module-name-tooltip .qtip-content { font-size: 12px; padding: 3px; @@ -6403,23 +6577,6 @@ a.cp-modules:hover { .module-name-tooltip { padding: 3px; } -.main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, -.main-container-Reports .module-nav { - width: 0; -} -.main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, -.main-container-Reports .sidebar-essentials { - width: 283px; - left: 0; -} -.main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { - padding-left: 0px !important; -} .main-container-MailManager .module-nav { width: 230px; } @@ -6478,8 +6635,8 @@ li.select2-search-choice div { .popover ul.listmenu li { padding: 3px; } -.popover-content .disabled>a, -.popover .disabled>a { +.popover-content .disabled > a, +.popover .disabled > a { opacity: 0.5; cursor: not-allowed; } @@ -6490,6 +6647,7 @@ li.select2-search-choice div { -o-transform: rotate(180deg); transform: rotate(180deg); } +/*Start - List sidebar toggle*/ .essentials-toggle { background-color: white; font-weight: bold; @@ -6509,6 +6667,7 @@ li.select2-search-choice div { .essentials-toggle .fa-chevron-right { background-position: -460px -72px !important; } +/*End - List essentials toggle*/ .module-name-tooltip .qtip-content { font-size: 12px; padding: 3px; @@ -6520,25 +6679,20 @@ li.select2-search-choice div { border-left: 1px solid #DDDDDD; } .main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, .main-container-Reports .module-nav { width: 0; } .main-container-Documents .mod-switcher-container, -.main-container-RecycleBin .mod-switcher-container, .main-container-Reports .mod-switcher-container { width: 0; } .main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, .main-container-Reports .sidebar-essentials { width: 283px; left: 0; } .main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { +.main-container-Reports .full-width { padding-left: 0px !important; } .listViewPageDiv .ps-scrollbar-x-rail { @@ -6589,16 +6743,16 @@ li.select2-search-choice div { #reportDetails .pivot .toptitle.targetY0, #reportDetails .pivot .lefttitle.targetX0 { border-color: #F3F3F4 #F3F3F4 #cbcbcf; - border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); background-color: #474747; - background-image: -moz-linear-gradient(top,#555555,#333333); - background-image: -ms-linear-gradient(top,#555555,#333333); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#555555),to(#333333)); - background-image: -webkit-linear-gradient(top,#555555,#333333); - background-image: -o-linear-gradient(top,#555555,#333333); - background-image: linear-gradient(top,#555555,#333333); + background-image: -moz-linear-gradient(top, #555555, #333333); + background-image: -ms-linear-gradient(top, #555555, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); + background-image: -webkit-linear-gradient(top, #555555, #333333); + background-image: -o-linear-gradient(top, #555555, #333333); + background-image: linear-gradient(top, #555555, #333333); background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555',endColorstr='#333333',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333', GradientType=0); min-height: 30px; } #reportDetails .pivot th.toptitle.targetY0, @@ -6640,7 +6794,8 @@ li.select2-search-choice div { background: #FFFFFF; } .templateActions { - background: rgba(0,0,0,0.1); + background: rgba(0, 0, 0, 0.1); + /*padding: 4%;*/ bottom: 0; text-align: center; position: absolute; @@ -6648,6 +6803,9 @@ li.select2-search-choice div { zoom: 1; width: 100%; } +/*.templateActions i { + margin-right: 30px; +}*/ .thumbnails > li { float: left; height: 315px !important; @@ -6822,9 +6980,10 @@ a.btnReport:hover { left: 0px; } .bx-wrapper .bx-viewport { - width:99%; + width: 99%; left: 0px; background: #fff; + /*fix other elements on the page moving (on Chrome)*/ -webkit-transform: translatez(0); -moz-transform: translatez(0); -ms-transform: translatez(0); @@ -6882,7 +7041,7 @@ a.btnReport:hover { .filter-search-show { display: block !important; } -.emailTemplatesPopupTableContainer .listViewEntries .listViewEntryValue { +.emailTemplatesPopupTableContainer .listViewEntries .listViewEntryValue { max-width: 100%; min-width: 150px; } @@ -6917,12 +7076,15 @@ input:focus::-webkit-input-placeholder { input:focus:-moz-placeholder { color: transparent; } +/* FF 4-18 */ input:focus::-moz-placeholder { color: transparent; } +/* FF 19+ */ input:focus:-ms-input-placeholder { color: transparent; } +/* IE 10+ */ .global-actions .dropdown-menu:before { position: absolute; top: -7px; @@ -6931,7 +7093,7 @@ input:focus:-ms-input-placeholder { border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-left: 7px solid transparent; - border-bottom-color: rgba(0,0,0,0.2); + border-bottom-color: rgba(0, 0, 0, 0.2); content: ''; } .global-actions .dropdown-menu:after { @@ -7116,6 +7278,7 @@ input:focus:-ms-input-placeholder { text-align: center; } #OnBoardLayout #OnBoardPageContainer .crmGoals textarea::-webkit-input-placeholder { + /* WebKit browsers */ text-align: center; padding: 20%; font-size: 12px; @@ -7257,35 +7420,6 @@ input:focus:-ms-input-placeholder { .importServiceSelectionContainer .app-item { text-align: center; } -.modules-menu ul li.active a { - border-left: 3px solid #3CB878; - opacity: 1; -} -.fieldValue .value a { - color: #15c !important; -} -.editViewContents .fieldLabel { - min-width: 100px; - width: 20%; - word-break: break-all; -} -.editViewContents .fieldValue { - width:30%; -} -.editViewContents td.fieldValue[colspan="3"] { - width:80%; -} -.editViewContents textarea.textAreaElement { - width: 88%; -} -.editViewContents input[type="checkbox"] { - width: 15px; - height: 15px; -} -.editViewContents input[type="radio"] { - width: 15px; - height: 15px; -} #composeEmailContainer .modal-body .quickCreateContent, #QuickCreate .modal-body .quickCreateContent, #create .quickCreateContent { @@ -7297,4 +7431,94 @@ input:focus:-ms-input-placeholder { } .settingsgroup-panel .widgetContainer .menuItemLabel:hover .pinUnpinShortCut { display: inline-block; -} \ No newline at end of file +} +@-moz-document url-prefix() { + .duplicateHandlingContainer .tooltip-inner { + width: 550px; + max-width: 550px; + } +} +.duplicateHandlingContainer .tooltip-inner { + text-align: left !important; +} +.duplicateHandlingContainer .syncMessage { + margin-top: 5px !important; +} +.duplicateHandlingContainer .actionsList { + width: 230px !important; +} +.duplicationMessageContainer { + background-color: #f2dede !important; + color: #b94a48 !important; +} +.duplicationMessageContainer .duplicationMessageHeader { + margin-bottom: 8px; +} +.listViewRecordActions .quickView, +.listViewRecordActions .markStar, +.listViewRecordActions .markAsHeld, +.listViewRecordActions .holdFollowupOn { + margin-top: 4px; +} +.app-menu .module-icon .custom-module { + font-size: 14px; + border-radius: 4px; + color: #000; + background-color: #FFFFFF; + padding: 4px 10px 4px 5px !important; +} +.menu-item .custom-module { + font-family: 'OpenSans-Regular', sans-serif; + font-size: 12px; + border-radius: 4px; + padding: 2px; + color: #000; + background-color: #FFFFFF; +} +.modules-menu .custom-module { + color: #FFFFFF; + margin-left: 0px; + display: inline; + border: 1px solid #FFFFFF; + border-radius: 4px; + padding: 3px 4px 3px 2px !important; + font-weight: bold; +} +#quickCreateModules .custom-module, +.workflowListContainer .custom-module, +.dashBoardTabContents .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #FFFFFF; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #000000; + background-color: #FFFFFF; +} +.task-details .custom-module { + border-radius: 4px; + padding: 1px 4px; + color: #FFFFFF; + background-color: #777; +} +.related-tabs .custom-module, +#relatedmenuList .custom-module { + border-radius: 4px; + color: #FFFFFF; + background-color: #777; + padding: 5px 7px; + font-weight: bold; +} +.record-header .custom-module { + font-size: 30px; +} +.moduleIcon .custom-module { + font-weight: bold; +} +.modules-menu ul li.active a { + border-left: 3px solid #3CB878; + opacity: 1; +} diff --git a/layouts/v7/skins/support/style.css b/layouts/v7/skins/support/style.css index 2630094f1b4b47fe62b82d567a2e38d34d810b75..b63569ec27fe02d5f5da51d5dc77348119929eb4 100644 --- a/layouts/v7/skins/support/style.css +++ b/layouts/v7/skins/support/style.css @@ -1,7 +1,9 @@ @font-face { font-family: 'Oswald'; src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot'); - src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot?#iefix') format('embedded-opentype'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.woff') format('woff'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.ttf') format('truetype'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.svg#Oswald') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.svg#Oswald') format('svg'); + /* Legacy iOS */ font-weight: normal; font-style: normal; text-rendering: optimizeLegibility; @@ -15,27 +17,37 @@ a:active { @font-face { font-family: 'OpenSans-Regular'; src: url('../fonts/OpenSans/Regular/OpenSans-Regular.eot'); - src: url('../fonts/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'), url('../fonts/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), url('../fonts/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), url('../fonts/OpenSans/Regular/OpenSans-Regular.svg#svgFontName') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/OpenSans/Regular/OpenSans-Regular.svg#svgFontName') format('svg'); + /* Legacy iOS */ } @font-face { font-family: 'OpenSans-Semibold'; src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot'); - src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.ttf') format('truetype'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff2') format('woff2'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff') format('woff'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.svg#svgFontName') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.svg#svgFontName') format('svg'); + /* Legacy iOS */ } @font-face { font-family: 'ProximaNova-Regular'; - src: url('../fonts/ProximanovaWebfont/ProximaNova-Regular.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.woff') format('woff'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'); + src: url('../fonts/ProximanovaWebfont/ProximaNova-Regular.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/ProximanovaWebfont/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'); + /* IE6-IE8 */ + /* Safari, Android, iOS */ font-style: normal; font-weight: normal; text-rendering: optimizeLegibility; } @font-face { font-family: 'ProximaNova-Semibold'; - src: url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.woff') format('woff'), url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.eot?#iefix') format('embedded-opentype'); + src: url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.eot?#iefix') format('embedded-opentype'); + /* IE6-IE8 */ font-style: normal; font-weight: normal; text-rendering: optimizeLegibility; } +/**********************************/ +/************ Layout **************/ +/**********************************/ html { height: 100%; overflow-y: auto; @@ -102,6 +114,7 @@ body { @media (min-width: 992px) { .global-nav .logo-container { display: inline-block; + width: 150px; z-index: 2; padding-left: 6%; margin-top: 1px; @@ -113,11 +126,13 @@ body { position: absolute; width: 100%; height: 42px; + /* border-top:1px solid #ddd;*/ border-bottom: 1px solid #ddd; } .app-nav .module-action-bar .module-action-content { background: #FBFBFB; height: 41px; + /* border-bottom: 1px solid #eee;*/ } .app-nav .module-action-bar .module-action-content .navbar-right { margin-right: 0; @@ -163,7 +178,7 @@ body { padding-left: 0; } } -.btn-toolbar >.btn-group:first-child { +.btn-toolbar > .btn-group:first-child { margin-left: 5px; } .vt-notification { @@ -196,8 +211,12 @@ body { .vt-notification [data-notify="message"] { color: #eaeaea; } +/**********************************/ +/******** Navigation styles *******/ +/**********************************/ .company-logo { height: 40px; + width: 150px; margin: 0 0; display: inline-block; margin-left: 1px; @@ -214,10 +233,13 @@ body { font-size: 16px; position: relative; } +/*.module-action-bar .module-action-content #appnav{ + padding-top:5px; +}*/ .global-nav .navbar-nav > li div a { padding: 15px; } -.global-nav>ul { +.global-nav > ul { margin-right: 20px; } .global-nav .search-links-container { @@ -267,26 +289,28 @@ body { float: right; height: 42px; } - .module-action-bar .navbar-right .nav>li { + .module-action-bar .navbar-right .nav > li { display: inline-block; } - .module-action-bar .navbar-right .nav>li a { + .module-action-bar .navbar-right .nav > li a { padding: 0 10px; } .global-nav .logo-container { border-bottom: 0; + width: 150px; } } @media (max-width: 991px) { .global-nav .logo-container { border-bottom: 0; + width: 150px; } .notificationMessageHolder { padding-left: 45%; } } @media (min-width: 991px) { - .nav>li>a.qc-button { + .nav > li > a.qc-button { padding: 2px 3px; margin-top: 13px; margin-right: 15px; @@ -294,7 +318,7 @@ body { color: #fff; border-radius: 20px; } - .nav>li>a.qc-button span { + .nav > li > a.qc-button span { vertical-align: top; } } @@ -313,6 +337,7 @@ body { width: 100%; height: 100%; } +/** App Nav Styles */ .active-app-title { white-space: nowrap; font-family: Oswald, "OpenSans-Semibold", "Helvetica Neue", Helvetica, sans-serif; @@ -367,7 +392,9 @@ body { height: 42px; text-align: center; line-height: 42px; + /* background-color: #2c3b49;*/ color: #ffffff; + /*border-bottom: 1px solid #272B46;*/ } .app-nav .app-indicator-icon-container .app-indicator-icon { font-size: 24px; @@ -391,6 +418,9 @@ body { .app-PROJECT { background: #8E44AD !important; } +.app-TOOLS { + background: #EF5E29 !important; +} .app-DEFAULT, .app-DASHBOARD { background: #56ccc8 !important; @@ -479,16 +509,16 @@ body { right: -4px; } #overlayPageContent .mCSB_scrollTools, -#overlayPageContent .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonUp, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonDown, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonLeft, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonRight, .app-list .mCSB_scrollTools, +#overlayPageContent .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .app-list .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonUp, .app-list .mCSB_scrollTools .mCSB_buttonUp, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonDown, .app-list .mCSB_scrollTools .mCSB_buttonDown, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonLeft, .app-list .mCSB_scrollTools .mCSB_buttonLeft, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonRight, .app-list .mCSB_scrollTools .mCSB_buttonRight { -webkit-transition: none; transition: none; @@ -534,6 +564,9 @@ a.menu-item:hover { .app-item-color-PROJECT { border-left: 4px solid #8E44AD; } +.app-item-color-TOOLS { + border-left: 4px solid #EF5E29; +} .app-item .fa { font-size: 1.5em; -webkit-transition: all 0.25s ease-in; @@ -700,6 +733,7 @@ a.menu-item:hover { width: 0px; overflow: hidden; } +/* User Logout */ .logout-content { padding: 10px; width: 350px; @@ -754,6 +788,9 @@ a.menu-item:hover { .app-settings { background: #FFFFFF; } +/*************************************************/ +/******** View styles (List/Edit/Detail..) *******/ +/*************************************************/ .viewContent .content-area { padding-left: 50px; } @@ -780,6 +817,9 @@ a.menu-item:hover { opacity: 0.5; pointer-events: none; } +.input-group.percentage-input-group .form-control { + width: 100% !important; +} .bottomscroll-div, .topscroll-div { display: table; @@ -793,6 +833,9 @@ a.menu-item:hover { display: inline-block; word-break: break-word; } +.fieldValue .value a { + color: #15c !important; +} .modal-header button.close { padding: 0; color: #ffffff; @@ -865,6 +908,9 @@ input[type="password"].inputElement { padding-right: 20px; padding-left: 20px; } +/**********************************/ +/**** Side vertical Nav styles ****/ +/**********************************/ .module-nav { background: #fff; z-index: 1004; @@ -880,6 +926,9 @@ input[type="password"].inputElement { left: 0; transition: 0s width; } +.module-nav:hover { + /*z-index: 1001;*/ +} .modules-menu ul { list-style: none; margin-left: 0; @@ -914,7 +963,7 @@ input[type="password"].inputElement { float: left; font-size: 20px; } -.modules-menu ul li a>span { +.modules-menu ul li a > span { margin-left: 10px; vertical-align: middle; font-size: 13px; @@ -954,6 +1003,7 @@ input[type="password"].inputElement { width: 100%; left: 0%; } +/** Lists Menu in Side bar */ .module-filters .settings-sidebar, .module-filters .sidebar-container { padding: 0 12px; @@ -987,6 +1037,7 @@ input[type="password"].inputElement { .lists-menu-container hr { margin: 5px 0; } +/* mScrollbar customization for lists widget */ .lists-menu-container .menu-scroller .mCSB_scrollTools { width: 13px; } @@ -998,8 +1049,10 @@ input[type="password"].inputElement { .modules-menu .mCSB_scrollTools .mCSB_draggerContainer { left: 8px; } +/* Customization ends */ .lists-menu-container .list-menu-content .more-less-link { color: #fff; + /*text-decoration: none;*/ } .lists-menu-container .list-menu-content .sub-header { color: #ddd; @@ -1085,7 +1138,6 @@ input[type="password"].inputElement { background-color: #FFFFFF; border: 1px solid #DDDDDD; margin: 5px 0 10px; - color: #ccc; padding: 5px 10px; } .search-folders:focus, @@ -1104,9 +1156,11 @@ input[type="password"].inputElement { .common-links-container > div a { color: #fff; } +/*Search Container styles */ .search-container { min-height: 300px; position: absolute; + /*z-index: 1030;*/ width: 100%; top: 0; background: #FBFBFB; @@ -1125,6 +1179,7 @@ input[type="password"].inputElement { .footer p { margin: 5px 0; } +/*** Utilities ***/ .showElement { display: block !important; height: 100%; @@ -1247,11 +1302,11 @@ ul.unstyled { } .emptyRecordsDiv .emptyRecordsContent { display: inline-block; - font-size: 16px; left: 50%; margin-left: -25%; position: absolute; width: 50%; + font-size: 16px; } .textOverflowEllipsis { overflow: hidden; @@ -1276,6 +1331,9 @@ ul.unstyled { .removeNoFileChosen { color: transparent !important; } +/*********************************** +**********Button Styles********** +***********************************/ .module-buttons-container { float: right; margin-right: 10px; @@ -1297,6 +1355,7 @@ ul.unstyled { margin: 4px 2px; border-radius: 2px; border: 1px solid #ddd; + text-transform: uppercase; color: #666; background: #fff; } @@ -1317,6 +1376,9 @@ ul.unstyled { color: #FFFFFF !important; background: #5bc0de !important; } +/*********************************** +**********List View Styles********** +***********************************/ .fa.pull-left { margin-right: 0; } @@ -1351,7 +1413,7 @@ ul.unstyled { font-size: 20px; } .listview-pagination .disabled { - color: rgba(0,0,0,0.2); + color: rgba(0, 0, 0, 0.2); } .listview-pagination .disabled:hover { cursor: default; @@ -1379,6 +1441,8 @@ ul.unstyled { .listview-table { margin-bottom: 0; border-top: 0; + /* Horizontal scroll will not work if table layout Fixed */ + /* table-layout: fixed;*/ } .listview-table tr td, .listview-table tr th { @@ -1408,7 +1472,7 @@ ul.unstyled { width: 100%; } .listViewEntries .relatedListEntryValues .fieldValue .value, -.listViewEntries .listViewEntryValue .fieldValue .value { +.listViewEntries .listViewEntryValue .fieldValue .value { vertical-align: middle; width: 100%; display: inline-block; @@ -1423,7 +1487,7 @@ ul.unstyled { } .listview-table-norecords .table-actions, .listview-table .table-actions { - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -1489,13 +1553,13 @@ input[type=checkbox]:checked { vertical-align: middle; display: table-cell; } -.listview-table tr.searchRow th { +.listview-table tr.searchRow th { padding: 5px 3px; } -.listview-table tr.searchRow th.inline-search-btn { +.listview-table tr.searchRow th.inline-search-btn { padding: 3px 10px; } -.listview-table tr.searchRow th.inline-search-btn button { +.listview-table tr.searchRow th.inline-search-btn button { text-align: center; width: 85%; text-shadow: none; @@ -1523,6 +1587,18 @@ input[type=checkbox]:checked { background-color: #FFEEEE !important; background-image: none !important; } +/*.floatThead-wrapper .table-container{ + z-index: 0 !important; +}*/ +/* List view bottom fixed scroll */ +/*.bottom-fixed-scroll{ + height: 14px; + position: relative; + top: -15px; + overflow-x: auto; + overflow-y: hidden; + width: 100%; +}*/ .scroller-div { height: 1px; } @@ -1644,9 +1720,15 @@ input[type=checkbox]:checked { #listColumnFilterContainer .disabled i { color: #ccc; } +/********************************** +**********Detail View Styles********** +**********************************/ .detailViewButtoncontainer { padding-top: 5px; } +.detailViewButtoncontainer button.btn { + margin: 0px 1px !important; +} .detailview-header .recordBasicInfo > .info-row { margin-bottom: 4px; } @@ -1727,6 +1809,9 @@ th { margin-top: 3%; margin-right: 2%; } +.overlayDetailHeader button.btn { + margin: 0px 1px !important; +} .referencefield-wrapper .createReferenceRecord { float: left; margin-left: 5px; @@ -1966,10 +2051,10 @@ th { z-index: 1030; } .overlay-container-60 { - margin-left: 42px; + margin-left: 42px ; } .overlay-container-300 { - margin-left: 230px; + margin-left: 230px ; } .overlayPageContent { background: #FFFFFF; @@ -2092,6 +2177,9 @@ th { height: 26px; line-height: 25px; } +/********************************** +**********Summary View Styles****** +**********************************/ .summary-table { width: 100%; table-layout: fixed; @@ -2212,33 +2300,33 @@ th { opacity: 1; cursor: pointer; } -.details.row >form .social-media-toggle { +.details.row > form .social-media-toggle { position: absolute; right: -15px; display: inline-block; width: 500px; border-left: 0px; } -.details.row >form .social-media-widget { +.details.row > form .social-media-widget { border-left: 1px solid #ddd; border-bottom: 1px solid #ddd; height: 100%; background: white; } -.details.row >form div[class*="col-"].resizable-summary-view { +.details.row > form div[class*="col-"].resizable-summary-view { padding-left: 0; padding-right: 0px; } -.details.row >form>div[class*="col-"], -.details.row >form .resizable-summary-view div[class*="col-"] { +.details.row > form > div[class*="col-"], +.details.row > form .resizable-summary-view div[class*="col-"] { padding-right: 0; padding: 0px 5px; } -.details.row >form>div[class*="col-"]:first-child, -.details.row >form .left-block { +.details.row > form > div[class*="col-"]:first-child, +.details.row > form .left-block { padding-left: 0 !important; } -.details.row >form>div[class*="col-"]:last-child { +.details.row > form > div[class*="col-"]:last-child { padding-right: 0; } .summaryWidgetContainer .noContent { @@ -2251,6 +2339,9 @@ th { .caseReplyArea .nav > li { padding: 0 10px; } +/********************************** +**********Edit View Styles******* +**********************************/ .main-container .editViewModNavigator.module-nav, .editViewModNavigator .mod-switcher-container, .editViewModNavigator .modules-menu { @@ -2291,9 +2382,28 @@ th { width: 100%; } .editViewContents .input-group { - width: 229px; + width: 208px; float: left; } +.editViewContents .fieldLabel { + min-width: 100px; + width: 20%; + word-break: break-all; +} +.editViewContents .fieldValue { + width: 30%; +} +.editViewContents td.fieldValue[colspan="3"] { + width: 80%; +} +.editViewContents textarea.textAreaElement { + width: 88%; +} +.editViewContents input[type="checkbox"], +.editViewContents input[type="radio"] { + width: 15px; + height: 15px; +} .input-group.inputElement .input-group-addon { border: none; border-left: 1px solid #ddd; @@ -2370,6 +2480,9 @@ th { z-index: 1000; padding: 7px; } +/********************************** +**********Advance Search styles********** +**********************************/ .op0.fadeInx { opacity: 1; } @@ -2442,7 +2555,11 @@ th { } .btn + input { margin-left: 5px; + /* margin-top : 3px;*/ } +/********************************** +**********Extension Store Styles********** +**********************************/ .extensionstore .app-trigger { width: 98%; } @@ -2473,6 +2590,9 @@ th { .extensionContents .extensionError { color: #F10404; } +/********************************** +**********Extension Store Nav Bar********** +**********************************/ .tabbable-line > .nav-tabs { border: none; margin: 0px; @@ -2541,6 +2661,9 @@ th { .extensionContents .listview-table { width: 100%; } +/******************************************* +******Detail View related list styles******* +********************************************/ .relatedContents .listViewContentHeaderValues:hover { text-decoration: none; color: #333; @@ -2598,6 +2721,9 @@ th { .relatedViewActions .btn-group { margin-right: 15px; } +/******************************************* +****************** Modal ******************* +********************************************/ .modal-header { padding: 5px 15px; background: #596875; @@ -2625,6 +2751,7 @@ th { width: 100%; float: left; background: #596875; + /* height: 100%;*/ } .settings-menu { display: inline-block; @@ -2641,7 +2768,7 @@ th { cursor: n-resize; } .settings-menu-items { - box-shadow: 0 1px 1px rgba(0,0,0,0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); margin-bottom: 10px; text-align: justify; } @@ -2770,6 +2897,7 @@ th { vertical-align: middle; color: #3399ff; } +/* .squaredFour */ .squaredFour { width: 20px; position: relative; @@ -2783,9 +2911,9 @@ th { top: 0; left: 0; background: #fcfff4; - background: linear-gradient(top,#fcfff4 0%,#dfe5d7 40%,#b3bead 100%); + background: linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); border-radius: 4px; - box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); + box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); } .squaredFour label:after { content: ''; @@ -2813,13 +2941,16 @@ th { .importBlockContainer { color: #596875; } +/******************************************* +************* Social Buttons *************** +********************************************/ .btn-block + .btn-block { margin-top: 5px; } .btn-google-plus { color: #FFFFFF !important; background-color: #DD4B39; - border-color: rgba(0,0,0,0.2); + border-color: rgba(0, 0, 0, 0.2); } .btn-social { position: relative; @@ -2838,15 +2969,18 @@ th { line-height: 34px; font-size: 1.6em; text-align: center; - border-right: 1px solid rgba(0,0,0,0.2); + border-right: 1px solid rgba(0, 0, 0, 0.2); } +/******************************************* +************* Updates Timeline *************** +********************************************/ .recentActivitiesContainer .history { margin: 0 auto; padding: 20px 20px 1px; max-width: 100%; overflow-x: visible; - -webkit-transition: opacity .2s ease-out; - transition: opacity .2s ease-out; + -webkit-transition: opacity 0.2s ease-out; + transition: opacity 0.2s ease-out; } .updates_timeline { padding-top: 20px; @@ -2855,6 +2989,7 @@ th { padding: 0; list-style: none; } +/* The line */ .updates_timeline:before { content: ''; position: absolute; @@ -2873,6 +3008,7 @@ th { min-height: 40px; z-index: 2; } +/* Left Content(Time) */ .updates_timeline > li .update_time { position: absolute; margin: 0; @@ -2884,6 +3020,7 @@ th { font-size: 15px; font-style: italic; } +/* Right content(Update info) */ .updates_timeline > li .update_info { padding: 10px 10px 1px; display: block; @@ -2892,10 +3029,11 @@ th { position: relative; top: -45px; } -.updates_timeline > li .update_info >h3 { +.updates_timeline > li .update_info > h3 { font-size: 1.1em; margin-left: -3%; } +/* The icons */ .updates_timeline > li .update_icon { position: relative; border-radius: 50%; @@ -2908,6 +3046,7 @@ th { color: #fff; line-height: 35px; } +/* More Button */ .updates_timeline #more_button .update_icon { position: relative; border-radius: 0; @@ -3015,6 +3154,9 @@ th { vertical-align: super; font-size: 13px; } +/******************************************* +************* Task Management ************** +********************************************/ #taskManagementContainer .data-body { margin-bottom: 50px; } @@ -3077,15 +3219,16 @@ th { #taskManagementContainer .other-details { color: #979797; } +/*overwriting jquery ui css*/ .ui-menu { z-index: 10000; } #taskManagementContainer button.active { background: #3B83F7; color: white; - text-shadow: 0 1px rgba(0,0,0,0.3); + text-shadow: 0 1px rgba(0, 0, 0, 0.3); border: 1px solid #135fd7; - box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); } .taskSubject { width: 99%; @@ -3093,6 +3236,9 @@ th { #taskManagementContainer .mCustomScrollbar .mCSB_inside > .mCSB_container { margin-right: 13px; } +/******************************************* +************* Settings Page ************** +********************************************/ .settingsPageDiv.content-area { margin-right: 0; } @@ -3126,6 +3272,9 @@ th { .settingsgroup-accordion a i { margin-right: 5px; } +.settingsgroup-accordion a span { + text-transform: uppercase; +} .settingsgroup { background: #2C3B49; height: 100%; @@ -3282,35 +3431,59 @@ th { } .mini-slider-control[data-value="0"] .ui-slider-handle { background: #7d7e7d; - background: -moz-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#7d7e7d),color-stop(100%,#0e0e0e)); - background: -webkit-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -o-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -ms-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: linear-gradient(to bottom,#7d7e7d 0%,#0e0e0e 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d',endColorstr='#0e0e0e',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #7d7e7d), color-stop(100%, #0e0e0e)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #7d7e7d 0%, #0e0e0e 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d', endColorstr='#0e0e0e', GradientType=0); + /* IE6-9 */ margin-left: 0px; } .mini-slider-control[data-value="1"] .ui-slider-handle { background: #ffb76b; - background: -moz-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#ffb76b),color-stop(0%,#ffa73d),color-stop(49%,#ff7c00),color-stop(100%,#ff7f04)); - background: -webkit-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -o-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -ms-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: linear-gradient(to bottom,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb76b',endColorstr='#ff7f04',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffb76b), color-stop(0%, #ffa73d), color-stop(49%, #ff7c00), color-stop(100%, #ff7f04)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb76b', endColorstr='#ff7f04', GradientType=0); + /* IE6-9 */ margin-left: -6px; } .mini-slider-control[data-value="2"] .ui-slider-handle { background: #bfd255; - background: -moz-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#bfd255),color-stop(79%,#8eb92a),color-stop(100%,#72aa00),color-stop(100%,#9ecb2d)); - background: -webkit-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -o-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -ms-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: linear-gradient(to bottom,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bfd255',endColorstr='#9ecb2d',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #bfd255), color-stop(79%, #8eb92a), color-stop(100%, #72aa00), color-stop(100%, #9ecb2d)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bfd255', endColorstr='#9ecb2d', GradientType=0); + /* IE6-9 */ margin-left: -13px; } .ModulemanagerSettings .moduleblock .hiden { @@ -3335,10 +3508,13 @@ th { th { padding: 6px; } +/******************************************* +********** CustomerPortal styles start ******** +********************************************/ .cp-tabs .enabledModules { display: inline-block ! important; - margin-left: 4px !important; - margin-right: 4px !important; + margin-left: 4px!important; + margin-right: 4px!important; vertical-align: top; } .drag-portal-module { @@ -3445,7 +3621,7 @@ th { margin-left: 5px; } .portal-field-delete { - margin-left: 45px !important; + margin-left: 45px!important; } .portalModuleRow { border-left: 4px solid #6297C3 !important; @@ -3462,7 +3638,7 @@ th { content: "*"; color: red; } -.nav-tabs .cp-modules > .active >a, +.nav-tabs .cp-modules > .active > a, .nav-tabs .cp-modules > .active > a:hover { border: 0px !important; border-top-right-radius: 0px; @@ -3624,7 +3800,7 @@ th { display: inline-block; } .quickPreview .updates_timeline:before { - background: #e6e6e6; + background: #e5e5e5; width: 2px; margin-left: -1%; } @@ -3639,13 +3815,16 @@ th { .quickPreviewComments .recentComments .commentDetails .comment { line-height: 15px; } -.quickPreviewComments .summaryWidgetContainer { +.quickPreviewComments .summaryWidgetContainer { border: 0; padding: 0; } .quickPreview .recentActivitiesContainer .history { padding: 0; } +/******************************************* +********** Calendar view styles ************ +********************************************/ .calendar-sidebar { width: 100% !important; } @@ -3802,6 +3981,11 @@ th { display: inline-block; text-align: center; } +/******************************************* +********** Calendar view styles end ******** + +********** Documents Module styles ********* +********************************************/ .dragdrop-dotted { border: 2px dashed #C0C0C0; min-width: 300px; @@ -3861,13 +4045,16 @@ tr.file > td.fileOwnerData { width: 100px; white-space: pre-wrap; } +/******************************************* +********** Documents Module styles end ***** +********************************************/ .engagementsContainer .engagements_content { padding-top: 15px; } .summaryWidgetContainer .engagementsContainer table { width: inherit; } -.engagements_content table thead>tr:first-child { +.engagements_content table thead > tr:first-child { border: 1px solid #CCC; background-color: #F5F5F5; } @@ -3918,6 +4105,9 @@ tr.file > td.fileOwnerData { font-size: 15px; padding: 1% 0; } +/******************************************* +********** Mailroom view styles start ******** +********************************************/ .mailroomBanner { margin: 23px 0; height: 215px; @@ -4126,6 +4316,7 @@ tr.file > td.fileOwnerData { margin-left: 0; } .mentionMessages .mention_follow_up { + /*//load this color from variable.less*/ background-color: green; } .modelContainer .modal-content { @@ -4274,6 +4465,7 @@ form[name="notification_settings"] .select2-choice { margin-left: 0; } .mentionMessages .mention_follow_up { + /*//load this color from variable.less*/ background-color: green; } .modal-content .mention_followup .row { @@ -4305,6 +4497,9 @@ form[name="notification_settings"] .select2-choice { .mentionMessageHeader .MultiFile-remove { color: #FFFFFF; } +/******************************************* +********** Mailroom view styles end ******** +********************************************/ .detailview-header { margin-bottom: 10px; } @@ -4320,6 +4515,7 @@ form[name="notification_settings"] .select2-choice { margin: 0px 10px; text-decoration: underline !important; color: #3498DB; + /*font-size : 12px;*/ } .tag { display: inline-block; @@ -4403,11 +4599,11 @@ form[name="notification_settings"] .select2-choice { border: 1px solid #dcdcdc; } #tagCloud .tag { - color: #5ea9dd; padding: 0px; background-color: #FFFFFF; border-color: #FFFFFF; border-radius: 0px; + color: #5ea9dd; margin: 3px; } #tagCloud .tag[data-type="public"] { @@ -4418,6 +4614,9 @@ form[name="notification_settings"] .select2-choice { max-width: 80px; vertical-align: bottom; } +/******************************************* +********** Groups view styles ******** +********************************************/ #s2id_memberList li > div, .groupMembersColors li > div { margin-left: 10px; @@ -4492,6 +4691,12 @@ form[name="notification_settings"] .select2-choice { margin: 0px; color: #444444; } +/******************************************* +********** Groups view styles ends******** +********************************************/ +/******************************************* +********** Picklist Css ******** +********************************************/ .pickListValue { background-color: #FFFFFF; } @@ -4506,6 +4711,12 @@ form[name="notification_settings"] .select2-choice { padding: 2px 1px !important; line-height: 15px; } +/******************************************* +************* Dashboard Styles ************* +********************************************/ +li.dashboardWidget { + overflow: hidden; +} .dashboardWidgetHeader .title { padding-bottom: 10px; font-size: 15px; @@ -4526,9 +4737,6 @@ form[name="notification_settings"] .select2-choice { .dashBoardContainer .tabContainer .tab-content { margin-top: 10px; } -.dashBoardContainer .dashBoardTabContents ul { - margin: 0; -} .dashBoardContainer .dashBoardTabContents ul li { border: 3px solid #E2E2E4; box-shadow: 1px; @@ -4595,7 +4803,7 @@ form[name="notification_settings"] .select2-choice { display: inline-block; opacity: 1; } -.dashBoardContainer .tabContainer li a .deleteTab:hover { +.dashBoardContainer .tabContainer li a .deleteTab:hover { cursor: pointer; } #minilistWizardContainer .fieldLabel { @@ -4632,6 +4840,9 @@ form[name="notification_settings"] .select2-choice { resize: none; width: 100%; } +/******************************************* +********** Picklist DependencyGraph ******** +********************************************/ #dependencyGraph .tableHeading { text-align: center; padding-top: 30px; @@ -4657,6 +4868,9 @@ form[name="notification_settings"] .select2-choice { #dependencyGraph .dependencyMapping .pickListDependencyTable .selectedCell { background: #a9cbf5; } +/******************************************* +********** Rewriting select2 for consistency******** +********************************************/ .select2-container .select2-choice { height: 29px; border-radius: 1px; @@ -4750,6 +4964,7 @@ hr { position: fixed; bottom: 0; background: #EFEFEF; + /*width:100%;*/ border-left: 42px solid #2c3b49; height: 60px; left: 0; @@ -4768,7 +4983,6 @@ hr { } .settingsPageDiv .modal-overlay-footer { margin-left: 230px; - border-left: 0px solid; } .settingsOverlayContainer .modal-overlay-footer { margin: 0; @@ -4791,14 +5005,14 @@ hr { vertical-align: middle; margin-top: 6px; } -.list-menu-content .pull-right>.dropdown-menu { +.list-menu-content .pull-right > .dropdown-menu { left: -126px; position: relative; } -.dropdown-menu>li>a { +.dropdown-menu > li > a { padding: 4px 6px; } -.dropdown-menu>li>a span i { +.dropdown-menu > li > a span i { font-size: 15px; vertical-align: middle; } @@ -4806,11 +5020,11 @@ hr { max-height: 300px; padding-left: 0; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container { margin-right: 0; padding: 4px 6px; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container>li>a { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container > li > a { display: block; padding: 3px 5px; clear: both; @@ -4819,7 +5033,7 @@ hr { color: #333; white-space: nowrap; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container span i { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container span i { font-size: 15px; vertical-align: middle; } @@ -4842,16 +5056,16 @@ hr { .calendar-sidebar .calendar-sidebar-tabs.padding { padding-left: 20px !important; } -.related-tabs.row .nav>li { +.related-tabs.row .nav > li { padding: 0 10px; margin: 0 2px; } -.massEditTabs.nav>li { +.massEditTabs.nav > li { padding: 0 10px; margin: 0 4px; } -.row .nav>li>a, -.row .nav>li>a:hover { +.row .nav > li > a, +.row .nav > li > a:hover { padding: 10px 3px; border: none; vertical-align: bottom; @@ -4861,38 +5075,39 @@ hr { -webkit-box-sizing: border-box; -o-box-sizing: border-box; } -.row .nav>li>a:hover { +.row .nav > li > a:hover { border-bottom-color: #555; } -TN-34230 - -.row .nav>li>a:hover { +/*.row ul{ + padding:0; +}*/ +TN-34230 .row .nav > li > a:hover { border-bottom-color: #555; background: none; } .row ul li:first-child { margin-left: 0; } -.related-tabs .nav-tabs>li.active, -.related-tabs .nav-tabs>li:hover, -.related-tabs .nav-tabs>li.active:focus, -.dashBoardContainer .nav-tabs>li.active, -.dashBoardContainer .nav-tabs>li:hover, -.dashBoardContainer .nav-tabs>li.active:focus, -.contents.tabbable .nav-tabs>li.active, -.contents.tabbable .nav-tabs>li:hover, -.contents.tabbable .nav-tabs>li.active:focus { +.related-tabs .nav-tabs > li.active, +.dashBoardContainer .nav-tabs > li.active, +.contents.tabbable .nav-tabs > li.active, +.related-tabs .nav-tabs > li:hover, +.dashBoardContainer .nav-tabs > li:hover, +.contents.tabbable .nav-tabs > li:hover, +.related-tabs .nav-tabs > li.active:focus, +.dashBoardContainer .nav-tabs > li.active:focus, +.contents.tabbable .nav-tabs > li.active:focus { border: none; border-bottom: 3px solid #555; } -.nav-tabs>li.active>a, -.nav-tabs>li.active>a:hover, -.nav-tabs>li.active>a:focus, -.nav-tabs>li>a { +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus, +.nav-tabs > li > a { border: 0; } -.nav>li>a:hover, -.nav>li>a:focus { +.nav > li > a:hover, +.nav > li > a:focus { background-color: #FFFFFF; } .fa-pencil, @@ -4902,6 +5117,9 @@ TN-34230 .commentAttachmentName { font-size: 11px; } +/******************************************* +********** Layout Editor ******** +********************************************/ .marginBottom10px { margin-bottom: 10px; } @@ -4924,6 +5142,7 @@ TN-34230 } .zeroOpacity { opacity: 0; + /*for IE*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } @@ -4950,10 +5169,12 @@ TN-34230 .layoutContent .opacity:hover .actions { opacity: 1; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + /*for IE*/ filter: alpha(opacity=100); } .layoutContent .fieldPropertyContainer:hover .actions { opacity: 1; + /*for IE*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=100); } @@ -4976,6 +5197,7 @@ TN-34230 .relatedTabModulesList .addButton { border-radius: 2px; border: 1px solid #DDDDDD; + text-transform: uppercase; color: #666666; background: #FFFFFF; } @@ -5049,6 +5271,9 @@ TN-34230 margin-left: 5px; word-break: break-all; } +/******************************************* +************** Tax Management ************** +********************************************/ #TaxCalculationsContainer .table tr:first-child, .taxModalContainer #editTax .table tr:first-child { border-bottom: 1px solid #ccc; @@ -5088,6 +5313,9 @@ TN-34230 max-height: 500px; overflow-y: auto; } +/******************************************* +********** Workflows ******** +********************************************/ #workflow_edit .editViewBody { overflow: inherit; } @@ -5097,7 +5325,7 @@ TN-34230 } .timePicker { width: 9.5em !important; - z-index: 1101 !important; + z-index: 1070 !important; } .weekDaySelect .ui-state-default { background: inherit; @@ -5135,75 +5363,6 @@ TN-34230 .module-filters.active { background: #F7F7F7; } -.payment-type-selection { - margin-bottom: 30px; -} -.payment-type-selection img { - vertical-align: middle; -} -.currplan { - padding: 10px 20px; - background-color: #f3f3f3; - border: 1px solid #eee; - border-radius: 3px; -} -.currplan div { - display: inline-block; - font-size: 16px; -} -.planName { - display: inline-block; - color: #fff; - padding: 20px; - margin: 10px 20px; - font-size: 24px; - border-radius: 2px; -} -.plan-heading { - min-height: 168px; -} -.plan-title { - color: #fff; - font-size: 20px; - padding: 13px 0; -} -#sales_plan { - background: #3FC380; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#salespremium_plan { - background: #00B16A; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#support_plan { - background: #2980B9; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#supportpremium_plan { - background: #2980B9; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#ultimate_plan, -#exclusive_plan { - background: #F39C12; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#contact_plan { - background: #FF5959; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} .workflowListContainer .select2-container .select2-choice { height: 36px; } @@ -5218,6 +5377,7 @@ TN-34230 .contactAdd { border: 1px solid #eee; padding: 20px; + /*min-height: 310px !important;*/ } #subDetails table td { padding: 7px 10px; @@ -5340,9 +5500,9 @@ TN-34230 .productBundles { padding-left: 20px; } -.nav .open>a, -.nav .open>a:hover, -.nav .open>a:focus { +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { color: #000000; background-color: #FFFFFF; } @@ -5363,6 +5523,9 @@ TN-34230 width: 100%; overflow-x: auto; } +/******************************************* +*************** Mail Manager *************** +********************************************/ #mm_searchButton { height: 28px; background-color: #FFFFFF; @@ -5418,8 +5581,8 @@ TN-34230 padding: 1px 5px; border-radius: 3px; text-align: center; - text-shadow: 0 1px rgba(0,0,0,0.1); - background-image: -webkit-linear-gradient(top,#DD4B39 0,#D14836 100%); + text-shadow: 0 1px rgba(0, 0, 0, 0.1); + background-image: -webkit-linear-gradient(top, #DD4B39 0, #D14836 100%); border: 1px solid #C6322A; background-color: #DD4B39; } @@ -5637,6 +5800,7 @@ TN-34230 .width40per { width: 40%; } +/****** Mail Manager Ends ******/ .quickCreateContent .massEditTable textarea, .addCommentBlock .commentTextArea textarea { resize: vertical; @@ -5649,19 +5813,20 @@ TN-34230 .select2-container-multi .select2-choices { z-index: 1; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a:hover { +/****** Customer Portal Settings ******/ +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a:hover { background-color: #fff; } -.cp-nav-header-wrapper>li.disabled>a:hover { +.cp-nav-header-wrapper > li.disabled > a:hover { border: 0px ! important; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a { +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a { background-color: #fff; } -#portalModulesTable>li.portalModuleRow.active>a:hover { +#portalModulesTable > li.portalModuleRow.active > a:hover { background-color: #fff !important; } -#portalModulesTable>li.portalModuleRow.active>a:focus { +#portalModulesTable > li.portalModuleRow.active > a:focus { background-color: #fff !important; } .portal-dashboard { @@ -5760,7 +5925,7 @@ TN-34230 .portal-dashboard { border-bottom: 0px ! important; } -#portal-shortcutsContainer>ul { +#portal-shortcutsContainer > ul { border-bottom: 0px ! important; } .portalMenuHeader { @@ -5769,14 +5934,15 @@ TN-34230 } .cp-tabs .enabledModules { display: inline-block ! important; - margin-left: 4px !important; - margin-right: 4px !important; + margin-left: 4px!important; + margin-right: 4px!important; vertical-align: top; margin-top: 4px !important; } .portal-shortcut-list:hover { border-bottom: 3px solid transparent ! important; } +/****** Customer Portal Settings ******/ .label-radio label input[type="radio"] { position: relative; top: 2px; @@ -5788,6 +5954,9 @@ TN-34230 div.tooltip-inner { max-width: 400px; } +/******************************************* +********** Menu Editor ******** +********************************************/ .sortable.appContainer.ui-sortable { width: 160px; } @@ -5962,7 +6131,7 @@ div.tooltip-inner { width: 13px !important; margin-top: 8px; } -.detailview-table .input-group-addon+.inputElement.form-control, +.detailview-table .input-group-addon + .inputElement.form-control, .detailview-table .inputElement.form-control.input-medium { width: 100%; } @@ -6009,6 +6178,7 @@ div.tooltip-inner { float: left; margin-right: 5px; } +/***** Oursites Changes *****/ .portal-table .table-actions { width: inherit ! important; } @@ -6020,6 +6190,7 @@ div.tooltip-inner { padding: 10px 5px ! important; padding-left: 10px ! important; } +/***** Oursites Changes *****/ .ExtensionscontentsDiv .content-area { padding-left: 15px; padding-right: 15px; @@ -6033,14 +6204,14 @@ div.tooltip-inner { } .blockHeader { border-color: #F3F3F4 #F3F3F4 #cbcbcf; - border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); background-color: #474747; - background-image: -moz-linear-gradient(top,#555555,#333333); - background-image: -ms-linear-gradient(top,#555555,#333333); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#555555),to(#333333)); - background-image: -webkit-linear-gradient(top,#555555,#333333); - background-image: -o-linear-gradient(top,#555555,#333333); - background-image: linear-gradient(top,#555555,#333333); + background-image: -moz-linear-gradient(top, #555555, #333333); + background-image: -ms-linear-gradient(top, #555555, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); + background-image: -webkit-linear-gradient(top, #555555, #333333); + background-image: -o-linear-gradient(top, #555555, #333333); + background-image: linear-gradient(top, #555555, #333333); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333', GradientType=0); min-height: 30px; @@ -6133,8 +6304,8 @@ div.tooltip-inner { .markStar .starredStatus { display: none; } -.nav>li.addDashboardTab>a, -.nav>li.addDashboardTab>a:hover { +.nav > li.addDashboardTab > a, +.nav > li.addDashboardTab > a:hover { padding: 10px 15px; background: inherit; } @@ -6147,7 +6318,7 @@ div.tooltip-inner { height: 960px; width: 1260px; } -.nav-tabs>li { +.nav-tabs > li { border-bottom: 3px solid transparent; margin: 0 2px; } @@ -6225,16 +6396,14 @@ div.tooltip-inner { } .select2-container.select2-container-multi.select2, .editViewPageDiv .select2-container.select2-container-multi.select2 { - height: auto !important; + height: auto!important; } -.summaryViewFields .select2-container-multi.inputElement.form-control -.quickCreateContent .select2-container.select2-container-multi.select2, +.summaryViewFields .select2-container-multi.inputElement.form-control .quickCreateContent .select2-container.select2-container-multi.select2, #massEditContainer .select2-container.select2-container-multi.select2 { width: 150px; height: auto !important; } -.summaryViewFields .select2-container-multi.inputElement.form-control -.quickCreateContent .select2-container.select2-container-multi.select2 .input-save-wrap, +.summaryViewFields .select2-container-multi.inputElement.form-control .quickCreateContent .select2-container.select2-container-multi.select2 .input-save-wrap, #massEditContainer .select2-container.select2-container-multi.select2 .input-save-wrap { float: right; margin-right: 25px; @@ -6330,6 +6499,7 @@ a.cp-modules:hover { #RestrictionsLayout { background: #fafafb; margin-top: -92px; + /*to adjust with page padding top*/ } #RestrictionsLayout .vtImage { width: 22%; @@ -6363,6 +6533,7 @@ a.cp-modules:hover { .datepicker { z-index: 1100 !important; } +/*****RSS Changes****/ .feedListContainer .listview-table tr td:first-child, .listview-table tr th:first-child { width: inherit ! important; @@ -6370,12 +6541,14 @@ a.cp-modules:hover { .feedListContainer .listViewEntries .listViewEntryValue { max-width: inherit ! important; } -.ps-container>.ps-scrollbar-y-rail { +/*****RSS Changes****/ +.ps-container > .ps-scrollbar-y-rail { z-index: 1002; } #relationBlock .recordScroll { max-height: 150px; } +/*Start - List sidebar toggle*/ .essentials-toggle { background-color: white; font-weight: bold; @@ -6395,6 +6568,7 @@ a.cp-modules:hover { .essentials-toggle .fa-chevron-right { background-position: -460px -72px !important; } +/*End - List essentials toggle*/ .module-name-tooltip .qtip-content { font-size: 12px; padding: 3px; @@ -6403,23 +6577,6 @@ a.cp-modules:hover { .module-name-tooltip { padding: 3px; } -.main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, -.main-container-Reports .module-nav { - width: 0; -} -.main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, -.main-container-Reports .sidebar-essentials { - width: 283px; - left: 0; -} -.main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { - padding-left: 0px !important; -} .main-container-MailManager .module-nav { width: 230px; } @@ -6478,8 +6635,8 @@ li.select2-search-choice div { .popover ul.listmenu li { padding: 3px; } -.popover-content .disabled>a, -.popover .disabled>a { +.popover-content .disabled > a, +.popover .disabled > a { opacity: 0.5; cursor: not-allowed; } @@ -6490,6 +6647,7 @@ li.select2-search-choice div { -o-transform: rotate(180deg); transform: rotate(180deg); } +/*Start - List sidebar toggle*/ .essentials-toggle { background-color: white; font-weight: bold; @@ -6509,6 +6667,7 @@ li.select2-search-choice div { .essentials-toggle .fa-chevron-right { background-position: -460px -72px !important; } +/*End - List essentials toggle*/ .module-name-tooltip .qtip-content { font-size: 12px; padding: 3px; @@ -6520,25 +6679,20 @@ li.select2-search-choice div { border-left: 1px solid #DDDDDD; } .main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, .main-container-Reports .module-nav { width: 0; } .main-container-Documents .mod-switcher-container, -.main-container-RecycleBin .mod-switcher-container, .main-container-Reports .mod-switcher-container { width: 0; } .main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, .main-container-Reports .sidebar-essentials { width: 283px; left: 0; } .main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { +.main-container-Reports .full-width { padding-left: 0px !important; } .listViewPageDiv .ps-scrollbar-x-rail { @@ -6589,16 +6743,16 @@ li.select2-search-choice div { #reportDetails .pivot .toptitle.targetY0, #reportDetails .pivot .lefttitle.targetX0 { border-color: #F3F3F4 #F3F3F4 #cbcbcf; - border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); background-color: #474747; - background-image: -moz-linear-gradient(top,#555555,#333333); - background-image: -ms-linear-gradient(top,#555555,#333333); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#555555),to(#333333)); - background-image: -webkit-linear-gradient(top,#555555,#333333); - background-image: -o-linear-gradient(top,#555555,#333333); - background-image: linear-gradient(top,#555555,#333333); + background-image: -moz-linear-gradient(top, #555555, #333333); + background-image: -ms-linear-gradient(top, #555555, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); + background-image: -webkit-linear-gradient(top, #555555, #333333); + background-image: -o-linear-gradient(top, #555555, #333333); + background-image: linear-gradient(top, #555555, #333333); background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555',endColorstr='#333333',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333', GradientType=0); min-height: 30px; } #reportDetails .pivot th.toptitle.targetY0, @@ -6640,7 +6794,8 @@ li.select2-search-choice div { background: #FFFFFF; } .templateActions { - background: rgba(0,0,0,0.1); + background: rgba(0, 0, 0, 0.1); + /*padding: 4%;*/ bottom: 0; text-align: center; position: absolute; @@ -6648,6 +6803,9 @@ li.select2-search-choice div { zoom: 1; width: 100%; } +/*.templateActions i { + margin-right: 30px; +}*/ .thumbnails > li { float: left; height: 315px !important; @@ -6822,9 +6980,10 @@ a.btnReport:hover { left: 0px; } .bx-wrapper .bx-viewport { - width:99%; + width: 99%; left: 0px; background: #fff; + /*fix other elements on the page moving (on Chrome)*/ -webkit-transform: translatez(0); -moz-transform: translatez(0); -ms-transform: translatez(0); @@ -6882,7 +7041,7 @@ a.btnReport:hover { .filter-search-show { display: block !important; } -.emailTemplatesPopupTableContainer .listViewEntries .listViewEntryValue { +.emailTemplatesPopupTableContainer .listViewEntries .listViewEntryValue { max-width: 100%; min-width: 150px; } @@ -6917,12 +7076,15 @@ input:focus::-webkit-input-placeholder { input:focus:-moz-placeholder { color: transparent; } +/* FF 4-18 */ input:focus::-moz-placeholder { color: transparent; } +/* FF 19+ */ input:focus:-ms-input-placeholder { color: transparent; } +/* IE 10+ */ .global-actions .dropdown-menu:before { position: absolute; top: -7px; @@ -6931,7 +7093,7 @@ input:focus:-ms-input-placeholder { border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-left: 7px solid transparent; - border-bottom-color: rgba(0,0,0,0.2); + border-bottom-color: rgba(0, 0, 0, 0.2); content: ''; } .global-actions .dropdown-menu:after { @@ -7116,6 +7278,7 @@ input:focus:-ms-input-placeholder { text-align: center; } #OnBoardLayout #OnBoardPageContainer .crmGoals textarea::-webkit-input-placeholder { + /* WebKit browsers */ text-align: center; padding: 20%; font-size: 12px; @@ -7257,6 +7420,104 @@ input:focus:-ms-input-placeholder { .importServiceSelectionContainer .app-item { text-align: center; } +#composeEmailContainer .modal-body .quickCreateContent, +#QuickCreate .modal-body .quickCreateContent, +#create .quickCreateContent { + margin-top: 25px; +} +.settingsgroup-panel .widgetContainer .menuItemLabel .pinUnpinShortCut { + display: none; + margin-top: 2px; +} +.settingsgroup-panel .widgetContainer .menuItemLabel:hover .pinUnpinShortCut { + display: inline-block; +} +@-moz-document url-prefix() { + .duplicateHandlingContainer .tooltip-inner { + width: 550px; + max-width: 550px; + } +} +.duplicateHandlingContainer .tooltip-inner { + text-align: left !important; +} +.duplicateHandlingContainer .syncMessage { + margin-top: 5px !important; +} +.duplicateHandlingContainer .actionsList { + width: 230px !important; +} +.duplicationMessageContainer { + background-color: #f2dede !important; + color: #b94a48 !important; +} +.duplicationMessageContainer .duplicationMessageHeader { + margin-bottom: 8px; +} +.listViewRecordActions .quickView, +.listViewRecordActions .markStar, +.listViewRecordActions .markAsHeld, +.listViewRecordActions .holdFollowupOn { + margin-top: 4px; +} +.app-menu .module-icon .custom-module { + font-size: 14px; + border-radius: 4px; + color: #000; + background-color: #FFFFFF; + padding: 4px 10px 4px 5px !important; +} +.menu-item .custom-module { + font-family: 'OpenSans-Regular', sans-serif; + font-size: 12px; + border-radius: 4px; + padding: 2px; + color: #000; + background-color: #FFFFFF; +} +.modules-menu .custom-module { + color: #FFFFFF; + margin-left: 0px; + display: inline; + border: 1px solid #FFFFFF; + border-radius: 4px; + padding: 3px 4px 3px 2px !important; + font-weight: bold; +} +#quickCreateModules .custom-module, +.workflowListContainer .custom-module, +.dashBoardTabContents .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #FFFFFF; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #000000; + background-color: #FFFFFF; +} +.task-details .custom-module { + border-radius: 4px; + padding: 1px 4px; + color: #FFFFFF; + background-color: #777; +} +.related-tabs .custom-module, +#relatedmenuList .custom-module { + border-radius: 4px; + color: #FFFFFF; + background-color: #777; + padding: 5px 7px; + font-weight: bold; +} +.record-header .custom-module { + font-size: 30px; +} +.moduleIcon .custom-module { + font-weight: bold; +} .modules-menu ul li.active a { border-left: 3px solid #6297C3; opacity: 1; @@ -7276,7 +7537,7 @@ div.flip { background-color: #fff !important; border: 1px solid #f2e8fc; border-radius: 4px; - box-shadow: 0 1px 1px rgba(0,0,0,0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); margin-bottom: 10px; font-size: 13px !important; text-align: justify; @@ -7392,40 +7653,6 @@ div.flip { max-width: 100%; overflow-x: auto; } -.fieldValue .value a { - color: #15c !important; -} -.editViewContents .fieldLabel { - min-width: 100px; - width: 20%; - word-break: break-all; -} -.editViewContents .fieldValue { - width:30%; -} -.editViewContents td.fieldValue[colspan="3"] { - width:80%; -} -.editViewContents textarea.textAreaElement { - width: 88%; -} -.editViewContents input[type="checkbox"] { - width: 15px; - height: 15px; -} -.editViewContents input[type="radio"] { - width: 15px; - height: 15px; -} -#composeEmailContainer .modal-body .quickCreateContent, -#QuickCreate .modal-body .quickCreateContent, -#create .quickCreateContent { - margin-top: 25px; -} -.settingsgroup-panel .widgetContainer .menuItemLabel .pinUnpinShortCut { - display: none; - margin-top: 2px; +.caseRelatedRecords { + margin-bottom: 0px !important; } -.settingsgroup-panel .widgetContainer .menuItemLabel:hover .pinUnpinShortCut { - display: inline-block; -} \ No newline at end of file diff --git a/layouts/v7/skins/tools/style.css b/layouts/v7/skins/tools/style.css index ef60ee9eb5631ed84e84532430f67baf832870ae..8ac31b1ffd77fc11a06d37a8e240e2f1f11c5072 100644 --- a/layouts/v7/skins/tools/style.css +++ b/layouts/v7/skins/tools/style.css @@ -1,7 +1,9 @@ @font-face { font-family: 'Oswald'; src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot'); - src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot?#iefix') format('embedded-opentype'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.woff') format('woff'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.ttf') format('truetype'), url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.svg#Oswald') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/Oswald/Oswald-Regular/Oswald-Regular.svg#Oswald') format('svg'); + /* Legacy iOS */ font-weight: normal; font-style: normal; text-rendering: optimizeLegibility; @@ -15,27 +17,37 @@ a:active { @font-face { font-family: 'OpenSans-Regular'; src: url('../fonts/OpenSans/Regular/OpenSans-Regular.eot'); - src: url('../fonts/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'), url('../fonts/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), url('../fonts/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), url('../fonts/OpenSans/Regular/OpenSans-Regular.svg#svgFontName') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/OpenSans/Regular/OpenSans-Regular.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/OpenSans/Regular/OpenSans-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/OpenSans/Regular/OpenSans-Regular.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/OpenSans/Regular/OpenSans-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/OpenSans/Regular/OpenSans-Regular.svg#svgFontName') format('svg'); + /* Legacy iOS */ } @font-face { font-family: 'OpenSans-Semibold'; src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot'); - src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.ttf') format('truetype'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff2') format('woff2'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff') format('woff'), url('../fonts/OpenSans/Semibold/OpenSans-Semibold.svg#svgFontName') format('svg'); + /* IE9 Compat Modes */ + src: url('../fonts/OpenSans/Semibold/OpenSans-Semibold.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff2') format('woff2'), /* Super Modern Browsers */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/OpenSans/Semibold/OpenSans-Semibold.svg#svgFontName') format('svg'); + /* Legacy iOS */ } @font-face { font-family: 'ProximaNova-Regular'; - src: url('../fonts/ProximanovaWebfont/ProximaNova-Regular.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.woff') format('woff'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'); + src: url('../fonts/ProximanovaWebfont/ProximaNova-Regular.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Regular.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/ProximanovaWebfont/ProximaNova-Regular.eot?#iefix') format('embedded-opentype'); + /* IE6-IE8 */ + /* Safari, Android, iOS */ font-style: normal; font-weight: normal; text-rendering: optimizeLegibility; } @font-face { font-family: 'ProximaNova-Semibold'; - src: url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.ttf') format('truetype'), url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.woff') format('woff'), url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.eot?#iefix') format('embedded-opentype'); + src: url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.ttf') format('truetype'), /* Safari, Android, iOS */ url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.woff') format('woff'), /* Pretty Modern Browsers */ url('../fonts/ProximanovaWebfont/ProximaNova-Semibold.eot?#iefix') format('embedded-opentype'); + /* IE6-IE8 */ font-style: normal; font-weight: normal; text-rendering: optimizeLegibility; } +/**********************************/ +/************ Layout **************/ +/**********************************/ html { height: 100%; overflow-y: auto; @@ -102,6 +114,7 @@ body { @media (min-width: 992px) { .global-nav .logo-container { display: inline-block; + width: 150px; z-index: 2; padding-left: 6%; margin-top: 1px; @@ -113,11 +126,13 @@ body { position: absolute; width: 100%; height: 42px; + /* border-top:1px solid #ddd;*/ border-bottom: 1px solid #ddd; } .app-nav .module-action-bar .module-action-content { background: #FBFBFB; height: 41px; + /* border-bottom: 1px solid #eee;*/ } .app-nav .module-action-bar .module-action-content .navbar-right { margin-right: 0; @@ -163,7 +178,7 @@ body { padding-left: 0; } } -.btn-toolbar >.btn-group:first-child { +.btn-toolbar > .btn-group:first-child { margin-left: 5px; } .vt-notification { @@ -196,8 +211,12 @@ body { .vt-notification [data-notify="message"] { color: #eaeaea; } +/**********************************/ +/******** Navigation styles *******/ +/**********************************/ .company-logo { height: 40px; + width: 150px; margin: 0 0; display: inline-block; margin-left: 1px; @@ -214,10 +233,13 @@ body { font-size: 16px; position: relative; } +/*.module-action-bar .module-action-content #appnav{ + padding-top:5px; +}*/ .global-nav .navbar-nav > li div a { padding: 15px; } -.global-nav>ul { +.global-nav > ul { margin-right: 20px; } .global-nav .search-links-container { @@ -267,26 +289,28 @@ body { float: right; height: 42px; } - .module-action-bar .navbar-right .nav>li { + .module-action-bar .navbar-right .nav > li { display: inline-block; } - .module-action-bar .navbar-right .nav>li a { + .module-action-bar .navbar-right .nav > li a { padding: 0 10px; } .global-nav .logo-container { border-bottom: 0; + width: 150px; } } @media (max-width: 991px) { .global-nav .logo-container { border-bottom: 0; + width: 150px; } .notificationMessageHolder { padding-left: 45%; } } @media (min-width: 991px) { - .nav>li>a.qc-button { + .nav > li > a.qc-button { padding: 2px 3px; margin-top: 13px; margin-right: 15px; @@ -294,7 +318,7 @@ body { color: #fff; border-radius: 20px; } - .nav>li>a.qc-button span { + .nav > li > a.qc-button span { vertical-align: top; } } @@ -313,6 +337,7 @@ body { width: 100%; height: 100%; } +/** App Nav Styles */ .active-app-title { white-space: nowrap; font-family: Oswald, "OpenSans-Semibold", "Helvetica Neue", Helvetica, sans-serif; @@ -367,7 +392,9 @@ body { height: 42px; text-align: center; line-height: 42px; + /* background-color: #2c3b49;*/ color: #ffffff; + /*border-bottom: 1px solid #272B46;*/ } .app-nav .app-indicator-icon-container .app-indicator-icon { font-size: 24px; @@ -391,6 +418,9 @@ body { .app-PROJECT { background: #8E44AD !important; } +.app-TOOLS { + background: #EF5E29 !important; +} .app-DEFAULT, .app-DASHBOARD { background: #56ccc8 !important; @@ -479,16 +509,16 @@ body { right: -4px; } #overlayPageContent .mCSB_scrollTools, -#overlayPageContent .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonUp, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonDown, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonLeft, -#overlayPageContent .mCSB_scrollTools .mCSB_buttonRight, .app-list .mCSB_scrollTools, +#overlayPageContent .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, .app-list .mCSB_scrollTools .mCSB_dragger .mCSB_dragger_bar, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonUp, .app-list .mCSB_scrollTools .mCSB_buttonUp, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonDown, .app-list .mCSB_scrollTools .mCSB_buttonDown, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonLeft, .app-list .mCSB_scrollTools .mCSB_buttonLeft, +#overlayPageContent .mCSB_scrollTools .mCSB_buttonRight, .app-list .mCSB_scrollTools .mCSB_buttonRight { -webkit-transition: none; transition: none; @@ -534,6 +564,9 @@ a.menu-item:hover { .app-item-color-PROJECT { border-left: 4px solid #8E44AD; } +.app-item-color-TOOLS { + border-left: 4px solid #EF5E29; +} .app-item .fa { font-size: 1.5em; -webkit-transition: all 0.25s ease-in; @@ -700,6 +733,7 @@ a.menu-item:hover { width: 0px; overflow: hidden; } +/* User Logout */ .logout-content { padding: 10px; width: 350px; @@ -754,6 +788,9 @@ a.menu-item:hover { .app-settings { background: #FFFFFF; } +/*************************************************/ +/******** View styles (List/Edit/Detail..) *******/ +/*************************************************/ .viewContent .content-area { padding-left: 50px; } @@ -780,6 +817,9 @@ a.menu-item:hover { opacity: 0.5; pointer-events: none; } +.input-group.percentage-input-group .form-control { + width: 100% !important; +} .bottomscroll-div, .topscroll-div { display: table; @@ -793,6 +833,9 @@ a.menu-item:hover { display: inline-block; word-break: break-word; } +.fieldValue .value a { + color: #15c !important; +} .modal-header button.close { padding: 0; color: #ffffff; @@ -865,6 +908,9 @@ input[type="password"].inputElement { padding-right: 20px; padding-left: 20px; } +/**********************************/ +/**** Side vertical Nav styles ****/ +/**********************************/ .module-nav { background: #fff; z-index: 1004; @@ -880,6 +926,9 @@ input[type="password"].inputElement { left: 0; transition: 0s width; } +.module-nav:hover { + /*z-index: 1001;*/ +} .modules-menu ul { list-style: none; margin-left: 0; @@ -914,7 +963,7 @@ input[type="password"].inputElement { float: left; font-size: 20px; } -.modules-menu ul li a>span { +.modules-menu ul li a > span { margin-left: 10px; vertical-align: middle; font-size: 13px; @@ -954,6 +1003,7 @@ input[type="password"].inputElement { width: 100%; left: 0%; } +/** Lists Menu in Side bar */ .module-filters .settings-sidebar, .module-filters .sidebar-container { padding: 0 12px; @@ -987,6 +1037,7 @@ input[type="password"].inputElement { .lists-menu-container hr { margin: 5px 0; } +/* mScrollbar customization for lists widget */ .lists-menu-container .menu-scroller .mCSB_scrollTools { width: 13px; } @@ -998,8 +1049,10 @@ input[type="password"].inputElement { .modules-menu .mCSB_scrollTools .mCSB_draggerContainer { left: 8px; } +/* Customization ends */ .lists-menu-container .list-menu-content .more-less-link { color: #fff; + /*text-decoration: none;*/ } .lists-menu-container .list-menu-content .sub-header { color: #ddd; @@ -1085,7 +1138,6 @@ input[type="password"].inputElement { background-color: #FFFFFF; border: 1px solid #DDDDDD; margin: 5px 0 10px; - color: #ccc; padding: 5px 10px; } .search-folders:focus, @@ -1104,9 +1156,11 @@ input[type="password"].inputElement { .common-links-container > div a { color: #fff; } +/*Search Container styles */ .search-container { min-height: 300px; position: absolute; + /*z-index: 1030;*/ width: 100%; top: 0; background: #FBFBFB; @@ -1125,6 +1179,7 @@ input[type="password"].inputElement { .footer p { margin: 5px 0; } +/*** Utilities ***/ .showElement { display: block !important; height: 100%; @@ -1247,11 +1302,11 @@ ul.unstyled { } .emptyRecordsDiv .emptyRecordsContent { display: inline-block; - font-size: 16px; left: 50%; margin-left: -25%; position: absolute; width: 50%; + font-size: 16px; } .textOverflowEllipsis { overflow: hidden; @@ -1276,6 +1331,9 @@ ul.unstyled { .removeNoFileChosen { color: transparent !important; } +/*********************************** +**********Button Styles********** +***********************************/ .module-buttons-container { float: right; margin-right: 10px; @@ -1297,6 +1355,7 @@ ul.unstyled { margin: 4px 2px; border-radius: 2px; border: 1px solid #ddd; + text-transform: uppercase; color: #666; background: #fff; } @@ -1317,6 +1376,9 @@ ul.unstyled { color: #FFFFFF !important; background: #5bc0de !important; } +/*********************************** +**********List View Styles********** +***********************************/ .fa.pull-left { margin-right: 0; } @@ -1351,7 +1413,7 @@ ul.unstyled { font-size: 20px; } .listview-pagination .disabled { - color: rgba(0,0,0,0.2); + color: rgba(0, 0, 0, 0.2); } .listview-pagination .disabled:hover { cursor: default; @@ -1379,6 +1441,8 @@ ul.unstyled { .listview-table { margin-bottom: 0; border-top: 0; + /* Horizontal scroll will not work if table layout Fixed */ + /* table-layout: fixed;*/ } .listview-table tr td, .listview-table tr th { @@ -1408,7 +1472,7 @@ ul.unstyled { width: 100%; } .listViewEntries .relatedListEntryValues .fieldValue .value, -.listViewEntries .listViewEntryValue .fieldValue .value { +.listViewEntries .listViewEntryValue .fieldValue .value { vertical-align: middle; width: 100%; display: inline-block; @@ -1423,7 +1487,7 @@ ul.unstyled { } .listview-table-norecords .table-actions, .listview-table .table-actions { - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -1489,13 +1553,13 @@ input[type=checkbox]:checked { vertical-align: middle; display: table-cell; } -.listview-table tr.searchRow th { +.listview-table tr.searchRow th { padding: 5px 3px; } -.listview-table tr.searchRow th.inline-search-btn { +.listview-table tr.searchRow th.inline-search-btn { padding: 3px 10px; } -.listview-table tr.searchRow th.inline-search-btn button { +.listview-table tr.searchRow th.inline-search-btn button { text-align: center; width: 85%; text-shadow: none; @@ -1523,6 +1587,18 @@ input[type=checkbox]:checked { background-color: #FFEEEE !important; background-image: none !important; } +/*.floatThead-wrapper .table-container{ + z-index: 0 !important; +}*/ +/* List view bottom fixed scroll */ +/*.bottom-fixed-scroll{ + height: 14px; + position: relative; + top: -15px; + overflow-x: auto; + overflow-y: hidden; + width: 100%; +}*/ .scroller-div { height: 1px; } @@ -1644,9 +1720,15 @@ input[type=checkbox]:checked { #listColumnFilterContainer .disabled i { color: #ccc; } +/********************************** +**********Detail View Styles********** +**********************************/ .detailViewButtoncontainer { padding-top: 5px; } +.detailViewButtoncontainer button.btn { + margin: 0px 1px !important; +} .detailview-header .recordBasicInfo > .info-row { margin-bottom: 4px; } @@ -1727,6 +1809,9 @@ th { margin-top: 3%; margin-right: 2%; } +.overlayDetailHeader button.btn { + margin: 0px 1px !important; +} .referencefield-wrapper .createReferenceRecord { float: left; margin-left: 5px; @@ -1966,10 +2051,10 @@ th { z-index: 1030; } .overlay-container-60 { - margin-left: 42px; + margin-left: 42px ; } .overlay-container-300 { - margin-left: 230px; + margin-left: 230px ; } .overlayPageContent { background: #FFFFFF; @@ -2092,6 +2177,9 @@ th { height: 26px; line-height: 25px; } +/********************************** +**********Summary View Styles****** +**********************************/ .summary-table { width: 100%; table-layout: fixed; @@ -2212,33 +2300,33 @@ th { opacity: 1; cursor: pointer; } -.details.row >form .social-media-toggle { +.details.row > form .social-media-toggle { position: absolute; right: -15px; display: inline-block; width: 500px; border-left: 0px; } -.details.row >form .social-media-widget { +.details.row > form .social-media-widget { border-left: 1px solid #ddd; border-bottom: 1px solid #ddd; height: 100%; background: white; } -.details.row >form div[class*="col-"].resizable-summary-view { +.details.row > form div[class*="col-"].resizable-summary-view { padding-left: 0; padding-right: 0px; } -.details.row >form>div[class*="col-"], -.details.row >form .resizable-summary-view div[class*="col-"] { +.details.row > form > div[class*="col-"], +.details.row > form .resizable-summary-view div[class*="col-"] { padding-right: 0; padding: 0px 5px; } -.details.row >form>div[class*="col-"]:first-child, -.details.row >form .left-block { +.details.row > form > div[class*="col-"]:first-child, +.details.row > form .left-block { padding-left: 0 !important; } -.details.row >form>div[class*="col-"]:last-child { +.details.row > form > div[class*="col-"]:last-child { padding-right: 0; } .summaryWidgetContainer .noContent { @@ -2251,6 +2339,9 @@ th { .caseReplyArea .nav > li { padding: 0 10px; } +/********************************** +**********Edit View Styles******* +**********************************/ .main-container .editViewModNavigator.module-nav, .editViewModNavigator .mod-switcher-container, .editViewModNavigator .modules-menu { @@ -2291,9 +2382,28 @@ th { width: 100%; } .editViewContents .input-group { - width: 229px; + width: 208px; float: left; } +.editViewContents .fieldLabel { + min-width: 100px; + width: 20%; + word-break: break-all; +} +.editViewContents .fieldValue { + width: 30%; +} +.editViewContents td.fieldValue[colspan="3"] { + width: 80%; +} +.editViewContents textarea.textAreaElement { + width: 88%; +} +.editViewContents input[type="checkbox"], +.editViewContents input[type="radio"] { + width: 15px; + height: 15px; +} .input-group.inputElement .input-group-addon { border: none; border-left: 1px solid #ddd; @@ -2370,6 +2480,9 @@ th { z-index: 1000; padding: 7px; } +/********************************** +**********Advance Search styles********** +**********************************/ .op0.fadeInx { opacity: 1; } @@ -2442,7 +2555,11 @@ th { } .btn + input { margin-left: 5px; + /* margin-top : 3px;*/ } +/********************************** +**********Extension Store Styles********** +**********************************/ .extensionstore .app-trigger { width: 98%; } @@ -2473,6 +2590,9 @@ th { .extensionContents .extensionError { color: #F10404; } +/********************************** +**********Extension Store Nav Bar********** +**********************************/ .tabbable-line > .nav-tabs { border: none; margin: 0px; @@ -2541,6 +2661,9 @@ th { .extensionContents .listview-table { width: 100%; } +/******************************************* +******Detail View related list styles******* +********************************************/ .relatedContents .listViewContentHeaderValues:hover { text-decoration: none; color: #333; @@ -2598,6 +2721,9 @@ th { .relatedViewActions .btn-group { margin-right: 15px; } +/******************************************* +****************** Modal ******************* +********************************************/ .modal-header { padding: 5px 15px; background: #596875; @@ -2625,6 +2751,7 @@ th { width: 100%; float: left; background: #596875; + /* height: 100%;*/ } .settings-menu { display: inline-block; @@ -2641,7 +2768,7 @@ th { cursor: n-resize; } .settings-menu-items { - box-shadow: 0 1px 1px rgba(0,0,0,0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); margin-bottom: 10px; text-align: justify; } @@ -2770,6 +2897,7 @@ th { vertical-align: middle; color: #3399ff; } +/* .squaredFour */ .squaredFour { width: 20px; position: relative; @@ -2783,9 +2911,9 @@ th { top: 0; left: 0; background: #fcfff4; - background: linear-gradient(top,#fcfff4 0%,#dfe5d7 40%,#b3bead 100%); + background: linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); border-radius: 4px; - box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); + box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0, 0, 0, 0.5); } .squaredFour label:after { content: ''; @@ -2813,13 +2941,16 @@ th { .importBlockContainer { color: #596875; } +/******************************************* +************* Social Buttons *************** +********************************************/ .btn-block + .btn-block { margin-top: 5px; } .btn-google-plus { color: #FFFFFF !important; background-color: #DD4B39; - border-color: rgba(0,0,0,0.2); + border-color: rgba(0, 0, 0, 0.2); } .btn-social { position: relative; @@ -2838,15 +2969,18 @@ th { line-height: 34px; font-size: 1.6em; text-align: center; - border-right: 1px solid rgba(0,0,0,0.2); + border-right: 1px solid rgba(0, 0, 0, 0.2); } +/******************************************* +************* Updates Timeline *************** +********************************************/ .recentActivitiesContainer .history { margin: 0 auto; padding: 20px 20px 1px; max-width: 100%; overflow-x: visible; - -webkit-transition: opacity .2s ease-out; - transition: opacity .2s ease-out; + -webkit-transition: opacity 0.2s ease-out; + transition: opacity 0.2s ease-out; } .updates_timeline { padding-top: 20px; @@ -2855,6 +2989,7 @@ th { padding: 0; list-style: none; } +/* The line */ .updates_timeline:before { content: ''; position: absolute; @@ -2873,6 +3008,7 @@ th { min-height: 40px; z-index: 2; } +/* Left Content(Time) */ .updates_timeline > li .update_time { position: absolute; margin: 0; @@ -2884,6 +3020,7 @@ th { font-size: 15px; font-style: italic; } +/* Right content(Update info) */ .updates_timeline > li .update_info { padding: 10px 10px 1px; display: block; @@ -2892,10 +3029,11 @@ th { position: relative; top: -45px; } -.updates_timeline > li .update_info >h3 { +.updates_timeline > li .update_info > h3 { font-size: 1.1em; margin-left: -3%; } +/* The icons */ .updates_timeline > li .update_icon { position: relative; border-radius: 50%; @@ -2908,6 +3046,7 @@ th { color: #fff; line-height: 35px; } +/* More Button */ .updates_timeline #more_button .update_icon { position: relative; border-radius: 0; @@ -3015,6 +3154,9 @@ th { vertical-align: super; font-size: 13px; } +/******************************************* +************* Task Management ************** +********************************************/ #taskManagementContainer .data-body { margin-bottom: 50px; } @@ -3077,15 +3219,16 @@ th { #taskManagementContainer .other-details { color: #979797; } +/*overwriting jquery ui css*/ .ui-menu { z-index: 10000; } #taskManagementContainer button.active { background: #3B83F7; color: white; - text-shadow: 0 1px rgba(0,0,0,0.3); + text-shadow: 0 1px rgba(0, 0, 0, 0.3); border: 1px solid #135fd7; - box-shadow: inset 0 1px 2px rgba(0,0,0,0.3); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3); } .taskSubject { width: 99%; @@ -3093,6 +3236,9 @@ th { #taskManagementContainer .mCustomScrollbar .mCSB_inside > .mCSB_container { margin-right: 13px; } +/******************************************* +************* Settings Page ************** +********************************************/ .settingsPageDiv.content-area { margin-right: 0; } @@ -3126,6 +3272,9 @@ th { .settingsgroup-accordion a i { margin-right: 5px; } +.settingsgroup-accordion a span { + text-transform: uppercase; +} .settingsgroup { background: #2C3B49; height: 100%; @@ -3282,35 +3431,59 @@ th { } .mini-slider-control[data-value="0"] .ui-slider-handle { background: #7d7e7d; - background: -moz-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#7d7e7d),color-stop(100%,#0e0e0e)); - background: -webkit-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -o-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: -ms-linear-gradient(top,#7d7e7d 0%,#0e0e0e 100%); - background: linear-gradient(to bottom,#7d7e7d 0%,#0e0e0e 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d',endColorstr='#0e0e0e',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #7d7e7d), color-stop(100%, #0e0e0e)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #7d7e7d 0%, #0e0e0e 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #7d7e7d 0%, #0e0e0e 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#7d7e7d', endColorstr='#0e0e0e', GradientType=0); + /* IE6-9 */ margin-left: 0px; } .mini-slider-control[data-value="1"] .ui-slider-handle { background: #ffb76b; - background: -moz-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#ffb76b),color-stop(0%,#ffa73d),color-stop(49%,#ff7c00),color-stop(100%,#ff7f04)); - background: -webkit-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -o-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: -ms-linear-gradient(top,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - background: linear-gradient(to bottom,#ffb76b 0%,#ffa73d 0%,#ff7c00 49%,#ff7f04 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb76b',endColorstr='#ff7f04',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffb76b), color-stop(0%, #ffa73d), color-stop(49%, #ff7c00), color-stop(100%, #ff7f04)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #ffb76b 0%, #ffa73d 0%, #ff7c00 49%, #ff7f04 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffb76b', endColorstr='#ff7f04', GradientType=0); + /* IE6-9 */ margin-left: -6px; } .mini-slider-control[data-value="2"] .ui-slider-handle { background: #bfd255; - background: -moz-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,#bfd255),color-stop(79%,#8eb92a),color-stop(100%,#72aa00),color-stop(100%,#9ecb2d)); - background: -webkit-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -o-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: -ms-linear-gradient(top,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - background: linear-gradient(to bottom,#bfd255 0%,#8eb92a 79%,#72aa00 100%,#9ecb2d 100%); - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bfd255',endColorstr='#9ecb2d',GradientType=0); + /* Old browsers */ + background: -moz-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* FF3.6+ */ + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #bfd255), color-stop(79%, #8eb92a), color-stop(100%, #72aa00), color-stop(100%, #9ecb2d)); + /* Chrome,Safari4+ */ + background: -webkit-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* Chrome10+,Safari5.1+ */ + background: -o-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* Opera 11.10+ */ + background: -ms-linear-gradient(top, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* IE10+ */ + background: linear-gradient(to bottom, #bfd255 0%, #8eb92a 79%, #72aa00 100%, #9ecb2d 100%); + /* W3C */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#bfd255', endColorstr='#9ecb2d', GradientType=0); + /* IE6-9 */ margin-left: -13px; } .ModulemanagerSettings .moduleblock .hiden { @@ -3335,10 +3508,13 @@ th { th { padding: 6px; } +/******************************************* +********** CustomerPortal styles start ******** +********************************************/ .cp-tabs .enabledModules { display: inline-block ! important; - margin-left: 4px !important; - margin-right: 4px !important; + margin-left: 4px!important; + margin-right: 4px!important; vertical-align: top; } .drag-portal-module { @@ -3445,7 +3621,7 @@ th { margin-left: 5px; } .portal-field-delete { - margin-left: 45px !important; + margin-left: 45px!important; } .portalModuleRow { border-left: 4px solid #2ECC71 !important; @@ -3462,7 +3638,7 @@ th { content: "*"; color: red; } -.nav-tabs .cp-modules > .active >a, +.nav-tabs .cp-modules > .active > a, .nav-tabs .cp-modules > .active > a:hover { border: 0px !important; border-top-right-radius: 0px; @@ -3624,7 +3800,7 @@ th { display: inline-block; } .quickPreview .updates_timeline:before { - background: #e6e6e6; + background: #e5e5e5; width: 2px; margin-left: -1%; } @@ -3639,13 +3815,16 @@ th { .quickPreviewComments .recentComments .commentDetails .comment { line-height: 15px; } -.quickPreviewComments .summaryWidgetContainer { +.quickPreviewComments .summaryWidgetContainer { border: 0; padding: 0; } .quickPreview .recentActivitiesContainer .history { padding: 0; } +/******************************************* +********** Calendar view styles ************ +********************************************/ .calendar-sidebar { width: 100% !important; } @@ -3802,6 +3981,11 @@ th { display: inline-block; text-align: center; } +/******************************************* +********** Calendar view styles end ******** + +********** Documents Module styles ********* +********************************************/ .dragdrop-dotted { border: 2px dashed #C0C0C0; min-width: 300px; @@ -3861,13 +4045,16 @@ tr.file > td.fileOwnerData { width: 100px; white-space: pre-wrap; } +/******************************************* +********** Documents Module styles end ***** +********************************************/ .engagementsContainer .engagements_content { padding-top: 15px; } .summaryWidgetContainer .engagementsContainer table { width: inherit; } -.engagements_content table thead>tr:first-child { +.engagements_content table thead > tr:first-child { border: 1px solid #CCC; background-color: #F5F5F5; } @@ -3918,6 +4105,9 @@ tr.file > td.fileOwnerData { font-size: 15px; padding: 1% 0; } +/******************************************* +********** Mailroom view styles start ******** +********************************************/ .mailroomBanner { margin: 23px 0; height: 215px; @@ -4126,6 +4316,7 @@ tr.file > td.fileOwnerData { margin-left: 0; } .mentionMessages .mention_follow_up { + /*//load this color from variable.less*/ background-color: green; } .modelContainer .modal-content { @@ -4274,6 +4465,7 @@ form[name="notification_settings"] .select2-choice { margin-left: 0; } .mentionMessages .mention_follow_up { + /*//load this color from variable.less*/ background-color: green; } .modal-content .mention_followup .row { @@ -4305,6 +4497,9 @@ form[name="notification_settings"] .select2-choice { .mentionMessageHeader .MultiFile-remove { color: #FFFFFF; } +/******************************************* +********** Mailroom view styles end ******** +********************************************/ .detailview-header { margin-bottom: 10px; } @@ -4320,6 +4515,7 @@ form[name="notification_settings"] .select2-choice { margin: 0px 10px; text-decoration: underline !important; color: #3498DB; + /*font-size : 12px;*/ } .tag { display: inline-block; @@ -4403,11 +4599,11 @@ form[name="notification_settings"] .select2-choice { border: 1px solid #dcdcdc; } #tagCloud .tag { - color: #5ea9dd; padding: 0px; background-color: #FFFFFF; border-color: #FFFFFF; border-radius: 0px; + color: #5ea9dd; margin: 3px; } #tagCloud .tag[data-type="public"] { @@ -4418,6 +4614,9 @@ form[name="notification_settings"] .select2-choice { max-width: 80px; vertical-align: bottom; } +/******************************************* +********** Groups view styles ******** +********************************************/ #s2id_memberList li > div, .groupMembersColors li > div { margin-left: 10px; @@ -4492,6 +4691,12 @@ form[name="notification_settings"] .select2-choice { margin: 0px; color: #444444; } +/******************************************* +********** Groups view styles ends******** +********************************************/ +/******************************************* +********** Picklist Css ******** +********************************************/ .pickListValue { background-color: #FFFFFF; } @@ -4506,6 +4711,12 @@ form[name="notification_settings"] .select2-choice { padding: 2px 1px !important; line-height: 15px; } +/******************************************* +************* Dashboard Styles ************* +********************************************/ +li.dashboardWidget { + overflow: hidden; +} .dashboardWidgetHeader .title { padding-bottom: 10px; font-size: 15px; @@ -4526,9 +4737,6 @@ form[name="notification_settings"] .select2-choice { .dashBoardContainer .tabContainer .tab-content { margin-top: 10px; } -.dashBoardContainer .dashBoardTabContents ul { - margin: 0; -} .dashBoardContainer .dashBoardTabContents ul li { border: 3px solid #E2E2E4; box-shadow: 1px; @@ -4595,7 +4803,7 @@ form[name="notification_settings"] .select2-choice { display: inline-block; opacity: 1; } -.dashBoardContainer .tabContainer li a .deleteTab:hover { +.dashBoardContainer .tabContainer li a .deleteTab:hover { cursor: pointer; } #minilistWizardContainer .fieldLabel { @@ -4632,6 +4840,9 @@ form[name="notification_settings"] .select2-choice { resize: none; width: 100%; } +/******************************************* +********** Picklist DependencyGraph ******** +********************************************/ #dependencyGraph .tableHeading { text-align: center; padding-top: 30px; @@ -4657,6 +4868,9 @@ form[name="notification_settings"] .select2-choice { #dependencyGraph .dependencyMapping .pickListDependencyTable .selectedCell { background: #a9cbf5; } +/******************************************* +********** Rewriting select2 for consistency******** +********************************************/ .select2-container .select2-choice { height: 29px; border-radius: 1px; @@ -4750,6 +4964,7 @@ hr { position: fixed; bottom: 0; background: #EFEFEF; + /*width:100%;*/ border-left: 42px solid #2c3b49; height: 60px; left: 0; @@ -4768,7 +4983,6 @@ hr { } .settingsPageDiv .modal-overlay-footer { margin-left: 230px; - border-left: 0px solid; } .settingsOverlayContainer .modal-overlay-footer { margin: 0; @@ -4791,14 +5005,14 @@ hr { vertical-align: middle; margin-top: 6px; } -.list-menu-content .pull-right>.dropdown-menu { +.list-menu-content .pull-right > .dropdown-menu { left: -126px; position: relative; } -.dropdown-menu>li>a { +.dropdown-menu > li > a { padding: 4px 6px; } -.dropdown-menu>li>a span i { +.dropdown-menu > li > a span i { font-size: 15px; vertical-align: middle; } @@ -4806,11 +5020,11 @@ hr { max-height: 300px; padding-left: 0; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container { margin-right: 0; padding: 4px 6px; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container>li>a { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container > li > a { display: block; padding: 3px 5px; clear: both; @@ -4819,7 +5033,7 @@ hr { color: #333; white-space: nowrap; } -.related-tabs .dropdown-menu>.mCustomScrollBox>.mCSB_container span i { +.related-tabs .dropdown-menu > .mCustomScrollBox > .mCSB_container span i { font-size: 15px; vertical-align: middle; } @@ -4842,16 +5056,16 @@ hr { .calendar-sidebar .calendar-sidebar-tabs.padding { padding-left: 20px !important; } -.related-tabs.row .nav>li { +.related-tabs.row .nav > li { padding: 0 10px; margin: 0 2px; } -.massEditTabs.nav>li { +.massEditTabs.nav > li { padding: 0 10px; margin: 0 4px; } -.row .nav>li>a, -.row .nav>li>a:hover { +.row .nav > li > a, +.row .nav > li > a:hover { padding: 10px 3px; border: none; vertical-align: bottom; @@ -4861,38 +5075,39 @@ hr { -webkit-box-sizing: border-box; -o-box-sizing: border-box; } -.row .nav>li>a:hover { +.row .nav > li > a:hover { border-bottom-color: #555; } -TN-34230 - -.row .nav>li>a:hover { +/*.row ul{ + padding:0; +}*/ +TN-34230 .row .nav > li > a:hover { border-bottom-color: #555; background: none; } .row ul li:first-child { margin-left: 0; } -.related-tabs .nav-tabs>li.active, -.related-tabs .nav-tabs>li:hover, -.related-tabs .nav-tabs>li.active:focus, -.dashBoardContainer .nav-tabs>li.active, -.dashBoardContainer .nav-tabs>li:hover, -.dashBoardContainer .nav-tabs>li.active:focus, -.contents.tabbable .nav-tabs>li.active, -.contents.tabbable .nav-tabs>li:hover, -.contents.tabbable .nav-tabs>li.active:focus { +.related-tabs .nav-tabs > li.active, +.dashBoardContainer .nav-tabs > li.active, +.contents.tabbable .nav-tabs > li.active, +.related-tabs .nav-tabs > li:hover, +.dashBoardContainer .nav-tabs > li:hover, +.contents.tabbable .nav-tabs > li:hover, +.related-tabs .nav-tabs > li.active:focus, +.dashBoardContainer .nav-tabs > li.active:focus, +.contents.tabbable .nav-tabs > li.active:focus { border: none; border-bottom: 3px solid #555; } -.nav-tabs>li.active>a, -.nav-tabs>li.active>a:hover, -.nav-tabs>li.active>a:focus, -.nav-tabs>li>a { +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus, +.nav-tabs > li > a { border: 0; } -.nav>li>a:hover, -.nav>li>a:focus { +.nav > li > a:hover, +.nav > li > a:focus { background-color: #FFFFFF; } .fa-pencil, @@ -4902,6 +5117,9 @@ TN-34230 .commentAttachmentName { font-size: 11px; } +/******************************************* +********** Layout Editor ******** +********************************************/ .marginBottom10px { margin-bottom: 10px; } @@ -4924,6 +5142,7 @@ TN-34230 } .zeroOpacity { opacity: 0; + /*for IE*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=0); } @@ -4950,10 +5169,12 @@ TN-34230 .layoutContent .opacity:hover .actions { opacity: 1; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + /*for IE*/ filter: alpha(opacity=100); } .layoutContent .fieldPropertyContainer:hover .actions { opacity: 1; + /*for IE*/ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter: alpha(opacity=100); } @@ -4976,6 +5197,7 @@ TN-34230 .relatedTabModulesList .addButton { border-radius: 2px; border: 1px solid #DDDDDD; + text-transform: uppercase; color: #666666; background: #FFFFFF; } @@ -5049,6 +5271,9 @@ TN-34230 margin-left: 5px; word-break: break-all; } +/******************************************* +************** Tax Management ************** +********************************************/ #TaxCalculationsContainer .table tr:first-child, .taxModalContainer #editTax .table tr:first-child { border-bottom: 1px solid #ccc; @@ -5088,6 +5313,9 @@ TN-34230 max-height: 500px; overflow-y: auto; } +/******************************************* +********** Workflows ******** +********************************************/ #workflow_edit .editViewBody { overflow: inherit; } @@ -5097,7 +5325,7 @@ TN-34230 } .timePicker { width: 9.5em !important; - z-index: 1101 !important; + z-index: 1070 !important; } .weekDaySelect .ui-state-default { background: inherit; @@ -5135,75 +5363,6 @@ TN-34230 .module-filters.active { background: #F7F7F7; } -.payment-type-selection { - margin-bottom: 30px; -} -.payment-type-selection img { - vertical-align: middle; -} -.currplan { - padding: 10px 20px; - background-color: #f3f3f3; - border: 1px solid #eee; - border-radius: 3px; -} -.currplan div { - display: inline-block; - font-size: 16px; -} -.planName { - display: inline-block; - color: #fff; - padding: 20px; - margin: 10px 20px; - font-size: 24px; - border-radius: 2px; -} -.plan-heading { - min-height: 168px; -} -.plan-title { - color: #fff; - font-size: 20px; - padding: 13px 0; -} -#sales_plan { - background: #3FC380; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#salespremium_plan { - background: #00B16A; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#support_plan { - background: #2980B9; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#supportpremium_plan { - background: #2980B9; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#ultimate_plan, -#exclusive_plan { - background: #F39C12; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} -#contact_plan { - background: #FF5959; - font-size: x-large; - text-shadow: 1px 0 2px #555555; - color: #fff; -} .workflowListContainer .select2-container .select2-choice { height: 36px; } @@ -5218,6 +5377,7 @@ TN-34230 .contactAdd { border: 1px solid #eee; padding: 20px; + /*min-height: 310px !important;*/ } #subDetails table td { padding: 7px 10px; @@ -5340,9 +5500,9 @@ TN-34230 .productBundles { padding-left: 20px; } -.nav .open>a, -.nav .open>a:hover, -.nav .open>a:focus { +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { color: #000000; background-color: #FFFFFF; } @@ -5363,6 +5523,9 @@ TN-34230 width: 100%; overflow-x: auto; } +/******************************************* +*************** Mail Manager *************** +********************************************/ #mm_searchButton { height: 28px; background-color: #FFFFFF; @@ -5418,8 +5581,8 @@ TN-34230 padding: 1px 5px; border-radius: 3px; text-align: center; - text-shadow: 0 1px rgba(0,0,0,0.1); - background-image: -webkit-linear-gradient(top,#DD4B39 0,#D14836 100%); + text-shadow: 0 1px rgba(0, 0, 0, 0.1); + background-image: -webkit-linear-gradient(top, #DD4B39 0, #D14836 100%); border: 1px solid #C6322A; background-color: #DD4B39; } @@ -5637,6 +5800,7 @@ TN-34230 .width40per { width: 40%; } +/****** Mail Manager Ends ******/ .quickCreateContent .massEditTable textarea, .addCommentBlock .commentTextArea textarea { resize: vertical; @@ -5649,19 +5813,20 @@ TN-34230 .select2-container-multi .select2-choices { z-index: 1; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a:hover { +/****** Customer Portal Settings ******/ +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a:hover { background-color: #fff; } -.cp-nav-header-wrapper>li.disabled>a:hover { +.cp-nav-header-wrapper > li.disabled > a:hover { border: 0px ! important; } -.nav .nav-stacks .cp-nav-header-wrapper>li.disabled>a { +.nav .nav-stacks .cp-nav-header-wrapper > li.disabled > a { background-color: #fff; } -#portalModulesTable>li.portalModuleRow.active>a:hover { +#portalModulesTable > li.portalModuleRow.active > a:hover { background-color: #fff !important; } -#portalModulesTable>li.portalModuleRow.active>a:focus { +#portalModulesTable > li.portalModuleRow.active > a:focus { background-color: #fff !important; } .portal-dashboard { @@ -5760,7 +5925,7 @@ TN-34230 .portal-dashboard { border-bottom: 0px ! important; } -#portal-shortcutsContainer>ul { +#portal-shortcutsContainer > ul { border-bottom: 0px ! important; } .portalMenuHeader { @@ -5769,14 +5934,15 @@ TN-34230 } .cp-tabs .enabledModules { display: inline-block ! important; - margin-left: 4px !important; - margin-right: 4px !important; + margin-left: 4px!important; + margin-right: 4px!important; vertical-align: top; margin-top: 4px !important; } .portal-shortcut-list:hover { border-bottom: 3px solid transparent ! important; } +/****** Customer Portal Settings ******/ .label-radio label input[type="radio"] { position: relative; top: 2px; @@ -5788,6 +5954,9 @@ TN-34230 div.tooltip-inner { max-width: 400px; } +/******************************************* +********** Menu Editor ******** +********************************************/ .sortable.appContainer.ui-sortable { width: 160px; } @@ -5962,7 +6131,7 @@ div.tooltip-inner { width: 13px !important; margin-top: 8px; } -.detailview-table .input-group-addon+.inputElement.form-control, +.detailview-table .input-group-addon + .inputElement.form-control, .detailview-table .inputElement.form-control.input-medium { width: 100%; } @@ -6009,6 +6178,7 @@ div.tooltip-inner { float: left; margin-right: 5px; } +/***** Oursites Changes *****/ .portal-table .table-actions { width: inherit ! important; } @@ -6020,6 +6190,7 @@ div.tooltip-inner { padding: 10px 5px ! important; padding-left: 10px ! important; } +/***** Oursites Changes *****/ .ExtensionscontentsDiv .content-area { padding-left: 15px; padding-right: 15px; @@ -6033,14 +6204,14 @@ div.tooltip-inner { } .blockHeader { border-color: #F3F3F4 #F3F3F4 #cbcbcf; - border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); background-color: #474747; - background-image: -moz-linear-gradient(top,#555555,#333333); - background-image: -ms-linear-gradient(top,#555555,#333333); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#555555),to(#333333)); - background-image: -webkit-linear-gradient(top,#555555,#333333); - background-image: -o-linear-gradient(top,#555555,#333333); - background-image: linear-gradient(top,#555555,#333333); + background-image: -moz-linear-gradient(top, #555555, #333333); + background-image: -ms-linear-gradient(top, #555555, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); + background-image: -webkit-linear-gradient(top, #555555, #333333); + background-image: -o-linear-gradient(top, #555555, #333333); + background-image: linear-gradient(top, #555555, #333333); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333', GradientType=0); min-height: 30px; @@ -6133,8 +6304,8 @@ div.tooltip-inner { .markStar .starredStatus { display: none; } -.nav>li.addDashboardTab>a, -.nav>li.addDashboardTab>a:hover { +.nav > li.addDashboardTab > a, +.nav > li.addDashboardTab > a:hover { padding: 10px 15px; background: inherit; } @@ -6147,7 +6318,7 @@ div.tooltip-inner { height: 960px; width: 1260px; } -.nav-tabs>li { +.nav-tabs > li { border-bottom: 3px solid transparent; margin: 0 2px; } @@ -6225,16 +6396,14 @@ div.tooltip-inner { } .select2-container.select2-container-multi.select2, .editViewPageDiv .select2-container.select2-container-multi.select2 { - height: auto !important; + height: auto!important; } -.summaryViewFields .select2-container-multi.inputElement.form-control -.quickCreateContent .select2-container.select2-container-multi.select2, +.summaryViewFields .select2-container-multi.inputElement.form-control .quickCreateContent .select2-container.select2-container-multi.select2, #massEditContainer .select2-container.select2-container-multi.select2 { width: 150px; height: auto !important; } -.summaryViewFields .select2-container-multi.inputElement.form-control -.quickCreateContent .select2-container.select2-container-multi.select2 .input-save-wrap, +.summaryViewFields .select2-container-multi.inputElement.form-control .quickCreateContent .select2-container.select2-container-multi.select2 .input-save-wrap, #massEditContainer .select2-container.select2-container-multi.select2 .input-save-wrap { float: right; margin-right: 25px; @@ -6330,6 +6499,7 @@ a.cp-modules:hover { #RestrictionsLayout { background: #fafafb; margin-top: -92px; + /*to adjust with page padding top*/ } #RestrictionsLayout .vtImage { width: 22%; @@ -6363,6 +6533,7 @@ a.cp-modules:hover { .datepicker { z-index: 1100 !important; } +/*****RSS Changes****/ .feedListContainer .listview-table tr td:first-child, .listview-table tr th:first-child { width: inherit ! important; @@ -6370,12 +6541,14 @@ a.cp-modules:hover { .feedListContainer .listViewEntries .listViewEntryValue { max-width: inherit ! important; } -.ps-container>.ps-scrollbar-y-rail { +/*****RSS Changes****/ +.ps-container > .ps-scrollbar-y-rail { z-index: 1002; } #relationBlock .recordScroll { max-height: 150px; } +/*Start - List sidebar toggle*/ .essentials-toggle { background-color: white; font-weight: bold; @@ -6395,6 +6568,7 @@ a.cp-modules:hover { .essentials-toggle .fa-chevron-right { background-position: -460px -72px !important; } +/*End - List essentials toggle*/ .module-name-tooltip .qtip-content { font-size: 12px; padding: 3px; @@ -6403,23 +6577,6 @@ a.cp-modules:hover { .module-name-tooltip { padding: 3px; } -.main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, -.main-container-Reports .module-nav { - width: 0; -} -.main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, -.main-container-Reports .sidebar-essentials { - width: 283px; - left: 0; -} -.main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { - padding-left: 0px !important; -} .main-container-MailManager .module-nav { width: 230px; } @@ -6478,8 +6635,8 @@ li.select2-search-choice div { .popover ul.listmenu li { padding: 3px; } -.popover-content .disabled>a, -.popover .disabled>a { +.popover-content .disabled > a, +.popover .disabled > a { opacity: 0.5; cursor: not-allowed; } @@ -6490,6 +6647,7 @@ li.select2-search-choice div { -o-transform: rotate(180deg); transform: rotate(180deg); } +/*Start - List sidebar toggle*/ .essentials-toggle { background-color: white; font-weight: bold; @@ -6509,6 +6667,7 @@ li.select2-search-choice div { .essentials-toggle .fa-chevron-right { background-position: -460px -72px !important; } +/*End - List essentials toggle*/ .module-name-tooltip .qtip-content { font-size: 12px; padding: 3px; @@ -6520,25 +6679,20 @@ li.select2-search-choice div { border-left: 1px solid #DDDDDD; } .main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, .main-container-Reports .module-nav { width: 0; } .main-container-Documents .mod-switcher-container, -.main-container-RecycleBin .mod-switcher-container, .main-container-Reports .mod-switcher-container { width: 0; } .main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, .main-container-Reports .sidebar-essentials { width: 283px; left: 0; } .main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { +.main-container-Reports .full-width { padding-left: 0px !important; } .listViewPageDiv .ps-scrollbar-x-rail { @@ -6589,16 +6743,16 @@ li.select2-search-choice div { #reportDetails .pivot .toptitle.targetY0, #reportDetails .pivot .lefttitle.targetX0 { border-color: #F3F3F4 #F3F3F4 #cbcbcf; - border-color: rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25); + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); background-color: #474747; - background-image: -moz-linear-gradient(top,#555555,#333333); - background-image: -ms-linear-gradient(top,#555555,#333333); - background-image: -webkit-gradient(linear,0 0,0 100%,from(#555555),to(#333333)); - background-image: -webkit-linear-gradient(top,#555555,#333333); - background-image: -o-linear-gradient(top,#555555,#333333); - background-image: linear-gradient(top,#555555,#333333); + background-image: -moz-linear-gradient(top, #555555, #333333); + background-image: -ms-linear-gradient(top, #555555, #333333); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#333333)); + background-image: -webkit-linear-gradient(top, #555555, #333333); + background-image: -o-linear-gradient(top, #555555, #333333); + background-image: linear-gradient(top, #555555, #333333); background-repeat: repeat-x; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555',endColorstr='#333333',GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#333333', GradientType=0); min-height: 30px; } #reportDetails .pivot th.toptitle.targetY0, @@ -6640,7 +6794,8 @@ li.select2-search-choice div { background: #FFFFFF; } .templateActions { - background: rgba(0,0,0,0.1); + background: rgba(0, 0, 0, 0.1); + /*padding: 4%;*/ bottom: 0; text-align: center; position: absolute; @@ -6648,6 +6803,9 @@ li.select2-search-choice div { zoom: 1; width: 100%; } +/*.templateActions i { + margin-right: 30px; +}*/ .thumbnails > li { float: left; height: 315px !important; @@ -6822,9 +6980,10 @@ a.btnReport:hover { left: 0px; } .bx-wrapper .bx-viewport { - width:99%; + width: 99%; left: 0px; background: #fff; + /*fix other elements on the page moving (on Chrome)*/ -webkit-transform: translatez(0); -moz-transform: translatez(0); -ms-transform: translatez(0); @@ -6882,7 +7041,7 @@ a.btnReport:hover { .filter-search-show { display: block !important; } -.emailTemplatesPopupTableContainer .listViewEntries .listViewEntryValue { +.emailTemplatesPopupTableContainer .listViewEntries .listViewEntryValue { max-width: 100%; min-width: 150px; } @@ -6917,12 +7076,15 @@ input:focus::-webkit-input-placeholder { input:focus:-moz-placeholder { color: transparent; } +/* FF 4-18 */ input:focus::-moz-placeholder { color: transparent; } +/* FF 19+ */ input:focus:-ms-input-placeholder { color: transparent; } +/* IE 10+ */ .global-actions .dropdown-menu:before { position: absolute; top: -7px; @@ -6931,7 +7093,7 @@ input:focus:-ms-input-placeholder { border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-left: 7px solid transparent; - border-bottom-color: rgba(0,0,0,0.2); + border-bottom-color: rgba(0, 0, 0, 0.2); content: ''; } .global-actions .dropdown-menu:after { @@ -7116,6 +7278,7 @@ input:focus:-ms-input-placeholder { text-align: center; } #OnBoardLayout #OnBoardPageContainer .crmGoals textarea::-webkit-input-placeholder { + /* WebKit browsers */ text-align: center; padding: 20%; font-size: 12px; @@ -7257,31 +7420,6 @@ input:focus:-ms-input-placeholder { .importServiceSelectionContainer .app-item { text-align: center; } -.fieldValue .value a { - color: #15c !important; -} -.editViewContents .fieldLabel { - min-width: 100px; - width: 20%; - word-break: break-all; -} -.editViewContents .fieldValue { - width:30%; -} -.editViewContents td.fieldValue[colspan="3"] { - width:80%; -} -.editViewContents textarea.textAreaElement { - width: 88%; -} -.editViewContents input[type="checkbox"] { - width: 15px; - height: 15px; -} -.editViewContents input[type="radio"] { - width: 15px; - height: 15px; -} #composeEmailContainer .modal-body .quickCreateContent, #QuickCreate .modal-body .quickCreateContent, #create .quickCreateContent { @@ -7293,4 +7431,90 @@ input:focus:-ms-input-placeholder { } .settingsgroup-panel .widgetContainer .menuItemLabel:hover .pinUnpinShortCut { display: inline-block; -} \ No newline at end of file +} +@-moz-document url-prefix() { + .duplicateHandlingContainer .tooltip-inner { + width: 550px; + max-width: 550px; + } +} +.duplicateHandlingContainer .tooltip-inner { + text-align: left !important; +} +.duplicateHandlingContainer .syncMessage { + margin-top: 5px !important; +} +.duplicateHandlingContainer .actionsList { + width: 230px !important; +} +.duplicationMessageContainer { + background-color: #f2dede !important; + color: #b94a48 !important; +} +.duplicationMessageContainer .duplicationMessageHeader { + margin-bottom: 8px; +} +.listViewRecordActions .quickView, +.listViewRecordActions .markStar, +.listViewRecordActions .markAsHeld, +.listViewRecordActions .holdFollowupOn { + margin-top: 4px; +} +.app-menu .module-icon .custom-module { + font-size: 14px; + border-radius: 4px; + color: #000; + background-color: #FFFFFF; + padding: 4px 10px 4px 5px !important; +} +.menu-item .custom-module { + font-family: 'OpenSans-Regular', sans-serif; + font-size: 12px; + border-radius: 4px; + padding: 2px; + color: #000; + background-color: #FFFFFF; +} +.modules-menu .custom-module { + color: #FFFFFF; + margin-left: 0px; + display: inline; + border: 1px solid #FFFFFF; + border-radius: 4px; + padding: 3px 4px 3px 2px !important; + font-weight: bold; +} +#quickCreateModules .custom-module, +.workflowListContainer .custom-module, +.dashBoardTabContents .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #FFFFFF; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #000000; + background-color: #FFFFFF; +} +.task-details .custom-module { + border-radius: 4px; + padding: 1px 4px; + color: #FFFFFF; + background-color: #777; +} +.related-tabs .custom-module, +#relatedmenuList .custom-module { + border-radius: 4px; + color: #FFFFFF; + background-color: #777; + padding: 5px 7px; + font-weight: bold; +} +.record-header .custom-module { + font-size: 30px; +} +.moduleIcon .custom-module { + font-weight: bold; +} diff --git a/layouts/v7/skins/vtiger/style.less b/layouts/v7/skins/vtiger/style.less index 1e320a8fa8697beb413dbc6ecafe1f9fae4c6076..2703b8fd543a74d143eb9e99cb6d42eb6c20e3ae 100644 --- a/layouts/v7/skins/vtiger/style.less +++ b/layouts/v7/skins/vtiger/style.less @@ -238,8 +238,8 @@ body{ } .company-logo img{ - height: 100%; - width: auto; + max-height: 100%; + max-width: 100%; } .navbar .fa{ @@ -453,6 +453,10 @@ body{ background: @project_app !important; } +.app-TOOLS { + background: @marketing_app !important; +} + .app-DEFAULT, .app-DASHBOARD { background: @default_app !important; } @@ -604,6 +608,11 @@ a.menu-item:hover{ .app-item-color-PROJECT { border-left: 4px solid @project_app; } + +.app-item-color-TOOLS { + border-left: 4px solid @marketing_app; +} + .app-item .fa{ font-size: 1.5em; -webkit-transition: all 0.25s ease-in; @@ -871,6 +880,12 @@ a.menu-item:hover{ pointer-events: none; } +.input-group.percentage-input-group { + .form-control { + width: 100% !important; + } +} + //Horizontal scroll .bottomscroll-div,.topscroll-div { display: table; @@ -884,6 +899,10 @@ a.menu-item:hover{ .fieldValue .value{ max-width:85%; //for every field values display:inline-block; + word-break: break-word; + a { + color: #15c !important; + } } .modal-header button.close{ @@ -1224,7 +1243,6 @@ input[type="password"].inputElement{ background-color: @white; border: 1px solid @lightColorBorder; margin:5px 0 10px; - color: #ccc; padding: 5px 10px; } .search-folders:focus, @@ -1622,8 +1640,8 @@ ul.unstyled{ } .listViewEntries .relatedListEntryValues .value{ vertical-align: middle; - width: 80%; - display: inline-block; + width: 80%; + display: inline-block; } .floatThead-table{ @@ -1632,7 +1650,7 @@ ul.unstyled{ .listview-table-norecords .table-actions, .listview-table .table-actions{ - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -1909,7 +1927,10 @@ input[type=checkbox]:checked{ **********************************/ .detailViewButtoncontainer{ - padding-top:5px; + padding-top:5px; +} +.detailViewButtoncontainer button.btn { + margin: 0px 1px !important; } .detailview-header .recordBasicInfo > .info-row{ margin-bottom: 4px; @@ -2007,6 +2028,9 @@ strong, b, th{ margin-top: 3%; margin-right: 2%; } +.overlayDetailHeader button.btn { + margin: 0px 1px !important; +} //detail view header edit end @@ -2617,6 +2641,25 @@ strong, b, th{ width:208px; float:left; } + .fieldLabel { + min-width: 100px; + width: 20%; + word-break: break-all; + } + .fieldValue { + width:30%; + } + td.fieldValue[colspan="3"] { + width:80%; + } + textarea.textAreaElement { + width: 88%; + } + input[type="checkbox"], + input[type="radio"] { + width: 15px; + height: 15px; + } } .input-group.inputElement .input-group-addon{ border:none; @@ -3162,6 +3205,9 @@ strong, b, th{ .active .stepNum{ color: @white; } +.mailBoxEditDiv .crumbs li { + width: 22%; +} .stepNum{ display: inline-block; padding: 0 5px; @@ -5112,6 +5158,7 @@ form[name="notification_settings"] .select2-choice { } #tagCloud { .tag { + padding: 0px; background-color: @white; border-color: @white; border-radius: 0px; @@ -5241,6 +5288,9 @@ form[name="notification_settings"] .select2-choice { /******************************************* ************* Dashboard Styles ************* ********************************************/ +li.dashboardWidget { + overflow: hidden; +} .dashboardWidgetHeader .title{ padding-bottom: 10px; @@ -5434,7 +5484,7 @@ form[name="notification_settings"] .select2-choice { border-radius: 1px; } .modal { - z-index:1070; + z-index:1100; } .select2-container .select2-choice { height:28px; @@ -7345,23 +7395,6 @@ a.cp-modules:hover{ padding: 3px; } -.main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, -.main-container-Reports .module-nav { - width: 0; -} -.main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, -.main-container-Reports .sidebar-essentials { - width: 283px; - left: 0; -} -.main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { - padding-left: 0px !important; -} .main-container-MailManager .module-nav { width: 230px; } @@ -7479,25 +7512,20 @@ li.select2-search-choice div{ border-left: 1px solid @lightColorBorder; } .main-container-Documents .module-nav, -.main-container-RecycleBin .module-nav, .main-container-Reports .module-nav { width: 0; } .main-container-Documents .mod-switcher-container, -.main-container-RecycleBin .mod-switcher-container, .main-container-Reports .mod-switcher-container { width: 0; } .main-container-Documents .sidebar-essentials, -.main-container-RecycleBin .sidebar-essentials, .main-container-Reports .sidebar-essentials { width: 283px; left: 0; } .main-container-Documents .full-width, -.main-container-RecycleBin .full-width, -.main-container-Reports .full-width, -.main-container-Portal .full-width { +.main-container-Reports .full-width { padding-left: 0px !important; } @@ -8323,3 +8351,103 @@ input:focus:-ms-input-placeholder { color:transparent; } /* IE 10+ */ .importServiceSelectionContainer .app-item { text-align: center; } +#composeEmailContainer .modal-body, +#QuickCreate .modal-body, +#create { + .quickCreateContent { + margin-top: 25px; + } +} +.settingsgroup-panel .widgetContainer .menuItemLabel .pinUnpinShortCut { + display: none; + margin-top: 2px; +} +.settingsgroup-panel .widgetContainer .menuItemLabel:hover .pinUnpinShortCut { + display: inline-block; +} +@-moz-document url-prefix() { + .duplicateHandlingContainer .tooltip-inner { + width: 550px; + max-width: 550px; + } +} +.duplicateHandlingContainer{ + .tooltip-inner { + text-align: left !important; + } + .syncMessage { + margin-top: 5px !important; + } + .actionsList { + width: 230px !important; + } +} +.duplicationMessageContainer { + background-color: #f2dede !important; + color: #b94a48 !important; + .duplicationMessageHeader { + margin-bottom: 8px; + } +} +.listViewRecordActions .quickView, .listViewRecordActions .markStar, +.listViewRecordActions .markAsHeld,.listViewRecordActions .holdFollowupOn { + margin-top: 4px; +} +.app-menu .module-icon .custom-module { + font-size: 14px; + border-radius: 4px; + color: #000; + background-color: @white; + padding: 4px 10px 4px 5px !important +} +.menu-item .custom-module { + font-family: 'OpenSans-Regular', sans-serif; + font-size: 12px; + border-radius: 4px; + padding: 2px; + color: #000; + background-color: @white; +} +.modules-menu .custom-module { + color: @white; + margin-left: 0px; + display: inline; + border: 1px solid @white; + border-radius: 4px; + padding: 3px 4px 3px 2px !important; + font-weight: bold; +} +#quickCreateModules .custom-module, +.workflowListContainer .custom-module, +.dashBoardTabContents .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: @white; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: @black; + background-color: @white; +} +.task-details .custom-module { + border-radius: 4px; + padding: 1px 4px; + color: @white; + background-color: #777; +} +.related-tabs .custom-module, +#relatedmenuList .custom-module { + border-radius: 4px; + color: @white; + background-color: #777; + padding: 5px 7px; + font-weight: bold; +} +.record-header .custom-module { + font-size: 30px; +} +.moduleIcon .custom-module { + font-weight: bold; +} diff --git a/libraries/freetag/freetag.class.php b/libraries/freetag/freetag.class.php index 566c51ecc38ccb01666ab15cb74f8ab68fd361b6..7af7d61939a520463751c37f6d4db076f83428f2 100644 --- a/libraries/freetag/freetag.class.php +++ b/libraries/freetag/freetag.class.php @@ -976,7 +976,7 @@ class freetag { ON ${prefix}freetagged_objects.module = vtiger_tab.name WHERE vtiger_tab.presence != 1 $tagger_sql - GROUP BY tag + GROUP BY tag, tag_id ORDER BY quantity DESC LIMIT 0, $max"; //echo $sql; $rs = $adb->pquery($sql, $params) or die("Syntax Error: $sql"); diff --git a/modules/Accounts/actions/TransferOwnership.php b/modules/Accounts/actions/TransferOwnership.php index 154e2a5ae5a6885c5791958cf49d77aabf12b5bc..689877ac7072b3c21acdc09c16b0fc757838a6d5 100644 --- a/modules/Accounts/actions/TransferOwnership.php +++ b/modules/Accounts/actions/TransferOwnership.php @@ -34,10 +34,14 @@ class Accounts_TransferOwnership_Action extends Vtiger_Action_Controller { array_push($relatedModuleRecordIds, $recordId); } array_merge($relatedModuleRecordIds, $recordIds); - $moduleModel->transferRecordsOwnership($transferOwnerId, $relatedModuleRecordIds); - + + $result = $moduleModel->transferRecordsOwnership($transferOwnerId, $relatedModuleRecordIds); $response = new Vtiger_Response(); - $response->setResult(true); + if ($result === true) { + $response->setResult(true); + } else { + $response->setError($result); + } $response->emit(); } diff --git a/modules/Accounts/models/Module.php b/modules/Accounts/models/Module.php index bced04aa49c9d53b095d8c479517d9c0ce4a8f06..853d5e5fca447bfd61dbd7970210ba346ba98ed1 100644 --- a/modules/Accounts/models/Module.php +++ b/modules/Accounts/models/Module.php @@ -110,6 +110,14 @@ class Accounts_Module_Model extends Vtiger_Module_Model { $nonAdminQuery = $this->getNonAdminAccessControlQueryForRelation($relatedModuleName); if ($nonAdminQuery) { $query = appendFromClauseToQuery($query, $nonAdminQuery); + + if(trim($nonAdminQuery)) { + $relModuleFocus = CRMEntity::getInstance($relatedModuleName); + $condition = $relModuleFocus->buildWhereClauseConditionForCalendar(); + if($condition) { + $query .= ' AND '.$condition; + } + } } // There could be more than one contact for an activity. @@ -162,6 +170,14 @@ class Accounts_Module_Model extends Vtiger_Module_Model { AND (vtiger_activity.status is NULL OR vtiger_activity.status NOT IN ('Completed', 'Deferred', 'Cancelled')) AND (vtiger_activity.eventstatus is NULL OR vtiger_activity.eventstatus NOT IN ('Held', 'Cancelled'))"; + if(!$currentUser->isAdminUser()) { + $moduleFocus = CRMEntity::getInstance('Calendar'); + $condition = $moduleFocus->buildWhereClauseConditionForCalendar(); + if($condition) { + $query .= ' AND '.$condition; + } + } + if ($mode === 'upcoming') { $query .= " AND CASE WHEN vtiger_activity.activitytype='Task' THEN due_date >= '$currentDate' ELSE CONCAT(due_date,' ',time_end) >= '$nowInDBFormat' END"; } elseif ($mode === 'overdue') { diff --git a/modules/Calendar/Activity.php b/modules/Calendar/Activity.php index b384cfcd944984afdb3340b61ede59e4a60539d1..545cda9389e9853eaa715e8fb60857e3c6bc1d76 100644 --- a/modules/Calendar/Activity.php +++ b/modules/Calendar/Activity.php @@ -1052,21 +1052,22 @@ function insertIntoRecurringTable(& $recurObj) $query = ' '; $tabId = getTabid($module); if($is_admin==false && $profileGlobalPermission[1] == 1 && $profileGlobalPermission[2] - == 1 && $defaultOrgSharingPermission[$tabId] == 3) { - $tableName = 'vt_tmp_u'.$user->id.'_t'.$tabId; - $sharingRuleInfoVariable = $module.'_share_read_permission'; - $sharingRuleInfo = $$sharingRuleInfoVariable; + == 1) { $sharedTabId = null; - $this->setupTemporaryTable($tableName, $sharedTabId, $user, - $current_user_parent_role_seq, $current_user_groups); - - $sharedUsers = $this->getListViewAccessibleUsers($user->id); - // we need to include group id's in $sharedUsers list to get the current user's group records - if($current_user_groups){ - $sharedUsers = $sharedUsers.','. implode(',',$current_user_groups); - } - $query = " INNER JOIN $tableName $tableName$scope ON ($tableName$scope.id = ". - "vtiger_crmentity$scope.smownerid and $tableName$scope.shared=0 and $tableName$scope.id IN ($sharedUsers)) "; + //For Events + $tableName = 'vt_tmp_u'.$user->id.'_t'.$tabId.'_events'; + $this->setupTemporaryTableForEvents($tableName, $sharedTabId, $user, + $current_user_parent_role_seq, $current_user_groups); + $query = " LEFT JOIN $tableName $tableName$scope ON ($tableName$scope.id = ". + "vtiger_crmentity$scope.smownerid AND vtiger_activity.activitytype NOT IN ('Emails', 'Task')) "; + + //For Task + $task_tableName = 'vt_tmp_u'.$user->id.'_t'.$tabId.'_task'; + $this->setupTemporaryTableForTask($task_tableName, $tabId, $user, + $current_user_parent_role_seq, $current_user_groups, $defaultOrgSharingPermission[$tabId]); + + $query .= " LEFT JOIN $task_tableName $task_tableName$scope ON ($task_tableName$scope.id = ". + "vtiger_crmentity$scope.smownerid AND vtiger_activity.activitytype = 'Task') "; } return $query; } @@ -1087,7 +1088,7 @@ function insertIntoRecurringTable(& $recurObj) return $query; } - protected function setupTemporaryTable($tableName, $tabId, $user, $parentRole, $userGroups) { + protected function setupTemporaryTableForEvents($tableName, $tabId, $user, $parentRole, $userGroups) { $module = null; if (!empty($tabId)) { $module = getTabname($tabId); @@ -1113,6 +1114,26 @@ function insertIntoRecurringTable(& $recurObj) return false; } + protected function setupTemporaryTableForTask($tableName, $tabId, $user, $parentRole, $userGroups, $sharingPermission) { + $module = null; + if (!empty($tabId)) { + $module = getTabname($tabId); + } + + if($sharingPermission == 3) { + $query = $this->getNonAdminAccessQuery($module, $user, $parentRole, $userGroups); + } else { + $query = " (SELECT $user->id as id) UNION (SELECT id FROM vtiger_users " + . "WHERE vtiger_users.deleted=0 AND vtiger_users.status='Active') " + . "UNION (SELECT groupid FROM vtiger_groups)"; + } + + $query = "CREATE TEMPORARY TABLE IF NOT EXISTS $tableName(id INT(11) PRIMARY KEY, shared ". + "int(1) DEFAULT 0) IGNORE ".$query; + $db = PearDatabase::getInstance(); + $db->pquery($query, array()); + } + protected function getListViewAccessibleUsers($sharedid) { $db = PearDatabase::getInstance();; $query = "SELECT vtiger_users.id as userid FROM vtiger_sharedcalendar @@ -1131,5 +1152,19 @@ function insertIntoRecurringTable(& $recurObj) $shared_ids = implode(",",$userid); return $shared_ids; } + + public function buildWhereClauseConditionForCalendar($scope = '') { + $userModel = Users_Record_Model::getCurrentUserModel(); + require('user_privileges/user_privileges_'.$userModel->id.'.php'); + + $query = ""; + if($profileGlobalPermission[1] == 1 && $profileGlobalPermission[2] == 1) { + $tabId = getTabid("Calendar"); + $eventTempTable = 'vt_tmp_u'.$userModel->id.'_t'.$tabId.'_events'.$scope; + $taskTempTable = 'vt_tmp_u'.$userModel->id.'_t'.$tabId.'_task'.$scope; + $query = " ($eventTempTable.shared IS NOT NULL OR $taskTempTable.shared IS NOT NULL) "; + } + return $query; + } } ?> diff --git a/modules/Calendar/actions/DragDropAjax.php b/modules/Calendar/actions/DragDropAjax.php index abea61c22b119ec74fe3f82192efb324e00e93ca..546572090cd7d291a9f7b1e875e73e13274fd393 100755 --- a/modules/Calendar/actions/DragDropAjax.php +++ b/modules/Calendar/actions/DragDropAjax.php @@ -35,102 +35,107 @@ class Calendar_DragDropAjax_Action extends Calendar_SaveAjax_Action { $actionname = 'EditView'; $response = new Vtiger_Response(); - if(isPermitted($moduleName, $actionname, $recordId) === 'no'){ - $result = array('ispermitted'=>false,'error'=>false); - $response->setResult($result); - $response->emit(); - } else { - $result = array('ispermitted'=>true,'error'=>false); - $record = Vtiger_Record_Model::getInstanceById($recordId, $moduleName); - $record->set('mode','edit'); - - $startDateTime[] = $record->get('date_start'); - $startDateTime[] = $record->get('time_start'); - $startDateTime = implode(' ',$startDateTime); - - $oldDateTime[] = $record->get('due_date'); - $oldDateTime[] = $record->get('time_end'); - $oldDateTime = implode(' ',$oldDateTime); - $resultDateTime = $this->changeDateTime($oldDateTime,$dayDelta,$minuteDelta,$secondsDelta); - $interval = strtotime($resultDateTime) - strtotime($startDateTime); - - if(!empty($recurringEditMode) && $recurringEditMode != 'current') { - $recurringRecordsList = $record->getRecurringRecordsList(); - foreach($recurringRecordsList as $parent=>$childs) { - $parentRecurringId = $parent; - $childRecords = $childs; - } - if($recurringEditMode == 'future') { - $parentKey = array_keys($childRecords, $recordId); - $childRecords = array_slice($childRecords, $parentKey[0]); - } - foreach($childRecords as $childId) { - $recordModel = Vtiger_Record_Model::getInstanceById($childId, 'Events'); - $recordModel->set('mode','edit'); + try { + if(isPermitted($moduleName, $actionname, $recordId) === 'no'){ + $result = array('ispermitted'=>false,'error'=>false); + $response->setResult($result); + } else { + $result = array('ispermitted'=>true,'error'=>false); + $record = Vtiger_Record_Model::getInstanceById($recordId, $moduleName); + $record->set('mode','edit'); - $startDateTime = ''; - $startDateTime[] = $recordModel->get('date_start'); - $startDateTime[] = $recordModel->get('time_start'); - $startDateTime = implode(' ',$startDateTime); - $dueDate = strtotime($startDateTime) + $interval; - $formatDate = date("Y-m-d H:i:s", $dueDate); - $parts = explode(' ',$formatDate); - $startDateTime = new DateTime($startDateTime); + $startDateTime[] = $record->get('date_start'); + $startDateTime[] = $record->get('time_start'); + $startDateTime = implode(' ',$startDateTime); + + $oldDateTime[] = $record->get('due_date'); + $oldDateTime[] = $record->get('time_end'); + $oldDateTime = implode(' ',$oldDateTime); + $resultDateTime = $this->changeDateTime($oldDateTime,$dayDelta,$minuteDelta,$secondsDelta); + $interval = strtotime($resultDateTime) - strtotime($startDateTime); - $recordModel->set('due_date',$parts[0]); + if(!empty($recurringEditMode) && $recurringEditMode != 'current') { + $recurringRecordsList = $record->getRecurringRecordsList(); + foreach($recurringRecordsList as $parent=>$childs) { + $parentRecurringId = $parent; + $childRecords = $childs; + } + if($recurringEditMode == 'future') { + $parentKey = array_keys($childRecords, $recordId); + $childRecords = array_slice($childRecords, $parentKey[0]); + } + foreach($childRecords as $childId) { + $recordModel = Vtiger_Record_Model::getInstanceById($childId, 'Events'); + $recordModel->set('mode','edit'); + + $startDateTime = ''; + $startDateTime[] = $recordModel->get('date_start'); + $startDateTime[] = $recordModel->get('time_start'); + $startDateTime = implode(' ',$startDateTime); + $dueDate = strtotime($startDateTime) + $interval; + $formatDate = date("Y-m-d H:i:s", $dueDate); + $parts = explode(' ',$formatDate); + $startDateTime = new DateTime($startDateTime); + + $recordModel->set('due_date',$parts[0]); + if(activitytype != 'Task') { + $recordModel->set('time_end',$parts[1]); + } + + $endDateTime = ''; + $endDateTime[] = $recordModel->get('due_date'); + $endDateTime[] = $recordModel->get('time_end'); + $endDateTime = implode(' ',$endDateTime); + $endDateTime = new DateTime($endDateTime); + + if($startDateTime <= $endDateTime) { + $this->setRecurrenceInfo($recordModel); + $recordModel->save(); + } else { + $result['error'] = true; + } + } + $result['recurringRecords'] = true; + } else { + $oldDateTime = ''; + $oldDateTime[] = $record->get('due_date'); + $oldDateTime[] = $record->get('time_end'); + $oldDateTime = implode(' ',$oldDateTime); + $resultDateTime = $this->changeDateTime($oldDateTime,$dayDelta,$minuteDelta,$secondsDelta); + $parts = explode(' ',$resultDateTime); + $record->set('due_date',$parts[0]); if(activitytype != 'Task') { - $recordModel->set('time_end',$parts[1]); + $record->set('time_end',$parts[1]); } - $endDateTime = ''; - $endDateTime[] = $recordModel->get('due_date'); - $endDateTime[] = $recordModel->get('time_end'); + $startDateTime = ''; + $startDateTime[] = $record->get('date_start'); + $startDateTime[] = $record->get('time_start'); + $startDateTime = implode(' ',$startDateTime); + $startDateTime = new DateTime($startDateTime); + + $endDateTime[] = $record->get('due_date'); + $endDateTime[] = $record->get('time_end'); $endDateTime = implode(' ',$endDateTime); $endDateTime = new DateTime($endDateTime); - + //Checking if startDateTime is less than or equal to endDateTime if($startDateTime <= $endDateTime) { - $this->setRecurrenceInfo($recordModel); - $recordModel->save(); + $this->setRecurrenceInfo($record); + $record->save(); } else { $result['error'] = true; } - } - $result['recurringRecords'] = true; - } else { - $oldDateTime = ''; - $oldDateTime[] = $record->get('due_date'); - $oldDateTime[] = $record->get('time_end'); - $oldDateTime = implode(' ',$oldDateTime); - $resultDateTime = $this->changeDateTime($oldDateTime,$dayDelta,$minuteDelta,$secondsDelta); - $parts = explode(' ',$resultDateTime); - $record->set('due_date',$parts[0]); - if(activitytype != 'Task') { - $record->set('time_end',$parts[1]); + $result['recurringRecords'] = false; } - $startDateTime = ''; - $startDateTime[] = $record->get('date_start'); - $startDateTime[] = $record->get('time_start'); - $startDateTime = implode(' ',$startDateTime); - $startDateTime = new DateTime($startDateTime); - - $endDateTime[] = $record->get('due_date'); - $endDateTime[] = $record->get('time_end'); - $endDateTime = implode(' ',$endDateTime); - $endDateTime = new DateTime($endDateTime); - //Checking if startDateTime is less than or equal to endDateTime - if($startDateTime <= $endDateTime) { - $this->setRecurrenceInfo($record); - $record->save(); - } else { - $result['error'] = true; - } - $result['recurringRecords'] = false; + $response->setResult($result); } - - $response->setResult($result); - $response->emit(); + } catch (DuplicateException $e) { + $response->setError($e->getMessage(), $e->getDuplicationMessage(), $e->getMessage()); + } catch (Exception $e) { + $response->setError($e->getMessage()); } + $response->emit(); } function setRecurrenceInfo($recordModel) { @@ -181,99 +186,103 @@ class Calendar_DragDropAjax_Action extends Calendar_SaveAjax_Action { $actionname = 'EditView'; $response = new Vtiger_Response(); - if(isPermitted($moduleName, $actionname, $recordId) === 'no'){ - $result = array('ispermitted'=>false); - $response->setResult($result); - $response->emit(); - } - else{ - $result = array('ispermitted'=>true); - $record = Vtiger_Record_Model::getInstanceById($recordId, $moduleName); - $record->set('mode','edit'); - - $oldStartDateTime[] = $record->get('date_start'); - $oldStartDateTime[] = $record->get('time_start'); - $oldStartDateTime = implode(' ',$oldStartDateTime); - $resultDateTime = $this->changeDateTime($oldStartDateTime, $dayDelta, $minuteDelta, $secondsDelta); - $startDateInterval = strtotime($resultDateTime) - strtotime($oldStartDateTime); - - $oldEndDateTime[] = $record->get('due_date'); - $oldEndDateTime[] = $record->get('time_end'); - $oldEndDateTime = implode(' ', $oldEndDateTime); - $resultDateTime = $this->changeDateTime($oldEndDateTime, $dayDelta, $minuteDelta, $secondsDelta); - $endDateInterval = strtotime($resultDateTime) - strtotime($oldEndDateTime); - - if (!empty($recurringEditMode) && $recurringEditMode != 'current') { - $recurringRecordsList = $record->getRecurringRecordsList(); - foreach ($recurringRecordsList as $parent => $childs) { - $parentRecurringId = $parent; - $childRecords = $childs; - } - if ($recurringEditMode == 'future') { - $parentKey = array_keys($childRecords, $recordId); - $childRecords = array_slice($childRecords, $parentKey[0]); - } - foreach ($childRecords as $childId) { - $recordModel = Vtiger_Record_Model::getInstanceById($childId, 'Events'); - $recordModel->set('mode', 'edit'); - - $startDateTime = ''; - $startDateTime[] = $recordModel->get('date_start'); - $startDateTime[] = $recordModel->get('time_start'); - $startDateTime = implode(' ', $startDateTime); - $startDate = strtotime($startDateTime) + $startDateInterval; - $formatStartDate = date("Y-m-d H:i:s", $startDate); - $parts = explode(' ', $formatStartDate); - $startDateTime = new DateTime($startDateTime); - - $recordModel->set('date_start', $parts[0]); - if (activitytype != 'Task') - $recordModel->set('time_start', $parts[1]); - - $endDateTime = ''; - $endDateTime[] = $recordModel->get('due_date'); - $endDateTime[] = $recordModel->get('time_end'); - $endDateTime = implode(' ', $endDateTime); - $endDate = strtotime($endDateTime) + $endDateInterval; - $formatEndDate = date("Y-m-d H:i:s", $endDate); - $endDateParts = explode(' ', $formatEndDate); - $endDateTime = new DateTime($endDateTime); - $recordModel->set('due_date', $endDateParts[0]); - if (activitytype != 'Task') - $recordModel->set('time_end', $endDateParts[1]); - - $this->setRecurrenceInfo($recordModel); - $recordModel->save(); - } - $result['recurringRecords'] = true; + try { + if(isPermitted($moduleName, $actionname, $recordId) === 'no'){ + $result = array('ispermitted'=>false); + $response->setResult($result); } else { - $oldStartDateTime = ''; + $result = array('ispermitted'=>true); + $record = Vtiger_Record_Model::getInstanceById($recordId, $moduleName); + $record->set('mode','edit'); + $oldStartDateTime[] = $record->get('date_start'); $oldStartDateTime[] = $record->get('time_start'); - $oldStartDateTime = implode(' ', $oldStartDateTime); - $resultDateTime = $this->changeDateTime($oldStartDateTime,$dayDelta,$minuteDelta,$secondsDelta); - $parts = explode(' ',$resultDateTime); - $record->set('date_start',$parts[0]); - $record->set('time_start',$parts[1]); + $oldStartDateTime = implode(' ',$oldStartDateTime); + $resultDateTime = $this->changeDateTime($oldStartDateTime, $dayDelta, $minuteDelta, $secondsDelta); + $startDateInterval = strtotime($resultDateTime) - strtotime($oldStartDateTime); - $oldEndDateTime = ''; $oldEndDateTime[] = $record->get('due_date'); $oldEndDateTime[] = $record->get('time_end'); - $oldEndDateTime = implode(' ',$oldEndDateTime); - $resultDateTime = $this->changeDateTime($oldEndDateTime,$dayDelta,$minuteDelta,$secondsDelta); - $parts = explode(' ',$resultDateTime); - $record->set('due_date',$parts[0]); - if(activitytype != 'Task') { - $record->set('time_end',$parts[1]); - } + $oldEndDateTime = implode(' ', $oldEndDateTime); + $resultDateTime = $this->changeDateTime($oldEndDateTime, $dayDelta, $minuteDelta, $secondsDelta); + $endDateInterval = strtotime($resultDateTime) - strtotime($oldEndDateTime); + + if (!empty($recurringEditMode) && $recurringEditMode != 'current') { + $recurringRecordsList = $record->getRecurringRecordsList(); + foreach ($recurringRecordsList as $parent => $childs) { + $parentRecurringId = $parent; + $childRecords = $childs; + } + if ($recurringEditMode == 'future') { + $parentKey = array_keys($childRecords, $recordId); + $childRecords = array_slice($childRecords, $parentKey[0]); + } + foreach ($childRecords as $childId) { + $recordModel = Vtiger_Record_Model::getInstanceById($childId, 'Events'); + $recordModel->set('mode', 'edit'); + + $startDateTime = ''; + $startDateTime[] = $recordModel->get('date_start'); + $startDateTime[] = $recordModel->get('time_start'); + $startDateTime = implode(' ', $startDateTime); + $startDate = strtotime($startDateTime) + $startDateInterval; + $formatStartDate = date("Y-m-d H:i:s", $startDate); + $parts = explode(' ', $formatStartDate); + $startDateTime = new DateTime($startDateTime); + + $recordModel->set('date_start', $parts[0]); + if (activitytype != 'Task') + $recordModel->set('time_start', $parts[1]); + + $endDateTime = ''; + $endDateTime[] = $recordModel->get('due_date'); + $endDateTime[] = $recordModel->get('time_end'); + $endDateTime = implode(' ', $endDateTime); + $endDate = strtotime($endDateTime) + $endDateInterval; + $formatEndDate = date("Y-m-d H:i:s", $endDate); + $endDateParts = explode(' ', $formatEndDate); + $endDateTime = new DateTime($endDateTime); + $recordModel->set('due_date', $endDateParts[0]); + if (activitytype != 'Task') + $recordModel->set('time_end', $endDateParts[1]); + + $this->setRecurrenceInfo($recordModel); + $recordModel->save(); + } + $result['recurringRecords'] = true; + } else { + $oldStartDateTime = ''; + $oldStartDateTime[] = $record->get('date_start'); + $oldStartDateTime[] = $record->get('time_start'); + $oldStartDateTime = implode(' ', $oldStartDateTime); + $resultDateTime = $this->changeDateTime($oldStartDateTime,$dayDelta,$minuteDelta,$secondsDelta); + $parts = explode(' ',$resultDateTime); + $record->set('date_start',$parts[0]); + $record->set('time_start',$parts[1]); + + $oldEndDateTime = ''; + $oldEndDateTime[] = $record->get('due_date'); + $oldEndDateTime[] = $record->get('time_end'); + $oldEndDateTime = implode(' ',$oldEndDateTime); + $resultDateTime = $this->changeDateTime($oldEndDateTime,$dayDelta,$minuteDelta,$secondsDelta); + $parts = explode(' ',$resultDateTime); + $record->set('due_date',$parts[0]); + if(activitytype != 'Task') { + $record->set('time_end',$parts[1]); + } - $this->setRecurrenceInfo($record); - $record->save(); - $result['recurringRecords'] = false; + $this->setRecurrenceInfo($record); + $record->save(); + $result['recurringRecords'] = false; + } } $response->setResult($result); - $response->emit(); + } catch (DuplicateException $e) { + $response->setError($e->getMessage(), $e->getDuplicationMessage(), $e->getMessage()); + } catch (Exception $e) { + $response->setError($e->getMessage()); } + $response->emit(); } /* * * Function adds days and minutes to datetime string diff --git a/modules/Calendar/actions/Save.php b/modules/Calendar/actions/Save.php index e1c4a2eed30d2af4bd92da766e44aee78a96f6ce..e68fee373508e042c68a16156dc11e4eeda01f94 100644 --- a/modules/Calendar/actions/Save.php +++ b/modules/Calendar/actions/Save.php @@ -34,40 +34,70 @@ class Calendar_Save_Action extends Vtiger_Save_Action { } public function process(Vtiger_Request $request) { - $recordModel = $this->saveRecord($request); - $loadUrl = $recordModel->getDetailViewUrl(); - - if ($request->get('returntab_label')) { - $loadUrl = 'index.php?'.$request->getReturnURL(); - } else if($request->get('relationOperation')) { - $parentModuleName = $request->get('sourceModule'); - $parentRecordId = $request->get('sourceRecord'); - $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentRecordId, $parentModuleName); - //TODO : Url should load the related list instead of detail view of record - $loadUrl = $parentRecordModel->getDetailViewUrl(); - } else if ($request->get('returnToList')) { - $moduleModel = $recordModel->getModule(); - $listViewUrl = $moduleModel->getListViewUrl(); - - if ($recordModel->get('visibility') === 'Private') { - $loadUrl = $listViewUrl; - } else { - $userId = $recordModel->get('assigned_user_id'); - $sharedType = $moduleModel->getSharedType($userId); - if ($sharedType === 'selectedusers') { - $currentUserModel = Users_Record_Model::getCurrentUserModel(); - $sharedUserIds = Calendar_Module_Model::getCaledarSharedUsers($userId); - if (!array_key_exists($currentUserModel->id, $sharedUserIds)) { + try { + $recordModel = $this->saveRecord($request); + $loadUrl = $recordModel->getDetailViewUrl(); + + if ($request->get('returntab_label')) { + $loadUrl = 'index.php?'.$request->getReturnURL(); + } else if($request->get('relationOperation')) { + $parentModuleName = $request->get('sourceModule'); + $parentRecordId = $request->get('sourceRecord'); + $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentRecordId, $parentModuleName); + //TODO : Url should load the related list instead of detail view of record + $loadUrl = $parentRecordModel->getDetailViewUrl(); + } else if ($request->get('returnToList')) { + $moduleModel = $recordModel->getModule(); + $listViewUrl = $moduleModel->getListViewUrl(); + + if ($recordModel->get('visibility') === 'Private') { + $loadUrl = $listViewUrl; + } else { + $userId = $recordModel->get('assigned_user_id'); + $sharedType = $moduleModel->getSharedType($userId); + if ($sharedType === 'selectedusers') { + $currentUserModel = Users_Record_Model::getCurrentUserModel(); + $sharedUserIds = Calendar_Module_Model::getCaledarSharedUsers($userId); + if (!array_key_exists($currentUserModel->id, $sharedUserIds)) { + $loadUrl = $listViewUrl; + } + } else if ($sharedType === 'private') { $loadUrl = $listViewUrl; } - } else if ($sharedType === 'private') { - $loadUrl = $listViewUrl; } + } else if ($request->get('returnmodule') && $request->get('returnview')){ + $loadUrl = 'index.php?'.$request->getReturnURL(); } - } else if ($request->get('returnmodule') && $request->get('returnview')){ - $loadUrl = 'index.php?'.$request->getReturnURL(); + header("Location: $loadUrl"); + } catch (DuplicateException $e) { + $mode = ''; + if ($request->getModule() === 'Events') { + $mode = 'Events'; + } + + $requestData = $request->getAll(); + unset($requestData['action']); + unset($requestData['__vtrftk']); + + if ($request->isAjax()) { + $response = new Vtiger_Response(); + $response->setError($e->getMessage(), $e->getDuplicationMessage(), $e->getMessage()); + $response->emit(); + } else { + $requestData['view'] = 'Edit'; + $requestData['mode'] = $mode; + $requestData['module'] = 'Calendar'; + $requestData['duplicateRecords'] = $e->getDuplicateRecordIds(); + + global $vtiger_current_version; + $viewer = new Vtiger_Viewer(); + $viewer->assign('REQUEST_DATA', $requestData); + $viewer->assign('REQUEST_URL', "index.php?module=Calendar&view=Edit&mode=$mode&record=".$request->get('record')); + $viewer->view('RedirectToEditView.tpl', 'Vtiger'); + } + } catch (Exception $e) { + throw new Exception($e->getMessage()); } - header("Location: $loadUrl"); } /** diff --git a/modules/Calendar/actions/SaveAjax.php b/modules/Calendar/actions/SaveAjax.php index 5f28f72a64e4c2ecde547edce5a9ad0dacefde9a..dba7505ba4d3b48106b4531a6dcc9732daa72808 100644 --- a/modules/Calendar/actions/SaveAjax.php +++ b/modules/Calendar/actions/SaveAjax.php @@ -34,95 +34,101 @@ class Calendar_SaveAjax_Action extends Vtiger_SaveAjax_Action { } public function process(Vtiger_Request $request) { - $user = Users_Record_Model::getCurrentUserModel(); - - vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', $request->get('_timeStampNoChangeMode',false)); - $recordModel = $this->saveRecord($request); - vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', false); - - $fieldModelList = $recordModel->getModule()->getFields(); - $result = array(); - foreach ($fieldModelList as $fieldName => $fieldModel) { - $recordFieldValue = $recordModel->get($fieldName); - if(is_array($recordFieldValue) && $fieldModel->getFieldDataType() == 'multipicklist') { - $recordFieldValue = implode(' |##| ', $recordFieldValue); - } - $fieldValue = $displayValue = Vtiger_Util_Helper::toSafeHTML($recordFieldValue); - if ($fieldModel->getFieldDataType() !== 'currency' && $fieldModel->getFieldDataType() !== 'datetime' && $fieldModel->getFieldDataType() !== 'date') { - $displayValue = $fieldModel->getDisplayValue($fieldValue, $recordModel->getId()); - } - $result[$fieldName] = array(); - if($fieldName == 'date_start') { - $timeStart = $recordModel->get('time_start'); - $dateTimeFieldInstance = new DateTimeField($fieldValue . ' ' . $timeStart); - - $fieldValue = $fieldValue.' '.$timeStart; - - $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue(); - $dateTimeComponents = explode(' ',$userDateTimeString); - $dateComponent = $dateTimeComponents[0]; - //Conveting the date format in to Y-m-d . since full calendar expects in the same format - $dataBaseDateFormatedString = DateTimeField::__convertToDBFormat($dateComponent, $user->get('date_format')); - $result[$fieldName]['calendar_display_value'] = $dataBaseDateFormatedString.' '. $dateTimeComponents[1]; - $displayValue = $fieldModel->getDisplayValue($fieldValue); - } else if($fieldName == 'due_date') { - $timeEnd = $recordModel->get('time_end'); - $dateTimeFieldInstance = new DateTimeField($fieldValue . ' ' . $timeEnd); - - $fieldValue = $fieldValue.' '.$timeEnd; - - $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue(); - $dateTimeComponents = explode(' ',$userDateTimeString); - $dateComponent = $dateTimeComponents[0]; - //Conveting the date format in to Y-m-d . since full calendar expects in the same format - $dataBaseDateFormatedString = DateTimeField::__convertToDBFormat($dateComponent, $user->get('date_format')); - $result[$fieldName]['calendar_display_value'] = $dataBaseDateFormatedString.' '. $dateTimeComponents[1]; - $displayValue = $fieldModel->getDisplayValue($fieldValue); + $response = new Vtiger_Response(); + try { + $user = Users_Record_Model::getCurrentUserModel(); + + vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', $request->get('_timeStampNoChangeMode',false)); + $recordModel = $this->saveRecord($request); + vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', false); + + $fieldModelList = $recordModel->getModule()->getFields(); + $result = array(); + foreach ($fieldModelList as $fieldName => $fieldModel) { + $recordFieldValue = $recordModel->get($fieldName); + if(is_array($recordFieldValue) && $fieldModel->getFieldDataType() == 'multipicklist') { + $recordFieldValue = implode(' |##| ', $recordFieldValue); + } + $fieldValue = $displayValue = Vtiger_Util_Helper::toSafeHTML($recordFieldValue); + if ($fieldModel->getFieldDataType() !== 'currency' && $fieldModel->getFieldDataType() !== 'datetime' && $fieldModel->getFieldDataType() !== 'date') { + $displayValue = $fieldModel->getDisplayValue($fieldValue, $recordModel->getId()); + } + $result[$fieldName] = array(); + if($fieldName == 'date_start') { + $timeStart = $recordModel->get('time_start'); + $dateTimeFieldInstance = new DateTimeField($fieldValue . ' ' . $timeStart); + + $fieldValue = $fieldValue.' '.$timeStart; + + $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue(); + $dateTimeComponents = explode(' ',$userDateTimeString); + $dateComponent = $dateTimeComponents[0]; + //Conveting the date format in to Y-m-d . since full calendar expects in the same format + $dataBaseDateFormatedString = DateTimeField::__convertToDBFormat($dateComponent, $user->get('date_format')); + $result[$fieldName]['calendar_display_value'] = $dataBaseDateFormatedString.' '. $dateTimeComponents[1]; + $displayValue = $fieldModel->getDisplayValue($fieldValue); + } else if($fieldName == 'due_date') { + $timeEnd = $recordModel->get('time_end'); + $dateTimeFieldInstance = new DateTimeField($fieldValue . ' ' . $timeEnd); + + $fieldValue = $fieldValue.' '.$timeEnd; + + $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue(); + $dateTimeComponents = explode(' ',$userDateTimeString); + $dateComponent = $dateTimeComponents[0]; + //Conveting the date format in to Y-m-d . since full calendar expects in the same format + $dataBaseDateFormatedString = DateTimeField::__convertToDBFormat($dateComponent, $user->get('date_format')); + $result[$fieldName]['calendar_display_value'] = $dataBaseDateFormatedString.' '. $dateTimeComponents[1]; + $displayValue = $fieldModel->getDisplayValue($fieldValue); + } + $result[$fieldName]['value'] = $fieldValue; + $result[$fieldName]['display_value'] = decode_html($displayValue); } - $result[$fieldName]['value'] = $fieldValue; - $result[$fieldName]['display_value'] = decode_html($displayValue); - } - $result['_recordLabel'] = $recordModel->getName(); - $result['_recordId'] = $recordModel->getId(); - $result['calendarModule'] = $request->get('calendarModule'); - $result['sourceModule'] = $request->get('calendarModule'); - - // Handled to save follow up event - $followupMode = $request->get('followup'); - - if($followupMode == 'on') { - //Start Date and Time values - $startTime = Vtiger_Time_UIType::getTimeValueWithSeconds($request->get('followup_time_start')); - $startDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('followup_date_start') . " " . $startTime); - list($startDate, $startTime) = explode(' ', $startDateTime); - - $subject = $request->get('subject'); - if($startTime != '' && $startDate != ''){ - $recordModel->set('eventstatus', 'Planned'); - $recordModel->set('subject','[Followup] '.$subject); - $recordModel->set('date_start',$startDate); - $recordModel->set('time_start',$startTime); - - $currentUser = Users_Record_Model::getCurrentUserModel(); - $activityType = $recordModel->get('activitytype'); - if($activityType == 'Call') { - $minutes = $currentUser->get('callduration'); - } else { - $minutes = $currentUser->get('othereventduration'); + $result['_recordLabel'] = $recordModel->getName(); + $result['_recordId'] = $recordModel->getId(); + $result['calendarModule'] = $request->get('calendarModule'); + $result['sourceModule'] = $request->get('calendarModule'); + + // Handled to save follow up event + $followupMode = $request->get('followup'); + + if($followupMode == 'on') { + //Start Date and Time values + $startTime = Vtiger_Time_UIType::getTimeValueWithSeconds($request->get('followup_time_start')); + $startDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('followup_date_start') . " " . $startTime); + list($startDate, $startTime) = explode(' ', $startDateTime); + + $subject = $request->get('subject'); + if($startTime != '' && $startDate != ''){ + $recordModel->set('eventstatus', 'Planned'); + $recordModel->set('subject','[Followup] '.$subject); + $recordModel->set('date_start',$startDate); + $recordModel->set('time_start',$startTime); + + $currentUser = Users_Record_Model::getCurrentUserModel(); + $activityType = $recordModel->get('activitytype'); + if($activityType == 'Call') { + $minutes = $currentUser->get('callduration'); + } else { + $minutes = $currentUser->get('othereventduration'); + } + $dueDateTime = date('Y-m-d H:i:s', strtotime("$startDateTime+$minutes minutes")); + list($endDate, $endTime) = explode(' ', $dueDateTime); + + $recordModel->set('due_date',$endDate); + $recordModel->set('time_end',$endTime); + $recordModel->set('mode', 'create'); + $recordModel->save(); } - $dueDateTime = date('Y-m-d H:i:s', strtotime("$startDateTime+$minutes minutes")); - list($endDate, $endTime) = explode(' ', $dueDateTime); - - $recordModel->set('due_date',$endDate); - $recordModel->set('time_end',$endTime); - $recordModel->set('mode', 'create'); - $recordModel->save(); } + $response->setEmitType(Vtiger_Response::$EMIT_JSON); + $response->setResult($result); + } catch (DuplicateException $e) { + $response->setError($e->getMessage(), $e->getDuplicationMessage(), $e->getMessage()); + } catch (Exception $e) { + $response->setError($e->getMessage()); } - $response = new Vtiger_Response(); - $response->setEmitType(Vtiger_Response::$EMIT_JSON); - $response->setResult($result); $response->emit(); } diff --git a/modules/Calendar/actions/SaveFollowupAjax.php b/modules/Calendar/actions/SaveFollowupAjax.php index 382c4c5c53fad85f2668bcb79cb84ada3d07268c..59d321a794824bc05a5cba30c96e8f45fd231607 100755 --- a/modules/Calendar/actions/SaveFollowupAjax.php +++ b/modules/Calendar/actions/SaveFollowupAjax.php @@ -78,13 +78,19 @@ class Calendar_SaveFollowupAjax_Action extends Calendar_SaveAjax_Action { $recordModel->set('due_date', $followupEndDate); $recordModel->set('time_end', $followupEndTime); - - $recordModel->save(); - - $response = new Vtiger_Response(); - $result = array('created'=>true); - $response->setResult($result); - $response->emit(); + + $response = new Vtiger_Response(); + try { + $recordModel->set('id',null); + $recordModel->save(); + $result = array('created'=>true); + $response->setResult($result); + } catch (DuplicateException $e) { + $response->setError($e->getMessage(), $e->getDuplicationMessage(), $e->getMessage()); + } catch (Exception $e) { + $response->setError($e->getMessage()); + } + $response->emit(); } public function markAsHeldCompleted(Vtiger_Request $request) { @@ -120,8 +126,14 @@ class Calendar_SaveFollowupAjax_Action extends Calendar_SaveAjax_Action { } $_REQUEST['mode'] = 'edit'; $this->setRecurrenceInfo($recordModel); - $recordModel->save(); - $response->setResult($result); + try { + $recordModel->save(); + $response->setResult($result); + } catch (DuplicateException $e) { + $response->setError($e->getMessage(), $e->getDuplicationMessage(), $e->getMessage()); + } catch (Exception $e) { + $response->setError($e->getMessage()); + } $response->emit(); } diff --git a/modules/Calendar/models/Module.php b/modules/Calendar/models/Module.php index f355e427b91c5355237794793e1204524ac13919..5823a868bb3f210483802e65448816fe99369e35 100644 --- a/modules/Calendar/models/Module.php +++ b/modules/Calendar/models/Module.php @@ -984,4 +984,23 @@ class Calendar_Module_Model extends Vtiger_Module_Model { public function getRelationShipActions() { return array('ADD'); } + + public function getModuleIcon($activityType = null) { + $moduleName = $this->getName(); + $title = vtranslate($moduleName, $moduleName); + + if (!$activityType) { + if ($moduleName == 'Events') { + $activityType = 'calendar'; + } + } + + $activityType = strtolower($activityType); + $moduleIcon = "<i class='vicon-$activityType' title='$title' ></i>"; + + if (!in_array($activityType, array('task', 'calendar'))) { + $moduleIcon = parent::getModuleIcon(); + } + return $moduleIcon; + } } diff --git a/modules/Calendar/models/Record.php b/modules/Calendar/models/Record.php index 15959ab602376b7b6d5e41be12778dfbbacd697b..f6483113b22096f870466972ef96cefb97e39db7 100644 --- a/modules/Calendar/models/Record.php +++ b/modules/Calendar/models/Record.php @@ -59,9 +59,13 @@ class Calendar_Record_Model extends Vtiger_Record_Model { * Function returns recurring information for EditView * @return <Array> - which contains recurring Information */ - public function getRecurrenceInformation() { + public function getRecurrenceInformation($request = false) { $recurringObject = $this->getRecurringObject(); + if ($request && !$request->get('id') && $request->get('repeat_frequency')) { + $recurringObject = getrecurringObjValue(); + } + if ($recurringObject) { $recurringData['recurringcheck'] = 'Yes'; $recurringData['repeat_frequency'] = $recurringObject->getRecurringFrequency(); diff --git a/modules/Calendar/views/Edit.php b/modules/Calendar/views/Edit.php index 0b9c3c369f0fb5da48f46676e32f26d0d3c03b62..01f22d75d9e7b24002626057eeea8b42c8e8e27a 100644 --- a/modules/Calendar/views/Edit.php +++ b/modules/Calendar/views/Edit.php @@ -82,7 +82,10 @@ Class Calendar_Edit_View extends Vtiger_Edit_View { $relContactId = $request->get('contact_id'); if ($relContactId) { $contactRecordModel = Vtiger_Record_Model::getInstanceById($relContactId); - $requestFieldList['parent_id'] = $contactRecordModel->get('account_id'); + $accountId = $contactRecordModel->get('account_id'); + if ($accountId) { + $requestFieldList['parent_id'] = $accountId; + } } foreach($requestFieldList as $fieldName=>$fieldValue){ $fieldModel = $fieldList[$fieldName]; @@ -157,7 +160,7 @@ Class Calendar_Edit_View extends Vtiger_Edit_View { $viewer->assign('USER_CHANGED_END_DATE_TIME',$userChangedEndDateTime); $viewer->assign('FOLLOW_UP_DATE',$followUpDate); $viewer->assign('FOLLOW_UP_TIME',$followUpTime); - $viewer->assign('RECURRING_INFORMATION', $recordModel->getRecurrenceInformation()); + $viewer->assign('RECURRING_INFORMATION', $recordModel->getRecurrenceInformation($request)); $viewer->assign('TOMORROWDATE', Vtiger_Date_UIType::getDisplayDateValue(date('Y-m-d', time()+86400))); $viewer->assign('RECORD_STRUCTURE_MODEL', $recordStructureInstance); diff --git a/modules/Calendar/views/Import.php b/modules/Calendar/views/Import.php index 85db9b8b9bfe6fc7d4588b52b801c1a29a5b6561..c6e42b6c2ecce8cbf42315396fb6f1cb1301040e 100644 --- a/modules/Calendar/views/Import.php +++ b/modules/Calendar/views/Import.php @@ -56,6 +56,7 @@ class Calendar_Import_View extends Vtiger_Import_View { $requiredFields[$module] = array_diff($moduleRequiredFields, $skipFields[$module]); $totalCount[$module] = 0; $skipCount[$module] = 0; + $duplicatesCount[$module] = 0; } $ical = new iCal(); @@ -89,9 +90,6 @@ class Calendar_Import_View extends Vtiger_Import_View { if(strtotime($dueDate) < strtotime($currentDate)) $activityFieldsList['eventstatus'] = 'Held'; } - if (!$activityFieldsList['time_end']) { - $activityFieldsList['time_end'] = ''; - } $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); $recordModel->setData($activityFieldsList); @@ -109,24 +107,31 @@ class Calendar_Import_View extends Vtiger_Import_View { if($skipRecord === true) { continue; } - $recordModel->save(); + try { + $recordModel->save(); - $lastImport = new iCalLastImport(); - $lastImport->setFields(array('userid' => $userId, 'entitytype' => $todoModule, 'crmid' => $recordModel->getId())); - $lastImport->save(); + $lastImport = new iCalLastImport(); + $lastImport->setFields(array('userid' => $userId, 'entitytype' => $todoModule, 'crmid' => $recordModel->getId())); + $lastImport->save(); - if(!empty($icalActivities[$i]['VALARM'])) { - $recordModel->setActivityReminder(0, '', ''); + if(!empty($icalActivities[$i]['VALARM'])) { + $recordModel->setActivityReminder(0, '', ''); + } + } catch (Exception $e) { + $duplicatesCount[$module]++; } } - $importedEvents = $totalCount[$eventModule] - $skipCount[$eventModule]; - $importedTasks = $totalCount[$todoModule] - $skipCount[$todoModule]; + $importedEvents = $totalCount[$eventModule] - $skipCount[$eventModule] - $duplicatesCount[$eventModule]; + $importedTasks = $totalCount[$todoModule] - $skipCount[$todoModule] - $duplicatesCount[$todoModule]; $viewer->assign('SUCCESS_EVENTS', $importedEvents); $viewer->assign('SKIPPED_EVENTS', $skipCount[$eventModule]); + $viewer->assign('DUPLICATE_EVENTS', $duplicatesCount[$eventModule]); + $viewer->assign('SUCCESS_TASKS', $importedTasks); $viewer->assign('SKIPPED_TASKS', $skipCount[$todoModule]); + $viewer->assign('DUPLICATE_TASKS', $duplicatesCount[$todoModule]); } else { $viewer->assign('ERROR_MESSAGE', $request->get('error_message')); diff --git a/modules/Contacts/models/Module.php b/modules/Contacts/models/Module.php index 7d492ec7a3f1b05683be0e548da7af898cf22dc2..5817ded3164010f20c21ff5a49633eff213f6fa0 100644 --- a/modules/Contacts/models/Module.php +++ b/modules/Contacts/models/Module.php @@ -65,6 +65,14 @@ class Contacts_Module_Model extends Vtiger_Module_Model { AND (vtiger_activity.status is NULL OR vtiger_activity.status NOT IN ('Completed', 'Deferred')) AND (vtiger_activity.eventstatus is NULL OR vtiger_activity.eventstatus NOT IN ('Held'))"; + if(!$currentUser->isAdminUser()) { + $moduleFocus = CRMEntity::getInstance('Calendar'); + $condition = $moduleFocus->buildWhereClauseConditionForCalendar(); + if($condition) { + $query .= ' AND '.$condition; + } + } + if ($recordId) { $query .= " AND vtiger_cntactivityrel.contactid = ?"; } elseif ($mode === 'upcoming') { @@ -251,6 +259,14 @@ class Contacts_Module_Model extends Vtiger_Module_Model { $nonAdminQuery = $this->getNonAdminAccessControlQueryForRelation($relatedModuleName); if ($nonAdminQuery) { $query = appendFromClauseToQuery($query, $nonAdminQuery); + + if(trim($nonAdminQuery)) { + $relModuleFocus = CRMEntity::getInstance($relatedModuleName); + $condition = $relModuleFocus->buildWhereClauseConditionForCalendar(); + if($condition) { + $query .= ' AND '.$condition; + } + } } } else { $query = parent::getRelationQuery($recordId, $functionName, $relatedModule, $relationId); diff --git a/modules/CustomView/CustomView.php b/modules/CustomView/CustomView.php index 85792a8b1fbdd4555982d13f50dc340105613e3c..db8bf8c97d353c0b67214672e6dd9f6172a8827a 100644 --- a/modules/CustomView/CustomView.php +++ b/modules/CustomView/CustomView.php @@ -13,6 +13,7 @@ require_once('include/utils/utils.php'); require_once 'include/Webservices/Utils.php'; global $adv_filter_options; +global $mod_strings; $adv_filter_options = array("e" => "" . $mod_strings['equals'] . "", "n" => "" . $mod_strings['not equal to'] . "", @@ -2076,4 +2077,4 @@ class CustomView extends CRMEntity { } -?> \ No newline at end of file +?> diff --git a/modules/Documents/models/Module.php b/modules/Documents/models/Module.php index 260d755c766aa330be5dcb295ca4b8e52b153ba1..535d1c5e9ab55546ed2408949f6ec1125939c557 100644 --- a/modules/Documents/models/Module.php +++ b/modules/Documents/models/Module.php @@ -191,5 +191,8 @@ class Documents_Module_Model extends Vtiger_Module_Model { } return $relatedListFields; } + + public function isFieldsDuplicateCheckAllowed() { + return false; + } } -?> diff --git a/modules/Emails/views/MassSaveAjax.php b/modules/Emails/views/MassSaveAjax.php index 9478dba2f9c68b198980042ca72910661d79244e..c3180faaf89bb43f164acf9447994604271efc69 100644 --- a/modules/Emails/views/MassSaveAjax.php +++ b/modules/Emails/views/MassSaveAjax.php @@ -155,8 +155,14 @@ class Emails_MassSaveAjax_View extends Vtiger_Footer_View { $success = false; $viewer = $this->getViewer($request); if ($recordModel->checkUploadSize($documentIds)) { + // Fix content format acceptable to be preserved in table. + $decodedHtmlDescriptionToSend = $recordModel->get('description'); + $recordModel->set('description', to_html($decodedHtmlDescriptionToSend)); $recordModel->save(); + // Restore content to be dispatched through HTML mailer. + $recordModel->set('description', $decodedHtmlDescriptionToSend); + // To add entry in ModTracker for email relation $emailRecordId = $recordModel->getId(); foreach ($toMailInfo as $recordId => $emailValueList) { diff --git a/modules/Events/actions/Save.php b/modules/Events/actions/Save.php index 07afd6256a00627a4ace413458217ec0840c3cbb..08fff50c1e40444c8c5561e530f43ef7e5813b19 100644 --- a/modules/Events/actions/Save.php +++ b/modules/Events/actions/Save.php @@ -84,7 +84,24 @@ class Events_Save_Action extends Calendar_Save_Action { $focus = CRMEntity::getInstance('Events'); //get all the stored data to this object $focus->column_fields = new TrackableObject($recordModel->getData()); - Calendar_RepeatEvents::repeatFromRequest($focus, $recurObjDb); + try { + Calendar_RepeatEvents::repeatFromRequest($focus, $recurObjDb); + } catch (DuplicateException $e) { + $requestData = $request->getAll(); + $requestData['view'] = 'Edit'; + $requestData['mode'] = 'Events'; + $requestData['module'] = 'Events'; + $requestData['duplicateRecords'] = $e->getDuplicateRecordIds(); + + global $vtiger_current_version; + $viewer = new Vtiger_Viewer(); + $viewer->assign('REQUEST_DATA', $requestData); + $viewer->assign('REQUEST_URL', 'index.php?module=Calendar&view=Edit&mode=Events&record='.$request->get('record')); + $viewer->view('RedirectToEditView.tpl', 'Vtiger'); + exit(); + } catch (Exception $ex) { + throw new Exception($ex->getMessage()); + } } return $recordModel; } diff --git a/modules/Events/actions/SaveAjax.php b/modules/Events/actions/SaveAjax.php index e7bc75922bb75e0d98481d637e048468761939ae..b935de2e8c38360fef61f08b7be1d75e829c93ca 100644 --- a/modules/Events/actions/SaveAjax.php +++ b/modules/Events/actions/SaveAjax.php @@ -34,95 +34,101 @@ class Events_SaveAjax_Action extends Events_Save_Action { } public function process(Vtiger_Request $request) { - $user = Users_Record_Model::getCurrentUserModel(); - - vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', $request->get('_timeStampNoChangeMode', false)); - $recordModel = $this->saveRecord($request); - vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', false); - - $fieldModelList = $recordModel->getModule()->getFields(); - $result = array(); - foreach ($fieldModelList as $fieldName => $fieldModel) { - $recordFieldValue = $recordModel->get($fieldName); - if (is_array($recordFieldValue) && $fieldModel->getFieldDataType() == 'multipicklist') { - $recordFieldValue = implode(' |##| ', $recordFieldValue); - } - $fieldValue = $displayValue = Vtiger_Util_Helper::toSafeHTML($recordFieldValue); - if ($fieldModel->getFieldDataType() !== 'currency' && $fieldModel->getFieldDataType() !== 'datetime' && $fieldModel->getFieldDataType() !== 'date') { - $displayValue = $fieldModel->getDisplayValue($fieldValue, $recordModel->getId()); - } - $result[$fieldName] = array(); - if ($fieldName == 'date_start') { - $timeStart = $recordModel->get('time_start'); - $dateTimeFieldInstance = new DateTimeField($fieldValue . ' ' . $timeStart); - - $fieldValue = $fieldValue . ' ' . $timeStart; - - $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue(); - $dateTimeComponents = explode(' ', $userDateTimeString); - $dateComponent = $dateTimeComponents[0]; - //Conveting the date format in to Y-m-d . since full calendar expects in the same format - $dataBaseDateFormatedString = DateTimeField::__convertToDBFormat($dateComponent, $user->get('date_format')); - $result[$fieldName]['calendar_display_value'] = $dataBaseDateFormatedString . ' ' . $dateTimeComponents[1]; - $displayValue = $fieldModel->getDisplayValue($fieldValue); - } else if ($fieldName == 'due_date') { - $timeEnd = $recordModel->get('time_end'); - $dateTimeFieldInstance = new DateTimeField($fieldValue . ' ' . $timeEnd); - - $fieldValue = $fieldValue . ' ' . $timeEnd; - - $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue(); - $dateTimeComponents = explode(' ', $userDateTimeString); - $dateComponent = $dateTimeComponents[0]; - //Conveting the date format in to Y-m-d . since full calendar expects in the same format - $dataBaseDateFormatedString = DateTimeField::__convertToDBFormat($dateComponent, $user->get('date_format')); - $result[$fieldName]['calendar_display_value'] = $dataBaseDateFormatedString . ' ' . $dateTimeComponents[1]; - $displayValue = $fieldModel->getDisplayValue($fieldValue); + $response = new Vtiger_Response(); + try { + $user = Users_Record_Model::getCurrentUserModel(); + + vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', $request->get('_timeStampNoChangeMode', false)); + $recordModel = $this->saveRecord($request); + vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', false); + + $fieldModelList = $recordModel->getModule()->getFields(); + $result = array(); + foreach ($fieldModelList as $fieldName => $fieldModel) { + $recordFieldValue = $recordModel->get($fieldName); + if (is_array($recordFieldValue) && $fieldModel->getFieldDataType() == 'multipicklist') { + $recordFieldValue = implode(' |##| ', $recordFieldValue); + } + $fieldValue = $displayValue = Vtiger_Util_Helper::toSafeHTML($recordFieldValue); + if ($fieldModel->getFieldDataType() !== 'currency' && $fieldModel->getFieldDataType() !== 'datetime' && $fieldModel->getFieldDataType() !== 'date') { + $displayValue = $fieldModel->getDisplayValue($fieldValue, $recordModel->getId()); + } + $result[$fieldName] = array(); + if ($fieldName == 'date_start') { + $timeStart = $recordModel->get('time_start'); + $dateTimeFieldInstance = new DateTimeField($fieldValue . ' ' . $timeStart); + + $fieldValue = $fieldValue . ' ' . $timeStart; + + $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue(); + $dateTimeComponents = explode(' ', $userDateTimeString); + $dateComponent = $dateTimeComponents[0]; + //Conveting the date format in to Y-m-d . since full calendar expects in the same format + $dataBaseDateFormatedString = DateTimeField::__convertToDBFormat($dateComponent, $user->get('date_format')); + $result[$fieldName]['calendar_display_value'] = $dataBaseDateFormatedString . ' ' . $dateTimeComponents[1]; + $displayValue = $fieldModel->getDisplayValue($fieldValue); + } else if ($fieldName == 'due_date') { + $timeEnd = $recordModel->get('time_end'); + $dateTimeFieldInstance = new DateTimeField($fieldValue . ' ' . $timeEnd); + + $fieldValue = $fieldValue . ' ' . $timeEnd; + + $userDateTimeString = $dateTimeFieldInstance->getDisplayDateTimeValue(); + $dateTimeComponents = explode(' ', $userDateTimeString); + $dateComponent = $dateTimeComponents[0]; + //Conveting the date format in to Y-m-d . since full calendar expects in the same format + $dataBaseDateFormatedString = DateTimeField::__convertToDBFormat($dateComponent, $user->get('date_format')); + $result[$fieldName]['calendar_display_value'] = $dataBaseDateFormatedString . ' ' . $dateTimeComponents[1]; + $displayValue = $fieldModel->getDisplayValue($fieldValue); + } + $result[$fieldName]['value'] = $fieldValue; + $result[$fieldName]['display_value'] = decode_html($displayValue); } - $result[$fieldName]['value'] = $fieldValue; - $result[$fieldName]['display_value'] = decode_html($displayValue); - } - $result['_recordLabel'] = $recordModel->getName(); - $result['_recordId'] = $recordModel->getId(); - $result['calendarModule'] = $request->get('calendarModule'); - $result['sourceModule'] = $request->get('calendarModule'); - - // Handled to save follow up event - $followupMode = $request->get('followup'); - - if ($followupMode == 'on') { - //Start Date and Time values - $startTime = Vtiger_Time_UIType::getTimeValueWithSeconds($request->get('followup_time_start')); - $startDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('followup_date_start') . " " . $startTime); - list($startDate, $startTime) = explode(' ', $startDateTime); - - $subject = $request->get('subject'); - if ($startTime != '' && $startDate != '') { - $recordModel->set('eventstatus', 'Planned'); - $recordModel->set('subject', '[Followup] ' . $subject); - $recordModel->set('date_start', $startDate); - $recordModel->set('time_start', $startTime); - - $currentUser = Users_Record_Model::getCurrentUserModel(); - $activityType = $recordModel->get('activitytype'); - if ($activityType == 'Call') { - $minutes = $currentUser->get('callduration'); - } else { - $minutes = $currentUser->get('othereventduration'); + $result['_recordLabel'] = $recordModel->getName(); + $result['_recordId'] = $recordModel->getId(); + $result['calendarModule'] = $request->get('calendarModule'); + $result['sourceModule'] = $request->get('calendarModule'); + + // Handled to save follow up event + $followupMode = $request->get('followup'); + + if ($followupMode == 'on') { + //Start Date and Time values + $startTime = Vtiger_Time_UIType::getTimeValueWithSeconds($request->get('followup_time_start')); + $startDateTime = Vtiger_Datetime_UIType::getDBDateTimeValue($request->get('followup_date_start') . " " . $startTime); + list($startDate, $startTime) = explode(' ', $startDateTime); + + $subject = $request->get('subject'); + if ($startTime != '' && $startDate != '') { + $recordModel->set('eventstatus', 'Planned'); + $recordModel->set('subject', '[Followup] ' . $subject); + $recordModel->set('date_start', $startDate); + $recordModel->set('time_start', $startTime); + + $currentUser = Users_Record_Model::getCurrentUserModel(); + $activityType = $recordModel->get('activitytype'); + if ($activityType == 'Call') { + $minutes = $currentUser->get('callduration'); + } else { + $minutes = $currentUser->get('othereventduration'); + } + $dueDateTime = date('Y-m-d H:i:s', strtotime("$startDateTime+$minutes minutes")); + list($endDate, $endTime) = explode(' ', $dueDateTime); + + $recordModel->set('due_date', $endDate); + $recordModel->set('time_end', $endTime); + $recordModel->set('mode', 'create'); + $recordModel->save(); } - $dueDateTime = date('Y-m-d H:i:s', strtotime("$startDateTime+$minutes minutes")); - list($endDate, $endTime) = explode(' ', $dueDateTime); - - $recordModel->set('due_date', $endDate); - $recordModel->set('time_end', $endTime); - $recordModel->set('mode', 'create'); - $recordModel->save(); } + $response->setEmitType(Vtiger_Response::$EMIT_JSON); + $response->setResult($result); + } catch (DuplicateException $e) { + $response->setError($e->getMessage(), $e->getDuplicationMessage(), $e->getMessage()); + } catch (Exception $e) { + $response->setError($e->getMessage()); } - $response = new Vtiger_Response(); - $response->setEmitType(Vtiger_Response::$EMIT_JSON); - $response->setResult($result); $response->emit(); } diff --git a/modules/HelpDesk/actions/ConvertFAQ.php b/modules/HelpDesk/actions/ConvertFAQ.php index 07df6736f200227af5e7f76c4250cb638f4b0f38..91f35af30dcaeadd9431e9ecbfce2228d49f6f68 100644 --- a/modules/HelpDesk/actions/ConvertFAQ.php +++ b/modules/HelpDesk/actions/ConvertFAQ.php @@ -30,8 +30,25 @@ class HelpDesk_ConvertFAQ_Action extends Vtiger_Action_Controller { $answer = $faqRecordModel->get('faq_answer'); if ($answer) { - $faqRecordModel->save(); - header("Location: ".$faqRecordModel->getDetailViewUrl()); + try { + $faqRecordModel->save(); + header("Location: ".$faqRecordModel->getDetailViewUrl()); + } catch (DuplicateException $e) { + $requestData = $request->getAll(); + unset($requestData['__vtrftk']); + unset($requestData['action']); + unset($requestData['record']); + $requestData['view'] = 'Edit'; + $requestData['module'] = 'HelpDesk'; + $requestData['duplicateRecords'] = $e->getDuplicateRecordIds(); + + global $vtiger_current_version; + $viewer = new Vtiger_Viewer(); + $viewer->assign('REQUEST_DATA', $requestData); + $viewer->assign('REQUEST_URL', $faqRecordModel->getEditViewUrl()."&parentId=$recordId&parentModule=$moduleName"); + $viewer->view('RedirectToEditView.tpl', 'Vtiger'); + } catch (Exception $e) { + } } else { header("Location: ".$faqRecordModel->getEditViewUrl()."&parentId=$recordId&parentModule=$moduleName"); } diff --git a/modules/HelpDesk/models/Module.php b/modules/HelpDesk/models/Module.php index 5426fb6e1a2f4cab85667e42b0efc4c30a9bb510..7f82378012e17cef4242631fc027c3b3a5d1e8d5 100644 --- a/modules/HelpDesk/models/Module.php +++ b/modules/HelpDesk/models/Module.php @@ -164,6 +164,14 @@ class HelpDesk_Module_Model extends Vtiger_Module_Model { $nonAdminQuery = $this->getNonAdminAccessControlQueryForRelation($relatedModuleName); if ($nonAdminQuery) { $query = appendFromClauseToQuery($query, $nonAdminQuery); + + if(trim($nonAdminQuery)) { + $relModuleFocus = CRMEntity::getInstance($relatedModuleName); + $condition = $relModuleFocus->buildWhereClauseConditionForCalendar(); + if($condition) { + $query .= ' AND '.$condition; + } + } } } else { $query = parent::getRelationQuery($recordId, $functionName, $relatedModule, $relationId); diff --git a/modules/Home/models/Module.php b/modules/Home/models/Module.php index 2bea4aa117b1c703f219dbf3bc019341347d4c2e..f2fa1265ac9268443ec8b952aa0e7ff24c4a3225 100644 --- a/modules/Home/models/Module.php +++ b/modules/Home/models/Module.php @@ -198,6 +198,14 @@ class Home_Module_Model extends Vtiger_Module_Model { AND (vtiger_activity.status is NULL OR vtiger_activity.status NOT IN ('Completed', 'Deferred', 'Cancelled')) AND (vtiger_activity.eventstatus is NULL OR vtiger_activity.eventstatus NOT IN ('Held', 'Cancelled'))"; + if(!$currentUser->isAdminUser()) { + $moduleFocus = CRMEntity::getInstance('Calendar'); + $condition = $moduleFocus->buildWhereClauseConditionForCalendar(); + if($condition) { + $query .= ' AND '.$condition; + } + } + if ($mode === 'upcoming') { $query .= " AND CASE WHEN vtiger_activity.activitytype='Task' THEN due_date >= '$currentDate' ELSE CONCAT(due_date,' ',time_end) >= '$nowInDBFormat' END"; } elseif ($mode === 'overdue') { diff --git a/modules/Install/models/ConfigFileUtils.php b/modules/Install/models/ConfigFileUtils.php index f92f183cb87ae967cd0836b6d52e6849efcc3fa1..b5b89fc41919dc70331407fb20d9ad06d8b75014 100644 --- a/modules/Install/models/ConfigFileUtils.php +++ b/modules/Install/models/ConfigFileUtils.php @@ -204,16 +204,9 @@ ini_set('memory_limit','64M'); // files with one of these extensions will have '.txt' appended to their filename on upload \$upload_badext = array('php', 'php3', 'php4', 'php5', 'pl', 'cgi', 'py', 'asp', 'cfm', 'js', 'vbs', 'html', 'htm', 'exe', 'bin', 'bat', 'sh', 'dll', 'phps', 'phtml', 'xhtml', 'rb', 'msi', 'jsp', 'shtml', 'sth', 'shtm'); -// full path to include directory including the trailing slash -// includeDirectory default value = \$root_directory..'include/ -\$includeDirectory = \$root_directory.'include/'; - // list_max_entries_per_page default value = 20 \$list_max_entries_per_page = '20'; -// limitpage_navigation default value = 5 -\$limitpage_navigation = '5'; - // history_max_viewed default value = 5 \$history_max_viewed = '5'; @@ -227,10 +220,6 @@ ini_set('memory_limit','64M'); // default_theme default value = blue \$default_theme = 'softed'; -// show or hide time to compose each page -// calculate_response_time default value = true -\$calculate_response_time = true; - // default text that is placed initially in the login form for user name // no default_user_name default value \$default_user_name = ''; @@ -243,13 +232,6 @@ ini_set('memory_limit','64M'); // create_default_user default value = false \$create_default_user = false; -// default_user_is_admin default value = false -\$default_user_is_admin = false; - -// if your MySQL/PHP configuration does not support persistent connections set this to true to avoid a large performance slowdown -// disable_persistent_connections default value = false -\$disable_persistent_connections = false; - //Master currency name \$currency_name = '{$this->currencyName}'; @@ -261,13 +243,6 @@ ini_set('memory_limit','64M'); // default_language default value = en_us \$default_language = '{$this->vtDefaultLanguage}'; -// add the language pack name to every translation string in the display. -// translation_string_prefix default value = false -\$translation_string_prefix = false; - -//Option to cache tabs permissions for speed. -\$cache_tab_perms = true; - //Option to hide empty home blocks if no entries. \$display_empty_home_blocks = false; diff --git a/modules/Install/models/Utils.php b/modules/Install/models/Utils.php index 1307398636b83a13ba070e508c33de7a82205450..f9c1995cc2fe2df50feea7657c2051004bf31b1d 100644 --- a/modules/Install/models/Utils.php +++ b/modules/Install/models/Utils.php @@ -129,21 +129,27 @@ class Install_Utils_Model { $preInstallConfig['LBL_PHP_VERSION'] = array(phpversion(), '5.4.0', (version_compare(phpversion(), '5.4.0', '>='))); $preInstallConfig['LBL_IMAP_SUPPORT'] = array(function_exists('imap_open'), true, (function_exists('imap_open') == true)); $preInstallConfig['LBL_ZLIB_SUPPORT'] = array(function_exists('gzinflate'), true, (function_exists('gzinflate') == true)); - if ($preInstallConfig['LBL_PHP_VERSION'] >= '5.5.0') { - $preInstallConfig['LBL_MYSQLI_CONNECT_SUPPORT'] = array(extension_loaded('mysqli'), true, extension_loaded('mysqli')); - } - $preInstallConfig['LBL_OPEN_SSL'] = array(extension_loaded('openssl'), true, extension_loaded('openssl')); - $preInstallConfig['LBL_CURL'] = array(extension_loaded('curl'), true, extension_loaded('curl')); - $gnInstalled = false; + + if ($preInstallConfig['LBL_PHP_VERSION'] >= '5.5.0') { + $preInstallConfig['LBL_MYSQLI_CONNECT_SUPPORT'] = array(extension_loaded('mysqli'), true, extension_loaded('mysqli')); + } + + $preInstallConfig['LBL_OPEN_SSL'] = array(extension_loaded('openssl'), true, extension_loaded('openssl')); + $preInstallConfig['LBL_CURL'] = array(extension_loaded('curl'), true, extension_loaded('curl')); + + $gnInstalled = false; if(!function_exists('gd_info')) { eval(self::$gdInfoAlternate); } + $gd_info = gd_info(); if (isset($gd_info['GD Version'])) { $gnInstalled = true; } + $preInstallConfig['LBL_GD_LIBRARY'] = array((extension_loaded('gd') || $gnInstalled), true, (extension_loaded('gd') || $gnInstalled)); $preInstallConfig['LBL_ZLIB_SUPPORT'] = array(function_exists('gzinflate'), true, (function_exists('gzinflate') == true)); + $preInstallConfig['LBL_SIMPLEXML'] = array(function_exists('simplexml_load_file'), true, (function_exists('simplexml_load_file'))); return $preInstallConfig; } @@ -408,6 +414,8 @@ class Install_Utils_Model { $error_msg_info = getTranslatedString('MSG_DB_ROOT_USER_NOT_AUTHORIZED', 'Install'); } elseif(!$db_exist_status) { $error_msg = $db_name.' -> '.getTranslatedString('ERR_DB_NOT_FOUND', 'Install'); + } elseif(!$db_utf8_support) { + $error_msg = $db_name.' -> '.getTranslatedString('ERR_DB_NOT_UTF8', 'Install'); } else { $dbCheckResult['flag'] = true; return $dbCheckResult; diff --git a/modules/Install/views/Index.php b/modules/Install/views/Index.php index 30987167ef71a94473fc83300dd59c568b079c97..cc872c29f17e50cd1d9e4d9ee42adb1f9094b07a 100644 --- a/modules/Install/views/Index.php +++ b/modules/Install/views/Index.php @@ -27,7 +27,16 @@ class Install_Index_view extends Vtiger_View_Controller { $this->exposeMethod('Step7'); } + protected function applyInstallFriendlyEnv() { + // config.inc.php - will not be ready to control this yet. + version_compare(PHP_VERSION, '5.5.0') <= 0 ? error_reporting(E_ERROR & ~E_NOTICE & ~E_DEPRECATED) : error_reporting(E_ERROR & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT); + + set_time_limit(0); // override limits on execution time to allow install to finish + } + public function preProcess(Vtiger_Request $request, $display = true) { + $this->applyInstallFriendlyEnv(); + date_default_timezone_set('Europe/London'); // to overcome the pre configuration settings // Added to redirect to default module if already installed $configFileName = 'config.inc.php'; @@ -171,9 +180,6 @@ class Install_Index_view extends Vtiger_View_Controller { } public function Step7(Vtiger_Request $request) { - // Set favourable error reporting - version_compare(PHP_VERSION, '5.5.0') <= 0 ? error_reporting(E_WARNING & ~E_NOTICE & ~E_DEPRECATED) : error_reporting(E_WARNING & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT); - $moduleName = $request->getModule(); $webuiInstance = new Vtiger_WebUI(); $isInstalled = $webuiInstance->isInstalled(); diff --git a/modules/Inventory/actions/MassSave.php b/modules/Inventory/actions/MassSave.php index 3e5a7ac6f8b0f32f2b2843e7a08dffdcad13d45a..c6537bace7c39520df528343a6a806c940e3b5e8 100644 --- a/modules/Inventory/actions/MassSave.php +++ b/modules/Inventory/actions/MassSave.php @@ -11,19 +11,25 @@ class Inventory_MassSave_Action extends Vtiger_MassSave_Action { public function process(Vtiger_Request $request) { - vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', $request->get('_timeStampNoChangeMode',false)); - $moduleName = $request->getModule(); - $recordModels = $this->getRecordModelsFromRequest($request); - foreach($recordModels as $recordId => $recordModel) { - if(Users_Privileges_Model::isPermitted($moduleName, 'Save', $recordId)) { - //Inventory line items getting wiped out - $_REQUEST['ajxaction'] = 'DETAILVIEW'; - $recordModel->save(); + $response = new Vtiger_Response(); + try { + vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', $request->get('_timeStampNoChangeMode',false)); + $moduleName = $request->getModule(); + $recordModels = $this->getRecordModelsFromRequest($request); + foreach($recordModels as $recordId => $recordModel) { + if(Users_Privileges_Model::isPermitted($moduleName, 'Save', $recordId)) { + //Inventory line items getting wiped out + $_REQUEST['ajxaction'] = 'DETAILVIEW'; + $recordModel->save(); + } } + vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', false); + $response->setResult(true); + } catch (DuplicateException $e) { + $response->setError($e->getMessage(), $e->getDuplicationMessage(), $e->getMessage()); + } catch (Exception $e) { + $response->setError($e->getMessage()); } - vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', false); - $response = new Vtiger_Response(); - $response->setResult(true); $response->emit(); } } diff --git a/modules/Inventory/models/Module.php b/modules/Inventory/models/Module.php index 991e5d59f7166ee4b0c47f2992bc281966464427..5e917570b28392359fca1fb0b89de7c303a22c49 100644 --- a/modules/Inventory/models/Module.php +++ b/modules/Inventory/models/Module.php @@ -84,6 +84,14 @@ class Inventory_Module_Model extends Vtiger_Module_Model { $nonAdminQuery = $this->getNonAdminAccessControlQueryForRelation($relatedModuleName); if ($nonAdminQuery) { $query = appendFromClauseToQuery($query, $nonAdminQuery); + + if(trim($nonAdminQuery)) { + $relModuleFocus = CRMEntity::getInstance($relatedModuleName); + $condition = $relModuleFocus->buildWhereClauseConditionForCalendar(); + if($condition) { + $query .= ' AND '.$condition; + } + } } } else { $query = parent::getRelationQuery($recordId, $functionName, $relatedModule, $relationId); diff --git a/modules/Inventory/models/Record.php b/modules/Inventory/models/Record.php index ed8a5836fbafb8082a6b1f8b3308a6f6e8d509ec..e4c3c82ec6b89c0de4d2a0e25ae4a362d5cdddab 100644 --- a/modules/Inventory/models/Record.php +++ b/modules/Inventory/models/Record.php @@ -68,7 +68,7 @@ class Inventory_Record_Model extends Vtiger_Record_Model { } function getProducts() { - $numOfCurrencyDecimalPlaces = getCurrencyDecimalPlaces(); + $numOfCurrencyDecimalPlaces = getCurrencyDecimalPlaces(); $relatedProducts = getAssociatedProducts($this->getModuleName(), $this->getEntity()); $productsCount = count($relatedProducts); @@ -695,4 +695,271 @@ class Inventory_Record_Model extends Vtiger_Record_Model { } return array(); } + + public function convertRequestToProducts(Vtiger_Request $request) { + $requestData = $request->getAll(); + $noOfDecimalPlaces = getCurrencyDecimalPlaces(); + $totalProductsCount = $requestData['totalProductCount']; + + $productIdsList = array(); + $relatedProducts = array(); + for ($i=1; $i<=$totalProductsCount; $i++) { + $productId = $requestData["hdnProductId$i"]; + $productIdsList[] = $productId; + $itemRecordModel = Vtiger_Record_Model::getInstanceById($productId); + + $productData = array(); + $productData["hdnProductId$i"] = $productId; + $productData["productName$i"] = $itemRecordModel->getName(); + $productData["comment$i"] = $requestData["comment$i"]; + $productData["qtyInStock$i"] = $itemRecordModel->get('qtyinstock'); + $productData["qty$i"] = $requestData["qty$i"]; + $productData["listPrice$i"] = number_format($requestData["listPrice$i"], $noOfDecimalPlaces, '.', ''); + $productData["unitPrice$i"] = number_format($requestData["listPrice$i"], $noOfDecimalPlaces, '.', ''); + $productData["purchaseCost$i"] = number_format($purchaseCost, $noOfDecimalPlaces, '.', ''); + $productData["productDescription$i"]= $requestData["productDescription$i"]; + + $margin = (float)$requestData["margin$i"]; + if (is_numeric($margin)) { + $productData["margin$i"] = number_format($margin, $noOfDecimalPlaces, '.', ''); + } + + $productTotal = $requestData["qty$i"] * $requestData["listPrice$i"]; + $productData["productTotal$i"] = number_format($productTotal, $noOfDecimalPlaces, '.', ''); + + $subQtysList = array(); + $subProducts = $requestData["subproduct_ids$i"]; + $subProducts = split(',', rtrim($subProducts, ',')); + + foreach ($subProducts as $subProductInfo) { + list($subProductId, $subProductQty) = explode(':', $subProductInfo); + if ($subProductId) { + $subProductName = getProductName($subProductId); + $subQtysList[$subProductId] = array('name' => $subProductName, 'qty' => $subProductQty); + } + } + $productData["subproduct_ids$i"]= $requestData["subproduct_ids$i"]; + $productData["subprod_qty_list$i"] = $subQtysList; + + //individual disount calculation + $discountType = $productData["discount_type$i"] = $requestData["discount_type$i"]; + $productData["discount_percent$i"] = 0; + $productData["discount_amount$i"] = 0; + $discountTotal = 0; + + if ($discountType === 'percentage') { + $productData["discount_percent$i"] = $requestData["discount_percentage$i"]; + $productData["checked_discount_percent$i"] = 'checked'; + $discountTotal = $productTotal * $productData["discount_percent$i"] / 100; + } elseif ($discountType === 'amount') { + $productData["discount_amount$i"] = $requestData["discount_amount$i"]; + $productData["checked_discount_amount$i"] = 'checked'; + $discountTotal = $productData["discount_amount$i"]; + } else { + $productData["checked_discount_zero$i"] = 'checked'; + } + $productData["discountTotal$i"] = number_format($discountTotal, $noOfDecimalPlaces, '.', ''); + + //individual taxes calculation + $taxType = $requestData['taxtype']; + $itemTaxDetails = $itemRecordModel->getTaxClassDetails(); + $regionsList = array(); + foreach ($itemTaxDetails as $taxInfo) { + $regionsInfo = array('default' => $taxInfo['percentage']); + if ($taxInfo['productregions']) { + foreach ($taxInfo['productregions'] as $list) { + if (is_array($list['list'])) { + foreach (array_fill_keys($list['list'], $list['value']) as $key => $value) { + $regionsInfo[$key] = $value; + } + } + } + } + $regionsList[$taxInfo['taxid']] = $regionsInfo; + } + + $taxTotal = 0; + $totalAfterDiscount = $productTotal-$discountTotal; + $netPrice = $totalAfterDiscount; + $taxDetails = array(); + + foreach ($itemTaxDetails as &$taxInfo) { + $taxId = $taxInfo['taxid']; + $taxName = $taxInfo['taxname']; + $taxValue = 0; + $taxAmount = 0; + + $taxValue = $taxInfo['percentage']; + if ($taxType == 'individual') { + $selectedRegionId = $requestData['region_id']; + $taxValue = $requestData[$taxName.'_percentage'.$i]; + if ($selectedRegionId) { + $regionsList[$taxId][$selectedRegionId] = $taxValue; + } else { + $regionsList[$taxId]['default'] = $taxValue; + } + + $taxAmount = $totalAfterDiscount * $taxValue / 100; + } + + $taxInfo['amount'] = $taxAmount; + $taxInfo['percentage'] = $taxValue; + $taxInfo['regionsList'] = $regionsList[$taxInfo['taxid']]; + $taxDetails[$taxId] = $taxInfo; + } + + $taxTotal = 0; + foreach ($taxDetails as $taxId => $taxInfo) { + $taxAmount = $taxInfo['amount']; + if ($taxInfo['compoundon']) { + $amount = $totalAfterDiscount; + foreach ($taxInfo['compoundon'] as $compTaxId) { + $amount = $amount + $taxDetails[$compTaxId]['amount']; + } + $taxAmount = $amount * $taxInfo['percentage'] / 100; + } + $taxTotal = $taxTotal + $taxAmount; + + $taxDetails[$taxId]['amount'] = $taxAmount; + $relatedProducts[$i]['taxTotal'.$i] = number_format($taxTotal, $numOfCurrencyDecimalPlaces, '.', ''); + } + + $productData["taxTotal$i"] = number_format($taxTotal, $noOfDecimalPlaces, '.', ''); + $productData["totalAfterDiscount$i"]= number_format($totalAfterDiscount, $noOfDecimalPlaces, '.', ''); + $productData["netPrice$i"] = number_format($totalAfterDiscount + $taxTotal, $noOfDecimalPlaces, '.', ''); + + $productData['taxes'] = $taxDetails; + $relatedProducts[$i] = $productData; + } + + //Final details started + $finalDetails = array(); + $finalDetails['hdnSubTotal'] = number_format($requestData['subtotal'], $noOfDecimalPlaces, '.', ''); + + //final discount calculation + $discountTotalFinal = 0; + $finalDiscountType = $finalDetails['discount_type_final'] = $requestData['discount_type_final']; + if ($finalDiscountType === 'percentage') { + $finalDetails['discount_percentage_final'] = $requestData['discount_percentage_final']; + $finalDetails['checked_discount_percentage_final'] = 'checked'; + $discountTotalFinal = $finalDetails['discount_percentage_final']; + } else if ($finalDetails === 'amount') { + $finalDetails['discount_percentage_final'] = $requestData['discount_amount_final']; + $finalDetails['checked_discount_amount_final'] = 'checked'; + $discountTotalFinal = $finalDetails['discount_percentage_final']; + } + $finalDetails['discountTotal_final'] = number_format($discountTotalFinal, $noOfDecimalPlaces, '.', ''); + + //group taxes calculation + $taxDetails = array(); + $taxTotal = 0; + $allTaxes = getAllTaxes('available'); + foreach ($allTaxes as $taxInfo) { + if ($taxInfo['method'] === 'Deducted') { + continue; + } + + $taxName = $taxInfo['taxname']; + if ($taxType == 'group') { + $taxPercent = $requestData[$taxName.'_group_percentage']; + } else { + $taxPercent = $taxInfo['percentage']; + } + if ($taxPercent == '' || $taxPercent == 'NULL') { + $taxPercent = 0; + } + + $taxInfo['percentage'] = $taxPercent; + $taxInfo['amount'] = $requestData[$taxName.'_group_amount'];; + $taxInfo['regions'] = Zend_Json::decode(html_entity_decode($taxInfo['regions'])); + $taxInfo['compoundon'] = Zend_Json::decode(html_entity_decode($taxInfo['compoundon'])); + $taxDetails[$taxInfo['taxid']] = $taxInfo; + + $taxTotal = $taxTotal + $taxInfo['amount']; + } + + $finalDetails['taxtype'] = $taxType; + $finalDetails['taxes'] = $taxDetails; + $finalDetails['tax_totalamount']= number_format($taxTotal, $noOfDecimalPlaces, '.', ''); + $finalDetails['adjustment'] = number_format($requestData['adjustment'], $noOfDecimalPlaces, '.', ''); + $finalDetails['grandTotal'] = number_format($requestData['total'], $noOfDecimalPlaces, '.', ''); + $finalDetails['preTaxTotal'] = number_format($requestData['pre_tax_total'], $noOfDecimalPlaces, '.', ''); + $finalDetails['shipping_handling_charge'] = number_format($requestData['shipping_handling_charge'], $noOfDecimalPlaces, ',', ''); + $finalDetails['adjustment'] = $requestData['adjustmentType'].number_format($requestData['adjustment'], $noOfDecimalPlaces, '.', ''); + + //charge value setting to related products array + $selectedChargesAndItsTaxes = $requestData['charges']; + foreach ($selectedChargesAndItsTaxes as $chargeId => $chargeInfo) { + $selectedChargesAndItsTaxes[$chargeId] = Zend_Json::decode(html_entity_decode($chargeInfo)); + } + $finalDetails['chargesAndItsTaxes'] = $selectedChargesAndItsTaxes; + + $allChargeTaxes = array(); + foreach ($selectedChargesAndItsTaxes as $chargeId => $chargeInfo) { + if (is_array($chargeInfo['taxes'])) { + $allChargeTaxes = array_merge($allChargeTaxes, array_keys($chargeInfo['taxes'])); + } else { + $selectedChargesAndItsTaxes[$chargeId]['taxes'] = array(); + } + } + + $shippingTaxes = array(); + $allShippingTaxes = getAllTaxes('all', 'sh'); + foreach ($allShippingTaxes as $shTaxInfo) { + $shippingTaxes[$shTaxInfo['taxid']] = $shTaxInfo; + } + + $totalAmount = 0; + foreach ($selectedChargesAndItsTaxes as $chargeId => $chargeInfo) { + foreach ($chargeInfo['taxes'] as $taxId => $taxPercent) { + $amount = $calculatedOn = $chargeInfo['value']; + + if ($shippingTaxes[$taxId]['method'] === 'Compound') { + $compoundTaxes = Zend_Json::decode(html_entity_decode($shippingTaxes[$taxId]['compoundon'])); + if (is_array($compoundTaxes)) { + foreach ($compoundTaxes as $comTaxId) { + if ($shippingTaxes[$comTaxId]) { + $calculatedOn += ((float) $amount * (float) $chargeInfo['taxes'][$comTaxId]) / 100; + } + } + } + } + $totalAmount += ((float) $calculatedOn * (float) $taxPercent) / 100; + } + } + $finalDetails['shtax_totalamount'] = number_format($totalAmount, $noOfDecimalPlaces, '.', ''); + + //deduct tax values setting to related products + $deductedTaxesTotalAmount = 0; + $deductTaxes = $this->getDeductTaxes(); + foreach ($deductTaxes as $taxId => $taxInfo) { + $taxAmount = ($totalAfterDiscount * (float) $taxInfo['percentage']) / 100; + $deductTaxes[$taxId]['amount'] = number_format($taxAmount, $noOfDecimalPlaces, '.', ''); + if ($taxInfo['selected']) { + $deductedTaxesTotalAmount = $deductedTaxesTotalAmount + $taxAmount; + } + } + $finalDetails['deductTaxes'] = $deductTaxes; + $finalDetails['deductTaxesTotalAmount'] = number_format($deductedTaxesTotalAmount, $noOfDecimalPlaces, '.', ''); + + $imageFieldModel = $this->getModule()->getField('image'); + if ($productIdsList && $imageFieldModel && $imageFieldModel->isViewable()) { + $imageDetailsList = Products_Record_Model::getProductsImageDetails($productIdsList); + + for ($i = 1; $i <= $totalProductsCount; $i++) { + $product = $relatedProducts[$i]; + $productId = $product["hdnProductId$i"]; + $imageDetails = $imageDetailsList[$productId]; + if ($imageDetails) { + $relatedProducts[$i]["productImage$i"] = $imageDetails[0]['path'] . '_' . $imageDetails[0]['orgname']; + } + } + } + + if ($relatedProducts[1]) { + $relatedProducts[1]['final_details'] = $finalDetails; + } + return $relatedProducts; + } + } diff --git a/modules/Inventory/models/RelationListView.php b/modules/Inventory/models/RelationListView.php index c73c2425bd8ad5a1f706f098455de19139d15387..a75afcc3e0f6928ed48fc33ebdb1e0f5d9a907c3 100644 --- a/modules/Inventory/models/RelationListView.php +++ b/modules/Inventory/models/RelationListView.php @@ -10,41 +10,6 @@ class Inventory_RelationListView_Model extends Vtiger_RelationListView_Model { - public function getAddRelationLinks() { - $relationModel = $this->getRelationModel(); - $addLinkModel = array(); - - if(!$relationModel->isAddActionSupported()) { - return $addLinkModel; - } - $relatedModel = $relationModel->getRelationModuleModel(); - - if ($relatedModel->isPermitted('CreateView')) { - if($relatedModel->get('label') == 'Calendar'){ - $addLinkList[] = array( - 'linktype' => 'LISTVIEWBASIC', - 'linklabel' => vtranslate('LBL_ADD_TASK'), - 'linkurl' => $this->getCreateTaskRecordUrl(), - 'linkicon' => '', - ); - }else{ - $addLinkList = array( - array( - 'linktype' => 'LISTVIEWBASIC', - 'linklabel' => vtranslate('LBL_ADD')." ".vtranslate('SINGLE_'.$relatedModel->getName(), $relatedModel->getName()), - 'linkurl' => $this->getCreateViewUrl(), - 'linkicon' => '', - ) - ); - } - - foreach($addLinkList as $addLink) { - $addLinkModel[] = Vtiger_Link_Model::getInstanceFromValues($addLink); - } - } - return $addLinkModel; - } - public function getCreateViewUrl(){ $createViewUrl = parent::getCreateViewUrl(); $currentUserModel = Users_Record_Model::getCurrentUserModel(); diff --git a/modules/Inventory/views/Edit.php b/modules/Inventory/views/Edit.php index ca3ad04650081bad225d353aebc88bcd3c14205c..89255efa2852f799bb5870f3ec9d402b80766f9b 100644 --- a/modules/Inventory/views/Edit.php +++ b/modules/Inventory/views/Edit.php @@ -22,7 +22,16 @@ Class Inventory_Edit_View extends Vtiger_Edit_View { } $viewer->assign('MODE', ''); - if(!empty($record) && $request->get('isDuplicate') == true) { + $viewer->assign('IS_DUPLICATE', false); + if ($request->has('totalProductCount')) { + if($record) { + $recordModel = Vtiger_Record_Model::getInstanceById($record); + } else { + $recordModel = Vtiger_Record_Model::getCleanInstance($moduleName); + } + $relatedProducts = $recordModel->convertRequestToProducts($request); + $taxes = $relatedProducts[1]['final_details']['taxes']; + } else if(!empty($record) && $request->get('isDuplicate') == true) { $recordModel = Inventory_Record_Model::getInstanceById($record, $moduleName); $currencyInfo = $recordModel->getCurrencyInfo(); $taxes = $recordModel->getProductTaxes(); @@ -38,6 +47,7 @@ Class Inventory_Edit_View extends Vtiger_Edit_View { } } } + $viewer->assign('IS_DUPLICATE', true); } elseif (!empty($record)) { $recordModel = Inventory_Record_Model::getInstanceById($record, $moduleName); $currencyInfo = $recordModel->getCurrencyInfo(); diff --git a/modules/Invoice/actions/MassSave.php b/modules/Invoice/actions/MassSave.php index f22d666cad555a06eba809c6633ab43ba6b853d2..386d4653233bb7eabb0e1955bf0be1cf752de214 100644 --- a/modules/Invoice/actions/MassSave.php +++ b/modules/Invoice/actions/MassSave.php @@ -11,20 +11,26 @@ class Invoice_MassSave_Action extends Inventory_MassSave_Action { public function process(Vtiger_Request $request) { - vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', $request->get('_timeStampNoChangeMode',false)); - $moduleName = $request->getModule(); - $recordModels = $this->getRecordModelsFromRequest($request); + $response = new Vtiger_Response(); + try { + vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', $request->get('_timeStampNoChangeMode',false)); + $moduleName = $request->getModule(); + $recordModels = $this->getRecordModelsFromRequest($request); - foreach($recordModels as $recordId => $recordModel) { - if(Users_Privileges_Model::isPermitted($moduleName, 'Save', $recordId)) { - //Inventory line items getting wiped out - $_REQUEST['action'] = 'MassEditSave'; - $recordModel->save(); + foreach($recordModels as $recordId => $recordModel) { + if(Users_Privileges_Model::isPermitted($moduleName, 'Save', $recordId)) { + //Inventory line items getting wiped out + $_REQUEST['action'] = 'MassEditSave'; + $recordModel->save(); + } } + vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', false); + $response->setResult(true); + } catch (DuplicateException $e) { + $response->setError($e->getMessage(), $e->getDuplicationMessage(), $e->getMessage()); + } catch (Exception $e) { + $response->setError($e->getMessage()); } - vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', false); - $response = new Vtiger_Response(); - $response->setResult(true); $response->emit(); } diff --git a/modules/Leads/models/Module.php b/modules/Leads/models/Module.php index 94289dad9eea3bf471158dc622a9243502553528..2f3126412e0792089babc7304bcb6c1a28026ee7 100644 --- a/modules/Leads/models/Module.php +++ b/modules/Leads/models/Module.php @@ -297,6 +297,14 @@ class Leads_Module_Model extends Vtiger_Module_Model { $nonAdminQuery = $this->getNonAdminAccessControlQueryForRelation($relatedModuleName); if ($nonAdminQuery) { $query = appendFromClauseToQuery($query, $nonAdminQuery); + + if(trim($nonAdminQuery)) { + $relModuleFocus = CRMEntity::getInstance($relatedModuleName); + $condition = $relModuleFocus->buildWhereClauseConditionForCalendar(); + if($condition) { + $query .= ' AND '.$condition; + } + } } } else { $query = parent::getRelationQuery($recordId, $functionName, $relatedModule, $relationId); diff --git a/modules/Leads/views/SaveConvertLead.php b/modules/Leads/views/SaveConvertLead.php index 5c6cc0eeaae93c0c8e507e988a882685f776a252..ba5fd0bbf4950d068507a064b0f6b0656d285b81 100644 --- a/modules/Leads/views/SaveConvertLead.php +++ b/modules/Leads/views/SaveConvertLead.php @@ -21,9 +21,6 @@ class Leads_SaveConvertLead_View extends Vtiger_View_Controller { } } - public function preProcess(Vtiger_Request $request) { - } - public function process(Vtiger_Request $request) { $recordId = $request->get('record'); $modules = $request->get('modules'); @@ -35,7 +32,7 @@ class Leads_SaveConvertLead_View extends Vtiger_View_Controller { $entityValues['transferRelatedRecordsTo'] = $request->get('transferModule'); $entityValues['assignedTo'] = vtws_getWebserviceEntityId(vtws_getOwnerType($assignId), $assignId); $entityValues['leadId'] = vtws_getWebserviceEntityId($request->getModule(), $recordId); - $entityValues['imageAttachmentId'] = $request->get('imageAttachmentId'); + $entityValues['imageAttachmentId'] = $request->get('imageAttachmentId'); $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $request->getModule()); $convertLeadFields = $recordModel->getConvertLeadFields(); @@ -46,20 +43,20 @@ class Leads_SaveConvertLead_View extends Vtiger_View_Controller { $entityValues['entities'][$module]['create'] = true; $entityValues['entities'][$module]['name'] = $module; - // Converting lead should save records source as CRM instead of WEBSERVICE - $entityValues['entities'][$module]['source'] = 'CRM'; + // Converting lead should save records source as CRM instead of WEBSERVICE + $entityValues['entities'][$module]['source'] = 'CRM'; foreach ($convertLeadFields[$module] as $fieldModel) { $fieldName = $fieldModel->getName(); $fieldValue = $request->get($fieldName); //Potential Amount Field value converting into DB format if ($fieldModel->getFieldDataType() === 'currency') { - if($fieldModel->get('uitype') == 72){ - // Some of the currency fields like Unit Price, Totoal , Sub-total - doesn't need currency conversion during save - $fieldValue = Vtiger_Currency_UIType::convertToDBFormat($fieldValue, null, true); - } else { - $fieldValue = Vtiger_Currency_UIType::convertToDBFormat($fieldValue); - } + if($fieldModel->get('uitype') == 72){ + // Some of the currency fields like Unit Price, Totoal , Sub-total - doesn't need currency conversion during save + $fieldValue = Vtiger_Currency_UIType::convertToDBFormat($fieldValue, null, true); + } else { + $fieldValue = Vtiger_Currency_UIType::convertToDBFormat($fieldValue); + } } elseif ($fieldModel->getFieldDataType() === 'date') { $fieldValue = DateTimeField::convertToDBFormat($fieldValue); } elseif ($fieldModel->getFieldDataType() === 'reference' && $fieldValue) { @@ -100,19 +97,26 @@ class Leads_SaveConvertLead_View extends Vtiger_View_Controller { function showError($request, $exception=false) { $viewer = $this->getViewer($request); - if($exception != false) { + $moduleName = $request->getModule(); + + $isDupicatesFailure = false; + if ($exception != false) { $viewer->assign('EXCEPTION', $exception->getMessage()); + if ($exception instanceof DuplicateException) { + $isDupicatesFailure = true; + $viewer->assign('EXCEPTION', $exception->getDuplicationMessage()); + } } - $moduleName = $request->getModule(); $currentUser = Users_Record_Model::getCurrentUserModel(); + $viewer->assign('IS_DUPICATES_FAILURE', $isDupicatesFailure); $viewer->assign('CURRENT_USER', $currentUser); $viewer->assign('MODULE', $moduleName); $viewer->view('ConvertLeadError.tpl', $moduleName); } - - public function validateRequest(Vtiger_Request $request) { - $request->validateWriteAccess(); - } + + public function validateRequest(Vtiger_Request $request) { + $request->validateWriteAccess(); + } } diff --git a/modules/Migration/models/Module.php b/modules/Migration/models/Module.php index 5d7cdd3b61c6fef4d1b6498abfbd720b4d752437..2cd96cc4055b061624f709d6d4e2810773de370f 100644 --- a/modules/Migration/models/Module.php +++ b/modules/Migration/models/Module.php @@ -38,6 +38,7 @@ class Migration_Module_Model extends Vtiger_Module_Model { array('660' => '6.6.0'), array('700' => '7.0.0'), array('701' => '7.0.1'), + array('710' => '7.1.0'), ); return $versions; } diff --git a/modules/Migration/schema/540_to_600RC.php b/modules/Migration/schema/540_to_600RC.php index 2701ca42af5d1e3ead0533a369f4d9c4c8701e1d..4b36dbc63711b1a86c20a58a2b94c919c4744d37 100644 --- a/modules/Migration/schema/540_to_600RC.php +++ b/modules/Migration/schema/540_to_600RC.php @@ -697,9 +697,10 @@ Migration_Index_View::ExecuteQuery('UPDATE vtiger_field SET presence = 1 WHERE t Migration_Index_View::ExecuteQuery('UPDATE vtiger_users SET truncate_trailing_zeros = ?', array(1)); -//deleted the id column from the All filter +//deleted the id column from the All filter (exclude custom modules) Migration_Index_View::ExecuteQuery("DELETE FROM vtiger_cvcolumnlist WHERE cvid IN - (SELECT cvid FROM vtiger_customview WHERE viewname='All' AND entitytype NOT IN + (SELECT cvid FROM vtiger_customview INNER JOIN vtiger_tab ON vtiger_tab.name=vtiger_customview.entitytype + WHERE vtiger_tab.customized=0 AND viewname='All' AND entitytype NOT IN ('Emails','Calendar','ModComments','ProjectMilestone','Project','SMSNotifier','PBXManager','Webmails')) AND columnindex = 0", array()); @@ -2501,4 +2502,4 @@ Migration_Index_View::ExecuteQuery("CREATE TABLE IF NOT EXISTS vtiger_faqcf ( faqid int(19), PRIMARY KEY (faqid), CONSTRAINT fk_1_vtiger_faqcf FOREIGN KEY (faqid) REFERENCES vtiger_faq(id) ON DELETE CASCADE - ) ENGINE=InnoDB DEFAULT CHARSET=utf8", array()); \ No newline at end of file + ) ENGINE=InnoDB DEFAULT CHARSET=utf8", array()); diff --git a/modules/Migration/schema/600_to_610.php b/modules/Migration/schema/600_to_610.php index 66643c132b58e9e94da56f2489d10b602bd8d60b..57bbf34979838d2ac9a1260572fb41a6ab0d9f00 100644 --- a/modules/Migration/schema/600_to_610.php +++ b/modules/Migration/schema/600_to_610.php @@ -677,8 +677,8 @@ $query = 'SELECT max(sequence) as maxsequence FROM vtiger_relatedlists where tab $result = $adb->pquery($query, array($contactTabId)); $sequence = $adb->query_result($result, 0 ,'maxsequence'); -$query = 'INSERT INTO vtiger_relatedlists VALUES(?,?,?,?,?,?,?,?)'; -$result = Migration_Index_View::ExecuteQuery($query, array($relationId, $contactTabId,$vendorTabId,'get_vendors',($sequence+1),'Vendors',0,$actions)); +$query = 'INSERT INTO vtiger_relatedlists VALUES(?,?,?,?,?,?,?,?,?,?,?)'; +$result = Migration_Index_View::ExecuteQuery($query, array($relationId, $contactTabId,$vendorTabId,'get_vendors',($sequence+1),'Vendors',0,$actions,'','','')); //Schema changes for vtiger_troubletickets hours & days column Migration_Index_View::ExecuteQuery('UPDATE vtiger_field set typeofdata=? WHERE fieldname IN(?,?) AND tablename = ?', array('N~O', 'hours', 'days', 'vtiger_troubletickets')); diff --git a/modules/Migration/schema/660_to_700.php b/modules/Migration/schema/660_to_700.php index b2df87fc7c5451187c8b062be2bd4ace2ea9aa37..f0e3aa26452a5ef22aa37373efb06a21a120769e 100644 --- a/modules/Migration/schema/660_to_700.php +++ b/modules/Migration/schema/660_to_700.php @@ -1125,9 +1125,13 @@ if(defined('VTIGER_UPGRADE')) { //Multiple attachment support for comments $db->pquery('ALTER TABLE vtiger_seattachmentsrel DROP PRIMARY KEY', array()); $db->pquery('ALTER TABLE vtiger_seattachmentsrel ADD CONSTRAINT PRIMARY KEY (crmid,attachmentsid)', array()); - $db->pquery('ALTER TABLE vtiger_seattachmentsrel ADD CONSTRAINT fk_2_vtiger_seattachmentsrel FOREIGN KEY (crmid) REFERENCES vtiger_crmentity(crmid) ON DELETE CASCADE', array()); $db->pquery('ALTER TABLE vtiger_project MODIFY COLUMN projectid INT(19) PRIMARY KEY'); + $keyResult = $db->pquery("SHOW INDEX FROM vtiger_seattachmentsrel WHERE key_name='fk_2_vtiger_seattachmentsrel'", array()); + if (!$db->num_rows($keyResult)) { + $db->pquery('ALTER TABLE vtiger_seattachmentsrel ADD CONSTRAINT fk_2_vtiger_seattachmentsrel FOREIGN KEY (crmid) REFERENCES vtiger_crmentity(crmid) ON DELETE CASCADE', array()); + } + if (!Vtiger_Utils::CheckTable('vtiger_wsapp_logs_basic')) { Vtiger_Utils::CreateTable('vtiger_wsapp_logs_basic', '(`id` int(25) NOT NULL AUTO_INCREMENT, @@ -1216,9 +1220,6 @@ if(defined('VTIGER_UPGRADE')) { transition_data VARCHAR(1000) NOT NULL)', true); } - //Adding user specific field to Calendar table instead of events table - $db->pquery('UPDATE vtiger_field SET tablename=? WHERE tablename=?', array('vtiger_calendar_user_field', 'vtiger_events_user_field')); - //Invite users table mod to support status tracking $columns = $db->getColumnNames('vtiger_invitees'); if (!in_array('status', $columns)) { @@ -1415,7 +1416,7 @@ if(defined('VTIGER_UPGRADE')) { $result = $db->pquery('SELECT id FROM vtiger_dashboard_tabs WHERE userid=? AND tabname=?', array(1, 'Default')); $defaultTabid = $db->query_result($result, 0, 'id'); //Setting admin user default tabid to DEFAULT - $db->pquery("ALTER TABLE vtiger_module_dashboard_widgets ADD COLUMN dashboardtabid INT(11) DEFAULT $defaultTabid", array()); + $db->pquery("ALTER TABLE vtiger_module_dashboard_widgets ADD COLUMN dashboardtabid INT(11)", array()); //TODO : this will fail if there are any entries to vtiger_module_dashboard_widgets $db->pquery('ALTER TABLE vtiger_module_dashboard_widgets ADD CONSTRAINT FOREIGN KEY (dashboardtabid) REFERENCES vtiger_dashboard_tabs(id) ON DELETE CASCADE', array()); @@ -1426,12 +1427,10 @@ if(defined('VTIGER_UPGRADE')) { $num_rows = $db->num_rows($result); for ($i=0; $i<$num_rows; $i++) { $rowdata = $db->query_result_rowdata($result, $i); - if ($rowdata['dashboardtabid'] == null) { - $result1 = $db->pquery('SELECT id FROM vtiger_dashboard_tabs WHERE userid=? AND tabname=?', array($rowdata['userid'], 'My Dashboard')); - if ($db->num_rows($result1) > 0) { - $tabid = $db->query_result($result1, 0, 'id'); - $db->pquery('UPDATE vtiger_module_dashboard_widgets SET dashboardtabid=? WHERE id=? AND userid=?', array($tabid, $rowdata['id'], $rowdata['userid'])); - } + $result1 = $db->pquery('SELECT id FROM vtiger_dashboard_tabs WHERE userid=? AND tabname IN (?, ?)', array($rowdata['userid'], 'My Dashboard', 'Default')); + if ($db->num_rows($result1) > 0) { + $tabid = $db->query_result($result1, 0, 'id'); + $db->pquery('UPDATE vtiger_module_dashboard_widgets SET dashboardtabid=? WHERE id=? AND userid=?', array($tabid, $rowdata['id'], $rowdata['userid'])); } } @@ -1782,7 +1781,10 @@ if(defined('VTIGER_UPGRADE')) { } $db->pquery('ALTER TABLE vtiger_cvstdfilter DROP PRIMARY KEY', array()); - $db->pquery('ALTER TABLE vtiger_cvstdfilter DROP KEY cvstdfilter_cvid_idx', array()); + $keyResult = $db->pquery("SHOW INDEX FROM vtiger_cvstdfilter WHERE key_name='cvstdfilter_cvid_idx'", array()); + if ($db->num_rows($keyResult)) { + $db->pquery('ALTER TABLE vtiger_cvstdfilter DROP FOREIGN KEY cvstdfilter_cvid_idx', array()); + } $keyResult = $db->pquery("SHOW INDEX FROM vtiger_cvstdfilter WHERE key_name='fk_1_vtiger_cvstdfilter'", array()); if ($db->num_rows($keyResult)) { @@ -2167,6 +2169,7 @@ if(defined('VTIGER_UPGRADE')) { } } + $skippedTablesForAll = array('vtiger_crmentity_user_field'); $skippedTables = array('Calendar' => array('vtiger_seactivityrel', 'vtiger_cntactivityrel', 'vtiger_salesmanactivityrel')); $allEntityModules = Vtiger_Module_Model::getEntityModules(); $dbName = $db->dbName; @@ -2195,6 +2198,9 @@ if(defined('VTIGER_UPGRADE')) { if ($skippedTables[$moduleName]) { $relatedTables = array_diff_key($relatedTables, array_flip($skippedTables[$moduleName])); } + if ($skippedTablesForAll) { + $relatedTables = array_diff_key($relatedTables, array_flip($skippedTablesForAll)); + } //Checking foriegn key with base table foreach ($relatedTables as $tableName => $index) { diff --git a/modules/Migration/schema/700_to_701.php b/modules/Migration/schema/700_to_701.php index 9da2feb4530e67cd130ca7c613daa281e8791724..32f0b5acb92cb18d7cbda79b7881f70152a5ec85 100644 --- a/modules/Migration/schema/700_to_701.php +++ b/modules/Migration/schema/700_to_701.php @@ -38,7 +38,7 @@ if(defined('VTIGER_UPGRADE')) { foreach ($updateModulesList as $moduleName => $packagePath) { $moduleInstance = Vtiger_Module::getInstance($moduleName); if($moduleInstance) { - updateVtlibModule($moduleName, $packagepath); + updateVtlibModule($moduleName, $packagePath); } } } \ No newline at end of file diff --git a/modules/Migration/schema/701_to_710.php b/modules/Migration/schema/701_to_710.php new file mode 100644 index 0000000000000000000000000000000000000000..ee2142a14cfcd7afbeee66ce42bedcc7ee63947f --- /dev/null +++ b/modules/Migration/schema/701_to_710.php @@ -0,0 +1,342 @@ +<?php +/*+******************************************************************************** + * The contents of this file are subject to the vtiger CRM Public License Version 1.0 + * ("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. + *********************************************************************************/ + +if (defined('VTIGER_UPGRADE')) { + global $current_user; + $db = PearDatabase::getInstance(); + + //START::Workflow task's template path + $pathsList = array(); + $taskResult = $db->pquery('SELECT classname FROM com_vtiger_workflow_tasktypes', array()); + while($rowData = $db->fetch_row($taskResult)) { + $className = $rowData['classname']; + if ($className) { + $pathsList[$className] = vtemplate_path("Tasks/$className.tpl", 'Settings:Workflows'); + } + } + + if ($pathsList) { + $taskUpdateQuery = 'UPDATE com_vtiger_workflow_tasktypes SET templatepath = CASE'; + foreach ($pathsList as $className => $templatePath) { + $taskUpdateQuery .= " WHEN classname='$className' THEN '$templatePath'"; + } + $taskUpdateQuery .= ' ELSE templatepath END'; + $db->pquery($taskUpdateQuery, array()); + } + //END::Workflow task's template path + + //START::Duplication Prevention + $vtigerFieldColumns = $db->getColumnNames('vtiger_field'); + if (!in_array('isunique', $vtigerFieldColumns)) { + $db->pquery('ALTER TABLE vtiger_field ADD COLUMN isunique BOOLEAN DEFAULT 0'); + } + + $vtigerTabColumns = $db->getColumnNames('vtiger_tab'); + if (!in_array('issyncable', $vtigerTabColumns)) { + $db->pquery('ALTER TABLE vtiger_tab ADD COLUMN issyncable BOOLEAN DEFAULT 0'); + } + if (!in_array('allowduplicates', $vtigerTabColumns)) { + $db->pquery('ALTER TABLE vtiger_tab ADD COLUMN allowduplicates BOOLEAN DEFAULT 1'); + } + if (!in_array('sync_action_for_duplicates', $vtigerTabColumns)) { + $db->pquery('ALTER TABLE vtiger_tab ADD COLUMN sync_action_for_duplicates INT(1) DEFAULT 1'); + } + + //START - Enable prevention for Accounts module + $accounts = 'Accounts'; + $db->pquery('UPDATE vtiger_field SET isunique=? WHERE fieldname=? AND tabid=(SELECT tabid FROM vtiger_tab WHERE name=?)', array(1, 'accountname', $accounts)); + $db->pquery('UPDATE vtiger_tab SET allowduplicates=? WHERE name=?', array(0, $accounts)); + //End - Enable prevention for Accounts module + + $db->pquery('UPDATE vtiger_tab SET issyncable=1', array()); + $em = new VTEventsManager($db); + $em->registerHandler('vtiger.entity.beforesave', 'modules/Vtiger/handlers/CheckDuplicateHandler.php', 'CheckDuplicateHandler'); + + $em = new VTEventsManager($db); + $em->registerHandler('vtiger.entity.beforerestore', 'modules/Vtiger/handlers/CheckDuplicateHandler.php', 'CheckDuplicateHandler'); + echo '<br>Succecssfully handled duplications<br>'; + //END::Duplication Prevention + + //START::Webform Attachements + if (!Vtiger_Utils::CheckTable('vtiger_webform_file_fields')) { + $db->pquery('CREATE TABLE IF NOT EXISTS vtiger_webform_file_fields(id INT(19) NOT NULL AUTO_INCREMENT, webformid INT(19) NOT NULL, fieldname VARCHAR(100) NOT NULL, fieldlabel VARCHAR(100) NOT NULL, required INT(1) NOT NULL DEFAULT 0, PRIMARY KEY (id), KEY fk_vtiger_webforms (webformid), CONSTRAINT fk_vtiger_webforms FOREIGN KEY (webformid) REFERENCES vtiger_webforms (id) ON DELETE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=UTF8;', array()); + } + + $operationResult = $db->pquery('SELECT 1 FROM vtiger_ws_operation WHERE name=?', array('add_related')); + if (!$db->num_rows($operationResult)) { + $operationId = vtws_addWebserviceOperation('add_related', 'include/Webservices/AddRelated.php', 'vtws_add_related', 'POST'); + vtws_addWebserviceOperationParam($operationId, 'sourceRecordId', 'string', 1); + vtws_addWebserviceOperationParam($operationId, 'relatedRecordId', 'string', 2); + vtws_addWebserviceOperationParam($operationId, 'relationIdLabel', 'string', 3); + } + echo '<br>Succecssfully added Webforms attachements<br>'; + //END::Webform Attachements + + //START::Tag fields are pointed to cf table for the modules Assets, Services etc.. + $fieldName = 'tags'; + $moduleModels = Vtiger_Module_Model::getAll(); + foreach ($moduleModels as $moduleModel) { + $baseTableId = $moduleModel->basetableid; + if ($baseTableId) { + $baseTableName = $moduleModel->basetable; + $customTableName = $baseTableName.'cf'; + $customTableColumns = $db->getColumnNames($customTableName); + if (in_array($fieldName, $customTableColumns)) { + $fieldModel = Vtiger_Field_Model::getInstance($fieldName, $moduleModel); + $db->pquery("UPDATE vtiger_field SET tablename=? WHERE fieldid=?", array($baseTableName, $fieldModel->id)); + $db->pquery("ALTER TABLE $baseTableName ADD COLUMN $fieldName VARCHAR(1)", array()); + + $db->pquery("UPDATE $baseTableName, $customTableName SET $baseTableName.tags=$customTableName.tags WHERE $baseTableName.$baseTableId=$customTableName.$baseTableId", array()); + $db->pquery("ALTER TABLE $customTableName DROP COLUMN $fieldName", array()); + } + } + } + echo '<br>Succecssfully generalized tag fields<br>'; + //END::Tag fields are pointed to cf table for the modules Assets, Services etc.. + + //START::Follow & unfollow features + $em = new VTEventsManager($db); + $em->registerHandler('vtiger.entity.aftersave', 'modules/Vtiger/handlers/FollowRecordHandler.php', 'FollowRecordHandler'); + //END::Follow & unfollow features + + //START::Reordering Timezones + $fieldName = 'time_zone'; + $userModuleModel = Vtiger_Module_Model::getInstance('Users'); + $fieldModel = Vtiger_Field_Model::getInstance($fieldName, $userModuleModel); + if ($fieldModel) { + $picklistValues = $fieldModel->getPicklistValues(); + + $utcTimezones = preg_grep('/\(UTC\)/', $picklistValues); + asort($utcTimezones); + + $utcPlusTimezones = preg_grep('/\(UTC\+/', $picklistValues); + asort($utcPlusTimezones); + + $utcMinusTimezones = preg_grep('/\(UTC\-/', $picklistValues); + arsort($utcMinusTimezones); + + $timeZones = array_merge($utcMinusTimezones, $utcTimezones, $utcPlusTimezones); + $originalPicklistValues = array_flip(Vtiger_Util_Helper::getPickListValues($fieldName)); + + $orderedPicklists = array(); + $i = 0; + foreach ($timeZones as $timeZone => $value) { + $orderedPicklists[$originalPicklistValues[$timeZone]] = $i++; + } + ksort($orderedPicklists); + + $moduleModel = new Settings_Picklist_Module_Model(); + $moduleModel->updateSequence($fieldName, $orderedPicklists); + echo '<br>Succecssfully reordered timezones<br>'; + } + //END::Reordering Timezones + + //START::Differentiate custom modules from Vtiger modules + $vtigerTabColumns = $db->getColumnNames('vtiger_tab'); + if (!in_array('source', $vtigerTabColumns)) { + $db->pquery('ALTER TABLE vtiger_tab ADD COLUMN source VARCHAR(255) DEFAULT "custom"', array()); + } + $db->pquery('UPDATE vtiger_tab SET source=NULL', array()); + + $pkgModules = array(); + $pkgFolder = 'pkg/vtiger/modules'; + $pkgHandle = opendir($pkgFolder); + + if ($pkgHandle) { + while (($pkgModuleName = readdir($pkgHandle)) !== false) { + $pkgModules[$pkgModuleName] = $pkgModuleName; + + $moduleHandle = opendir("$pkgFolder/$pkgModuleName"); + while (($innerModuleName = readdir($moduleHandle)) !== false) { + if (is_dir("$pkgFolder/$pkgModuleName/$innerModuleName")) { + $pkgModules[$innerModuleName] = $innerModuleName; + } + } + closedir($moduleHandle); + } + closedir($pkgHandle); + $pkgModules = array_keys($pkgModules); + } + + $db->pquery('UPDATE vtiger_tab SET source="custom" WHERE version IS NOT NULL AND name NOT IN ('.generateQuestionMarks($pkgModules).')', $pkgModules); + echo '<br>Succecssfully added source column vtiger tab table<br>'; + //END::Differentiate custom modules from Vtiger modules + + //START::Google calendar sync settings + if (!Vtiger_Utils::CheckTable('vtiger_google_event_calendar_mapping')) { + $db->pquery('CREATE TABLE vtiger_google_event_calendar_mapping (event_id VARCHAR(255) DEFAULT NULL, calendar_id VARCHAR(255) DEFAULT NULL, user_id INT(11) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8', array()); + echo '<br>Succecssfully vtiger_google_event_calendar_mapping table created<br>'; + } + //END::Google calendar sync settings + + //START::Centralize user field table for easy query with context of user across module + $generalUserFieldTable = 'vtiger_crmentity_user_field'; + if (!Vtiger_Utils::CheckTable($generalUserFieldTable)) { + Vtiger_Utils::CreateTable($generalUserFieldTable, + '(`recordid` INT(19) NOT NULL, + `userid` INT(19) NOT NULL, + `starred` VARCHAR(100) DEFAULT NULL', true); + } + + if (Vtiger_Utils::CheckTable($generalUserFieldTable)) { + $indexRes = $db->pquery("SHOW INDEX FROM $generalUserFieldTable WHERE NON_UNIQUE=? AND KEY_NAME=?", array('1', 'record_user_idx')); + if ($db->num_rows($indexRes) < 2) { + $db->pquery('ALTER TABLE vtiger_crmentity_user_field ADD CONSTRAINT record_user_idx UNIQUE KEY(recordid, userid)', array()); + } + + $checkUserFieldConstraintExists = $db->pquery('SELECT DISTINCT 1 FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE table_name=? AND CONSTRAINT_SCHEMA=?', array($generalUserFieldTable, $db->dbName)); + if ($db->num_rows($checkUserFieldConstraintExists) < 1) { + $db->pquery('ALTER TABLE vtiger_crmentity_user_field ADD CONSTRAINT `fk_vtiger_crmentity_user_field_recordid` FOREIGN KEY (`recordid`) REFERENCES `vtiger_crmentity`(`crmid`) ON DELETE CASCADE', array()); + } + + } + + $migratedTables = array(); + $userTableResult = $db->pquery('SELECT vtiger_tab.tabid, vtiger_tab.name, tablename, fieldid FROM vtiger_field INNER JOIN vtiger_tab ON vtiger_tab.tabid=vtiger_field.tabid WHERE fieldname=?', array('starred')); + while ($row = $db->fetch_array($userTableResult)) { + $fieldId = $row['fieldid']; + $moduleName = $row['name']; + $oldTableName = $row['tablename']; + + $db->pquery('UPDATE vtiger_field SET tablename=? WHERE fieldid=? AND tablename=?', array($generalUserFieldTable, $fieldId, $oldTableName)); + echo "Updated starred field for module $moduleName to point generic table => $generalUserFieldTable<br>"; + + if (Vtiger_Utils::CheckTable($oldTableName)) { + if (!in_array($oldTableName, $migratedTables)) { + if ($oldTableName != $generalUserFieldTable) { + //Insert entries from module specific table to generic table for follow up records + $db->pquery("INSERT INTO $generalUserFieldTable (recordid, userid, starred) (SELECT recordid,userid,starred FROM $oldTableName INNER JOIN vtiger_crmentity ON $oldTableName.recordid = vtiger_crmentity.crmid)", array()); + echo "entries moved from $oldTableName to $generalUserFieldTable table<br>"; + + //Drop module specific user table + $db->pquery("DROP TABLE $oldTableName", array()); + echo "module specific user field table $oldTableName has been dropped<br>"; + array_push($migratedTables, $oldTableName); + } + } + } + } + echo '<br>Succesfully centralize user field table for easy query with context of user across module<br>'; + //END::Centralize user field table for easy query with context of user across module + + //START::Adding new parent TOOLS in menu + $appsList = array('Tools' => array('Rss', 'Portal', 'EmailTemplates', 'RecycleBin')); + foreach ($appsList as $appName => $appModules) { + $menuInstance = Vtiger_Menu::getInstance($appName); + foreach ($appModules as $moduleName) { + $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + if ($moduleModel) { + Settings_MenuEditor_Module_Model::addModuleToApp($moduleName, $appName); + $menuInstance->addModule($moduleModel); + } + } + } + + $tabResult1 = $db->pquery('SELECT tabid, name, parent FROM vtiger_tab WHERE presence IN (?, ?) AND source=?', array(0, 2, 'custom')); + while ($row = $db->fetch_row($tabResult1)) { + $parentFromDb = $row['parent']; + if ($parentFromDb) { + $moduleName = $row['name']; + $parentTabs = explode(',', $parentFromDb); + foreach ($parentTabs as $parentTab) { + Settings_MenuEditor_Module_Model::addModuleToApp($moduleName, $parentTab); + } + + $menuTab = $parentTabs[0]; + $menuInstance = Vtiger_Menu::getInstance($menuTab); + if ($menuInstance) { + $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + $menuInstance->addModule($moduleModel); + } + } + } + + $tabResult2 = $db->pquery('SELECT tabid, name FROM vtiger_tab', array()); + $moduleTabIds = array(); + while ($row = $db->fetch_array($tabResult2)) { + $moduleTabIds[$row['name']] = $row['tabid']; + } + + $defSequenceList = array( + 'MARKETING' => array( $moduleTabIds['Campaigns'], + $moduleTabIds['Leads'], + $moduleTabIds['Contacts'], + $moduleTabIds['Accounts'], + ), + 'SALES' => array( $moduleTabIds['Potentials'], + $moduleTabIds['Quotes'], + $moduleTabIds['Products'], + $moduleTabIds['Services'], + $moduleTabIds['SMSNotifier'], + $moduleTabIds['Contacts'], + $moduleTabIds['Accounts'] + ), + 'SUPPORT' => array( $moduleTabIds['HelpDesk'], + $moduleTabIds['Faq'], + $moduleTabIds['ServiceContracts'], + $moduleTabIds['Assets'], + $moduleTabIds['SMSNotifier'], + $moduleTabIds['Contacts'], + $moduleTabIds['Accounts'] + ), + 'INVENTORY' => array( $moduleTabIds['Products'], + $moduleTabIds['Services'], + $moduleTabIds['PriceBooks'], + $moduleTabIds['Invoice'], + $moduleTabIds['SalesOrder'], + $moduleTabIds['PurchaseOrder'], + $moduleTabIds['Vendors'], + $moduleTabIds['Contacts'], + $moduleTabIds['Accounts'] + ), + 'PROJECT' => array( $moduleTabIds['Project'], + $moduleTabIds['ProjectTask'], + $moduleTabIds['ProjectMilestone'], + $moduleTabIds['Contacts'], + $moduleTabIds['Accounts'] + ), + 'TOOLS' => array( $moduleTabIds['EmailTemplates'], + $moduleTabIds['Rss'], + $moduleTabIds['Portal'], + $moduleTabIds['RecycleBin'] + ) + ); + + $db->pquery('DELETE FROM vtiger_app2tab WHERE appname=? AND tabid IN (?, ?, ?)', array('SUPPORT', $moduleTabIds['Project'], $moduleTabIds['ProjectTask'], $moduleTabIds['ProjectMilestone'])); + $db->pquery('DELETE FROM vtiger_app2tab WHERE appname=? AND tabid=?', array('INVENTORY', $moduleTabIds['Assets'])); + + foreach ($defSequenceList as $appName => $tabIdsList) { + $appTabResult1 = $db->pquery('SELECT tabid FROM vtiger_app2tab WHERE appname=? AND tabid NOT IN ('.generateQuestionMarks($tabIdsList).')', array($appName, $tabIdsList)); + while ($row = $db->fetch_array($appTabResult1)) { + $defSequenceList[$appName][] = $row['tabid']; + } + } + + foreach ($defSequenceList as $appName => $tabIdsList) { + foreach ($tabIdsList as $seq => $tabId) { + $appTabResult2 = $db->pquery('SELECT 1 FROM vtiger_app2tab WHERE tabid=? AND appname=?', array($tabId, $appName)); + + $params = array($seq+1, $tabId, $appName); + if ($db->num_rows($appTabResult2)) { + $query = 'UPDATE vtiger_app2tab SET sequence=? WHERE tabid=? AND appname=?'; + } else { + $query = 'INSERT INTO vtiger_app2tab(sequence,tabid,appname) VALUES(?,?,?)'; + } + $db->pquery($query, $params); + } + } + echo '<br>Succesfully added RSS, Email Templates for new parent TOOLS<br>'; + //END::Adding new parent TOOLS in menu + + //Update existing package modules + Install_Utils_Model::installModules(); + + echo '<br>Succecssfully vtiger version updated to <b>7.1.0</b><br>'; +} diff --git a/modules/Migration/views/Index.php b/modules/Migration/views/Index.php index 8304d97f7ac49870eee1a4f6052509d13e645eb3..caecf7dba720fbd2bc1f23719ababfe80ae7d160 100644 --- a/modules/Migration/views/Index.php +++ b/modules/Migration/views/Index.php @@ -23,7 +23,9 @@ class Migration_Index_View extends Vtiger_View_Controller { public function process(Vtiger_Request $request) { // Override error reporting to production mode - version_compare(PHP_VERSION, '5.5.0') <= 0 ? error_reporting(E_WARNING & ~E_NOTICE & ~E_DEPRECATED) : error_reporting(E_WARNING & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT); + version_compare(PHP_VERSION, '5.5.0') <= 0 ? error_reporting(E_WARNING & ~E_NOTICE & ~E_DEPRECATED) : error_reporting(E_WARNING & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT); + // Migration could be heavy at-times. + set_time_limit(0); $mode = $request->getMode(); if(!empty($mode)) { diff --git a/modules/Potentials/models/Module.php b/modules/Potentials/models/Module.php index 1e7782f48bcf9e9296754e9b8de20d877a5cf2f1..9ea4f242bc3a1335bf6d010698e5b00f5f148f77 100644 --- a/modules/Potentials/models/Module.php +++ b/modules/Potentials/models/Module.php @@ -278,6 +278,14 @@ class Potentials_Module_Model extends Vtiger_Module_Model { $nonAdminQuery = $this->getNonAdminAccessControlQueryForRelation($relatedModuleName); if ($nonAdminQuery) { $query = appendFromClauseToQuery($query, $nonAdminQuery); + + if(trim($nonAdminQuery)) { + $relModuleFocus = CRMEntity::getInstance($relatedModuleName); + $condition = $relModuleFocus->buildWhereClauseConditionForCalendar(); + if($condition) { + $query .= ' AND '.$condition; + } + } } } else { $query = parent::getRelationQuery($recordId, $functionName, $relatedModule, $relationId); diff --git a/modules/Potentials/views/SaveConvertPotential.php b/modules/Potentials/views/SaveConvertPotential.php index 5e4110362ba3f6a90c4a6f51d7801db7ebbce22c..1df540874d30954f3064cb992f3061b2191b7d65 100644 --- a/modules/Potentials/views/SaveConvertPotential.php +++ b/modules/Potentials/views/SaveConvertPotential.php @@ -22,10 +22,6 @@ class Potentials_SaveConvertPotential_View extends Vtiger_View_Controller { } } - public function preProcess(Vtiger_Request $request) { - return true; - } - public function process(Vtiger_Request $request) { $recordId = $request->get('record'); $modules = $request->get('modules'); @@ -94,13 +90,20 @@ class Potentials_SaveConvertPotential_View extends Vtiger_View_Controller { function showError($request, $exception=false) { $viewer = $this->getViewer($request); + $moduleName = $request->getModule(); + + $isDupicatesFailure = false; if($exception != false) { $viewer->assign('EXCEPTION', $exception->getMessage()); + if ($exception instanceof DuplicateException) { + $isDupicatesFailure = true; + $viewer->assign('EXCEPTION', $exception->getDuplicationMessage()); + } } - $moduleName = $request->getModule(); $currentUser = Users_Record_Model::getCurrentUserModel(); + $viewer->assign('IS_DUPICATES_FAILURE', $isDupicatesFailure); $viewer->assign('CURRENT_USER', $currentUser); $viewer->assign('MODULE', $moduleName); $viewer->view('ConvertPotentialError.tpl', $moduleName); diff --git a/modules/PriceBooks/models/Relation.php b/modules/PriceBooks/models/Relation.php index a265a1c5c97a4e764f41f4dfebe5b49d30cc2b2f..793b76b0f91848ddf2781e6f083d95c24420da08 100644 --- a/modules/PriceBooks/models/Relation.php +++ b/modules/PriceBooks/models/Relation.php @@ -48,6 +48,20 @@ class PriceBooks_Relation_Model extends Vtiger_Relation_Model{ if(!empty($selectColumnSql)) { $query = $selectColumnSql.' FROM '.$newQuery[1]; } + + if($relatedModuleName == 'Calendar') { + $nonAdminQuery = Users_Privileges_Model::getNonAdminAccessControlQuery($relatedModuleName); + + if (trim($nonAdminQuery)) { + $query = appendFromClauseToQuery($query, $nonAdminQuery); + + $moduleFocus = CRMEntity::getInstance('Calendar'); + $condition = $moduleFocus->buildWhereClauseConditionForCalendar(); + if($condition) { + $query .= ' AND '.$condition; + } + } + } return $query; } diff --git a/modules/PriceBooks/views/Popup.php b/modules/PriceBooks/views/Popup.php index 83c037961b07993808b5e50bf71aaa03a1513552..3beef1487d8c6433cd892cbe5b3f43d0a42b1bb3 100644 --- a/modules/PriceBooks/views/Popup.php +++ b/modules/PriceBooks/views/Popup.php @@ -63,6 +63,9 @@ class PriceBooks_Popup_View extends Vtiger_Popup_View { $listViewModel->set('src_field', $sourceField); $listViewModel->set('src_record', $sourceRecord); } + if (!empty($sourceRecord)) { + $listViewModel->set('src_record', $sourceRecord); + } if((!empty($searchKey)) && (!empty($searchValue))) { $listViewModel->set('search_key', $searchKey); $listViewModel->set('search_value', $searchValue); @@ -164,4 +167,4 @@ class PriceBooks_Popup_View extends Vtiger_Popup_View { $viewer->assign('MULTI_SELECT', $multiSelectMode); $viewer->assign('CURRENT_USER_MODEL', Users_Record_Model::getCurrentUserModel()); } -} \ No newline at end of file +} diff --git a/modules/Products/models/RelationListView.php b/modules/Products/models/RelationListView.php index 19e7d665f6b3d16d0fbfbf2e32002d87bfe7a3a8..b9c320d1e48be73e0f5dfee03a4dd645ee24627c 100644 --- a/modules/Products/models/RelationListView.php +++ b/modules/Products/models/RelationListView.php @@ -70,6 +70,21 @@ class Products_RelationListView_Model extends Vtiger_RelationListView_Model { } } + $nonAdminQuery = Users_Privileges_Model::getNonAdminAccessControlQuery($relatedModuleName); + if (trim($nonAdminQuery)) { + if($relatedModuleName == 'Calendar') { + $query = appendFromClauseToQuery($query, $nonAdminQuery); + + $moduleFocus = CRMEntity::getInstance('Calendar'); + $condition = $moduleFocus->buildWhereClauseConditionForCalendar(); + if($condition) { + $query .= ' AND '.$condition; + } + } else { + $query = appendFromClauseToQuery($query, $nonAdminQuery); + } + } + return $query; } diff --git a/modules/Reports/ReportRun.php b/modules/Reports/ReportRun.php index 5f9c6564c65c638ab52873f22aa3a1943a34120e..44af415b788c0419356598a835a10cb78307ec20 100644 --- a/modules/Reports/ReportRun.php +++ b/modules/Reports/ReportRun.php @@ -2828,6 +2828,25 @@ class ReportRun extends CRMEntity { } $log->info("ReportRun :: Successfully returned getReportsQuery" . $module); + + $secondarymodule = explode(":", $this->secondarymodule); + if(in_array('Calendar', $secondarymodule) || $module == 'Calendar') { + $currentUserModel = Users_Record_Model::getCurrentUserModel(); + $tabId = getTabid('Calendar'); + $task_tableName = 'vt_tmp_u'.$currentUserModel->id.'_t'.$tabId.'_task'; + $event_tableName = 'vt_tmp_u'.$currentUserModel->id.'_t'.$tabId.'_events'; + if(!$currentUserModel->isAdminUser() + && stripos($query, $event_tableName) && stripos($query, $task_tableName)) { + $moduleFocus = CRMEntity::getInstance('Calendar'); + $scope = ''; + if(in_array('Calendar', $secondarymodule)) $scope = 'Calendar'; + $condition = $moduleFocus->buildWhereClauseConditionForCalendar($scope); + if($condition) { + $query .= ' AND '.$condition; + } + } + } + return $query; } diff --git a/modules/Settings/LayoutEditor/actions/Field.php b/modules/Settings/LayoutEditor/actions/Field.php index 2c1dc460c0cde9eb76404a887273edd68f94b0c0..a5dcaaf3a99d77f29e4b78fa60b4b82f1fbf4c35 100644 --- a/modules/Settings/LayoutEditor/actions/Field.php +++ b/modules/Settings/LayoutEditor/actions/Field.php @@ -18,6 +18,7 @@ class Settings_LayoutEditor_Field_Action extends Settings_Vtiger_Index_Action { $this->exposeMethod('delete'); $this->exposeMethod('move'); $this->exposeMethod('unHide'); + $this->exposeMethod('updateDuplicateHandling'); } public function add(Vtiger_Request $request) { @@ -191,7 +192,23 @@ class Settings_LayoutEditor_Field_Action extends Settings_Vtiger_Index_Action { $response->emit(); } - + + public function updateDuplicateHandling(Vtiger_Request $request) { + $response = new Vtiger_Response(); + try { + $sourceModule = $request->get('sourceModule'); + $moduleModel = Settings_LayoutEditor_Module_Model::getInstanceByName($sourceModule); + + $fieldIdsList = $request->get('fieldIdsList'); + $result = $moduleModel->updateDuplicateHandling($request->get('rule'), $fieldIdsList, $request->get('syncActionId')); + + $response->setResult($result); + } catch (Exception $e) { + $response->setError($e->getCode(), $e->getMessage()); + } + $response->emit(); + } + public function validateRequest(Vtiger_Request $request) { $request->validateWriteAccess(); } diff --git a/modules/Settings/LayoutEditor/models/Module.php b/modules/Settings/LayoutEditor/models/Module.php index 2c497895c3bba968a5194d5a4e6ed8425d0d712d..65b7fc565f8b168a5c3582424a160ea95d23c80b 100644 --- a/modules/Settings/LayoutEditor/models/Module.php +++ b/modules/Settings/LayoutEditor/models/Module.php @@ -363,6 +363,7 @@ class Settings_LayoutEditor_Module_Model extends Vtiger_Module_Model { for($i=0; $i<$numOfRows; $i++) { $moduleName = $db->query_result($result, $i, 'name'); $modulesList[$moduleName] = vtranslate($moduleName, $moduleName); + //Calendar needs to be shown as TODO so we are translating using Layout editor specific translations if ($moduleName == 'Calendar') { $modulesList[$moduleName] = vtranslate($moduleName, 'Settings:LayoutEditor'); } @@ -457,4 +458,30 @@ class Settings_LayoutEditor_Module_Model extends Vtiger_Module_Model { $result = $db->pquery('SELECT 1 FROM vtiger_relatedlists WHERE relationfieldid=?',array($fieldModel->getId())); return ($db->num_rows($result) > 0) ? self::MANY_TO_ONE : self::ONE_TO_ONE; } + + public function updateDuplicateHandling($rule, $fieldIdsList = array(), $syncActionId = 1) { + $db = PearDatabase::getInstance(); + $tabId = $this->getId(); + + if (!$fieldIdsList) { + $fieldIdsList = array(0); + } + + //Fields Info + if (count($fieldIdsList) < 4) {//Maximum 3 fields are allowed + $query = 'UPDATE vtiger_field SET isunique = CASE WHEN fieldid IN ('. generateQuestionMarks($fieldIdsList).') THEN 1 ELSE 0 END WHERE tabid=?'; + $params = array_merge($fieldIdsList, array($tabId)); + $db->pquery($query, $params); + } + + if (!$syncActionId) { + $syncActionId = 1; + } + + //Rule + $db->pquery('UPDATE vtiger_tab SET allowduplicates=?, sync_action_for_duplicates=? WHERE tabid=?', array($rule, $syncActionId, $tabId)); + Vtiger_Cache::flushModuleCache($this->getName()); + return true; + } + } diff --git a/modules/Settings/LayoutEditor/views/Index.php b/modules/Settings/LayoutEditor/views/Index.php index 716d84d07a56c82f0e79817d774b6564697a5d34..1579cc71d7601c515444615b32039938b7e9a662 100644 --- a/modules/Settings/LayoutEditor/views/Index.php +++ b/modules/Settings/LayoutEditor/views/Index.php @@ -16,10 +16,36 @@ class Settings_LayoutEditor_Index_View extends Settings_Vtiger_Index_View { $this->exposeMethod('showFieldLayout'); $this->exposeMethod('showRelatedListLayout'); $this->exposeMethod('showFieldEdit'); + $this->exposeMethod('showDuplicationHandling'); } public function process(Vtiger_Request $request) { $mode = $request->getMode(); + switch($mode) { + case 'showRelatedListLayout' : $selectedTab = 'relatedListTab'; break; + case 'showDuplicationHandling' : $selectedTab = 'duplicationTab'; break; + default : $selectedTab = 'detailViewTab'; + if (!$mode) { + $mode = 'showFieldLayout'; + } + break; + } + + $sourceModule = $request->get('sourceModule'); + $supportedModulesList = Settings_LayoutEditor_Module_Model::getSupportedModules(); + $supportedModulesList = array_flip($supportedModulesList); + ksort($supportedModulesList); + + $viewer = $this->getViewer($request); + $viewer->assign('MODE', $mode); + $viewer->assign('SELECTED_TAB', $selectedTab); + $viewer->assign('SUPPORTED_MODULES', $supportedModulesList); + $viewer->assign('REQUEST_INSTANCE', $request); + + if ($sourceModule) { + $viewer->assign('SELECTED_MODULE_NAME', $sourceModule); + } + if($this->isMethodExposed($mode)) { $this->invokeExposedMethod($mode, $request); }else { @@ -86,7 +112,11 @@ class Settings_LayoutEditor_Index_View extends Settings_Vtiger_Index_View { $sourceModuleModel = Vtiger_Module_Model::getInstance($sourceModule); $this->setModuleInfo($request, $sourceModuleModel, $cleanFieldModel); - $viewer->view('Index.tpl',$qualifiedModule); + if ($request->isAjax() && !$request->get('showFullContents')) { + $viewer->view('FieldsList.tpl', $qualifiedModule); + } else { + $viewer->view('Index.tpl', $qualifiedModule); + } } public function showRelatedListLayout(Vtiger_Request $request) { @@ -131,7 +161,12 @@ class Settings_LayoutEditor_Index_View extends Settings_Vtiger_Index_View { $viewer->assign('HIDDEN_TAB_EXISTS', $hiddenRelationTabExists); $viewer->assign('MODULE_MODEL', $moduleModel); $viewer->assign('QUALIFIED_MODULE', $qualifiedModule); - $viewer->view('RelatedList.tpl', $qualifiedModule); + + if ($request->isAjax() && !$request->get('showFullContents')) { + $viewer->view('RelatedList.tpl', $qualifiedModule); + } else { + $viewer->view('Index.tpl', $qualifiedModule); + } } public function showFieldEdit(Vtiger_Request $request) { @@ -169,6 +204,40 @@ class Settings_LayoutEditor_Index_View extends Settings_Vtiger_Index_View { $viewer->view('FieldCreate.tpl', $qualifiedModule); } + public function showDuplicationHandling(Vtiger_Request $request) { + $qualifiedModule = $request->getModule(false); + $sourceModuleName = $request->get('sourceModule'); + $moduleModel = Vtiger_Module_Model::getInstance($sourceModuleName); + $blocks = $moduleModel->getBlocks(); + + $fields = array(); + foreach ($blocks as $blockId => $blockModel) { + $blockFields = $blockModel->getFields(); + foreach ($blockFields as $key => $fieldModel) { + if ($fieldModel->isEditable() + && $fieldModel->get('displaytype') != 5 + && !in_array($fieldModel->get('uitype'), array(28, 30, 53, 56, 69, 83)) + && !in_array($fieldModel->getFieldDataType(), array('text', 'multireference'))) { + $fields[$blockModel->get('label')][$fieldModel->getName()] = $fieldModel; + } + } + } + + $viewer = $this->getViewer($request); + $viewer->assign('FIELDS', $fields); + $viewer->assign('SOURCE_MODULE', $sourceModuleName); + $viewer->assign('QUALIFIED_MODULE', $qualifiedModule); + $viewer->assign('SOURCE_MODULE_MODEL', $moduleModel); + $viewer->assign('ACTIONS', Vtiger_Module_Model::getSyncActionsInDuplicatesCheck()); + $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); + + if ($request->isAjax() && !$request->get('showFullContents')) { + $viewer->view('DuplicateHandling.tpl', $qualifiedModule); + } else { + $viewer->view('Index.tpl', $qualifiedModule); + } + } + /** * Function to get the list of Script models to be included * @param Vtiger_Request $request diff --git a/modules/Settings/LoginHistory/models/Record.php b/modules/Settings/LoginHistory/models/Record.php index 303145f1c29474b35d69696861dfddf466c6fca9..162ec9fb07188be1e0a350a2442177233772e6f9 100644 --- a/modules/Settings/LoginHistory/models/Record.php +++ b/modules/Settings/LoginHistory/models/Record.php @@ -44,15 +44,21 @@ class Settings_LoginHistory_Record_Model extends Settings_Vtiger_Record_Model { * @return <String> */ public function getDisplayValue($fieldName, $recordId = false) { - if($fieldName == 'login_time' || $fieldName == 'logout_time'){ - if($this->get($fieldName) != '0000-00-00 00:00:00'){ - return Vtiger_Datetime_UIType::getDateTimeValue($this->get($fieldName)); - }else{ - return '---'; + $fieldValue = $this->get($fieldName); + + if ($fieldName == 'login_time') { + if ($fieldValue != '0000-00-00 00:00:00') { + $fieldValue = Vtiger_Datetime_UIType::getDateTimeValue($fieldValue); + } else { + $fieldValue = '---'; + } + } else if ($fieldName == 'logout_time') { + if ($fieldValue != '0000-00-00 00:00:00' && $this->get('status') != 'Signed in') { + $fieldValue = Vtiger_Datetime_UIType::getDateTimeValue($fieldValue); + } else { + $fieldValue = '---'; } - } else { - return $this->get($fieldName); } - + return $fieldValue; } } diff --git a/modules/Settings/MailConverter/handlers/MailScanner.php b/modules/Settings/MailConverter/handlers/MailScanner.php index 93d56a41e70008d01c22b8388aff18db73376be1..15c3cd0091b048405f497ff3ee11a0096ef1317d 100644 --- a/modules/Settings/MailConverter/handlers/MailScanner.php +++ b/modules/Settings/MailConverter/handlers/MailScanner.php @@ -373,7 +373,7 @@ class Vtiger_MailScanner { $account_focus = $this->_cachedAccounts[$accountid]; $this->log("Reusing Cached Account [" . $account_focus->column_fields[accountname] . "]"); } else { - $account_focus = new Accounts(); + $account_focus = CRMEntity::getInstance('Accounts'); $account_focus->retrieve_entity_info($accountid, 'Accounts'); $account_focus->id = $accountid; @@ -398,7 +398,7 @@ class Vtiger_MailScanner { $this->log("Reusing Cached Contact [" . $contact_focus->column_fields[lastname] . '-' . $contact_focus->column_fields[firstname] . "]"); } else { - $contact_focus = new Contacts(); + $contact_focus = CRMEntity::getInstance('Contacts'); $contact_focus->retrieve_entity_info($contactid, 'Contacts'); $contact_focus->id = $contactid; @@ -423,7 +423,7 @@ class Vtiger_MailScanner { $this->log("Reusing Cached Lead [" . $lead_focus->column_fields[lastname] . '-' . $lead_focus->column_fields[firstname] . "]"); } else { - $lead_focus = new Leads(); + $lead_focus = CRMEntity::getInstance('Leads'); $lead_focus->retrieve_entity_info($leadid, 'Leads'); $lead_focus->id = $leadid; @@ -466,7 +466,7 @@ class Vtiger_MailScanner { $this->log("Reusing Cached Ticket [" . $ticket_focus->column_fields[ticket_title] ."]"); } } else { - $ticket_focus = new HelpDesk(); + $ticket_focus = CRMEntity::getInstance('HelpDesk'); $ticket_focus->retrieve_entity_info($ticketid, 'HelpDesk'); $ticket_focus->id = $ticketid; // Check the parentid association if specified. diff --git a/modules/Settings/MailConverter/handlers/MailScannerAction.php b/modules/Settings/MailConverter/handlers/MailScannerAction.php index 2954f5da739e8d6db973037b04cb7ebf50ac1d54..8b8bdd4439adf48420058d7714b95b89882604f7 100644 --- a/modules/Settings/MailConverter/handlers/MailScannerAction.php +++ b/modules/Settings/MailConverter/handlers/MailScannerAction.php @@ -222,11 +222,16 @@ class Vtiger_MailScannerAction { $contact->column_fields['assigned_user_id'] = $mailscannerrule->assigned_to; $contact->column_fields['description'] = $description; $contact->column_fields['source'] = $this->recordSource; - $contact->save('Contacts'); - $this->__SaveAttachements($mailrecord, 'Contacts', $contact); + try { + $contact->save('Contacts'); - return $contact->id; + $this->__SaveAttachements($mailrecord, 'Contacts', $contact); + return $contact->id; + } catch (Exception $e) { + //TODO - Review + return false; + } } /** @@ -249,11 +254,17 @@ class Vtiger_MailScannerAction { $lead->column_fields['assigned_user_id'] = $mailscannerrule->assigned_to; $lead->column_fields['description'] = $description; $lead->column_fields['source'] = $this->recordSource; - $lead->save('Leads'); - $this->__SaveAttachements($mailrecord, 'Leads', $lead); + try { + $lead->save('Leads'); + + $this->__SaveAttachements($mailrecord, 'Leads', $lead); - return $lead->id; + return $lead->id; + } catch (Exception $e) { + //TODO - Review + return false; + } } /** @@ -275,11 +286,16 @@ class Vtiger_MailScannerAction { $account->column_fields['assigned_user_id'] = $mailscannerrule->assigned_to; $account->column_fields['description'] = $description; $account->column_fields['source'] = $this->recordSource; - $account->save('Accounts'); - $this->__SaveAttachements($mailrecord, 'Accounts', $account); + try { + $account->save('Accounts'); + $this->__SaveAttachements($mailrecord, 'Accounts', $account); - return $account->id; + return $account->id; + } catch (Exception $e) { + //TODO - Review + return false; + } } /** @@ -315,18 +331,24 @@ class Vtiger_MailScannerAction { $ticket->column_fields['parent_id'] = $linktoid; $ticket->column_fields['source'] = $this->recordSource; - $ticket->save('HelpDesk'); - // Associate any attachement of the email to ticket - $this->__SaveAttachements($mailrecord, 'HelpDesk', $ticket); + try { + $ticket->save('HelpDesk'); + + // Associate any attachement of the email to ticket + $this->__SaveAttachements($mailrecord, 'HelpDesk', $ticket); - if($contactLinktoid) - $relatedTo = $contactLinktoid; - else - $relatedTo = $linktoid; - $this->linkMail($mailscanner, $mailrecord, $relatedTo); + if($contactLinktoid) + $relatedTo = $contactLinktoid; + else + $relatedTo = $linktoid; + $this->linkMail($mailscanner, $mailrecord, $relatedTo); - return $ticket->id; + return $ticket->id; + } catch (Exception $e) { + //TODO - Review + return false; + } } /** diff --git a/modules/Settings/MenuEditor/models/Module.php b/modules/Settings/MenuEditor/models/Module.php index 0b6c4e719bbe5d4a74e338d90cafd2e9cfb334b2..b31221dc5ee232bddda44a448f45eb31b46dd645 100644 --- a/modules/Settings/MenuEditor/models/Module.php +++ b/modules/Settings/MenuEditor/models/Module.php @@ -62,15 +62,15 @@ class Settings_MenuEditor_Module_Model extends Settings_Vtiger_Module_Model { $userPrivModel = Users_Privileges_Model::getCurrentUserPrivilegesModel(); if ($count > 0) { for ($i = 0; $i < $count; $i++) { - $appname = $db->query_result($result, $i, 'appname'); $tabid = $db->query_result($result, $i, 'tabid'); - $sequence = $db->query_result($result, $i, 'sequence'); $moduleName = getTabModuleName($tabid); - if ($moduleName === 'Transactions') - continue; //Transactions module should not be available in Menu $moduleModel = Vtiger_Module_Model::getInstance($moduleName); - if (empty($moduleModel)) + if (empty($moduleModel)) { continue; + } + + $sequence = $db->query_result($result, $i, 'sequence'); + $appname = $db->query_result($result, $i, 'appname'); $moduleModel->set('app2tab_sequence', $sequence); if (($userPrivModel->isAdminUser() || $userPrivModel->hasGlobalReadPermission() || @@ -84,6 +84,8 @@ class Settings_MenuEditor_Module_Model extends Settings_Vtiger_Module_Model { } public static function addModuleToApp($moduleName, $parent) { + if (empty($moduleName) || empty($parent)) return; + $db = PearDatabase::getInstance(); $parent = strtoupper($parent); $oldToNewAppMapping = Vtiger_MenuStructure_Model::getOldToNewAppMapping(); diff --git a/modules/Settings/Picklist/models/Module.php b/modules/Settings/Picklist/models/Module.php index f76b7efe1f704581fc769c9e4300da6cba13b69e..21112e6377a50a68cc6e4f942189c63821911dd6 100644 --- a/modules/Settings/Picklist/models/Module.php +++ b/modules/Settings/Picklist/models/Module.php @@ -300,17 +300,13 @@ class Settings_Picklist_Module_Model extends Vtiger_Module_Model { public static function getPicklistSupportedModules() { - $db = PearDatabase::getInstance(); - $restrictedPickListModule = array('Transactions'); - // vtlib customization: Ignore disabled modules. + $db = PearDatabase::getInstance(); $query = "SELECT distinct vtiger_tab.tablabel, vtiger_tab.name as tabname FROM vtiger_tab inner join vtiger_field on vtiger_tab.tabid=vtiger_field.tabid WHERE uitype IN (15,33,16,114) and vtiger_field.tabid NOT IN (29,10) and vtiger_tab.presence != 1 and vtiger_field.presence in (0,2) - AND vtiger_tab.tablabel NOT IN (" . generateQuestionMarks($restrictedPickListModule) . ") ORDER BY vtiger_tab.tabid ASC"; - // END - $result = $db->pquery($query, array($restrictedPickListModule)); + $result = $db->pquery($query, array()); $modulesModelsList = array(); while($row = $db->fetch_array($result)){ diff --git a/modules/Settings/Vtiger/actions/OutgoingServerSaveAjax.php b/modules/Settings/Vtiger/actions/OutgoingServerSaveAjax.php index 78a3f648c01aa045d63c92a7d598f6d2057177d1..52d47351165183f047101d61c8818792d7ca9200 100644 --- a/modules/Settings/Vtiger/actions/OutgoingServerSaveAjax.php +++ b/modules/Settings/Vtiger/actions/OutgoingServerSaveAjax.php @@ -21,9 +21,13 @@ class Settings_Vtiger_OutgoingServerSaveAjax_Action extends Settings_Vtiger_Basi } $response = new Vtiger_Response(); try{ - $id = $outgoingServerSettingsModel->save($request); - $data = $outgoingServerSettingsModel->getData(); - $response->setResult($data); + if ($loadDefaultSettings == "true") { + $response->setResult('OK'); + } else { + $id = $outgoingServerSettingsModel->save($request); + $data = $outgoingServerSettingsModel->getData(); + $response->setResult($data); + } }catch(Exception $e) { $response->setError($e->getCode(), $e->getMessage()); } @@ -33,4 +37,4 @@ class Settings_Vtiger_OutgoingServerSaveAjax_Action extends Settings_Vtiger_Basi public function validateRequest(Vtiger_Request $request) { $request->validateWriteAccess(); } -} \ No newline at end of file +} diff --git a/modules/Settings/Vtiger/models/CompanyDetails.php b/modules/Settings/Vtiger/models/CompanyDetails.php index fc4a38c8bd98c1da8b858d2e8250043560d4896d..f41aa8582844464f75947b44d5eeb0336420d0c1 100644 --- a/modules/Settings/Vtiger/models/CompanyDetails.php +++ b/modules/Settings/Vtiger/models/CompanyDetails.php @@ -147,17 +147,6 @@ class Settings_Vtiger_CompanyDetails_Model extends Settings_Vtiger_Module_Model array_push($params, $db->getUniqueID($this->baseTable)); } $db->pquery($query, $params); - - $companyName = $this->get('organizationname'); - $companyName = preg_replace(array("/>/", "/</", "/&/", "/'/", '/""/', '/gt;/', '/lt;/', '/;/'), '', $companyName); - $fileContent = file_get_contents('portal/config.inc.php'); - $pattern = '/\$companyName[\s]+=([^;]+);/'; - $replacedValue = sprintf("\$%s = '%s';", 'companyName', $companyName); - $fileContent = preg_replace($pattern, $replacedValue, $fileContent); - $fp = fopen('portal/config.inc.php', 'w'); - fwrite($fp, $fileContent); - fclose($fp); - // End } /** diff --git a/modules/Settings/Vtiger/models/Module.php b/modules/Settings/Vtiger/models/Module.php index e9470413c806e7ddfef8409665cff272801a65af..f6a276f33e631c21d2f55d6bdbfcc8ac706d7fa5 100644 --- a/modules/Settings/Vtiger/models/Module.php +++ b/modules/Settings/Vtiger/models/Module.php @@ -186,6 +186,19 @@ class Settings_Vtiger_Module_Model extends Vtiger_Base_Model { return $blocksList[$viewName]; } + public function getModuleIcon() { + $moduleName = $this->getName(); + $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + if ($moduleModel) { + $moduleIcon = $moduleModel->getModuleIcon(); + } else { + $lowerModuleName = strtolower($moduleName); + $title = vtranslate($moduleName, $moduleName); + $moduleIcon = "<i class='vicon-$lowerModuleName' title='$title'></i>"; + } + return $moduleIcon; + } + static function getSettingsMenuListForNonAdmin() { $currentUser = Users_Record_Model::getCurrentUserModel(); $myTagSettingsUrl = $currentUser->getMyTagSettingsListUrl(); @@ -201,5 +214,4 @@ class Settings_Vtiger_Module_Model extends Vtiger_Base_Model { return $settingsMenuList; } - } diff --git a/modules/Settings/Vtiger/models/OutgoingServer.php b/modules/Settings/Vtiger/models/OutgoingServer.php index b3ca8032f23cee99e2c701ade03197b18646898e..be48433fa969c6eaa966d385ff04b3a7cbd7c2a3 100644 --- a/modules/Settings/Vtiger/models/OutgoingServer.php +++ b/modules/Settings/Vtiger/models/OutgoingServer.php @@ -24,11 +24,17 @@ class Settings_Vtiger_OutgoingServer_Model extends Settings_Vtiger_Systems_Model <br><br>Thanks and Regards,<br> Team vTiger <br><br>'; } - public function loadDefaultValues() { + public function loadDefaultValues() { $defaultOutgoingServerDetails = VtigerConfig::getOD('DEFAULT_OUTGOING_SERVER_DETAILS'); + if (empty($defaultOutgoingServerDetails)) { + $db = PearDatabase::getInstance(); + $db->pquery('DELETE FROM vtiger_systems WHERE server_type = ?', array('email')); + return; + } foreach ($defaultOutgoingServerDetails as $key=>$value){ $this->set($key,$value); } + $this->defaultLoaded = true; } @@ -76,4 +82,4 @@ class Settings_Vtiger_OutgoingServer_Model extends Settings_Vtiger_Systems_Model } return parent::save(); } -} \ No newline at end of file +} diff --git a/modules/Settings/Workflows/actions/SaveWorkflow.php b/modules/Settings/Workflows/actions/SaveWorkflow.php index fb048d6a051f9d74d858bbd159230b7ddfcbbc90..20e37414a35f87dac5f667bad5475c3886198c6c 100644 --- a/modules/Settings/Workflows/actions/SaveWorkflow.php +++ b/modules/Settings/Workflows/actions/SaveWorkflow.php @@ -29,17 +29,14 @@ class Settings_Workflows_SaveWorkflow_Action extends Vtiger_Action_Controller { $executionCondition = $workflow_trigger; } - $status = $request->get('status'); - $tasks = $request->get('tasks'); - $rawTasks = $request->getRaw('tasks'); $moduleModel = Settings_Vtiger_Module_Model::getInstance($request->getModule(false)); - if ($recordId) { $workflowModel = Settings_Workflows_Record_Model::getInstance($recordId); } else { $workflowModel = Settings_Workflows_Record_Model::getCleanInstance($moduleName); } + $status = $request->get('status'); if ($status == "active") { $status = 1; } else { @@ -129,7 +126,7 @@ class Settings_Workflows_SaveWorkflow_Action extends Vtiger_Action_Controller { $workflowModel->save(); } - $this->saveTasks($workflowModel->get('workflow_id'), $tasks); + $this->saveTasks($workflowModel, $request); $returnPage = $request->get("returnpage", null); $returnSourceModule = $request->get("returnsourcemodule", null); @@ -139,9 +136,11 @@ class Settings_Workflows_SaveWorkflow_Action extends Vtiger_Action_Controller { header("Location: " . $redirectUrl); } - function saveTasks($id, $tasks) { + function saveTasks($workflowModel, $request) { + $tasks = $request->getRaw('tasks'); + $id = $workflowModel->get('workflow_id'); if (!empty($tasks)) { - foreach ($tasks as $key => $task) { + foreach ($tasks as $task) { $taskDecodedArray = json_decode($task, true); $taskAjaxObject = new Settings_Workflows_TaskAjax_Action(); $request = new Vtiger_Request($taskDecodedArray, $taskDecodedArray); diff --git a/modules/Settings/Workflows/models/TaskType.php b/modules/Settings/Workflows/models/TaskType.php index 8d7bf75b1287ebb1e2b8290cacd8764129252718..c88d8fd33d723b80bc68d733059a4b2cb8acf458 100644 --- a/modules/Settings/Workflows/models/TaskType.php +++ b/modules/Settings/Workflows/models/TaskType.php @@ -28,9 +28,7 @@ class Settings_Workflows_TaskType_Model extends Vtiger_Base_Model { } public function getTemplatePath() { - // TODO - Do required template path transformation once the new template files are created, till the database is updated with new path - $templatePath = vtemplate_path('Tasks/'.$this->getName().'.tpl', 'Settings:Workflows'); - return $templatePath; + return $this->get('templatepath'); } public function getEditViewUrl() { diff --git a/modules/Users/DefaultDataPopulator.php b/modules/Users/DefaultDataPopulator.php index 32adec71372d1678164a312086691d1dc83debdf..f7db6e1bedd79f6689e086f8f1315cd8a490c3db 100644 --- a/modules/Users/DefaultDataPopulator.php +++ b/modules/Users/DefaultDataPopulator.php @@ -1115,7 +1115,7 @@ class DefaultDataPopulator extends CRMEntity { $this->db->query("insert into vtiger_relatedlists values(" . $this->db->getUniqueID('vtiger_relatedlists') . "," . getTabid("Products") . "," . getTabid("HelpDesk") . ",'get_tickets',1,'HelpDesk',0,'add','','','')"); $this->db->query("insert into vtiger_relatedlists values(" . $this->db->getUniqueID('vtiger_relatedlists') . "," . getTabid("Products") . "," . getTabid("Documents") . ",'get_attachments',3,'Documents',0,'add,select','','','')"); $this->db->query("insert into vtiger_relatedlists values(" . $this->db->getUniqueID('vtiger_relatedlists') . "," . getTabid("Products") . "," . getTabid("Quotes") . ",'get_quotes',4,'Quotes',0,'add','','','')"); - $this->db->query("insert into vtiger_relatedlists values(" . $this->db->getUniqueID('vtiger_relatedlists') . "," . getTabid("Products") . "," . getTabid("PurchaseOrder") . ",'get_purchase_orders',5,'Purchase Order',0,'add')"); + $this->db->query("insert into vtiger_relatedlists values(" . $this->db->getUniqueID('vtiger_relatedlists') . "," . getTabid("Products") . "," . getTabid("PurchaseOrder") . ",'get_purchase_orders',5,'Purchase Order',0,'add','','','')"); $this->db->query("insert into vtiger_relatedlists values(" . $this->db->getUniqueID('vtiger_relatedlists') . "," . getTabid("Products") . "," . getTabid("SalesOrder") . ",'get_salesorder',6,'Sales Order',0,'add','','','')"); $this->db->query("insert into vtiger_relatedlists values(" . $this->db->getUniqueID('vtiger_relatedlists') . "," . getTabid("Products") . "," . getTabid("Invoice") . ",'get_invoices',7,'Invoice',0,'add','','','')"); $this->db->query("insert into vtiger_relatedlists values(" . $this->db->getUniqueID('vtiger_relatedlists') . "," . getTabid("Products") . "," . getTabid("PriceBooks") . ",'get_product_pricebooks',8,'PriceBooks',0,'add','','','')"); diff --git a/modules/Users/Users.php b/modules/Users/Users.php index 40edb728e2c46f27075f0065e8d3a1320955bcfb..2f1fafce982fa43896f509d1a8c8a746b9f07aa8 100755 --- a/modules/Users/Users.php +++ b/modules/Users/Users.php @@ -511,7 +511,9 @@ class Users extends CRMEntity { if (!is_admin($current_user)) { $this->db->startTransaction(); - if(!$this->verifyPassword($user_password)) { + $verified = $this->verifyPassword($user_password); + $this->db->completeTransaction(); + if(!$verified) { $this->log->warn("Incorrect old password for $usr_name"); $this->error_string = $mod_strings['ERR_PASSWORD_INCORRECT_OLD']; return false; @@ -703,7 +705,7 @@ class Users extends CRMEntity { * @param $module -- module name:: Type varchar * */ - function saveentity($module) { + function saveentity($module, $fileid='') { global $current_user;//$adb added by raju for mass mailing $insertion_mode = $this->mode; if(empty($this->column_fields['time_zone'])) { @@ -793,7 +795,7 @@ class Users extends CRMEntity { * @param $table_name -- table name:: Type varchar * @param $module -- module:: Type varchar */ - function insertIntoEntityTable($table_name, $module) { + function insertIntoEntityTable($table_name, $module, $fileid='') { global $log; $log->info("function insertIntoEntityTable ".$module.' vtiger_table name ' .$table_name); global $adb, $current_user; @@ -993,7 +995,7 @@ class Users extends CRMEntity { * @param $record -- record id:: Type integer * @param $module -- module:: Type varchar */ - function retrieve_entity_info($record, $module) { + function retrieve_entity_info($record, $module, $allowDeleted = false) { global $adb,$log; $log->debug("Entering into retrieve_entity_info($record, $module) method."); @@ -1075,7 +1077,7 @@ class Users extends CRMEntity { * @param $module -- module name:: Type varchar * @param $file_details -- file details array:: Type array */ - function uploadAndSaveFile($id,$module,$file_details) { + function uploadAndSaveFile($id,$module,$file_details,$attachmentType='Attachment') { global $log; $log->debug("Entering into uploadAndSaveFile($id,$module,$file_details) method."); @@ -1147,10 +1149,10 @@ class Users extends CRMEntity { * @param $module -- module name:: Type varchar * */ - function save($module_name) { + function save($module_name, $fileid='') { global $log, $adb; - parent::save($module_name); + parent::save($module_name, $fileid); // Added for Reminder Popup support $query_prev_interval = $adb->pquery("SELECT reminder_interval from vtiger_users where id=?", @@ -1408,7 +1410,7 @@ class Users extends CRMEntity { * @param $input_value -- Input value for the column taken from the User * @return Column value of the field. */ - function get_column_value($columname, $fldvalue, $fieldname, $uitype, $datatype) { + function get_column_value($columname, $fldvalue, $fieldname, $uitype, $datatype='') { if (is_uitype($uitype, "_date_") && $fldvalue == '') { return null; } @@ -2101,4 +2103,4 @@ class Users_CRMSetup { return $packagesList; } } -?> \ No newline at end of file +?> diff --git a/modules/Users/actions/ExportData.php b/modules/Users/actions/ExportData.php index 60a90e86a3755c437686616bef872827d917e5c7..5fa70a473e2fb901ae59af7a847c3c853d202230 100644 --- a/modules/Users/actions/ExportData.php +++ b/modules/Users/actions/ExportData.php @@ -1,49 +1,76 @@ <?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 Users_ExportData_Action extends Vtiger_ExportData_Action { + + var $exportableFields = array( 'user_name' => 'User Name', + 'title' => 'Title', + 'first_name' => 'First Name', + 'last_name' => 'Last Name', + 'email1' => 'Email', + 'email2' => 'Other Email', + 'secondaryemail'=> 'Secondary Email', + 'phone_work' => 'Office Phone', + 'phone_mobile' => 'Mobile', + 'phone_fax' => 'Fax', + 'address_street'=> 'Street', + 'address_city' => 'City', + 'address_state' => 'State', + 'address_country' => 'Country', + 'address_postalcode'=> 'Postal Code'); + + /** + * Function exports the data based on the mode + * @param Vtiger_Request $request + */ + function ExportData(Vtiger_Request $request) { + $db = PearDatabase::getInstance(); + $moduleName = $request->get('source_module'); + if ($moduleName) { + $this->moduleInstance = Vtiger_Module_Model::getInstance($moduleName); + $this->moduleFieldInstances = $this->moduleInstance->getFields(); + $this->focus = CRMEntity::getInstance($moduleName); + $query = $this->getExportQuery($request); + $result = $db->pquery($query, array()); + $headers = $this->exportableFields; + foreach ($headers as $header) { + $translatedHeaders[] = vtranslate(html_entity_decode($header, ENT_QUOTES), $moduleName); + } + + $entries = array(); + for ($i=0; $i<$db->num_rows($result); $i++) { + $entries[] = $db->fetchByAssoc($result, $i); + } + + return $this->output($request, $translatedHeaders, $entries); + } + } + + /** + * Function that generates Export Query based on the mode + * @param Vtiger_Request $request + * @return <String> export query + */ + function getExportQuery(Vtiger_Request $request) { + $currentUser = Users_Record_Model::getCurrentUserModel(); + $cvId = $request->get('viewname'); + $moduleName = $request->get('source_module'); + + $queryGenerator = new QueryGenerator($moduleName, $currentUser); + if (!empty($cvId)) { + $queryGenerator->initForCustomViewById($cvId); + } + + $acceptedFields = array_keys($this->exportableFields); + $queryGenerator->setFields($acceptedFields); + return $queryGenerator->getQuery(); + } -class Users_ExportData_Action extends Vtiger_ExportData_Action{ - - /** - * Function exports the data based on the mode - * @param Vtiger_Request $request - */ - function ExportData(Vtiger_Request $request) { - global $adb; - $moduleName = $request->get('source_module'); - - $this->moduleInstance = Vtiger_Module_Model::getInstance($moduleName); - $this->moduleFieldInstances = $this->moduleInstance->getFields(); - $this->focus = CRMEntity::getInstance($moduleName); - $query = $this->getExportQuery($request); - $result = $adb->pquery($query, array()); - $headers=array('User Name','Title','First Name','Last Name','Email','Other Email','Secondary Email','Office Phone','Mobile','Fax','Street','City','State','Country','Postal Code'); - foreach($headers as $header){ - $translatedHeaders[]=vtranslate(html_entity_decode($header, ENT_QUOTES), $moduleName); - } - $entries = array(); - for($j=0; $j<$adb->num_rows($result); $j++) { - $entries[] = $adb->fetchByAssoc($result, $j); - } - - $this->output($request, $translatedHeaders, $entries); - } - - /** - * Function that generates Export Query based on the mode - * @param Vtiger_Request $request - * @return <String> export query - */ - function getExportQuery(Vtiger_Request $request) { - $currentUser = Users_Record_Model::getCurrentUserModel(); - $cvId = $request->get('viewname'); - $moduleName = $request->get('source_module'); - - $queryGenerator = new QueryGenerator($moduleName, $currentUser); - if(!empty($cvId)){ - $queryGenerator->initForCustomViewById($cvId); - } - $acceptedFields=array('user_name','title','first_name','last_name','email1','email2','secondaryemail','phone_work','phone_mobile','phone_fax','address_street','address_city','address_state','address_country','address_postalcode'); - $queryGenerator->setFields($acceptedFields); - $query = $queryGenerator->getQuery(); - return $query; - } } diff --git a/modules/Users/actions/UserSetupSave.php b/modules/Users/actions/UserSetupSave.php index d631f11221b0cb7ad56e09c41df9f7c93508378d..ac0242f257770f715ae532cdbf26ab1ac3076686 100644 --- a/modules/Users/actions/UserSetupSave.php +++ b/modules/Users/actions/UserSetupSave.php @@ -20,6 +20,7 @@ class Users_UserSetupSave_Action extends Users_Save_Action { $userRecordModel->set('language', $request->get('lang_name')); $userRecordModel->set('time_zone', $request->get('time_zone')); $userRecordModel->set('date_format', $request->get('date_format')); + $userRecordModel->set('tagcloud', 0); $userRecordModel->save(); //End diff --git a/modules/Users/models/Field.php b/modules/Users/models/Field.php index 569760084a29fb20a65d6fd686087f43c9869216..1fea24da81efe5daad3a209c53e18147c7cbe3be 100644 --- a/modules/Users/models/Field.php +++ b/modules/Users/models/Field.php @@ -153,4 +153,23 @@ class Users_Field_Model extends Vtiger_Field_Model { } return false; } + + public function getUIType() { + return $this->get('uitype'); + } + + public function getPicklistDetails() { + if ($this->get('uitype') == 98) { + $picklistValues = $this->getAllRoles(); + $picklistValues = array_flip($picklistValues); + } else { + $picklistValues = $this->getPicklistValues(); + } + + $pickListDetails = array(); + foreach ($picklistValues as $value => $transValue) { + $pickListDetails[] = array('label' => $transValue, 'value' => $value); + } + return $pickListDetails; + } } diff --git a/modules/Users/models/ListView.php b/modules/Users/models/ListView.php index b4e7abd6f3155ae1e56b7e9e9c56ac193306f033..6f71c33975358cd62dac1a053c9f79c3997cdd5d 100644 --- a/modules/Users/models/ListView.php +++ b/modules/Users/models/ListView.php @@ -19,14 +19,7 @@ class Users_ListView_Model extends Vtiger_ListView_Model { $linkTypes = array('LISTVIEWBASIC', 'LISTVIEW', 'LISTVIEWSETTING'); $links = Vtiger_Link_Model::getAllByType($this->getModule()->getId(), $linkTypes, $linkParams); - $basicLinks = array( - array( - 'linktype' => 'LISTVIEWBASIC', - 'linklabel' => 'LBL_ADD_RECORD', - 'linkurl' => $this->getModule()->getCreateRecordUrl(), - 'linkicon' => 'icon-plus' - ) - ); + $basicLinks = $this->getBasicLinks(); foreach($basicLinks as $basicLink) { $links['LISTVIEWBASIC'][] = Vtiger_Link_Model::getInstanceFromValues($basicLink); } @@ -39,7 +32,7 @@ class Users_ListView_Model extends Vtiger_ListView_Model { $usersList = Users_Record_Model::getActiveAdminUsers(); $settingLinks = array(); - if(count($usersList) > 1) { + if(count($usersList) ) { $changeOwnerLink = array( 'linktype' => 'LISTVIEWSETTING', 'linklabel' => 'LBL_CHANGE_OWNER', @@ -48,6 +41,8 @@ class Users_ListView_Model extends Vtiger_ListView_Model { ); array_push($settingLinks, $changeOwnerLink); } + + $settingLinks = array_merge($settingLinks, $this->getSettingLinks()); if(count($settingLinks) > 0) { foreach($settingLinks as $settingLink) { $links['LISTVIEWSETTING'][] = Vtiger_Link_Model::getInstanceFromValues($settingLink); diff --git a/modules/Users/models/Module.php b/modules/Users/models/Module.php index a7b7ed2a46573e4a32725e2117582b551fce310f..4c8827db47eb0064ad3267c364f91289f8ab458a 100644 --- a/modules/Users/models/Module.php +++ b/modules/Users/models/Module.php @@ -181,7 +181,9 @@ class Users_Module_Model extends Vtiger_Module_Model { $userIPAddress = $_SERVER['REMOTE_ADDR']; $loginTime = date("Y-m-d H:i:s"); $query = "INSERT INTO vtiger_loginhistory (user_name, user_ip, logout_time, login_time, status) VALUES (?,?,?,?,?)"; - $params = array($username, $userIPAddress, '0000-00-00 00:00:00', $loginTime, 'Signed in'); + $params = array($username, $userIPAddress, $loginTime, $loginTime, 'Signed in'); + //Mysql 5.7 doesn't support invalid date in Timestamp field + //$params = array($username, $userIPAddress, '0000-00-00 00:00:00', $loginTime, 'Signed in'); $adb->pquery($query, $params); } @@ -328,4 +330,63 @@ class Users_Module_Model extends Vtiger_Module_Model { return $blocksList[$viewName]; } + /** + * Function to get Module Header Links (for Vtiger7) + * @return array + */ + public function getModuleBasicLinks() { + $basicLinks = array(); + $moduleName = $this->getName(); + + $currentUser = Users_Record_Model::getCurrentUserModel(); + if ($currentUser->isAdminUser() && Users_Privileges_Model::isPermitted($moduleName, 'CreateView')) { + $basicLinks[] = array( + 'linktype' => 'BASIC', + 'linklabel' => 'LBL_ADD_RECORD', + 'linkurl' => $this->getCreateRecordUrl(), + 'linkicon' => 'fa-plus' + ); + + if (Users_Privileges_Model::isPermitted($moduleName, 'Import')) { + $basicLinks[] = array( + 'linktype' => 'BASIC', + 'linklabel' => 'LBL_IMPORT', + 'linkurl' => $this->getImportUrl(), + 'linkicon' => 'fa-download' + ); + } + } + return $basicLinks; + } + + /** + * Function to get Settings links + * @return <Array> + */ + public function getSettingLinks() { + $settingsLinks = array(); + $moduleName = $this->getName(); + + $currentUser = Users_Record_Model::getCurrentUserModel(); + if ($currentUser->isAdminUser() && Users_Privileges_Model::isPermitted($moduleName, 'DetailView')) { + $settingsLinks[] = array( + 'linktype' => 'LISTVIEW', + 'linklabel' => 'LBL_EXPORT', + 'linkurl' => 'index.php?module=Users&source_module=Users&action=ExportData', + 'linkicon' => '' + ); + } + return $settingsLinks; + } + + public function getImportableFieldModels() { + $focus = CRMEntity::getInstance($this->getName()); + $importableFields = $focus->getImportableFields(); + + $importableFieldModels = array(); + foreach ($importableFields as $fieldName => $fieldInstance) { + $importableFieldModels[$fieldName] = $this->getField($fieldName); + } + return $importableFieldModels; + } } diff --git a/modules/Users/models/Record.php b/modules/Users/models/Record.php index 8d63d65a11ae3e5337a29872ca9be052fdc4deb3..65eed79506877702530ad69329eeda11d7abb2e6 100644 --- a/modules/Users/models/Record.php +++ b/modules/Users/models/Record.php @@ -9,6 +9,13 @@ *************************************************************************************/ class Users_Record_Model extends Vtiger_Record_Model { + + /** + * Checks if the key is in property or data. + */ + public function has($key) { + return property_exists($this, $key) || parent::has($key); + } /** * Gets the value of the key . First it will check whether specified key is a property if not it diff --git a/modules/Users/views/Import.php b/modules/Users/views/Import.php index 1d982578cc92b13dcafe192461b7026df2009c7f..c8d7a8c85f6743a8f235af53b59a3b6ffc8f8959 100644 --- a/modules/Users/views/Import.php +++ b/modules/Users/views/Import.php @@ -27,7 +27,17 @@ class Users_Import_View extends Vtiger_Import_View { } } } - + + public function initializeMappingParameters(Vtiger_Request $request) { + parent::initializeMappingParameters($request); + $moduleName = $request->getModule(); + $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + $moduleFields = $moduleModel->getFields(); + + $viewer = $this->getViewer($request); + $viewer->assign('IMPORTABLE_FIELDS', $moduleModel->getImportableFieldModels($moduleName)); + } + public function process(Vtiger_Request $request) { if($request->getMode() != 'undoImport') { parent::process($request); diff --git a/modules/Users/views/Login.php b/modules/Users/views/Login.php index da4451429ca6fa292a54fe8537163928ace3a305..9a022777d257d90868065a20f1bae151d374288f 100644 --- a/modules/Users/views/Login.php +++ b/modules/Users/views/Login.php @@ -49,10 +49,10 @@ class Users_Login_View extends Vtiger_View_Controller { $blockData['image'] = ''; } - vglobal('listview_max_textlength', '80'); + vglobal('listview_max_textlength', 80); $blockData['displayTitle'] = textlength_check($blockData['title']); - vglobal('listview_max_textlength', '200'); + vglobal('listview_max_textlength', 200); $blockData['displaySummary'] = textlength_check($blockData['summary']); $finalJsonData[$blockData['type']][] = $blockData; } @@ -97,6 +97,7 @@ class Users_Login_View extends Vtiger_View_Controller { $headerScriptInstances = parent::getHeaderScripts($request); $jsFileNames = array( + '~libraries/jquery/boxslider/jquery.bxslider.min.js', 'modules.Vtiger.resources.List', 'modules.Vtiger.resources.Popup', ); diff --git a/modules/Vtiger/actions/MassSave.php b/modules/Vtiger/actions/MassSave.php index 7ebd215891f0c7f327f6de0415041017b3c9d65f..6ce2075707368ff59dfdd4462472ab6521e69d0c 100644 --- a/modules/Vtiger/actions/MassSave.php +++ b/modules/Vtiger/actions/MassSave.php @@ -21,24 +21,30 @@ class Vtiger_MassSave_Action extends Vtiger_Mass_Action { } public function process(Vtiger_Request $request) { - vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', $request->get('_timeStampNoChangeMode',false)); - $moduleName = $request->getModule(); - $moduleModel = Vtiger_Module_Model::getInstance($moduleName); - $recordModels = $this->getRecordModelsFromRequest($request); - $allRecordSave= true; - foreach($recordModels as $recordId => $recordModel) { - if(Users_Privileges_Model::isPermitted($moduleName, 'Save', $recordId)) { - $recordModel->save(); + $response = new Vtiger_Response(); + try { + vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', $request->get('_timeStampNoChangeMode',false)); + $moduleName = $request->getModule(); + $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + $recordModels = $this->getRecordModelsFromRequest($request); + $allRecordSave= true; + foreach($recordModels as $recordId => $recordModel) { + if(Users_Privileges_Model::isPermitted($moduleName, 'Save', $recordId)) { + $recordModel->save(); + } else { + $allRecordSave= false; + } + } + vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', false); + if($allRecordSave) { + $response->setResult(true); } else { - $allRecordSave= false; + $response->setResult(false); } - } - vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', false); - $response = new Vtiger_Response(); - if($allRecordSave) { - $response->setResult(true); - } else { - $response->setResult(false); + } catch (DuplicateException $e) { + $response->setError($e->getMessage(), $e->getDuplicationMessage(), $e->getMessage()); + } catch (Exception $e) { + $response->setError($e->getMessage()); } $response->emit(); } diff --git a/modules/Vtiger/actions/ProcessDuplicates.php b/modules/Vtiger/actions/ProcessDuplicates.php index 9ac98421660dafdd49ed009578f76ab6001ece08..74e98275d20d547e197bf6ea2d134e9861026038 100644 --- a/modules/Vtiger/actions/ProcessDuplicates.php +++ b/modules/Vtiger/actions/ProcessDuplicates.php @@ -24,37 +24,48 @@ class Vtiger_ProcessDuplicates_Action extends Vtiger_Action_Controller { } function process (Vtiger_Request $request) { + global $skipDuplicateCheck; $moduleName = $request->getModule(); $moduleModel = Vtiger_Module_Model::getInstance($moduleName); $records = $request->get('records'); $primaryRecord = $request->get('primaryRecord'); $primaryRecordModel = Vtiger_Record_Model::getInstanceById($primaryRecord, $moduleName); - $fields = $moduleModel->getFields(); - foreach($fields as $field) { - $fieldValue = $request->get($field->getName()); - if($field->isEditable()) { - if($field->uitype==71){ - $fieldValue = CurrencyField::convertToUserFormat($fieldValue); + $response = new Vtiger_Response(); + try { + $skipDuplicateCheckOldValue = $skipDuplicateCheck; + $skipDuplicateCheck = true; + + $fields = $moduleModel->getFields(); + foreach($fields as $field) { + $fieldValue = $request->get($field->getName()); + if($field->isEditable()) { + if($field->uitype == 71) { + $fieldValue = CurrencyField::convertToUserFormat($fieldValue); + } + $primaryRecordModel->set($field->getName(), $fieldValue); } - $primaryRecordModel->set($field->getName(), $fieldValue); } - } - $primaryRecordModel->set('mode', 'edit'); - $primaryRecordModel->save(); + $primaryRecordModel->set('mode', 'edit'); + $primaryRecordModel->save(); - $deleteRecords = array_diff($records, array($primaryRecord)); - foreach($deleteRecords as $deleteRecord) { - $recordPermission = Users_Privileges_Model::isPermitted($moduleName, 'Delete', $deleteRecord); - if($recordPermission) { - $primaryRecordModel->transferRelationInfoOfRecords(array($deleteRecord)); - $record = Vtiger_Record_Model::getInstanceById($deleteRecord); - $record->delete(); + $deleteRecords = array_diff($records, array($primaryRecord)); + foreach($deleteRecords as $deleteRecord) { + $recordPermission = Users_Privileges_Model::isPermitted($moduleName, 'Delete', $deleteRecord); + if($recordPermission) { + $primaryRecordModel->transferRelationInfoOfRecords(array($deleteRecord)); + $record = Vtiger_Record_Model::getInstanceById($deleteRecord); + $record->delete(); + } } - } + $skipDuplicateCheck = $skipDuplicateCheckOldValue; - $response = new Vtiger_Response(); - $response->setResult(true); + $response->setResult(true); + } catch (DuplicateException $e) { + $response->setError($e->getMessage(), $e->getDuplicationMessage(), $e->getMessage()); + } catch (Exception $e) { + $response->setError($e->getMessage()); + } $response->emit(); } diff --git a/modules/Vtiger/actions/Save.php b/modules/Vtiger/actions/Save.php index 635a47a8c24adbc8b8c13c0f2e2ec3e8b53b713f..b05191ac42ac28b785528207dc0f2fcf86ee33aa 100644 --- a/modules/Vtiger/actions/Save.php +++ b/modules/Vtiger/actions/Save.php @@ -36,27 +36,55 @@ class Vtiger_Save_Action extends Vtiger_Action_Controller { } public function process(Vtiger_Request $request) { - $recordModel = $this->saveRecord($request); - if ($request->get('returntab_label')){ - $loadUrl = 'index.php?'.$request->getReturnURL(); - } else if($request->get('relationOperation')) { - $parentModuleName = $request->get('sourceModule'); - $parentRecordId = $request->get('sourceRecord'); - $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentRecordId, $parentModuleName); - //TODO : Url should load the related list instead of detail view of record - $loadUrl = $parentRecordModel->getDetailViewUrl(); - } else if ($request->get('returnToList')) { - $loadUrl = $recordModel->getModule()->getListViewUrl(); - } else if ($request->get('returnmodule') && $request->get('returnview')) { - $loadUrl = 'index.php?'.$request->getReturnURL(); - } else { - $loadUrl = $recordModel->getDetailViewUrl(); - } - $appName = $request->get('appName'); - if(strlen($appName) > 0){ - $loadUrl = $loadUrl.$appName; + try { + $recordModel = $this->saveRecord($request); + if ($request->get('returntab_label')){ + $loadUrl = 'index.php?'.$request->getReturnURL(); + } else if($request->get('relationOperation')) { + $parentModuleName = $request->get('sourceModule'); + $parentRecordId = $request->get('sourceRecord'); + $parentRecordModel = Vtiger_Record_Model::getInstanceById($parentRecordId, $parentModuleName); + //TODO : Url should load the related list instead of detail view of record + $loadUrl = $parentRecordModel->getDetailViewUrl(); + } else if ($request->get('returnToList')) { + $loadUrl = $recordModel->getModule()->getListViewUrl(); + } else if ($request->get('returnmodule') && $request->get('returnview')) { + $loadUrl = 'index.php?'.$request->getReturnURL(); + } else { + $loadUrl = $recordModel->getDetailViewUrl(); + } + //append App name to callback url + //Special handling for vtiger7. + $appName = $request->get('appName'); + if(strlen($appName) > 0){ + $loadUrl = $loadUrl.$appName; + } + header("Location: $loadUrl"); + } catch (DuplicateException $e) { + $requestData = $request->getAll(); + $moduleName = $request->getModule(); + unset($requestData['action']); + unset($requestData['__vtrftk']); + + if ($request->isAjax()) { + $response = new Vtiger_Response(); + $response->setError($e->getMessage(), $e->getDuplicationMessage(), $e->getMessage()); + $response->emit(); + } else { + $requestData['view'] = 'Edit'; + $requestData['duplicateRecords'] = $e->getDuplicateRecordIds(); + $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + + global $vtiger_current_version; + $viewer = new Vtiger_Viewer(); + + $viewer->assign('REQUEST_DATA', $requestData); + $viewer->assign('REQUEST_URL', $moduleModel->getCreateRecordUrl().'&record='.$request->get('record')); + $viewer->view('RedirectToEditView.tpl', 'Vtiger'); + } + } catch (Exception $e) { + throw new Exception($e->getMessage()); } - header("Location: $loadUrl"); } /** @@ -66,12 +94,12 @@ class Vtiger_Save_Action extends Vtiger_Action_Controller { */ public function saveRecord($request) { $recordModel = $this->getRecordModelFromRequest($request); - if($request->get('imgDeleted')) { - $imageIds = $request->get('imageid'); - foreach($imageIds as $imageId) { - $status = $recordModel->deleteImage($imageId); - } - } + if($request->get('imgDeleted')) { + $imageIds = $request->get('imageid'); + foreach($imageIds as $imageId) { + $status = $recordModel->deleteImage($imageId); + } + } $recordModel->save(); if($request->get('relationOperation')) { $parentModuleName = $request->get('sourceModule'); @@ -86,7 +114,7 @@ class Vtiger_Save_Action extends Vtiger_Action_Controller { $relationModel = Vtiger_Relation_Model::getInstance($parentModuleModel, $relatedModule); $relationModel->addRelation($parentRecordId, $relatedRecordId); } - $this->savedRecordId = $recordModel->getId(); + $this->savedRecordId = $recordModel->getId(); return $recordModel; } diff --git a/modules/Vtiger/actions/SaveAjax.php b/modules/Vtiger/actions/SaveAjax.php index 113e88669d05d1bfec83963e9c9267c1beb510b4..7538305caff4ac3736c55a81ca980e89c73a7b39 100644 --- a/modules/Vtiger/actions/SaveAjax.php +++ b/modules/Vtiger/actions/SaveAjax.php @@ -11,52 +11,59 @@ class Vtiger_SaveAjax_Action extends Vtiger_Save_Action { public function process(Vtiger_Request $request) { - vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', $request->get('_timeStampNoChangeMode',false)); - $recordModel = $this->saveRecord($request); - vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', false); + $fieldToBeSaved = $request->get('field'); + $response = new Vtiger_Response(); + try { + vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', $request->get('_timeStampNoChangeMode',false)); + $recordModel = $this->saveRecord($request); + vglobal('VTIGER_TIMESTAMP_NO_CHANGE_MODE', false); - $fieldModelList = $recordModel->getModule()->getFields(); - $result = array(); - $picklistColorMap = array(); - foreach ($fieldModelList as $fieldName => $fieldModel) { - $recordFieldValue = $recordModel->get($fieldName); - if(is_array($recordFieldValue) && $fieldModel->getFieldDataType() == 'multipicklist') { - foreach ($recordFieldValue as $picklistValue) { - $picklistColorMap[$picklistValue] = Settings_Picklist_Module_Model::getPicklistColorByValue($fieldName, $picklistValue); + $fieldModelList = $recordModel->getModule()->getFields(); + $result = array(); + $picklistColorMap = array(); + foreach ($fieldModelList as $fieldName => $fieldModel) { + $recordFieldValue = $recordModel->get($fieldName); + if(is_array($recordFieldValue) && $fieldModel->getFieldDataType() == 'multipicklist') { + foreach ($recordFieldValue as $picklistValue) { + $picklistColorMap[$picklistValue] = Settings_Picklist_Module_Model::getPicklistColorByValue($fieldName, $picklistValue); + } + $recordFieldValue = implode(' |##| ', $recordFieldValue); + } + if($fieldModel->getFieldDataType() == 'picklist') { + $picklistColorMap[$recordFieldValue] = Settings_Picklist_Module_Model::getPicklistColorByValue($fieldName, $recordFieldValue); + } + $fieldValue = $displayValue = Vtiger_Util_Helper::toSafeHTML($recordFieldValue); + if ($fieldModel->getFieldDataType() !== 'currency' && $fieldModel->getFieldDataType() !== 'datetime' && $fieldModel->getFieldDataType() !== 'date' && $fieldModel->getFieldDataType() !== 'double') { + $displayValue = $fieldModel->getDisplayValue($fieldValue, $recordModel->getId()); + } + if ($fieldModel->getFieldDataType() == 'currency') { + $displayValue = Vtiger_Currency_UIType::transformDisplayValue($fieldValue); + } + if(!empty($picklistColorMap)) { + $result[$fieldName] = array('value' => $fieldValue, 'display_value' => $displayValue, 'colormap' => $picklistColorMap); + } else { + $result[$fieldName] = array('value' => $fieldValue, 'display_value' => $displayValue); } - $recordFieldValue = implode(' |##| ', $recordFieldValue); - } - if($fieldModel->getFieldDataType() == 'picklist') { - $picklistColorMap[$recordFieldValue] = Settings_Picklist_Module_Model::getPicklistColorByValue($fieldName, $recordFieldValue); - } - $fieldValue = $displayValue = Vtiger_Util_Helper::toSafeHTML($recordFieldValue); - if ($fieldModel->getFieldDataType() !== 'currency' && $fieldModel->getFieldDataType() !== 'datetime' && $fieldModel->getFieldDataType() !== 'date' && $fieldModel->getFieldDataType() !== 'double') { - $displayValue = $fieldModel->getDisplayValue($fieldValue, $recordModel->getId()); - } - if ($fieldModel->getFieldDataType() == 'currency') { - $displayValue = Vtiger_Currency_UIType::transformDisplayValue($fieldValue); } - if(!empty($picklistColorMap)) { - $result[$fieldName] = array('value' => $fieldValue, 'display_value' => $displayValue, 'colormap' => $picklistColorMap); - } else { - $result[$fieldName] = array('value' => $fieldValue, 'display_value' => $displayValue); + + //Handling salutation type + if ($request->get('field') === 'firstname' && in_array($request->getModule(), array('Contacts', 'Leads'))) { + $salutationType = $recordModel->getDisplayValue('salutationtype'); + $firstNameDetails = $result['firstname']; + $firstNameDetails['display_value'] = $salutationType. " " .$firstNameDetails['display_value']; + if ($salutationType != '--None--') $result['firstname'] = $firstNameDetails; } - } - //Handling salutation type - if ($request->get('field') === 'firstname' && in_array($request->getModule(), array('Contacts', 'Leads'))) { - $salutationType = $recordModel->getDisplayValue('salutationtype'); - $firstNameDetails = $result['firstname']; - $firstNameDetails['display_value'] = $salutationType. " " .$firstNameDetails['display_value']; - if ($salutationType != '--None--') $result['firstname'] = $firstNameDetails; + // removed decode_html to eliminate XSS vulnerability + $result['_recordLabel'] = decode_html($recordModel->getName()); + $result['_recordId'] = $recordModel->getId(); + $response->setEmitType(Vtiger_Response::$EMIT_JSON); + $response->setResult($result); + } catch (DuplicateException $e) { + $response->setError($e->getMessage(), $e->getDuplicationMessage(), $e->getMessage()); + } catch (Exception $e) { + $response->setError($e->getMessage()); } - - // removed decode_html to eliminate XSS vulnerability - $result['_recordLabel'] = decode_html($recordModel->getName()); - $result['_recordId'] = $recordModel->getId(); - $response = new Vtiger_Response(); - $response->setEmitType(Vtiger_Response::$EMIT_JSON); - $response->setResult($result); $response->emit(); } diff --git a/modules/Vtiger/handlers/CheckDuplicateHandler.php b/modules/Vtiger/handlers/CheckDuplicateHandler.php new file mode 100644 index 0000000000000000000000000000000000000000..149f30db65c34720a9d0b0a728f595cc4066b630 --- /dev/null +++ b/modules/Vtiger/handlers/CheckDuplicateHandler.php @@ -0,0 +1,239 @@ +<?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. + * ***********************************************************************************/ + +require_once 'include/events/VTEventHandler.inc'; + +class CheckDuplicateHandler extends VTEventHandler { + + function handleEvent($eventName, $entityData) { + if ($eventName == 'vtiger.entity.beforesave') { + $this->triggerCheckDuplicateHandler($entityData); + } else if ($eventName == 'vtiger.entity.beforerestore') { + $this->triggerCheckDuplicateHandler($entityData); + } + } + + public function triggerCheckDuplicateHandler($entityData) { + global $skipDuplicateCheck; + $fieldValues = $entityData->getData(); + + $moduleName = $entityData->getModuleName(); + if ($moduleName == 'Activity') { + $moduleName = ($fieldValues['activitytype'] == 'Task') ? 'Calendar' : 'Events'; + } + + $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + if (!$moduleModel->allowDuplicates && !$skipDuplicateCheck) { + $fields = $moduleModel->getFields(); + + if ($moduleName == 'Events') { + $moduleModel = Vtiger_Module_Model::getInstance('Calendar'); + } + + $baseTableName = $moduleModel->get('basetable'); + $baseTableId = $moduleModel->get('basetableid'); + $crmentityTable = 'vtiger_crmentity'; + $tabIndexes = $entityData->focus->tab_name_index; + + $uniqueFields = array(); + $tablesList = array(); + foreach ($fields as $fieldName => $fieldModel) { + if ($fieldModel->isUniqueField() && $fieldModel->isEditable()) { + $uniqueFields[$fieldName] = $fieldModel; + + if (in_array($moduleName, array('Events', 'Calendar')) && in_array($fieldName, array('date_start', 'due_date'))) { + $timeField = 'time_start'; + if ($fieldName === 'due_date') { + $timeField = 'time_end'; + } + $uniqueFields[$timeField] = $fields[$timeField]; + } + + $fieldTableName = $fieldModel->get('table'); + if (!in_array($fieldTableName, array($baseTableName, $crmentityTable)) && $tabIndexes && $tabIndexes[$fieldTableName]) { + $tablesList[$fieldTableName] = $tabIndexes[$fieldTableName]; + } + } + } + + if (count($uniqueFields) > 0) { + $checkDuplicates = false; + $uniqueFieldsData = array(); + foreach ($uniqueFields as $fieldName => $fieldModel) { + $fieldDataType = $fieldModel->getFieldDataType(); + $fieldValue = $fieldValues[$fieldName]; + + switch ($fieldDataType) { + case 'reference' : if ($fieldValue == 0) { + $fieldValue = ''; + } + break; + case 'date' : + case 'currency' : + case 'multipicklist': if ($fieldValue) { + $fieldValue = $fieldModel->getDBInsertValue($fieldValue); + } + break; + } + + if ($fieldValue !== '' && $fieldValue !== NULL) { + if ($fieldDataType == 'currency') { + $countedDigits = 8; + if ($fieldModel->isCustomField()) { + $countedDigits = 5; + } + $fieldValue = round($fieldValue, $countedDigits); + } + + $uniqueFieldsData[$fieldName] = $fieldValue; + $checkDuplicates = true; + } + } + + if ($checkDuplicates) { + $db = PearDatabase::getInstance(); + $recordId = $entityData->getId(); + + $query = "SELECT $crmentityTable.crmid, $crmentityTable.label FROM $crmentityTable INNER JOIN $baseTableName ON $baseTableName.$baseTableId = $crmentityTable.crmid"; + foreach ($tablesList as $tableName => $tabIndex) { + if ($moduleName == 'Calendar' || $moduleName == 'Events') { + $query .= " LEFT JOIN $tableName ON $tableName.$tabIndex = $baseTableName.$baseTableId"; + } else { + //INNER JOIN used instead of LEFT JOIN because all fields should be match + $query .= " INNER JOIN $tableName ON $tableName.$tabIndex = $baseTableName.$baseTableId"; + } + } + $query .= " WHERE $crmentityTable.deleted = ?"; + + $params = array(0); + $conditions = array(); + foreach ($uniqueFields as $fieldName => $fieldModel) { + $fieldTableName = $fieldModel->get('table'); + $fieldColumnName = $fieldModel->get('column'); + + // For Calendar Start Date & Time or End Date & Time we need to concat date and time fields to search + if (in_array($moduleName, array('Events', 'Calendar')) && in_array($fieldName, array('date_start', 'due_date', 'time_start', 'time_end'))) { + if (in_array($fieldName, array('time_start', 'time_end'))) { + continue; + } + + $dateFieldColumnName = 'date_start'; + $timeFieldColumnName = 'time_start'; + if ($fieldName == 'due_date') { + $dateFieldColumnName = 'due_date'; + $timeFieldColumnName = 'time_end'; + } + + $condition = "CONCAT($fieldTableName.$dateFieldColumnName,' ',$fieldTableName.$timeFieldColumnName) = ?"; + array_push($conditions, $condition); + $params[] = trim(implode(" ", array($uniqueFieldsData[$dateFieldColumnName], $uniqueFieldsData[$timeFieldColumnName]))); + continue; + } + + $fieldValue = $uniqueFieldsData[$fieldName]; + if (isset($fieldValue)) { + array_push($conditions, "$fieldTableName.$fieldColumnName = ?"); + } else { + $fieldValue = ''; + array_push($conditions, "($fieldTableName.$fieldColumnName = ? OR $fieldTableName.$fieldColumnName IS NULL)"); + } + $params[] = $fieldValue; + + if ($fieldModel->get('uitype') == 72) { + array_push($conditions, "$fieldTableName.currency_id = ?"); + $currencyIdDetails = split('curname', $_REQUEST['base_currency']); + $params[] = $currencyIdDetails[1]; + } + } + + if (count($conditions) > 0) { + $conditionsSql = implode(" AND ", $conditions); + $query .= " AND ($conditionsSql)"; + } + + if ($recordId) { + $query .= " AND $crmentityTable.crmid != ?"; + $params[] = $recordId; + } + + if ($moduleName == 'Events') { + $query .= " AND $baseTableName.activitytype NOT IN (?, ?)"; + array_push($params, 'Task', 'Emails'); + } else if ($moduleName == 'Calendar') { + $query .= " AND $baseTableName.activitytype = ?"; + array_push($params, 'Task'); + } else { + $query .= " AND $crmentityTable.setype = ?"; + array_push($params, $moduleName); + + if ($moduleName == 'Leads' || $moduleName == 'Potentials') { + $query .= " AND $baseTableName.converted = 0"; + } + } + $query .= ' LIMIT 6'; + + $result = $db->pquery($query, $params); + + $duplicateRecordsList = array(); + while ($result && $row = $db->fetch_array($result)) { + $duplicateRecordsList[$row['crmid']] = $row['label']; + } + + if (count($duplicateRecordsList) > 0) { + $exception = new DuplicateException(vtranslate('LBL_DUPLICATES_DETECTED')); + $exception->setModule($moduleName) + ->setDuplicateRecordLabels($duplicateRecordsList) + ->setDuplicateRecordIds(array_keys($duplicateRecordsList)); + throw $exception; + } + } + } + } + } +} + +class DuplicateException extends Exception { + + private $duplicateRecordIds; + public function setDuplicateRecordIds(array $duplicateRecordIds) { + $this->duplicateRecordIds = $duplicateRecordIds; + return $this; + } + + public function getDuplicateRecordIds() { + return $this->duplicateRecordIds; + } + + private $duplicateRecordLabels; + public function setDuplicateRecordLabels(array $duplicateRecordLabels) { + $this->duplicateRecordLabels = $duplicateRecordLabels; + return $this; + } + + public function getDuplicateRecordLabels() { + return $this->duplicateRecordLabels; + } + + private $module; + public function setModule($module) { + $this->module = $module; + return $this; + } + + public function getModule() { + return $this->module; + } + + public function getDuplicationMessage() { + $moduleName = $this->getModule(); + $duplicateRecordsList = $this->getDuplicateRecordIds(); + return getDuplicatesPreventionMessage($moduleName, $duplicateRecordsList); + } +} \ No newline at end of file diff --git a/modules/Vtiger/handlers/FollowRecordHandler.php b/modules/Vtiger/handlers/FollowRecordHandler.php new file mode 100644 index 0000000000000000000000000000000000000000..4d46a1ac10a9aa0bc488cbf0572e4fd2b629b814 --- /dev/null +++ b/modules/Vtiger/handlers/FollowRecordHandler.php @@ -0,0 +1,169 @@ +<?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. + * ***********************************************************************************/ + +require_once 'include/events/VTEventHandler.inc'; +class FollowRecordHandler extends VTEventHandler { + + function handleEvent($eventName, $entityData) { + if ($eventName == 'vtiger.entity.aftersave') { + global $site_URL; + $db = PearDatabase::getInstance(); + + //current user details + $currentUserModel = Users_Record_Model::getCurrentUserModel(); + $currentUserId = $currentUserModel->getId(); + + //record details + $recordId = $entityData->getId(); + $moduleName = $entityData->getModuleName(); + + $restrictedModules = array('CustomerPortal', 'Dashboard', 'Emails', 'EmailTemplates', 'ExtensionStore', 'Google', 'Home', + 'Import', 'MailManager', 'Mobile', 'ModComments', 'ModTracker', 'PBXManager', 'Portal', + 'RecycleBin', 'Reports', 'Rss', 'SMSNotifier', 'Users', 'Webforms', 'Webmails', 'WSAPP'); + + if (!in_array($moduleName, $restrictedModules)) { + $tableName = Vtiger_Functions::getUserSpecificTableName($moduleName); + + //following users + $userIdsList = array(); + $result = $db->pquery("SELECT userid FROM $tableName WHERE recordid = ? AND starred = ? AND userid != ?", array($recordId, '1', $currentUserId)); + if ($result && $db->num_rows($result)) { + while ($rowData = $db->fetch_row($result)) { + $userIdsList[] = $rowData['userid']; + } + } + + if ($userIdsList) { + //changed fields data + $vtEntityDelta = new VTEntityDelta(); + $delta = $vtEntityDelta->getEntityDelta($moduleName, $recordId, true); + + if ($delta) { + $newEntity = $vtEntityDelta->getNewEntity($moduleName, $recordId); + $label = decode_html(trim($newEntity->get('label'))); + + $fieldModels = array(); + $changedValues = array(); + $skipFields = array('modifiedtime', 'modifiedby', 'label'); + $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + + foreach ($delta as $fieldName => $fieldInfo) { + if (!in_array($fieldName, $skipFields)) { + $fieldModel = Vtiger_Field_Model::getInstance($fieldName, $moduleModel); + if ($fieldModel) { + $fieldModels[$fieldName] = $fieldModel; + $changedValues[$fieldName] = $fieldInfo; + } + } + } + + if ($fieldModels) { + $companyDetails = getCompanyDetails(); + $userModuleModel = Users_Module_Model::getInstance('Users'); + + foreach ($userIdsList as $userId) { + $userRecordModel = Users_Record_Model::getInstanceById($userId, $userModuleModel); + if ($userRecordModel && $userRecordModel->get('status') == 'Active') { + + $changedFieldString = $this->getChangedFieldString($fieldModels, $changedValues, $userRecordModel); + $detailViewLink = "$site_URL/index.php?module=$moduleName&view=Detail&record=$recordId"; + $recordDetailViewLink = '<a style="text-decoration:none;" target="_blank" href="'.$detailViewLink.'">'.$label.'</a>'; + + $data = vtranslate('LBL_STARRED_RECORD_UPDATED', $moduleName, $currentUserModel->getName(), $recordDetailViewLink).$changedFieldString; + $body = '<table><tbody><tr><td style="padding:10px">'.nl2br(decode_html($data)).'</td></tr></tbody></table>'; + + $notificationMessage = ucwords($companyDetails['companyname']).' '.vtranslate('LBL_NOTIFICATION', $moduleName).' - '.$currentUserModel->getName(); + $subject = vtranslate('LBL_STARRED_RECORD_UPDATED', $moduleName, $notificationMessage, $label); + + $this->sendEmail($userRecordModel->get('email1'), $subject, $body, $recordId); + } + } + } + } + } + } + } + } + + public function getChangedFieldString($fieldModels, $changedValues, $userRecordModel) { + $userEntity = $userRecordModel->entity; + + $changedFieldString = ''; + foreach ($fieldModels as $fieldName => $fieldModel) { + $moduleName = $fieldModel->getModule()->getName(); + $fieldCurrentValue = $changedValues[$fieldName]['currentValue']; + + if ($fieldModel->isReferenceField()) { + $fieldDisplayValue = Vtiger_Util_Helper::getRecordName($fieldCurrentValue); + } else if ($fieldModel->isOwnerField()) { + $fieldDisplayValue = getOwnerName($fieldCurrentValue); + } else if ($fieldModel->get('uitype') == 117 && $fieldCurrentValue) { + $fieldDisplayValue = getCurrencyName($fieldCurrentValue, FALSE); + } else { + $fieldDataType = $fieldModel->getFieldDataType(); + switch ($fieldDataType) { + case 'boolean' : + case 'multipicklist': $fieldDisplayValue = $fieldModel->getDisplayValue($fieldCurrentValue);break; + case 'date' : $fieldDisplayValue = DateTimeField::convertToUserFormat($fieldCurrentValue, $userEntity);break; + case 'double' : $fieldDisplayValue = CurrencyField::convertToUserFormat(decimalFormat($fieldCurrentValue), $userEntity, true);break; + case 'time' : if ($userRecordModel->get('hour_format') == '12') { + $fieldDisplayValue = Vtiger_Time_UIType::getTimeValueInAMorPM($fieldCurrentValue); + } else { + $fieldDisplayValue = $fieldModel->getEditViewDisplayValue($fieldCurrentValue); + } + break; + case 'currency' : $skipConversion = false; + if ($fieldModel->get('uitype') == 72) { + $skipConversion = true; + } + $fieldDisplayValue = CurrencyField::convertToUserFormat($fieldCurrentValue, $userEntity, $skipConversion); + break; + + default : $fieldDisplayValue = $fieldModel->getEditViewDisplayValue($fieldCurrentValue);break; + } + } + $changedFieldString .= '<br/>'.vtranslate('LBL_STARRED_RECORD_TO', $moduleName, vtranslate($fieldModel->get('label'), $moduleName), $fieldDisplayValue); + } + return $changedFieldString; + } + + public function sendEmail($toEmailId, $subject, $body, $recordId) { + //It will not show in CRM + $generatedMessageId = Emails_Mailer_Model::generateMessageID(); + Emails_Mailer_Model::updateMessageIdByCrmId($generatedMessageId, $recordId); + + $mailer = new Emails_Mailer_Model(); + $mailer->reinitialize(); + $mailer->Body = $body; + $mailer->Subject = decode_html($subject); + + $activeUserModel = $this->getActiveUserModel(); + $replyTo = decode_html($activeUserModel->email1); + $replyToName = decode_html($activeUserModel->first_name.' '.$activeUserModel->last_name); + $fromEmail = decode_html($activeUserModel->email1); + + $mailer->ConfigSenderInfo($fromEmail, $replyTo, $replyToName); + $mailer->IsHTML(); + $mailer->AddCustomHeader("In-Reply-To", $generatedMessageId); + $mailer->AddAddress($toEmailId); + + $response = $mailer->Send(true); + } + + var $activeAdmin = ''; + public function getActiveUserModel() { + if (!$this->activeAdmin) { + $activeUserModel = new Users(); + $activeUserModel->retrieveCurrentUserInfoFromFile(Users::getActiveAdminId()); + $this->activeAdmin = $activeUserModel; + } + return $this->activeAdmin; + } +} diff --git a/modules/Vtiger/handlers/RecordLabelUpdater.php b/modules/Vtiger/handlers/RecordLabelUpdater.php index beb7ef40b99fac929b7f5ad820396a5a79d05d06..b4472d3d2bf564b4cff1c974ef9628800c3eeb44 100644 --- a/modules/Vtiger/handlers/RecordLabelUpdater.php +++ b/modules/Vtiger/handlers/RecordLabelUpdater.php @@ -15,8 +15,13 @@ class Vtiger_RecordLabelUpdater_Handler extends VTEventHandler { global $adb; if ($eventName == 'vtiger.entity.aftersave') { - $record = $data->getId(); - $module = $data->getModuleName(); + $record = $data->getId(); + $module = $data->getModuleName(); + + if($module === 'Users') { + return; + } + $labelInfo = getEntityName($module, $record, true); if ($labelInfo) { diff --git a/modules/Vtiger/helpers/Util.php b/modules/Vtiger/helpers/Util.php index 610aaa76f08515eade8c4f7045207064095abdc2..3ea6edf4f9c00b3b2c5d76985dd6774d859d5582 100644 --- a/modules/Vtiger/helpers/Util.php +++ b/modules/Vtiger/helpers/Util.php @@ -756,6 +756,19 @@ class Vtiger_Util_Helper { return (stristr($db_character_set, 'utf8') && stristr($db_collation_type, 'utf8')); } + public static function checkDbLocalInfileSupport() { + $db = PearDatabase::getInstance(); + $rs = $db->pquery("show variables like 'local_infile'", array()); + $db_local_infile = null; + while ($arr = $db->fetch_array($rs)) { + switch($arr['variable_name']) { + case 'local_infile': $db_local_infile = $arr['value']; break; + } + if ($db_local_infile != null) break; + } + return ($db_local_infile == '1' || strtolower($db_local_infile) == 'on'); + } + /** * Function to get both date string and date difference string * @param <Date Time> $dateTime diff --git a/modules/Vtiger/models/DashBoard.php b/modules/Vtiger/models/DashBoard.php index fe590e3838f6599be6c57d7c969214acb9425ab4..74d758fc7f137e75eb12633c7a1335729fa8508e 100644 --- a/modules/Vtiger/models/DashBoard.php +++ b/modules/Vtiger/models/DashBoard.php @@ -62,9 +62,7 @@ class Vtiger_DashBoard_Model extends Vtiger_Base_Model { } } - $sql = 'SELECT * FROM vtiger_links WHERE linktype = ? - AND tabid IN ('. generateQuestionMarks($moduleTabIdList) .') AND linkid NOT IN (SELECT linkid FROM vtiger_module_dashboard_widgets - WHERE userid = ? and dashboardtabid=? )'; + $sql = 'SELECT * FROM vtiger_links WHERE linktype = ? AND tabid IN ('. generateQuestionMarks($moduleTabIdList) .') AND linkid NOT IN (SELECT linkid FROM vtiger_module_dashboard_widgets WHERE userid = ? and dashboardtabid=? )'; $params = array('DASHBOARDWIDGET'); $params = array_merge($params, $moduleTabIdList); $params = array_merge($params, array($currentUser->getId(), $dashBoardTabId)); diff --git a/modules/Vtiger/models/Field.php b/modules/Vtiger/models/Field.php index c84a1483d590f5e09578da71ff3e8dd21ca33252..dea6331f1ad960e05fa95b4e421713af95377e1d 100644 --- a/modules/Vtiger/models/Field.php +++ b/modules/Vtiger/models/Field.php @@ -1340,4 +1340,8 @@ class Vtiger_Field_Model extends Vtiger_Field { } return $picklistColors; } + + public function isUniqueField() { + return $this->isunique; + } } diff --git a/modules/Vtiger/models/MenuStructure.php b/modules/Vtiger/models/MenuStructure.php index 81d5c8ef0be462c566134de7ecdfa2e356170dee..8514310bbbc2f14b820e33641982e808cec97b60 100644 --- a/modules/Vtiger/models/MenuStructure.php +++ b/modules/Vtiger/models/MenuStructure.php @@ -161,7 +161,7 @@ class Vtiger_MenuStructure_Model extends Vtiger_Base_Model { } public static function getIgnoredModules() { - return array('Calendar', 'Documents', 'MailManager', 'Rss', 'Portal', 'RecycleBin', 'SMSNotifier', 'EmailTemplates', 'Reports'); + return array('Calendar', 'Documents', 'MailManager', 'SMSNotifier', 'Reports'); } function regroupMenuByParent($menuGroupedByParent) { @@ -186,6 +186,10 @@ class Vtiger_MenuStructure_Model extends Vtiger_Base_Model { 'ProjectTask' => array('PROJECT'), 'ProjectMilestone' => array('PROJECT'), 'ServiceContracts' => array('SUPPORT'), + 'EmailTemplates'=> array('TOOLS'), + 'Rss' => array('TOOLS'), + 'Portal' => array('TOOLS'), + 'RecycleBin' => array('TOOLS'), ); $oldToNewAppMap = Vtiger_MenuStructure_Model::getOldToNewAppMapping(); @@ -215,7 +219,8 @@ class Vtiger_MenuStructure_Model extends Vtiger_Base_Model { 'MARKETING_AND_SALES' => 'MARKETING', 'INVENTORY' => 'INVENTORY', 'SUPPORT' => 'SUPPORT', - 'TOOLS' => 'PROJECT' + 'PROJECT' => 'PROJECT', + 'TOOLS' => 'TOOLS' ); return $oldToNewAppMap; } @@ -225,6 +230,17 @@ class Vtiger_MenuStructure_Model extends Vtiger_Base_Model { * @return <array> */ public static function getAppMenuList(){ - return array('MARKETING','SALES','INVENTORY','SUPPORT','PROJECT'); + return array('MARKETING','SALES','INVENTORY','SUPPORT','PROJECT','TOOLS'); + } + + public static function getAppIcons() { + $appImageIcons = array( 'MARKETING' => 'fa-users', + 'SALES' => 'fa-dot-circle-o', + 'SUPPORT' => 'fa-life-ring', + 'INVENTORY' => 'vicon-inventory', + 'PROJECT' => 'fa-briefcase', + 'TOOLS' => 'fa-wrench' + ); + return $appImageIcons; } } diff --git a/modules/Vtiger/models/Module.php b/modules/Vtiger/models/Module.php index a7cfb474d2ccfe07a600a6eaaf4b8acd0acae22b..529209f690557deb2ab5a8c5b0f3268f5c3d8e99 100644 --- a/modules/Vtiger/models/Module.php +++ b/modules/Vtiger/models/Module.php @@ -385,7 +385,7 @@ class Vtiger_Module_Model extends Vtiger_Module { * Function that returns all the fields for the module * @return <Array of Vtiger_Field_Model> - list of field models */ - public function getFields() { + public function getFields($blockInstance=false) { if(empty($this->fields)){ $moduleBlockFields = Vtiger_Field_Model::getAllForModule($this); $this->fields = array(); @@ -593,17 +593,18 @@ class Vtiger_Module_Model extends Vtiger_Module { * @return <Array> returns related fields list. */ public function getRelatedListFields() { - $entityInstance = CRMEntity::getInstance($this->getName()); - $list_fields_name = $entityInstance->list_fields_name; - $list_fields = $entityInstance->list_fields; $relatedListFields = array(); - foreach ($list_fields as $key => $fieldInfo) { - foreach ($fieldInfo as $columnName) { - if(array_key_exists($key, $list_fields_name)){ - $relatedListFields[$columnName] = $list_fields_name[$key]; + $entityInstance = CRMEntity::getInstance($this->getName()); + if (isset($entityInstance->list_fields_name)) { + $list_fields_name = $entityInstance->list_fields_name; + $list_fields = $entityInstance->list_fields; + foreach ($list_fields as $key => $fieldInfo) { + foreach ($fieldInfo as $columnName) { + if(array_key_exists($key, $list_fields_name)){ + $relatedListFields[$columnName] = $list_fields_name[$key]; + } } } - } return $relatedListFields; } @@ -1089,6 +1090,14 @@ class Vtiger_Module_Model extends Vtiger_Module { AND (vtiger_activity.status is NULL OR vtiger_activity.status NOT IN ('Completed', 'Deferred', 'Cancelled')) AND (vtiger_activity.eventstatus is NULL OR vtiger_activity.eventstatus NOT IN ('Held','Cancelled'))"; + if(!$currentUser->isAdminUser()) { + $moduleFocus = CRMEntity::getInstance('Calendar'); + $condition = $moduleFocus->buildWhereClauseConditionForCalendar(); + if($condition) { + $query .= ' AND '.$condition; + } + } + $params = array($this->getName()); if ($recordId) { @@ -1521,6 +1530,14 @@ class Vtiger_Module_Model extends Vtiger_Module { if ($nonAdminQuery) { $query = appendFromClauseToQuery($query, $nonAdminQuery); + + if($functionName == 'get_activities' && trim($nonAdminQuery)) { + $moduleFocus = CRMEntity::getInstance('Calendar'); + $condition = $moduleFocus->buildWhereClauseConditionForCalendar(); + if($condition) { + $query .= ' AND '.$condition; + } + } } return $query; @@ -1696,14 +1713,22 @@ class Vtiger_Module_Model extends Vtiger_Module { public function transferRecordsOwnership($transferOwnerId, $relatedModuleRecordIds){ + $moduleName = $this->getName(); foreach($relatedModuleRecordIds as $recordId) { - $recordModel = Vtiger_Record_Model::getInstanceById($recordId); - $recordModel->set('assigned_user_id', $transferOwnerId); - $recordModel->set('mode', 'edit'); - // Transferring ownership with related module as Inventory modules, removes line item details. - // So setting $_REQUEST['ajxaction'] to DETAILVIEW - $_REQUEST['ajxaction'] = 'DETAILVIEW'; - $recordModel->save(); + if(Users_Privileges_Model::isPermitted($moduleName, 'Save', $recordId)) { + try { + $recordModel = Vtiger_Record_Model::getInstanceById($recordId); + $recordModel->set('assigned_user_id', $transferOwnerId); + $recordModel->set('mode', 'edit'); + // Transferring ownership with related module as Inventory modules, removes line item details. + // So setting $_REQUEST['ajxaction'] to DETAILVIEW + $_REQUEST['ajxaction'] = 'DETAILVIEW'; + $recordModel->save(); + } catch (DuplicateException $e) { + return $e->getDuplicationMessage(); + } catch (Exception $e) { + } + } } } @@ -1935,7 +1960,7 @@ class Vtiger_Module_Model extends Vtiger_Module { } function isStarredEnabled(){ - return false; + return true; } /** @@ -1965,4 +1990,44 @@ class Vtiger_Module_Model extends Vtiger_Module { return true; } + + public static function getSyncActionsInDuplicatesCheck() { + return array( 1 => 'LBL_PREFER_LATEST_RECORD', + 2 => 'LBL_PREFER_INTERNAL_RECORD', +// 3 => 'LBL_PREFER_VTIGER_RECORD', + 4 => 'LBL_PREFER_EXTERNAL_RECORD'); + } + + + public function isFieldsDuplicateCheckAllowed() { + return true; + } + + public function isExcelEditAllowed() { + return $this->isPermitted('EditView'); + } + + public function getModuleIcon() { + $moduleName = $this->getName(); + $lowerModuleName = strtolower($moduleName); + $title = vtranslate($moduleName, $moduleName); + + $moduleIcon = "<i class='vicon-$lowerModuleName' title='$title'></i>"; + if ($this->source == 'custom') { + $moduleShortName = mb_substr(trim($title), 0, 2); + $moduleIcon = "<span class='custom-module' title='$title'>$moduleShortName</span>"; + } + + $imageFilePath = 'layouts/'.Vtiger_Viewer::getLayoutName()."/modules/$moduleName/$moduleName.png"; + if (file_exists($imageFilePath)) { + $moduleIcon = "<img src='$imageFilePath' title='$title'/>"; + } + + return $moduleIcon; + } + + public static function getModuleIconPath($moduleName) { + $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + return $moduleModel->getModuleIcon(); + } } diff --git a/modules/Vtiger/uitypes/Email.php b/modules/Vtiger/uitypes/Email.php index 1eae884cf77aea456b61642a809718d011ba553b..3cf39170bf63e2e5347213a48f078dd1c83e5467 100644 --- a/modules/Vtiger/uitypes/Email.php +++ b/modules/Vtiger/uitypes/Email.php @@ -31,19 +31,19 @@ class Vtiger_Email_UIType extends Vtiger_Base_UIType { */ if($moduleName == "Users" && $fieldName == "user_name"){ $value = "<a class='cursorPointer' onclick=\"Vtiger_Helper_Js.getInternalMailer($recordId," . - "'$fieldName','$moduleName');\">" . textlength_check($value) . "</a>"; + "'$fieldName','$moduleName');\">" . ($value) . "</a>"; }else{ $value = "<a class='emailField cursorPointer' onclick=\"Vtiger_Helper_Js.getInternalMailer($recordId," . - "'$fieldName','$moduleName');\">" . textlength_check($value) . "</a>"; + "'$fieldName','$moduleName');\">" . ($value) . "</a>"; } } else { if($moduleName == "Users" && $fieldName == "user_name"){ - $value = "<a class='cursorPointer' href='mailto:" . $value . "'>" . textlength_check($value) . "</a>"; + $value = "<a class='cursorPointer' href='mailto:" . $value . "'>" . ($value) . "</a>"; }else{ - $value = "<a class='emailField cursorPointer' href='mailto:" . $value . "'>" . textlength_check($value) . "</a>"; + $value = "<a class='emailField cursorPointer' href='mailto:" . $value . "'>" . ($value) . "</a>"; } } } return $value; } -} \ No newline at end of file +} diff --git a/modules/Vtiger/views/Basic.php b/modules/Vtiger/views/Basic.php index d7535a9f8322fc45040e20fd82b2b3dfd9ae9ede..fcaacdfa669d328e3a62f10a2e5e0447d10412fd 100644 --- a/modules/Vtiger/views/Basic.php +++ b/modules/Vtiger/views/Basic.php @@ -53,9 +53,9 @@ abstract class Vtiger_Basic_View extends Vtiger_Footer_View { $menuGroupedByParent['SUPPORT'] = $supportGroup; foreach ($menuGroupedByParent as $parentCategory => $menuList) { - if($parentCategory == 'ANALYTICS') continue; + if($parentCategory == 'ANALYTICS' || $parentCategory == 'SETTINGS') continue; if(count($menuList) > 0) { - if(array_key_exists($selectedModule, $menuList)) { + if(array_key_exists($selectedModule, $menuList) && $parentCategory) { $moduleFound = true; $selectedModuleMenuCategory = $parentCategory; } @@ -181,4 +181,4 @@ abstract class Vtiger_Basic_View extends Vtiger_Footer_View { $request->validateReadAccess(); } } -} \ No newline at end of file +} diff --git a/modules/Vtiger/views/Detail.php b/modules/Vtiger/views/Detail.php index 2d478f277ed2f94339633fa7f59487445f267cf0..c55fc36932afdaa098bf1e8be8968d2ede6b4bdd 100644 --- a/modules/Vtiger/views/Detail.php +++ b/modules/Vtiger/views/Detail.php @@ -18,7 +18,6 @@ class Vtiger_Detail_View extends Vtiger_Index_View { $this->exposeMethod('showModuleDetailView'); $this->exposeMethod('showModuleSummaryView'); $this->exposeMethod('showModuleBasicView'); - $this->exposeMethod('showHistory'); $this->exposeMethod('showRecentActivities'); $this->exposeMethod('showRecentComments'); $this->exposeMethod('showRelatedList'); @@ -384,17 +383,6 @@ class Vtiger_Detail_View extends Vtiger_Index_View { echo $viewer->view('DetailViewSummaryContents.tpl', $moduleName, true); } - /** - * Funtion to show History view - * @param Vtiger_Request $request - */ - function showHistory(Vtiger_Request $request){ - $moduleName = $request->getModule(); - - $viewer = $this->getViewer($request); - echo $viewer->view('History.tpl', $moduleName, true); - } - /** * Added to support Engagements view in Vtiger7 * @param Vtiger_Request $request diff --git a/modules/Vtiger/views/Edit.php b/modules/Vtiger/views/Edit.php index 84c30b0299b244d772733a9aa2ee1f3e4c086889..365ec5271c4d7529bb640bd3d7c80e5517b1cbe8 100644 --- a/modules/Vtiger/views/Edit.php +++ b/modules/Vtiger/views/Edit.php @@ -63,8 +63,16 @@ Class Vtiger_Edit_View extends Vtiger_Index_View { $viewer->assign('RECORD',$recordModel); } + $duplicateRecordsList = array(); + $duplicateRecords = $request->get('duplicateRecords'); + if (is_array($duplicateRecords)) { + $duplicateRecordsList = $duplicateRecords; + } + + $viewer = $this->getViewer($request); + $viewer->assign('DUPLICATE_RECORDS', $duplicateRecordsList); parent::preProcess($request, $display); - } + } public function process(Vtiger_Request $request) { $viewer = $this->getViewer ($request); diff --git a/modules/Vtiger/views/Import.php b/modules/Vtiger/views/Import.php index 20c634ac152391dfc982901265edc0a80afe3f00..75ec101c4d300600dfdc7c2ff22fe98591b365c8 100644 --- a/modules/Vtiger/views/Import.php +++ b/modules/Vtiger/views/Import.php @@ -129,6 +129,13 @@ class Vtiger_Import_View extends Vtiger_Index_View { } //End + $fileFormat = $request->get('fileFormat'); + if (!$fileFormat || !in_array($fileFormat, $supportedFileTypes)) { + $fileFormat = 'csv'; + } else { + $fileFormat = strtolower($fileFormat); + } + $viewer->assign('AVAILABLE_FIELDS', $moduleMeta->getMergableFields()); $viewer->assign('ENTITY_FIELDS', $moduleMeta->getEntityFields()); $viewer->assign('ERROR_MESSAGE', $request->get('error_message')); @@ -140,7 +147,7 @@ class Vtiger_Import_View extends Vtiger_Index_View { $viewer->assign('CURRENCIES', getAllCurrencies()); } - $viewer->assign('FORMAT', $request->get('fileFormat')); + $viewer->assign('FORMAT', $fileFormat); return $viewer->view('ImportBasicStep.tpl', 'Import'); } diff --git a/modules/Vtiger/views/MassActionAjax.php b/modules/Vtiger/views/MassActionAjax.php index 252d60d2235e0890afd54fe8072a11fff7ca2eb0..8bc719064a9649716ada80316115c9139e52682f 100644 --- a/modules/Vtiger/views/MassActionAjax.php +++ b/modules/Vtiger/views/MassActionAjax.php @@ -68,6 +68,7 @@ class Vtiger_MassActionAjax_View extends Vtiger_IndexAjax_View { $viewer->assign('CVID', $cvId); $viewer->assign('SELECTED_IDS', $selectedIds); $viewer->assign('EXCLUDED_IDS', $excludedIds); + $viewer->assign('VIEW_SOURCE','MASSEDIT'); $viewer->assign('RECORD_STRUCTURE_MODEL', $recordStructureInstance); $viewer->assign('MODULE_MODEL',$moduleModel); $viewer->assign('MASS_EDIT_FIELD_DETAILS',$fieldInfo); @@ -298,6 +299,22 @@ class Vtiger_MassActionAjax_View extends Vtiger_IndexAjax_View { $sourceModule = $request->getModule(); $moduleName = 'SMSNotifier'; + + $isCreateAllowed = Users_Privileges_Model::isPermitted($moduleName, 'CreateView'); + if(!$isCreateAllowed) { + throw new AppException(vtranslate('LBL_PERMISSION_DENIED')); + } + + $viewer = $this->getViewer($request); + + require_once 'modules/SMSNotifier/SMSNotifier.php'; + if (!SMSNotifier::checkServer()) { + $viewer->assign('TITLE', vtranslate('LBL_SEND_SMS', $moduleName)); + $viewer->assign('BODY', vtranslate('LBL_NOT_ACCESSIBLE', $moduleName)); + echo $viewer->view('NotAccessible.tpl', $moduleName, true); + exit; + } + $selectedIds = $this->getRecordsListFromRequest($request); $excludedIds = $request->get('excluded_ids'); $cvId = $request->get('viewname'); @@ -305,7 +322,6 @@ class Vtiger_MassActionAjax_View extends Vtiger_IndexAjax_View { $user = Users_Record_Model::getCurrentUserModel(); $moduleModel = Vtiger_Module_Model::getInstance($sourceModule); $phoneFields = $moduleModel->getFieldsByType('phone'); - $viewer = $this->getViewer($request); if(count($selectedIds) == 1){ $recordId = $selectedIds[0]; diff --git a/modules/Vtiger/views/RelatedList.php b/modules/Vtiger/views/RelatedList.php index 7b2d92a816cdda9511ef30275c818ef43d4f0c06..bd0811a8d0e6fafcd4015bcfbedb787f9901bf32 100644 --- a/modules/Vtiger/views/RelatedList.php +++ b/modules/Vtiger/views/RelatedList.php @@ -81,8 +81,6 @@ class Vtiger_RelatedList_View extends Vtiger_Index_View { $relatedModuleModel = $relationModel->getRelationModuleModel(); $relationField = $relationModel->getRelationField(); - - $moduleFields = $relatedModuleModel->getFields(); $fieldsInfo = array(); foreach($moduleFields as $fieldName => $fieldModel){ $fieldsInfo[$fieldName] = $fieldModel->getFieldInfo(); @@ -135,4 +133,4 @@ class Vtiger_RelatedList_View extends Vtiger_Index_View { $viewer->assign('TAB_LABEL', $request->get('tab_label')); return $viewer->view('RelatedList.tpl', $moduleName, 'true'); } -} \ No newline at end of file +} diff --git a/modules/com_vtiger_workflow/tasks/VTCreateEntityTask.inc b/modules/com_vtiger_workflow/tasks/VTCreateEntityTask.inc index f9fb860dd9a3378a285654027eb43009a6113bdd..a096a87e4363ee9d326a8c2d10b5c00b3369257c 100644 --- a/modules/com_vtiger_workflow/tasks/VTCreateEntityTask.inc +++ b/modules/com_vtiger_workflow/tasks/VTCreateEntityTask.inc @@ -178,15 +178,26 @@ class VTCreateEntityTask extends VTTask { // To handle cyclic process $newEntity->_from_workflow = true; $newEntity->column_fields['source'] = 'WORKFLOW'; - - //If the module triggering workflow and new entity we are creating are same, Then it might end up in infinite loop. - //So we need to call saveentity than save in order to avoid workflow triggering for new entity - if($moduleName == $entityType) { //TODO: Need to check for conditions as well, If new entity satisfies current workflow conditions and triggers same workflow - $newEntity->saveentity($entityType); - } else{ - $newEntity->save($entityType); + try { + + //If the module triggering workflow and new entity we are creating are same, Then it might end up in infinite loop. + //So we need to call saveentity than save in order to avoid workflow triggering for new entity + if($moduleName == $entityType) { //TODO: Need to check for conditions as well, If new entity satisfies current workflow conditions and triggers same workflow + $newEntity->saveentity($entityType); + } else{ + $newEntity->save($entityType); + } + relateEntities($focus, $moduleName, $recordId, $entityType, $newEntity->id); + } catch (DuplicateException $e) { + $workFlowManager = new VTWorkflowManager($adb); + $workFlow = $workFlowManager->retrieve($this->workflowId); + + $mailBody = vtranslate('LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS', $entityType, vtranslate('SINGLE_'.$entityType, $entityType), + decode_html($workFlow->workflowname), vtranslate('SINGLE_'.$entityType, $entityType)); + sendMailToUserOnDuplicationPrevention($entityType, $newEntity->column_fields, $mailBody); + } catch (Exception $e) { } - relateEntities($focus, $moduleName, $recordId, $entityType, $newEntity->id); + $util->revertUser(); } $util->revertUser(); diff --git a/modules/com_vtiger_workflow/tasks/VTCreateEventTask.inc b/modules/com_vtiger_workflow/tasks/VTCreateEventTask.inc index 8073b96d1ff9dd610cffb05151cf9380876fd4d6..333f733ae60ef8910f51df67efd999eeec1c05f6 100644 --- a/modules/com_vtiger_workflow/tasks/VTCreateEventTask.inc +++ b/modules/com_vtiger_workflow/tasks/VTCreateEventTask.inc @@ -52,7 +52,8 @@ class VTCreateEventTask extends VTTask{ $userId = vtws_getWebserviceEntityId('Users', Users::getActiveAdminId()); } - $moduleName = $entityData->getModuleName(); + $moduleName = 'Events'; + $parentModuleName = $entityData->getModuleName(); $adminUser = $this->getAdmin(); $startDate = $this->calculateDate($entityData, $this->startDays, @@ -108,7 +109,7 @@ class VTCreateEventTask extends VTTask{ $fields['visibility'] = ucfirst($sharedType); $id = $entityData->getId(); - if($moduleName=='Contacts'){ + if($parentModuleName=='Contacts'){ $fields['contact_id'] = $id; }else{ $data = vtws_describe('Calendar', $adminUser); @@ -120,12 +121,12 @@ class VTCreateEventTask extends VTTask{ } $refersTo = $parentIdField['type']['refersTo']; - if(in_array($moduleName, $refersTo)){ + if(in_array($parentModuleName, $refersTo)){ $fields['parent_id'] = $id; } } - $entityModuleHandler = vtws_getModuleHandlerFromName('Events', $current_user); + $entityModuleHandler = vtws_getModuleHandlerFromName($moduleName, $current_user); $handlerMeta = $entityModuleHandler->getMeta(); $moduleFields = $handlerMeta->getModuleFields(); foreach ($moduleFields as $name => $fieldModel) { @@ -173,48 +174,59 @@ class VTCreateEventTask extends VTTask{ unset($fields['recurringtype']); } - $fields['source'] = 'WORKFLOW'; - $event = vtws_create('Events', $fields, $adminUser); - $eventIdDetails = vtws_getIdComponents($event['id']); - $entityIdDetails = vtws_getIdComponents($id); + try { + $fields['source'] = 'WORKFLOW'; + $event = vtws_create($moduleName, $fields, $adminUser); + $eventIdDetails = vtws_getIdComponents($event['id']); + $entityIdDetails = vtws_getIdComponents($id); - relateEntities(CRMEntity::getInstance($moduleName), $moduleName, $entityIdDetails[1], 'Calendar', $eventIdDetails[1]); + relateEntities(CRMEntity::getInstance($parentModuleName), $parentModuleName, $entityIdDetails[1], 'Calendar', $eventIdDetails[1]); - $handler = vtws_getModuleHandlerFromName('Events', $adminUser); - $meta = $handler->getMeta(); - $recordValues = DataTransform::sanitizeForInsert($event,$meta); - list($typeId, $id) = vtws_getIdComponents($event['id']); - $event = CRMEntity::getInstance('Events'); - $event->id = $id; - foreach($recordValues as $recordFieldname => $recordFieldValue){ - $event->column_fields[$recordFieldname] = $recordFieldValue; - } - $event->column_fields['id'] = $event->id; - - if($this->recurringcheck && !empty($startDate) && - ($this->calendar_repeat_limit_date)) { - // Added this to relate these events to parent module. - $_REQUEST['createmode'] = 'link'; - $_REQUEST['return_module'] = $moduleName; - $_REQUEST['return_id'] = $entityIdDetails[1]; - - //repeatFromRequest calling getrecurringObjValue(), api expecting UserTimeZone values, so converting to UserTimeZone values - $startDateObj = DateTimeField::convertToUserTimeZone($startDate . ' ' . self::convertToDBFormat($this->startTime)); - $_REQUEST['date_start'] = $startDateObj->format('Y-m-d'); - $_REQUEST['time_start'] = $startDateObj->format('H:i'); - $endDateObj = DateTimeField::convertToUserTimeZone($endDate . ' ' . self::convertToDBFormat($this->endTime)); - $_REQUEST['due_date'] = $endDateObj->format('Y-m-d'); - $_REQUEST['time_end'] = $endDateObj->format('H:i'); - //comparing date_start with recurring dates, which are in the format of Y-m-d always - $event->column_fields['date_start'] = $startDateObj->format('Y-m-d'); - $event->column_fields['due_date'] = $endDateObj->format('Y-m-d'); - - include_once 'modules/Calendar/RepeatEvents.php'; - Calendar_RepeatEvents::repeatFromRequest($event, false); + $handler = vtws_getModuleHandlerFromName($moduleName, $adminUser); + $meta = $handler->getMeta(); + $recordValues = DataTransform::sanitizeForInsert($event,$meta); + list($typeId, $id) = vtws_getIdComponents($event['id']); + $event = CRMEntity::getInstance($moduleName); + $event->id = $id; + foreach($recordValues as $recordFieldname => $recordFieldValue){ + $event->column_fields[$recordFieldname] = $recordFieldValue; + } + $event->column_fields['id'] = $event->id; + + if($this->recurringcheck && !empty($startDate) && + ($this->calendar_repeat_limit_date)) { + // Added this to relate these events to parent module. + $_REQUEST['createmode'] = 'link'; + $_REQUEST['return_module'] = $parentModuleName; + $_REQUEST['return_id'] = $entityIdDetails[1]; + + //repeatFromRequest calling getrecurringObjValue(), api expecting UserTimeZone values, so converting to UserTimeZone values + $startDateObj = DateTimeField::convertToUserTimeZone($startDate . ' ' . self::convertToDBFormat($this->startTime)); + $_REQUEST['date_start'] = $startDateObj->format('Y-m-d'); + $_REQUEST['time_start'] = $startDateObj->format('H:i'); + $endDateObj = DateTimeField::convertToUserTimeZone($endDate . ' ' . self::convertToDBFormat($this->endTime)); + $_REQUEST['due_date'] = $endDateObj->format('Y-m-d'); + $_REQUEST['time_end'] = $endDateObj->format('H:i'); + //comparing date_start with recurring dates, which are in the format of Y-m-d always + $event->column_fields['date_start'] = $startDateObj->format('Y-m-d'); + $event->column_fields['due_date'] = $endDateObj->format('Y-m-d'); - $_REQUEST['createmode'] = ''; + include_once 'modules/Calendar/RepeatEvents.php'; + Calendar_RepeatEvents::repeatFromRequest($event, false); + $_REQUEST['createmode'] = ''; + + } + } catch (DuplicateException $e) { + $workFlowManager = new VTWorkflowManager($adb); + $workFlow = $workFlowManager->retrieve($this->workflowId); + + $mailBody = vtranslate('LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS', $moduleName, vtranslate('SINGLE_'.$moduleName, $moduleName), + decode_html($workFlow->workflowname), vtranslate('SINGLE_'.$moduleName, $moduleName)); + sendMailToUserOnDuplicationPrevention($moduleName, $fields, $mailBody); + } catch (Exception $e) { } + global $current_user; $current_user = $this->originalUser; } diff --git a/modules/com_vtiger_workflow/tasks/VTCreateTodoTask.inc b/modules/com_vtiger_workflow/tasks/VTCreateTodoTask.inc index be456c0c36aaea475821f9d7328b9bc99b2e7f4d..5d08bb6fc0ae370b9ec88aadabc558fd3beef49f 100644 --- a/modules/com_vtiger_workflow/tasks/VTCreateTodoTask.inc +++ b/modules/com_vtiger_workflow/tasks/VTCreateTodoTask.inc @@ -35,7 +35,8 @@ class VTCreateTodoTask extends VTTask{ } public function doTask($entityData){ - if(!vtlib_isModuleActive('Calendar')) { + $moduleName = 'Calendar'; + if(!vtlib_isModuleActive($moduleName)) { return; } global $adb, $current_user; @@ -115,13 +116,13 @@ class VTCreateTodoTask extends VTTask{ 'visibility'=>'Private', 'eventstatus'=>'' ); - $moduleName = $entityData->getModuleName(); + $parentModuleName = $entityData->getModuleName(); $adminUser = $this->getAdmin(); $id = $entityData->getId(); - if($moduleName=='Contacts'){ + if($parentModuleName=='Contacts'){ $fields['contact_id'] = $id; }else{ - $data = vtws_describe('Calendar', $adminUser); + $data = vtws_describe($moduleName, $adminUser); $fieldInfo = $data['fields']; foreach($fieldInfo as $field){ if($field['name']=='parent_id'){ @@ -130,12 +131,12 @@ class VTCreateTodoTask extends VTTask{ } $refersTo = $parentIdField['type']['refersTo']; - if(in_array($moduleName, $refersTo)){ + if(in_array($parentModuleName, $refersTo)){ $fields['parent_id'] = $id; } } - $entityModuleHandler = vtws_getModuleHandlerFromName('Calendar', $current_user); + $entityModuleHandler = vtws_getModuleHandlerFromName($moduleName, $current_user); $handlerMeta = $entityModuleHandler->getMeta(); $mandatoryFields = $handlerMeta->getMandatoryFields(); $moduleFields = $handlerMeta->getModuleFields(); @@ -169,12 +170,22 @@ class VTCreateTodoTask extends VTTask{ } } - $fields['source'] = 'WORKFLOW'; - $todo = vtws_create('Calendar', $fields, $adminUser); - $todoIdDetails = vtws_getIdComponents($todo['id']); - $entityIdDetails = vtws_getIdComponents($id); - - relateEntities(CRMEntity::getInstance($moduleName), $moduleName, $entityIdDetails[1], 'Calendar', $todoIdDetails[1]); + try { + $fields['source'] = 'WORKFLOW'; + $todo = vtws_create($moduleName, $fields, $adminUser); + $todoIdDetails = vtws_getIdComponents($todo['id']); + $entityIdDetails = vtws_getIdComponents($id); + + relateEntities(CRMEntity::getInstance($parentModuleName), $parentModuleName, $entityIdDetails[1], $moduleName, $todoIdDetails[1]); + } catch (DuplicateException $e) { + $workFlowManager = new VTWorkflowManager($adb); + $workFlow = $workFlowManager->retrieve($this->workflowId); + + $mailBody = vtranslate('LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS', $moduleName, vtranslate('SINGLE_'.$moduleName, $moduleName), + decode_html($workFlow->workflowname), vtranslate('SINGLE_'.$moduleName, $moduleName)); + sendMailToUserOnDuplicationPrevention($moduleName, $fields, $mailBody); + } catch (Exception $e) { + } global $current_user; $current_user = $this->originalUser; diff --git a/packages/vtiger/mandatory/Import.zip b/packages/vtiger/mandatory/Import.zip index 9a673a5ee00b5a537a49a3afb3a6e78171a06599..dc0e9a4cf0529c05946f052b444b2fcde345d5c3 100644 Binary files a/packages/vtiger/mandatory/Import.zip and b/packages/vtiger/mandatory/Import.zip differ diff --git a/packages/vtiger/mandatory/MailManager.zip b/packages/vtiger/mandatory/MailManager.zip index 693a982b641f915fc3bbdf9720cb3e629fec320c..bc3444e9b3f7a894399cfca9b4d6d01ebc8deccb 100644 Binary files a/packages/vtiger/mandatory/MailManager.zip and b/packages/vtiger/mandatory/MailManager.zip differ diff --git a/packages/vtiger/mandatory/Mobile.zip b/packages/vtiger/mandatory/Mobile.zip index 6216b1fb50c92ecace9eebbb4e73bfc05a4fda83..eb756d8ec80ed7e97b49283196a203b492b22b5b 100644 Binary files a/packages/vtiger/mandatory/Mobile.zip and b/packages/vtiger/mandatory/Mobile.zip differ diff --git a/packages/vtiger/mandatory/ModTracker.zip b/packages/vtiger/mandatory/ModTracker.zip index 64c6c72778852d79df771dbde87887565a152191..17d56d445ff13f2e258e3ba63868fb1745ce3448 100644 Binary files a/packages/vtiger/mandatory/ModTracker.zip and b/packages/vtiger/mandatory/ModTracker.zip differ diff --git a/packages/vtiger/mandatory/PBXManager.zip b/packages/vtiger/mandatory/PBXManager.zip index 49743a63f025d4120a6a1b4bff0418e913925d8e..5bb7439914b521864546efff71ef3241c93d3d23 100644 Binary files a/packages/vtiger/mandatory/PBXManager.zip and b/packages/vtiger/mandatory/PBXManager.zip differ diff --git a/packages/vtiger/mandatory/ServiceContracts.zip b/packages/vtiger/mandatory/ServiceContracts.zip index ce31a215c53ad32a1f75d8fcbb0797fee1e9efe7..e4aaacb4aa52ea83f80bf65e477f3943a6fcb09c 100644 Binary files a/packages/vtiger/mandatory/ServiceContracts.zip and b/packages/vtiger/mandatory/ServiceContracts.zip differ diff --git a/packages/vtiger/mandatory/Services.zip b/packages/vtiger/mandatory/Services.zip index 394e9c08acc830f9a15137a6722608aeaa880edc..795ddef843dad29e773a520f84b58bbaf8176f02 100644 Binary files a/packages/vtiger/mandatory/Services.zip and b/packages/vtiger/mandatory/Services.zip differ diff --git a/packages/vtiger/mandatory/WSAPP.zip b/packages/vtiger/mandatory/WSAPP.zip index c00962f66aed924c927fec01b2117a61fdd635ab..7cfa6fdeea5e95f6a69e42058d52d98543d42bee 100644 Binary files a/packages/vtiger/mandatory/WSAPP.zip and b/packages/vtiger/mandatory/WSAPP.zip differ diff --git a/packages/vtiger/marketplace/ExtensionStore.zip b/packages/vtiger/marketplace/ExtensionStore.zip index c59e2608f3de5a5cf73762ab8f99752adcb2bd61..9fca87095725498f5e1cfaabfa8a5c25c5334d41 100644 Binary files a/packages/vtiger/marketplace/ExtensionStore.zip and b/packages/vtiger/marketplace/ExtensionStore.zip differ diff --git a/packages/vtiger/optional/Arabic_ar_ae.zip b/packages/vtiger/optional/Arabic_ar_ae.zip index 15edbcea83e28736ba25a2471d4f3e84fc01f1cd..7b4ac9db2115e4e7ffa789a78e39638e99d6ea55 100644 Binary files a/packages/vtiger/optional/Arabic_ar_ae.zip and b/packages/vtiger/optional/Arabic_ar_ae.zip differ diff --git a/packages/vtiger/optional/Assets.zip b/packages/vtiger/optional/Assets.zip index be1be7b98b8fd4475ebd2cefd24e6f6449361369..008171c47bb9d2bdfec73dad66c736d927f0b59f 100644 Binary files a/packages/vtiger/optional/Assets.zip and b/packages/vtiger/optional/Assets.zip differ diff --git a/packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip b/packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip index 47f14fa63ca103ccdee06f99724f9771ecc9a6c4..d8b9eb4bfda22aec03f2179520e3544dafbd3155 100644 Binary files a/packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip and b/packages/vtiger/optional/BrazilianLanguagePack_bz_bz.zip differ diff --git a/packages/vtiger/optional/BritishLanguagePack_br_br.zip b/packages/vtiger/optional/BritishLanguagePack_br_br.zip index b9126c8f881774df40f737a573cf750e807cb570..2597fca56c7d5c80045ff6346b0bcc020546212f 100644 Binary files a/packages/vtiger/optional/BritishLanguagePack_br_br.zip and b/packages/vtiger/optional/BritishLanguagePack_br_br.zip differ diff --git a/packages/vtiger/optional/CustomerPortal.zip b/packages/vtiger/optional/CustomerPortal.zip index 83cc14f0e550c65e60375971b41731c29585953e..b46c133ef25b6284cbacde5ef738ba883e000bb7 100644 Binary files a/packages/vtiger/optional/CustomerPortal.zip and b/packages/vtiger/optional/CustomerPortal.zip differ diff --git a/packages/vtiger/optional/Deutsch.zip b/packages/vtiger/optional/Deutsch.zip index ef9e8608f499cbcce54200ee7708985324ea611c..d8c8baa8bdfbd9b7db239c88182e88c531eba6a3 100644 Binary files a/packages/vtiger/optional/Deutsch.zip and b/packages/vtiger/optional/Deutsch.zip differ diff --git a/packages/vtiger/optional/Dutch.zip b/packages/vtiger/optional/Dutch.zip index 1bd0294e1e6fe4465ac63c44661d792fc7584599..621070c2914d29f45aa810e4f9ce629bf82022b1 100644 Binary files a/packages/vtiger/optional/Dutch.zip and b/packages/vtiger/optional/Dutch.zip differ diff --git a/packages/vtiger/optional/EmailTemplates.zip b/packages/vtiger/optional/EmailTemplates.zip index 0bee21439a0e6d55472be6e90e48ef464bc77a24..31afaa10b3ddcf74f499214a54944cbca1dd4a75 100644 Binary files a/packages/vtiger/optional/EmailTemplates.zip and b/packages/vtiger/optional/EmailTemplates.zip differ diff --git a/packages/vtiger/optional/French.zip b/packages/vtiger/optional/French.zip index 19837c9be08f0bc75727466e149d282ad7de47c0..a8d3d1dad8b7b06069619d0064308f2fb73e038f 100644 Binary files a/packages/vtiger/optional/French.zip and b/packages/vtiger/optional/French.zip differ diff --git a/packages/vtiger/optional/Google.zip b/packages/vtiger/optional/Google.zip index ec46de9ee1ca96ea62f6201c0cc7520f7ac409ae..e3a3ad16189790e3badb91756f556a28b5f54a83 100644 Binary files a/packages/vtiger/optional/Google.zip and b/packages/vtiger/optional/Google.zip differ diff --git a/packages/vtiger/optional/Hungarian.zip b/packages/vtiger/optional/Hungarian.zip index 12786b6fd74431b34cb4361fe5d0a5d45c52d04e..e96f83a889e864ef1711711e4e4d292dbf5f5164 100644 Binary files a/packages/vtiger/optional/Hungarian.zip and b/packages/vtiger/optional/Hungarian.zip differ diff --git a/packages/vtiger/optional/ItalianLanguagePack_it_it.zip b/packages/vtiger/optional/ItalianLanguagePack_it_it.zip index 950da3ae2263d782a10a8075a52d2ae517534a67..58929062c52a9aeb6acb78a3cd89f02ebd43d4bc 100644 Binary files a/packages/vtiger/optional/ItalianLanguagePack_it_it.zip and b/packages/vtiger/optional/ItalianLanguagePack_it_it.zip differ diff --git a/packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip b/packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip index 55ae70b422d95006cce2017c3227d4b1f979bd7a..e53fb489cf476ecc3affda19fb70530a74a4be0f 100644 Binary files a/packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip and b/packages/vtiger/optional/MexicanSpanishLanguagePack_es_mx.zip differ diff --git a/packages/vtiger/optional/ModComments.zip b/packages/vtiger/optional/ModComments.zip index 6b252686b73b9692e5e278df82b577317a7efcc2..19e81343dd6ad3e241ad9d6c52792c74f28aff13 100644 Binary files a/packages/vtiger/optional/ModComments.zip and b/packages/vtiger/optional/ModComments.zip differ diff --git a/packages/vtiger/optional/PolishLanguagePack_pl_pl.zip b/packages/vtiger/optional/PolishLanguagePack_pl_pl.zip index b41c0d1d14fa21937d1d2124933669209c9123c9..51371bcf3308760252a8f412cc5d0e475ad0fb8c 100644 Binary files a/packages/vtiger/optional/PolishLanguagePack_pl_pl.zip and b/packages/vtiger/optional/PolishLanguagePack_pl_pl.zip differ diff --git a/packages/vtiger/optional/Projects.zip b/packages/vtiger/optional/Projects.zip index 89e9d9bc699ff7391c39481639510b9c698d62e9..b414d3988a3387d41581301506114dcc3486f55a 100644 Binary files a/packages/vtiger/optional/Projects.zip and b/packages/vtiger/optional/Projects.zip differ diff --git a/packages/vtiger/optional/RecycleBin.zip b/packages/vtiger/optional/RecycleBin.zip index 1ca9d6987498666001edf60efea51981e18c866c..d7f3b14302c832258115d35701cdde24238c9c69 100644 Binary files a/packages/vtiger/optional/RecycleBin.zip and b/packages/vtiger/optional/RecycleBin.zip differ diff --git a/packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip b/packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip index 252f82ac9551d2779fcad3a4edb50c050ec43771..7817d99305866b5211c2e5710eabfcffa7fb764a 100644 Binary files a/packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip and b/packages/vtiger/optional/RomanianLanguagePack_rm_rm.zip differ diff --git a/packages/vtiger/optional/Russian.zip b/packages/vtiger/optional/Russian.zip index c8578dd2c68b1ef3ceb7b3597003991d0f46edfb..2ae0df3a86810bb3874ad122c742e0f38a500517 100644 Binary files a/packages/vtiger/optional/Russian.zip and b/packages/vtiger/optional/Russian.zip differ diff --git a/packages/vtiger/optional/SMSNotifier.zip b/packages/vtiger/optional/SMSNotifier.zip index 026b6b61e11247c7217f81cf6fb4b3068e7d4804..f898e4f82fa52e31e237e0dfcf322d710f76ccb7 100644 Binary files a/packages/vtiger/optional/SMSNotifier.zip and b/packages/vtiger/optional/SMSNotifier.zip differ diff --git a/packages/vtiger/optional/Spanish.zip b/packages/vtiger/optional/Spanish.zip index 71f2fd9c92068f07a5d3f7195910b6cad17651fb..74a15d1b946851147ec424c1e69713a8fad59206 100644 Binary files a/packages/vtiger/optional/Spanish.zip and b/packages/vtiger/optional/Spanish.zip differ diff --git a/packages/vtiger/optional/Sweden_sv_se.zip b/packages/vtiger/optional/Sweden_sv_se.zip index e00b591910f8d9e879faf9b4445a138bdc1d4bee..0b944397cdca72ca1762541eb62e1f877a6f0107 100644 Binary files a/packages/vtiger/optional/Sweden_sv_se.zip and b/packages/vtiger/optional/Sweden_sv_se.zip differ diff --git a/packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip b/packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip index 7ca481033386f392bfab83918b7ebfef65b053b1..b448f67f72af27ab2a07147a8381d77fbfe7da09 100644 Binary files a/packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip and b/packages/vtiger/optional/TurkishLanguagePack_tr_tr.zip differ diff --git a/packages/vtiger/optional/Webforms.zip b/packages/vtiger/optional/Webforms.zip index 94d6b2532695916a7c86aa694ddf3332c31d01d5..3303e562363c5befa5e566589ee9c293bc156aa7 100644 Binary files a/packages/vtiger/optional/Webforms.zip and b/packages/vtiger/optional/Webforms.zip differ diff --git a/pkg/vtiger/modules/ConfigEditor/manifest.xml b/pkg/vtiger/modules/ConfigEditor/manifest.xml deleted file mode 100644 index ab6542430033e5fb5855385274f994b0045c791e..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/ConfigEditor/manifest.xml +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version='1.0'?> -<module> - <exporttime>2010-12-23 13:46:05</exporttime> - <name>ConfigEditor</name> - <label>ConfigEditor</label> - <parent></parent> - <type>extension</type> - <version>1.9</version> - <dependencies> - <vtiger_version>5.1.0</vtiger_version> - <vtiger_max_version>7.*</vtiger_max_version> - </dependencies> - <tables> - </tables> -</module> diff --git a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigEditor.js b/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigEditor.js deleted file mode 100644 index 4b4c74fdcad9e6327937b2b1ab967cf5877a8d33..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigEditor.js +++ /dev/null @@ -1,45 +0,0 @@ -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - ************************************************************************************/ -function replaceUploadSize(){ - var upload = document.getElementById('key_upload_maxsize').value; - upload = "'"+upload+"'"; - upload = upload.replace(/000000/g,""); - upload = upload.replace(/'/g,""); - document.getElementById('key_upload_maxsize').value = upload; -} - - -function vtlib_field_help_show_this(basenode, fldname) { - var domnode = $('vtlib_fieldhelp_div'); - - - - var helpcontent = document.getElementById('helpInfo').value; - - - if(!domnode) { - domnode = document.createElement('div'); - domnode.id = 'vtlib_fieldhelp_div'; - domnode.className = 'dvtSelectedCell'; - domnode.style.position = 'absolute'; - domnode.style.width = '150px'; - domnode.style.padding = '4px'; - domnode.style.fontWeight = 'normal'; - document.body.appendChild(domnode); - - domnode = $('vtlib_fieldhelp_div'); - Event.observe(domnode, 'mouseover', function() { $('vtlib_fieldhelp_div').show(); }); - Event.observe(domnode, 'mouseout', vtlib_field_help_hide); - } - else { - domnode.show(); - } - domnode.innerHTML = helpcontent; - fnvshobj(basenode,'vtlib_fieldhelp_div'); -} diff --git a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigEditor.php b/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigEditor.php deleted file mode 100644 index 1d238894544f4a95790317a25dba2dc7fe25e7d8..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigEditor.php +++ /dev/null @@ -1,57 +0,0 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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 ConfigEditor { - - /** - * Invoked when special actions are performed on the module. - * @param String Module name - * @param String Event Type (module.postinstall, module.disabled, module.enabled, module.preuninstall) - */ - function vtlib_handler($modulename, $event_type) { - - $registerLink = false; - - if($event_type == 'module.postinstall') { - $registerLink = true; - } else if($event_type == 'module.disabled') { - // TODO Handle actions when this module is disabled. - $registerLink = false; - } else if($event_type == 'module.enabled') { - // TODO Handle actions when this module is enabled - $registerLink = true; - } else if($event_type == 'module.preuninstall') { - return; - } else if($event_type == 'module.preupdate') { - return; - } else if($event_type == 'module.postupdate') { - return; - } - - $displayLabel = 'LBL_CONFIG_EDITOR'; - - global $adb; - if ($registerLink) { - $blockid = $adb->query_result( - $adb->pquery("SELECT blockid FROM vtiger_settings_blocks WHERE label='LBL_OTHER_SETTINGS'",array()), - 0, 'blockid'); - $sequence = (int)$adb->query_result( - $adb->pquery("SELECT max(sequence) as sequence FROM vtiger_settings_field WHERE blockid=?",array($blockid)), - 0, 'sequence') + 1; - $fieldid = $adb->getUniqueId('vtiger_settings_field'); - $adb->pquery("INSERT INTO vtiger_settings_field (fieldid,blockid,sequence,name,iconpath,description,linkto) - VALUES (?,?,?,?,?,?,?)", array($fieldid, $blockid,$sequence,$displayLabel,'migrate.gif','Update configuration file of the application', 'index.php?module=ConfigEditor&action=index')); - } else { - $adb->pquery("DELETE FROM vtiger_settings_field WHERE name=?", array($displayLabel)); - } - } -} - -?> \ No newline at end of file diff --git a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigEditorAjax.php b/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigEditorAjax.php deleted file mode 100644 index efae0a94a8a793af8918ea218e122792dfb7c603..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigEditorAjax.php +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - ************************************************************************************/ -require_once('include/Ajax/CommonAjax.php'); -?> diff --git a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigEditorHandler.php b/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigEditorHandler.php deleted file mode 100644 index 74ef1c29708f4b72338659c53434b176cdf652d2..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigEditorHandler.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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 ConfigEditorHandler extends VTEventHandler { - - function handleEvent($eventName, $data) { - - if($eventName == 'vtiger.entity.beforesave') { - // Entity is about to be saved, take required action - } - - if($eventName == 'vtiger.entity.aftersave') { - // Entity has been saved, take next action - } - } -} - -?> \ No newline at end of file diff --git a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigFileReader.php b/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigFileReader.php deleted file mode 100644 index 1daf6f5316c8548279dd8b6aa5c8023b8fd993d3..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigFileReader.php +++ /dev/null @@ -1,305 +0,0 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - ************************************************************************************/ - -/** - * Configuration file reader - */ -class ConfigFileReader { - // Each line is treated as configuration row - protected $rows; - // Path to configuration file - protected $filepath; - - // Iteration support for rows - protected $rowIndex; - - // Editables and Viewables - protected $viewables; - protected $editables; - - /** - * Constructor - * You can restrict variable display for viewing and editing - */ - function __construct($path, $viewables=array(), $editables=array()) { - $this->filepath = $path; - $this->viewables = $viewables; - $this->editables = $editables; - $this->read(); - } - - /** - * Read and parse the configuration file contents. - */ - protected function read() { - $fileContent = trim(file_get_contents($this->filepath)); - $pattern = '/\$([^=]+)=([^;]+);/'; - $matches = null; - $matchesFound = preg_match_all($pattern, $fileContent, $matches); - $configContents = array(); - if($matchesFound) { - $configContents = $matches[0]; - } - $this->rows = array(); - foreach($configContents as $configLine) { - $this->rows[] = new ConfigFileRow($configLine, $this); - } - $this->rowIndex = -1; - unset($fileContent); - } - - /** - * Save the rows back to configuration. - */ - function save() { - $fileContent = trim(file_get_contents($this->filepath)); - if ($this->rows) { - $fp = fopen($this->filepath, 'w'); - $rowcount = count($this->rows); - for($index = 0; $index < $rowcount; ++$index) { - $row = $this->rows[$index]; - if($row->isEditable()) { - $variableName = $row->variableName(); - $newVariableValue = $row->variableValue(); - $pattern = '/\$'.$variableName.'[\s]+=([^;]+);/'; - $replacement = $row->toString(); - $fileContent = preg_replace($pattern, $replacement, $fileContent); - } - } - fwrite($fp, $fileContent); - fclose($fp); - } - } - - function editables($key = false) { - if ($key === false) return array_keys($this->editables); - return $this->editables[$key]; - } - - function viewables($key = false) { - if ($key === false) return array_keys($this->viewables); - return $this->viewables[$key]; - } - - /** - * Set new value to the desired variable. - */ - function setVariableValue($name, $value) { - if ($this->rows) { - foreach($this->rows as $row) { - if ($row->matchesVariableName($name)) { - if($name == 'upload_maxsize'){ - return $row->setVariableValue($value*1000000); - }else{ - return $row->setVariableValue($value); - } - } - } - } - } - - /** - * Get all the rows - */ - function getAll() { - return $this->rows; - } - - /** - * Has next row to read? - */ - function next() { - if ($this->rowIndex++ < count($this->rows)) { - return true; - } - } - - /** - * Get the current row during iteration (please call next() before this) - */ - function get() { - return $this->rows[$this->rowIndex]; - } - - /** - * Rewind the iteration - */ - function rewind() { - $this->rowIndex = 0; - } -} - -/** - * Configuration file row class - */ -class ConfigFileRow { - // Actual line content - protected $lineContent; - // Parsed variable name and value - protected $parsedVarName = false; - protected $parsedVarValue= ''; - - // Is the variable of string type? - protected $isValueString = false; - - // Some variables which is never editable - protected static $alltimeNoneditableVars = array( - "dbconfig['db_server']", - "application_unique_key" - ); - - // Editable and Viewable variable names - protected $parent; - - // Is the variable value editable? - protected $isValueEditable = false; - - // Regex to detect variable name and its safe value - static $variableRegex = '/^[ \t]*\\$([^=]+)=([^;]+)/'; - //Regex to detect support name,it doesnt allow any single quote,and special characters,it does allow only alpha numeric,utf8,.com,@ - static $variableUnSafeValueRegex = "/[\x{4e00}-\x{9fa5}[:print:]]+.*\-/u"; - /** - * Constructor - */ - function __construct($content, $parent) { - $this->lineContent = $content; - $this->parent = $parent; - $this->parse(); - } - - /** - * Parse the content - */ - protected function parse() { - if (preg_match(self::$variableRegex, $this->lineContent, $m)) { - $this->parsedVarName = trim($m[1]); - $this->parsedVarValue = trim($m[2]); - // Is variable string type? - if (strpos($this->parsedVarValue, "'") === 0 || strpos($this->parsedVarValue, '"') === 0) { - $this->isValueString = true; - $this->parsedVarValue = trim($m[2], "'\" "); - } - if (!in_array($this->parsedVarName, self::$alltimeNoneditableVars)) { - $this->isValueEditable = true; - } else { - $this->isValueEditable = false; - } - } - } - - /** - * Does the row represent variable? - */ - function isVariable() { - return ($this->parsedVarName !== false); - } - - /** - * Is the variable viewable? - */ - function isViewable() { - if ($this->isVariable()) { - $editables = $this->parent->editables(); - if (!empty($editables)) { - return in_array($this->parsedVarName, $this->parent->viewables()); - } else { - return true; - } - } - return false; - } - - /** - * Is the variable editable? - */ - function isEditable() { - if ($this->isVariable()) { - $editables = $this->parent->editables(); - if (empty($editables)) { - return $this->isValueEditable; - } - return ((in_array($this->parsedVarName, $editables) !== false) && $this->isValueEditable); - } - return false; - } - - /** - * Get variable name - */ - function variableName() { - return $this->parsedVarName; - } - - /** - * Check if the variable name matches with input - */ - function matchesVariableName($input) { - $input = ltrim($input, '$'); - return ($input == $this->parsedVarName); - } - - /** - * Get variable value - */ - function variableValue() { - return $this->parsedVarValue; - } - - /** - * Is the variable value string type? - */ - function isValueString() { - return $this->isValueString; - } - - /** - * Set the variable value - */ - function setVariableValue($value) { - // TODO Avoid any PHP String concate hacks - if (preg_match(self::$variableUnSafeValueRegex, $value, $m)) { - return false; - } - // Should the value be restricted to a set? - $meta = $this->meta(); - if (isset($meta['values']) && is_array($meta['values']) ) { - $allowedValues = array_keys($meta['values']); - if (!empty($allowedValues) && !in_array($value, $allowedValues)) { - return false; - } - } - $this->parsedVarValue = $value; - return true; - } - - /** - * Get the meta information - */ - function meta() { - if ($this->isEditable()) return $this->parent->editables($this->parsedVarName); - if ($this->isViewable()) return $this->parent->viewables($this->parsedVarName); - return false; - } - - /** - * String representation of the instance - */ - function toString() { - if ($this->isVariable()) { - $encloseWith = ""; - if ($this->isValueString()) { - $encloseWith = "'"; - } - return sprintf("\$%s = %s%s%s;", $this->parsedVarName, $encloseWith, $this->parsedVarValue, $encloseWith); - } - return $this->lineContent; - } -} -?> \ No newline at end of file diff --git a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigurationUtils.php b/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigurationUtils.php deleted file mode 100644 index dabbc1674b70e4a8432df88f6d90c93c90b325b0..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/ConfigurationUtils.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -require_once 'include/utils/utils.php'; -class ConfigurationUtils{ - static function getEntityModule() { - global $adb; - $unusedmodules = array('Events','Emails'); - $additionalModules = array('Home'); - $query = "SELECT name FROM vtiger_tab WHERE isentitytype = 1"; - $res = $adb->pquery($query, array()); - $rows = $adb->num_rows($res); - for($i=0; $i <$rows; $i++) { - $module[] = $adb->query_result($res, $i, 'name'); - } - $modules = array_merge($module,$additionalModules); - $modules = array_diff($modules,$unusedmodules); - return $modules; - } -} -?> diff --git a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/Request.php b/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/Request.php deleted file mode 100644 index 3c520c66be5425e049f5086f78cc4b5e85ea4ba3..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/Request.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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 ConfigEditor_Request { - protected $valuemap; - - function __construct($values) { - $this->valuemap = $values; - } - - function get($key, $defvalue='') { - $value = $defvalue; - if (isset($this->valuemap[$key])) { - $value = $this->valuemap[$key]; - } - if (!empty($value)) { - $value = vtlib_purify($value); - } - return $value; - } - - function values() { - return $this->valuemap; - } -} -?> \ No newline at end of file diff --git a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/Viewer.php b/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/Viewer.php deleted file mode 100644 index 7a5521d21575c64248e840e6b71cfbe8a8fcc4dd..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/Viewer.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - ************************************************************************************/ -require_once('Smarty_setup.php'); - -class ConfigEditor_Viewer extends vtigerCRM_Smarty { - function ConfigEditor_Viewer() { - parent::vtigerCRM_Smarty(); - - global $app_strings, $mod_strings, $currentModule, $theme; - - $this->assign('CUSTOM_MODULE', true); - - $this->assign('APP', $app_strings); - $this->assign('MOD', $mod_strings); - $this->assign('MODULE', $currentModule); - // TODO: Update Single Module Instance name here. - $this->assign('SINGLE_MOD', 'SINGLE_'.$currentModule); - $this->assign('CATEGORY', 'Settings'); - $this->assign('IMAGE_PATH', "themes/$theme/images/"); - $this->assign('THEME', $theme); - } -} -?> \ No newline at end of file diff --git a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/config.php b/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/config.php deleted file mode 100644 index f99df210569261c826ec702f439b7fb0f82f5906..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/config.php +++ /dev/null @@ -1,45 +0,0 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - ************************************************************************************/ -include('ConfigurationUtils.php'); -$modules = ConfigurationUtils::getEntityModule(); -$moduleLabels = array(); -foreach($modules as $module) { - $moduleLabels[$module] = getTranslatedString($module, $module); -} - -$trueFalseArray = array( - 'true' => getTranslatedString('LBL_TRUE','ConfigEditor'), - 'false' => getTranslatedString('LBL_FALSE','ConfigEditor') -); - -$__ConfigEditor_Config = array( - - 'edit.filepath' => dirname(__FILE__) . '/../../config.inc.php', - - /* CONFIGURE: - * List the configuration variables that user can set. - * By setting it to array() lets allows editing of all variables but it is not RECOMMENDED - */ - 'allow.editing.variables' => array( - 'CALENDAR_DISPLAY' => array('label'=>getTranslatedString('LBL_MINI_CALENDAR_DISPLAY','ConfigEditor'),'values'=>$trueFalseArray), - 'WORLD_CLOCK_DISPLAY' => array('label'=> getTranslatedString('LBL_WORLD_CLOCK_DISPLAY','ConfigEditor'),'values'=>$trueFalseArray), - 'CALCULATOR_DISPLAY' => array('label' => getTranslatedString('LBL_CALCULATOR_DISPLAY','ConfigEditor') , 'values'=>$trueFalseArray), - 'USE_RTE' => array('label'=>getTranslatedString('LBL_USE_RTE','ConfigEditor'), 'values'=>$trueFalseArray), - 'HELPDESK_SUPPORT_EMAIL_ID'=>array('label'=>getTranslatedString('LBL_HELPDESK_SUPPORT_EMAILID','ConfigEditor'),'values'=>array()), - 'HELPDESK_SUPPORT_NAME' => array('label' => getTranslatedString('LBL_HELPDESK_SUPPORT_NAME','ConfigEditor'),'values'=>array()), - 'upload_maxsize' => array('label'=>getTranslatedString('LBL_MAX_UPLOAD_SIZE','ConfigEditor'),'values'=>array()), - 'history_max_viewed' => array('label'=>getTranslatedString('LBL_MAX_HISTORY_VIEWED','ConfigEditor'),'values'=>array()), - 'default_module' => array('label'=>getTranslatedString('LBL_DEFAULT_MODULE','ConfigEditor'),'values'=>$moduleLabels), - 'listview_max_textlength' => array('label' => getTranslatedString('LBL_MAX_TEXT_LENGTH_IN_LISTVIEW','ConfigEditor'), 'values' => array() ), - 'list_max_entries_per_page' => array('label' => getTranslatedString('LBL_MAX_ENTRIES_PER_PAGE_IN_LISTVIEW','ConfigEditor'), 'values'=> array()), - ) - -); -?> \ No newline at end of file diff --git a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/index.php b/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/index.php deleted file mode 100644 index 161e6384fd88e8e430c0cc1520b127c39853e45e..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/index.php +++ /dev/null @@ -1,132 +0,0 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - ************************************************************************************/ -include_once dirname(__FILE__) . '/Request.php'; -include_once dirname(__FILE__) . '/Viewer.php'; -include_once dirname(__FILE__) . '/ConfigFileReader.php'; -include_once dirname(__FILE__) . '/config.php'; - -/** - * Main controller of actions - */ -class ConfigEditor_Controller { - - /** - * Get Viewer for displaying UI - */ - protected function getViewer() { - return new ConfigEditor_Viewer(); - } - - /** - * Get Configuration file reader - */ - protected function getReader() { - global $__ConfigEditor_Config; - $configFile = $__ConfigEditor_Config['edit.filepath']; - if (file_exists($configFile)) { - if (is_writeable($configFile)) { - return new ConfigFileReader( - $configFile, - $__ConfigEditor_Config['allow.editing.variables'], // What variables to view - $__ConfigEditor_Config['allow.editing.variables'] // What variables to edit - ); - } else { - return null; - } - } - return false; - } - - /** - * Perform logged in user check and allow only administrators - */ - protected function authCheck() { - global $current_user; - if (is_admin($current_user)) return; - - $viewer = $this->getViewer(); - $viewer->display(vtlib_getModuleTemplate('Vtiger', 'OperationNotPermitted.tpl')); - exit; - } - - /** - * Core processing method - */ - function process(ConfigEditor_Request $request) { - $this->authCheck(); - $type = $request->get('type'); - if ($type == 'save') { - $this->processSave($request); - } else { - $this->processDefault($request); - } - } - - /** - * Default action - */ - protected function processDefault($request) { - global $currentModule; - - $configReader = $this->getReader(); - $viewer = $this->getViewer(); - - if (is_null($configReader)) { - $viewer->assign('WARNING', 'Configuration file is not writeable!'); - } else if ($configReader === false) { - $viewer->assign('WARNING', 'Configuration file not found!'); - } else { - $viewer->assign('CONFIGREADER', $configReader); - } - $viewer->display(vtlib_getModuleTemplate($currentModule, 'index.tpl')); - } - - /** - * Save action - */ - protected function processSave($request) { - $configReader = $this->getReader(); - - if ($configReader) { - $reqvalues = $request->values(); - if($this->validateReqValues($reqvalues)){ - foreach($reqvalues as $k => $v) { - if (preg_match("/key_([^ ]+)/", $k, $m)) { - $configReader->setVariableValue($m[1], vtlib_purify($v)); - } - } - $configReader->save(); - } - } - header('Location: index.php?module=ConfigEditor&action=index'); - } - - function validateReqValues($values){ - $flag = true; - if(filter_var($values['key_HELPDESK_SUPPORT_EMAIL_ID'], FILTER_VALIDATE_EMAIL) != true) { - $flag = false; - }elseif(preg_match ('/[\'";?><]/', $values['key_HELPDESK_SUPPORT_NAME'])){ - $flag = false; - }elseif(!preg_match ('/[a-zA-z0-9]/', $values['key_default_module'])){ - $flag = false; - }elseif(filter_var($values['key_upload_maxsize'],FILTER_VALIDATE_INT) != true || - filter_var($values['key_list_max_entries_per_page'],FILTER_VALIDATE_INT) != true || - filter_var($values['key_history_max_viewed'],FILTER_VALIDATE_INT) != true || - filter_var($values['key_listview_max_textlength'],FILTER_VALIDATE_INT) != true ) { - $flag = false; - } - return $flag; - } - -} -$controller = new ConfigEditor_Controller(); -$controller->process(new ConfigEditor_Request($_REQUEST)); - -?> \ No newline at end of file diff --git a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/language/en_us.lang.php b/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/language/en_us.lang.php deleted file mode 100644 index 63878f3eee35e849ba2ced84e56a82c58a648d33..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/ConfigEditor/modules/ConfigEditor/language/en_us.lang.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - ************************************************************************************/ -$mod_strings = Array ( - - 'ConfigEditor' => 'ConfigEditor', - 'LBL_CONFIG_EDITOR' => 'Configuration Editor', - 'LBL_SETTINGS' => 'Settings', - 'LBL_CONFIG_EDIT'=>'Edit the Configuration details of vtiger CRM', - 'SINGLE_ConfigEditor' => 'ConfigEditor', - 'LBL_TRUE'=> 'true', - 'LBL_FALSE'=> 'false', - 'LBL_MAX_UPLOAD_SIZE_MSG'=> 'Maximum upload size is 5MB', - 'LBL_INVALID_EMAIL_MSG'=>'Invalid Email Address', - 'LBL_EMPTY_NAME_MSG'=> 'Support Name cannot be empty', - 'LBL_MAX_LISTVIEW_ENTRIES_MSG'=>'Maximum entries in the ListView is 100', - 'LBL_MAX_HISTORY_VIEWED_MSG'=>'Please enter a number in the range 1-5', - 'LBL_MAX_TEXTLENGTH_LISTVIEW_MSG'=>'Maximum text length is 100', - 'LBL_MB'=>'MB', - 'LBL_MINI_CALENDAR_DISPLAY' => 'Mini Calendar Display', - 'LBL_WORLD_CLOCK_DISPLAY'=>'World Clock Display', - 'LBL_CALCULATOR_DISPLAY'=>'Calculator Display', - 'LBL_USE_RTE'=>'Use RTE', - 'LBL_HELPDESK_SUPPORT_EMAILID'=>'Helpdesk Support Email-Id', - 'LBL_HELPDESK_SUPPORT_NAME'=>'Helpdesk Support Name', - 'LBL_MAX_UPLOAD_SIZE'=>'Max.Upload Size (Max 5MB)', - 'LBL_MAX_HISTORY_VIEWED'=>'Max. History Viewed', - 'LBL_DEFAULT_MODULE'=>'Default Module', - 'LBL_MAX_TEXT_LENGTH_IN_LISTVIEW'=>'Max. text length in listview', - 'LBL_MAX_ENTRIES_PER_PAGE_IN_LISTVIEW'=>'Max. entries per page in listview', - 'LBL_CONFIG_FILE'=>'config.inc.php', - 'LBL_CONFIG_EDIT_CAUTION_INFO' =>'You are editing the configuration details of vtiger CRM.', - 'LBL_DOUBLE_CHECK_INFO'=>'Please do double check before saving the values.', - 'LBL_HELP_INFO'=>"This is used as a 'From email-id' to send a mail to a new user created about his login credentials, - send a mail to trouble-ticket owner about the ticket assigned,send a mail about reminder and notification.", - 'LBL_RESTRICTED_CHARACTERS'=>"Special characters like ' " and ; are not allowed", - -); - -?> \ No newline at end of file diff --git a/pkg/vtiger/modules/ConfigEditor/templates/index.tpl b/pkg/vtiger/modules/ConfigEditor/templates/index.tpl deleted file mode 100644 index 9548975e06afbb705969a46946208d6b191cdf98..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/ConfigEditor/templates/index.tpl +++ /dev/null @@ -1,280 +0,0 @@ -{*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - ************************************************************************************} -{literal} -<style type="text/css"> -.detailedViewTextBoxThisOn { - background-color:#FFFFDD; - border:1px solid #BABABA; - color:#000000; - font-family:Arial,Helvetica,sans-serif; - font-size:11px; - padding-left:5px; - width:20%; -} - -.detailedViewTextBoxThis { - background-color:#FFFFFF; - border:1px solid #BABABA; - color:#000000; - font-family:Arial,Helvetica,sans-serif; - font-size:11px; - padding-left:5px; - width:20%; -} -</style> - <script type="text/javascript"> - function msg() - { - alert("invalid entry"); - exit; - } - - function trim(str) - { - while (str.substring(0,1) == ' ') // check for white spaces from beginning - { - str = str.substring(1, str.length); - } - while (str.substring(str.length-1, str.length) == ' ') // check white space from end - { - str = str.substring(0,str.length-1); - } - return str; - } - - function valid(name) { - var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; - var id=document.getElementById('key_HELPDESK_SUPPORT_EMAIL_ID'); - var name = document.getElementById('key_HELPDESK_SUPPORT_NAME'); - var size = document.getElementById('key_upload_maxsize'); - var maxEntries = document.getElementById('key_list_max_entries_per_page'); - var history1 = document.getElementById('key_history_max_viewed'); - var maxtext = document.getElementById('key_listview_max_textlength'); - var reg1 = /^([0-9]*)$/; - name.value = trim(name.value); - if ((name.value).indexOf("\"") != -1 || (name.value).indexOf("'") != -1 || (name.value).indexOf(";") != -1){ - var invalidSupportName = document.getElementById('invalidSupportName').value; - document.getElementById('msg_HELPDESK_SUPPORT_NAME').innerHTML = invalidSupportName; - name.focus(); - return false; - } - - maxEntries.value = trim(maxEntries.value); - size.value = trim(size.value); - history1.value = trim(history1.value); - maxtext.value = trim(maxtext.value); - var uploadSize = document.getElementById('uploadSize').value; - var invalidEmail = document.getElementById('invalidEmail').value; - var emptyName = document.getElementById('emptyName').value; - var maxListEntries= document.getElementById('maxListEntries').value; - var maxHistory= document.getElementById('maxHistory').value; - var maxTextLength= document.getElementById('maxTextLength').value; - if(reg.test(id.value) == false){ - document.getElementById('msg_HELPDESK_SUPPORT_EMAIL_ID').innerHTML = invalidEmail; - id.focus(); - return false; - }else if(name.value == ''){ - document.getElementById('msg_HELPDESK_SUPPORT_NAME').innerHTML = emptyName; - name.focus(); - return false; - }else if((reg1.test(size.value) == false) || (size.value <= 0) || (size.value > 5) || (size.value == NaN)){ - document.getElementById('msg_upload_maxsize').innerHTML =uploadSize; - size.focus(); - return false; - }else if((reg1.test(maxEntries.value) == false)||(maxEntries.value <= 0) || (maxEntries.value>100)){ - document.getElementById('msg_list_max_entries_per_page').innerHTML=maxListEntries; - maxEntries.focus(); - return false; - }else if((reg1.test(history1.value) == false)||(history1.value <= 0) || (history1.value > 5)){ - document.getElementById('msg_history_max_viewed').innerHTML=maxHistory; - history1.focus(); - return false; - }else if((reg1.test(maxtext.value) == false) || (maxtext.value < 0) || (maxtext.value > 100) || (maxtext.value === "")){ - document.getElementById('msg_listview_max_textlength').innerHTML=maxTextLength; - maxtext.focus(); - return false; - } - return true; - } - - - </script> -{/literal} -<script language="JavaScript" type="text/javascript" src="modules/{$MODULE}/{$MODULE}.js"></script> -<body onload="replaceUploadSize();"> -<input type="hidden" value="{$MOD.LBL_MAX_UPLOAD_SIZE_MSG}" id="uploadSize"></input> -<input type="hidden" value="{$MOD.LBL_INVALID_EMAIL_MSG}" id="invalidEmail"></input> -<input type="hidden" value="{$MOD.LBL_RESTRICTED_CHARACTERS}" id="invalidSupportName"></input> -<input type="hidden" value="{$MOD.LBL_MAX_LISTVIEW_ENTRIES_MSG}" id="maxListEntries"></input> -<input type="hidden" value="{$MOD.LBL_MAX_HISTORY_VIEWED_MSG}" id="maxHistory"></input> -<input type="hidden" value="{$MOD.LBL_MAX_TEXTLENGTH_LISTVIEW_MSG}" id="maxTextLength"></input> -<input type="hidden" value="{$MOD.LBL_EMPTY_NAME_MSG}" id="emptyName"></input> -<input type="hidden" value="{$MOD.LBL_HELP_INFO}" id="helpInfo"></input> - -<table cellspacing="0" cellpadding="2" border="0" width="100%" class="level2Bg"> - <tbody> - <tr> - <td> - <table cellspacing="0" cellpadding="0" border="0"> - <tbody> - <tr> - <td nowrap="" class="level2SelTab"><a href="index.php?module=Settings&action=index&parenttab=Settings">Settings</a></td> - <td nowrap="" class="level2SelTab"><a href="index.php?module=Settings&action=ModuleManager&parenttab=Settings">Module Manager</a></td> - </tr> - </tbody> - </table> - </td> - </tr> - </tbody> -</table> - -<table border=0 cellspacing=0 cellpadding=0 width=98% align=center> - <tr> - <td> - - </td> - </tr> - <tr> - <td valign=top align=right width=8><img src="{'showPanelTopLeft.gif'|@vtiger_imageurl:$THEME}"></td> - <td class="showPanelBg" valign="top" width="100%" > - - <div style="padding: 20px;"> - <form onsubmit="VtigerJS_DialogBox.block();" action="index.php" method="POST" name="EditView"> - <div align="center"> - {include file="SetMenu.tpl"} - <table cellspacing="0" cellpadding="5" border="0" width="100%" class="settingsSelUITopLine"> - <tbody> - <tr> - <td width="50" valign="top" rowspan="2"><img height="48" border="0" width="48" title="Users" alt="Users" src="themes/images/migrate.gif"></td> - <td valign="bottom" class="heading2"><b><a href="index.php?module=Settings&action=index&parenttab=Settings">{$MOD.LBL_SETTINGS}</a> > {$MOD.LBL_CONFIG_EDITOR} </b></td> - </tr> - <tr> - <td valign="top"class="small">{$MOD.LBL_CONFIG_EDIT}</td> - </tr> - </tbody> - </table> - <br> - <br> - <table width="95%" cellspacing="0" cellpadding="0" border="0" class="small" align="center"> - <tr> - <td> - <table width="100%" cellspacing="0" cellpadding="3" border="0" class="small"> - <tr> - <td nowrap="" style="width: 10px;" class="dvtTabCache"> </td> - <td width="75" nowrap="" align="center" class="dvtSelectedCell" style="width: 15%;"><b>{$MOD.LBL_CONFIG_FILE}</b></td> - <td nowrap="" align="center" style="width: 100px;" class="dvtTabCache"> - {if $WARNING} - <div style='background-color: #FFFABF; padding: 2px; margin: 0 0 2px 0; border: 1px solid yellow'> - <b style='color: red'>{$WARNING}</b> - {/if} - </td> - <td nowrap="" style="width: 65%;" class="dvtTabCache"> </td> - </tr> - </table> - </td> - </tr> - <tr> - <td valign="top" align="left"> - <div id="basicTab"> - <table border=0 cellspacing=0 cellpadding=3 width=100% class="dvtContentSpace"> - <tr> - <td align="left" style="padding:10px;"> - <table border=0 cellspacing=0 cellpadding=5 width=100% class="small"> - <tr> - <td colspan=2> - <div align="center"> - <input type='submit' class="crmbutton small save" value="{$APP.LBL_SAVE_LABEL}" onclick="if(valid(this)){ldelim}return true;{rdelim}else{ldelim}return false;{rdelim}"> - <input type='button' class="crmbutton small cancel" value="{$APP.LBL_CANCEL_BUTTON_LABEL}" onclick="location.href='index.php?module=Settings&action=index&parenttab=Settings'"> - - <input type='hidden' name='module' value='ConfigEditor'> - <input type='hidden' name='action' value='ConfigEditorAjax'> - <input type='hidden' name='file' value='index'> - <input type='hidden' name='type' value='save'> - - </div> - </td> - </tr> - {if $CONFIGREADER} - <tr> - <td class="detailedViewHeader" colspan="2"> - {$MOD.LBL_CONFIG_EDIT_CAUTION_INFO}<b>{$MOD.LBL_DOUBLE_CHECK_INFO}</b> - </td> - </tr> - {/if} - - {foreach item=CONFIGLINE from=$CONFIGREADER->getAll()} - {if $CONFIGLINE->isViewable() || $CONFIGLINE->isEditable()} - - {assign var="VARMETA" value=$CONFIGLINE->meta()} - - <tr bgcolor=white valign=center style="height:25px;"> - <td class="dvtCellLabel" width="15%"> - {if $VARMETA.label} - {if $VARMETA.label == 'Helpdesk Support Email-Id'} - {$VARMETA.label} <img border="0" src="themes/images/help_icon.gif" onclick="vtlib_field_help_show_this(this, '{$CONFIGLINE->variableName()}' );" style="cursor: pointer;"> - {else} - {$VARMETA.label} - {/if} - {else} - {$CONFIGLINE->variableName()} - {/if} - </td> - <td class="dvtCellInfo"> - {if $CONFIGLINE->isEditable()} - {if $VARMETA.values} - <select class="small" name="key_{$CONFIGLINE->variableName()}" id="key_{$CONFIGLINE->variableName()}"> - {foreach item=VARVALUEOPTION key=VARVALUEOPTIONKEY from=$VARMETA.values} - <option value="{$VARVALUEOPTIONKEY}" {if $CONFIGLINE->variableValue() eq $VARVALUEOPTIONKEY}selected=true{/if}>{$VARVALUEOPTION}</option> - {/foreach} - </select> - {else} - <b><span class="warning" id="msg_{$CONFIGLINE->variableName()}"></span></b> - {if $CONFIGLINE->variableName() == 'upload_maxsize'} - <input size="2" type="text" name="key_{$CONFIGLINE->variableName()}" id="key_{$CONFIGLINE->variableName()}" value="{$CONFIGLINE->variableValue()}" onblur="class='detailedViewTextBoxThis'" onfocus="class='detailedViewTextBoxThisOn'" class="detailedViewTextBoxThis" > {$MOD.LBL_MB} - {else} - <input type="text" name="key_{$CONFIGLINE->variableName()}" id="key_{$CONFIGLINE->variableName()}" value="{$CONFIGLINE->variableValue()}" onblur="this.className='detailedViewTextBox'" onfocus="this.className='detailedViewTextBoxOn'" class="detailedViewTextBox" > - {/if} - {/if} - {else} - {$CONFIGLINE->variableValue()} - {/if} - </td> - </tr> - {/if} - {/foreach} - </table> - - <tr> - <td colspan=2> - <div align="center"> - <input type='submit' class="crmbutton small save" value="{$APP.LBL_SAVE_LABEL}" onclick="if(valid(this)){ldelim}return true;{rdelim}else{ldelim}return false;{rdelim}"> - <input type='button' class="crmbutton small cancel" value="{$APP.LBL_CANCEL_BUTTON_LABEL}" onclick="location.href='index.php?module=Settings&action=index&parenttab=Settings'"> - - <input type='hidden' name='module' value='ConfigEditor'> - <input type='hidden' name='action' value='ConfigEditorAjax'> - <input type='hidden' name='file' value='index'> - <input type='hidden' name='type' value='save'> - </div> - </td> - </tr> - </td> - </tr> - </table> - </div> - </td> - </tr> - </table> - </div> - </form> - </div> - </td> - <td valign=top align=right><img src="{'showPanelTopRight.gif'|@vtiger_imageurl:$THEME}"></td> - </tr> -</table> -</body> diff --git a/pkg/vtiger/modules/CronTasks/manifest.xml b/pkg/vtiger/modules/CronTasks/manifest.xml deleted file mode 100644 index 93cb4f71e4c82a9da431e7199cfb0310a2a2e547..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/CronTasks/manifest.xml +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version='1.0'?> -<module> - <name>CronTasks</name> - <label>CronTasks</label> - <parent></parent> - <type>extension</type> - <version>1.2</version> - <dependencies> - <vtiger_version>5.3.1</vtiger_version> - <vtiger_max_version>7.*</vtiger_max_version> - </dependencies> -</module> diff --git a/pkg/vtiger/modules/CronTasks/modules/CronTasks/CronSequence.php b/pkg/vtiger/modules/CronTasks/modules/CronTasks/CronSequence.php deleted file mode 100644 index 50487033e9ca5238dd12685ae8ba4189c9c3106e..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/CronTasks/modules/CronTasks/CronSequence.php +++ /dev/null @@ -1,40 +0,0 @@ -<?php -/*+******************************************************************************* - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - ********************************************************************************/ -global $adb,$log; - -$id = $_REQUEST['record']; -$move = $_REQUEST['move']; -$log->fatal("$id,$move"); - -if($move == 'Down'){ - $sequence = $adb->pquery("SELECT sequence FROM vtiger_cron_task WHERE id = ?", array($id)); - $oldsequence = $adb->query_result($sequence,0,'sequence'); - - $nexttab = $adb->pquery("SELECT sequence,id FROM vtiger_cron_task WHERE sequence > ? ORDER BY SEQUENCE LIMIT 0,1", array($oldsequence)); - $newsequence = $adb->query_result($nexttab,0,'sequence'); - $rightid = $adb->query_result($nexttab,0,'id'); - - $adb->pquery("UPDATE vtiger_cron_task set sequence=? WHERE id = ?", array($newsequence, $id)); - $adb->pquery("UPDATE vtiger_cron_task set sequence=? WHERE id = ?", array($oldsequence, $rightid)); -}elseif ($move == 'Up') { - $sequence = $adb->pquery("SELECT sequence FROM vtiger_cron_task WHERE id = ?", array($id)); - $oldsequence = $adb->query_result($sequence,0,'sequence'); - - $nexttab = $adb->pquery("SELECT sequence,id FROM vtiger_cron_task WHERE sequence < ? ORDER BY SEQUENCE DESC LIMIT 0,1", array($oldsequence)); - $newsequence = $adb->query_result($nexttab,0,'sequence'); - $leftid = $adb->query_result($nexttab,0,'id'); - - $adb->pquery("UPDATE vtiger_cron_task SET sequence=? WHERE id = ?", array($newsequence, $id)); - $adb->pquery("UPDATE vtiger_cron_task SET sequence=? WHERE id = ?", array($oldsequence, $leftid)); - -} -$loc = "Location: index.php?action=CronTasksAjax&file=ListCronJobs&module=CronTasks&directmode=ajax"; -header($loc); -?> diff --git a/pkg/vtiger/modules/CronTasks/modules/CronTasks/CronTasks.js b/pkg/vtiger/modules/CronTasks/modules/CronTasks/CronTasks.js deleted file mode 100644 index e274fd186bd64d4a57346400d9c941ef1f05badf..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/CronTasks/modules/CronTasks/CronTasks.js +++ /dev/null @@ -1,86 +0,0 @@ -/********************************************************************************* -** The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. -************************************************************************************/ - -function fetchSaveCron(id) -{ - - var status = $("cron_status").value; - var timeValue= $("CronTime").value; - var time = $("cron_time").value; - var min_freq =parseInt($("min_freq").value,10); - if(!numValidate("CronTime","","any",true)){ - return false; - } - if((timeValue % 1) !=0){ - alert("only integer values are allowed"); - return false; - } - if((timeValue < min_freq && time == "min") || timeValue <= 0 || timeValue == '' ){ - alert($("desc").value); - - } - else{ - $("editdiv").style.display="none"; - $("status").style.display="inline"; - new Ajax.Request( - 'index.php', - { - queue: { - position: 'end', - scope: 'command' - }, - method: 'post', - postBody: 'action=CronTasksAjax&module=CronTasks&file=SaveCron&record='+id+'&status='+status+'&timevalue='+timeValue+'&time='+time, - onComplete: function(response) { - $("status").style.display="none"; - $("notifycontents").innerHTML=response.responseText; - } - } - ); - } -} - -function fetchEditCron(id) -{ - $("status").style.display="inline"; - new Ajax.Request( - 'index.php', - { - queue: { - position: 'end', - scope: 'command' - }, - method: 'post', - postBody: 'action=CronTasksAjax&module=CronTasks&file=EditCron&record='+id, - onComplete: function(response) { - $("status").style.display="none"; - $("editdiv").innerHTML=response.responseText; - } - } - ); -} -function move_module(tabid,move){ - - //$('vtbusy_info').style.display = "block"; - new Ajax.Request( - 'index.php', - { - queue: { - position: 'end', - scope: 'command' - }, - method: 'post', - postBody: 'module=CronTasks&action=CronTasksAjax&file=CronSequence&parenttab=Settings&record='+tabid+'&move='+move, - onComplete: function(response) { - $("notifycontents").innerHTML=response.responseText; - - } - } - ); -} diff --git a/pkg/vtiger/modules/CronTasks/modules/CronTasks/CronTasks.php b/pkg/vtiger/modules/CronTasks/modules/CronTasks/CronTasks.php deleted file mode 100644 index be4e6f542dd71a29c47a69466e627fd25569ee00..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/CronTasks/modules/CronTasks/CronTasks.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php -/*+******************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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 CronTasks { - - /** - * Invoked when special actions are performed on the module. - * @param String Module name - * @param String Event Type - */ - function vtlib_handler($moduleName, $eventType) { - - require_once('include/utils/utils.php'); - global $adb,$mod_strings; - - if($eventType == 'module.postinstall') { - $fieldid = $adb->getUniqueID('vtiger_settings_field'); - $blockid = getSettingsBlockId('LBL_OTHER_SETTINGS'); - $seq_res = $adb->pquery("SELECT max(sequence) AS max_seq FROM vtiger_settings_field WHERE blockid = ?", array($blockid)); - if ($adb->num_rows($seq_res) > 0) { - $cur_seq = $adb->query_result($seq_res, 0, 'max_seq'); - if ($cur_seq != null) $seq = $cur_seq + 1; - } - - $adb->pquery('INSERT INTO vtiger_settings_field(fieldid, blockid, name, iconpath, description, linkto, sequence) - VALUES (?,?,?,?,?,?,?)', array($fieldid, $blockid, 'Scheduler', 'Cron.png', 'Allows you to Configure Cron Task', 'index.php?module=CronTasks&action=ListCronJobs&parenttab=Settings', $seq)); - } - } -} diff --git a/pkg/vtiger/modules/CronTasks/modules/CronTasks/CronTasksAjax.php b/pkg/vtiger/modules/CronTasks/modules/CronTasks/CronTasksAjax.php deleted file mode 100644 index 4529abde38429a64bd7ca39b10d816fb843c15dc..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/CronTasks/modules/CronTasks/CronTasksAjax.php +++ /dev/null @@ -1,12 +0,0 @@ -<?php -/********************************************************************************* -** The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. -* - ********************************************************************************/ -require_once('include/Ajax/CommonAjax.php'); -?> diff --git a/pkg/vtiger/modules/CronTasks/modules/CronTasks/EditCron.php b/pkg/vtiger/modules/CronTasks/modules/CronTasks/EditCron.php deleted file mode 100644 index a4cf02e3061f5be30997c91d983d08845d1da608..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/CronTasks/modules/CronTasks/EditCron.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php -/********************************************************************************* -** The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. -* - ********************************************************************************/ - -require_once('config.php'); -require_once('vtlib/Vtiger/Cron.php'); -require_once('config.inc.php'); -global $mod_strings, $app_strings, $current_language; -global $theme; -$theme_path="themes/".$theme."/"; -$image_path=$theme_path."images/"; - -$smarty = new vtigerCRM_Smarty; -if(isset($_REQUEST['record']) && $_REQUEST['record']!='') { - $id = $_REQUEST['record']; - $cronTask = Vtiger_cron::getInstanceById($id); - $label = getTranslatedString($cronTask->getName(),$cronTask->getModule()); - $cron_status = $cronTask->getStatus(); - $cron_freq = $cronTask->getFrequency(); - $cron_desc = $cronTask->getDescription(); - $cron = Array(); - $cron['label'] = $label; - if($cron_freq/(60*60)>1 && is_int($cron_freq/(60*60))){ - $cron['frequency']=(int)($cron_freq/(60*60)); - $cron['time'] = 'hour'; - } - else{ - $cron['frequency']=(int)($cron_freq/60); - $cron['time'] = 'min'; - } - $cron['status'] = $cron_status; - $cron['description'] = $cron_desc; - $cron['id']=$id; - - - $smarty->assign("CRON_DETAILS",$cron); - $smarty->assign("MOD", return_module_language($current_language,'CronTasks')); - $smarty->assign("THEME", $theme); - $smarty->assign("IMAGE_PATH",$image_path); - $smarty->assign("APP", $app_strings); - $smarty->assign("CMOD", $mod_strings); - $smarty->assign("MIN_CRON_FREQUENCY", getMinimumCronFrequency()); - $smarty->display("modules/CronTasks/EditCron.tpl"); -} -else { - header("Location:index.php?module=CronTasks&action=ListCronJobs&directmode=ajax"); -} -?> diff --git a/pkg/vtiger/modules/CronTasks/modules/CronTasks/ListCronJobs.php b/pkg/vtiger/modules/CronTasks/modules/CronTasks/ListCronJobs.php deleted file mode 100644 index 7a39ae4a897efad9712cc47f0417af7917e938c7..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/CronTasks/modules/CronTasks/ListCronJobs.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php -/********************************************************************************* -** The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. -* - ********************************************************************************/ - -require_once('vtlib/Vtiger/Cron.php'); -require_once ('include/utils/utils.php'); - -global $theme,$app_strings,$mod_strings,$current_language; -$theme_path="themes/".$theme."/"; -$image_path=$theme_path."images/"; -$smarty = new vtigerCRM_Smarty; -$cronTasks = Vtiger_Cron::listAllActiveInstances(1); -$output = Array(); - -foreach ($cronTasks as $cronTask) { - $out = Array(); - $cron_id = $cronTask->getId(); - $cron_mod = $cronTask->getName(); - $cron_freq = $cronTask->getFrequency(); - $cron_st = $cronTask->getStatus(); - if($cronTask->getLastStart() != 0) { - $start_ts = $cronTask->getLastStart(); - $end_ts = time(); - $cron_started = dateDiffAsString($start_ts, $end_ts); - } - else { - $cron_started = ''; - } - if($cronTask->getLastEnd() != 0) { - $start_ts = $cronTask->getLastEnd(); - $end_ts = time(); - $cron_end = dateDiffAsString($start_ts, $end_ts); - } - else { - $cron_end = ''; - } - $out ['cronname'] = getTranslatedString($cron_mod,$cronTask->getModule()); - - $out['hours'] = str_pad((int)(($cron_freq/(60*60))),2,0,STR_PAD_LEFT); - $out['mins'] =str_pad((int)(($cron_freq%(60*60))/60),2,0,STR_PAD_LEFT); - $out ['id'] = $cron_id; - $out ['status'] = $cron_st; - $out['laststart']= $cron_started; - $out['lastend'] =$cron_end; - if($out['status'] == Vtiger_Cron::$STATUS_DISABLED ) - $out['status'] = $mod_strings['LBL_INACTIVE']; - elseif($out['status'] == Vtiger_Cron::$STATUS_ENABLED) - $out['status'] = $mod_strings['LBL_ACTIVE']; - else - $out['status'] = $mod_strings['LBL_RUNNING']; - - $output [] = $out; -} - -$smarty->assign("CRON",$output); -$smarty->assign("MOD", return_module_language($current_language,'CronTasks')); -$smarty->assign("MIN_CRON_FREQUENCY",getMinimumCronFrequency()); -$smarty->assign("THEME", $theme); -$smarty->assign("IMAGE_PATH",$image_path); -$smarty->assign("APP", $app_strings); -$smarty->assign("CMOD", $mod_strings); - -if($_REQUEST['directmode'] != '') - $smarty->display("modules/CronTasks/CronContents.tpl"); -else { - $smarty->display("modules/CronTasks/Cron.tpl"); -} -?> diff --git a/pkg/vtiger/modules/CronTasks/modules/CronTasks/SaveCron.php b/pkg/vtiger/modules/CronTasks/modules/CronTasks/SaveCron.php deleted file mode 100644 index d85cc61a6f115d9003b7ef53e62140ec2a9b385e..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/CronTasks/modules/CronTasks/SaveCron.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php -/********************************************************************************* -** The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. -* - ********************************************************************************/ - -require_once('include/database/PearDatabase.php'); -require_once('include/utils/VtlibUtils.php'); -require_once('vtlib/Vtiger/Cron.php'); -global $adb; -if(isset($_REQUEST['record']) && $_REQUEST['record']!='') { - $cronTask = Vtiger_Cron::getInstanceById($_REQUEST['record']); - $cronTask->updateStatus($_REQUEST['status']); - if($_REQUEST['timevalue'] != '') { - - if($_REQUEST['time'] == 'min') { - - $time = $_REQUEST['timevalue']*60; - } - else { - $time = $_REQUEST['timevalue']*60*60; - } - $cronTask->updateFrequency($time); - } -} -$loc = "Location: index.php?action=CronTasksAjax&file=ListCronJobs&module=CronTasks&directmode=ajax"; -header($loc); -?> diff --git a/pkg/vtiger/modules/CronTasks/modules/CronTasks/language/en_us.lang.php b/pkg/vtiger/modules/CronTasks/modules/CronTasks/language/en_us.lang.php deleted file mode 100644 index dfe2cd774aa67918287c8356c3816a824d655863..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/CronTasks/modules/CronTasks/language/en_us.lang.php +++ /dev/null @@ -1,27 +0,0 @@ -<?php -/** YOUR LICENSE TEXT HERE **/ -$mod_strings = Array ( - 'LBL_ACTIVE' => 'Active', - 'LBL_INACTIVE' => 'InActive', - 'LBL_STATUS' => 'Status', - 'LBL_SCHEDULER' => 'Scheduler', - 'LBL_SETTINGS' => 'Settings', - 'LBL_FREQUENCY'=> 'Frequency', - 'LBL_HOURMIN' => '(H:M)', - 'LAST_START'=>'Last Scan Started', - 'LAST_END'=>'Last Scan Ended', - 'LBL_SEQUENCE'=>'Sequence', - 'LBL_TOOLS' =>'Tools', - 'LBL_DAYS'=>'Days', - 'LBL_HOURS'=>'Hours', - 'LBL_MINS'=>'Mins', - 'LBL_RUNNING'=>'Running', - 'LBL_MINIMUM_FREQUENCY'=>'Frequency of any cron job configured should be greater than', - 'LBL_SECONDS'=>'sec ago', - 'LBL_MINUTES'=>'min(s) ago', - 'LBL_HOURS'=>'hr(s) ago', - 'LBL_DAYS'=>'day(s) ago', - 'LBL_MONTHS'=>'month(s) ago', - 'LBL_YEARS'=>'year(s) ago', -); -?> \ No newline at end of file diff --git a/pkg/vtiger/modules/CronTasks/templates/Cron.tpl b/pkg/vtiger/modules/CronTasks/templates/Cron.tpl deleted file mode 100644 index fb2ad03a8ebfad27ca4b7c5a61946258377eaca3..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/CronTasks/templates/Cron.tpl +++ /dev/null @@ -1,67 +0,0 @@ -{*<!-- -/********************************************************************************* - ** The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - * - ********************************************************************************/ --->*} -<script language="JAVASCRIPT" type="text/javascript" src="include/js/smoothscroll.js"></script> -<script language="JavaScript" type="text/javascript" src="include/js/menu.js"></script> -<script language="JavaScript" type="text/javascript" src="modules/CronTasks/CronTasks.js"></script><br> -<table align="center" border="0" cellpadding="0" cellspacing="0" width="98%"> -<tbody><tr> - <td valign="top"><img src="{'showPanelTopLeft.gif'|@vtiger_imageurl:$THEME}"></td> - <td class="showPanelBg" style="padding: 10px;" valign="top" width="100%"> - <br> - <div align=center> - {include file='SetMenu.tpl'} - <!-- DISPLAY --> - <table border=0 cellspacing=0 cellpadding=5 width=100% class="settingsSelUITopLine"> - <tr> - <td width="50" rowspan="2" valign="top"><img src="{'Cron.png'|@vtiger_imageurl:$THEME}" alt="{$MOD.LBL_USERS}" width="48" height="48" border=0 title="{$MOD.LBL_USERS}"></td> - <td colspan="2" class="heading2" valign=bottom align="left"><b><a href="index.php?module=Settings&action=index&parenttab=Settings">{$MOD.LBL_SETTINGS}</a> > {$MOD.LBL_SCHEDULER} </b></td> - <td rowspan=2 class="small" align=right> </td> - </tr> - <tr> - <td valign=top class="small" align="left">{$MOD.LBL_SCHEDULER}</td> - </tr> - </table> - <table border=0 cellspacing=0 cellpadding=5 width=100% class="tableHeading"> - <tr><td> </td></tr> - </table> - <table width="100%" border="0" cellpadding="5" cellspacing="0" class="listTableTopButtons"> - <tr > - <td style="padding-left:5px;" class="big">{$MOD.LBL_SCHEDULER}</td> - <td align="right"> </td> - </tr> - </table> - - <div id="notifycontents"> - {include file='modules/CronTasks/CronContents.tpl'} - </div> - - <table border=0 cellspacing=0 cellpadding=5 width=100% > - <tr><td class="small" nowrap align=right><a href="#top">{$MOD.LBL_SCROLL}</a></td></tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> - </td> - </tr> - </table> - - </div> - -</td> - <td valign="top"><img src="{'showPanelTopRight.gif'|@vtiger_imageurl:$THEME}"></td> - </tr> -</tbody> -</table> - <div id="editdiv" style="display:none;position:absolute;width:450px;"></div> diff --git a/pkg/vtiger/modules/CronTasks/templates/CronContents.tpl b/pkg/vtiger/modules/CronTasks/templates/CronContents.tpl deleted file mode 100644 index 5e818afd0bf6154d0714b1b4dde4b56f023358f1..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/CronTasks/templates/CronContents.tpl +++ /dev/null @@ -1,53 +0,0 @@ -{*<!-- -/********************************************************************************* - ** The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - * - ********************************************************************************/ --->*} -<table width="100%" cellpadding="5" cellspacing="0" class="listTable" > - <tr> - <td class="colHeader small" width="5%">#</td> - <td class="colHeader small" width="20%">Cron Job</td> - <td class="colHeader small" width="15%">{$MOD.LBL_FREQUENCY}{$MOD.LBL_HOURMIN}</td> - <td class="colHeader small" width="10%">{$CMOD.LBL_STATUS}</td> - <td class="colHeader small" width="20%">{$MOD.LAST_START}</td> - <td class="colHeader small" width="15%">{$MOD.LAST_END}</td> - <td class="colHeader small" width='10%'>{$MOD.LBL_SEQUENCE}</td> - <td class="colHeader small" width="5%">{$MOD.LBL_TOOLS}</td> - </tr> - {foreach name=cronlist item=elements from=$CRON} - <tr> - <td class="listTableRow small">{$smarty.foreach.cronlist.iteration}</td> - <td class="listTableRow small">{$elements.cronname}</td> - <td class="listTableRow small">{$elements.days} {$elements.hours}:{$elements.mins}</td> - {if $elements.status eq 'Active'} - <td class="listTableRow small active">{$elements.status}</td> - {else} - <td class="listTableRow small inactive">{$elements.status}</td> - {/if} - <td class="listTableRow small">{$elements.laststart}</td> - <td class="listTableRow small">{$elements.lastend}</td> - {if $smarty.foreach.cronlist.first neq true} - <td align="center" class="listTableRow"><a href="javascript:move_module('{$elements.id}','Up');" ><img src="{'arrow_up.png'|@vtiger_imageurl:$THEME}" style="width:16px;height:16px;" border="0" /></a> - {/if} - {if $smarty.foreach.cronlist.last eq true} - <img src="{'blank.gif'|@vtiger_imageurl:$THEME}" style="width:16px;height:16px;" border="0" /> - {/if} - {if $smarty.foreach.cronlist.first eq true} - <td align="center" class="listTableRow"><img src="{'blank.gif'|@vtiger_imageurl:$THEME}" style="width:16px;height:16px;" border="0" /> - <a href="javascript:move_module('{$elements.id}','Down');" ><img src="{'arrow_down.png'|@vtiger_imageurl:$THEME}" style="width:16px;height:16px;" border="0" /></a></td> - {/if} - - {if $smarty.foreach.cronlist.last neq true && $smarty.foreach.cronlist.first neq true} - <a href="javascript:move_module('{$elements.id}','Down');" ><img src="{'arrow_down.png'|@vtiger_imageurl:$THEME}" style="width:16px;height:16px;" border="0" /></a></td> - {/if} - <td class="listTableRow small" align="center" ><img onClick="fnvshobj(this,'editdiv');fetchEditCron('{$elements.id}');" style="cursor:pointer;" src="{'editfield.gif'|@vtiger_imageurl:$THEME}" title="{$APP.LBL_EDIT}"></td> - </tr> - {/foreach} - </table> - diff --git a/pkg/vtiger/modules/CronTasks/templates/EditCron.tpl b/pkg/vtiger/modules/CronTasks/templates/EditCron.tpl deleted file mode 100644 index eb158e8eaa4472f60b9d765cf8d79194f240fb00..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/CronTasks/templates/EditCron.tpl +++ /dev/null @@ -1,69 +0,0 @@ -{*<!-- -/********************************************************************************* - ** The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - * - ********************************************************************************/ --->*} -<div id="EditInv" class="layerPopup"> -<input id="min_freq" type="hidden" value="{$MIN_CRON_FREQUENCY}"> -<input id="desc" type="hidden" value="{'LBL_MINIMUM_FREQUENCY'|@getTranslatedString:$MODULE} {$MIN_CRON_FREQUENCY} {'LBL_MINS'|@getTranslatedString:$MODULE}" size="35" maxlength="40"> -<table border=0 cellspacing=0 cellpadding=5 width=100% class=layerHeadingULine> -<tr> - <td class="layerPopupHeading" align="left">{$CRON_DETAILS.label}</td> - <td align="right" class="small"><img onClick="hide('editdiv');" style="cursor:pointer;" src="{'close.gif'|@vtiger_imageurl:$THEME}" align="middle" border="0"></td> -</tr> -</table> -<table border=0 cellspacing=0 cellpadding=5 width=100% align=center> -<tr> - <td class="small"> - <table border=0 celspacing=0 cellpadding=5 width=100% align=center bgcolor=white> - <tr> - <td align="right" class="cellLabel small" width="40%"><b>{$MOD.LBL_STATUS} :</b></td> - <td align="left" class="cellText small" width="60%"> - <select class="small" id="cron_status" name="cron_status"> - {if $CRON_DETAILS.status eq 1} - <option value="1" selected>{$MOD.LBL_ACTIVE}</option> - <option value="0">{$MOD.LBL_INACTIVE}</option> - {else} - <option value="1">{$MOD.LBL_ACTIVE}</option> - <option value="0" selected>{$MOD.LBL_INACTIVE}</option> - {/if} - </select> - </td> - </tr> - <tr> - <td align="right" class="cellLabel small"><b>{$MOD.LBL_FREQUENCY}</b></td> - <td align="left" class="cellText small" width="104px"><input class="txtBox" id="CronTime" name="CronTime" value="{$CRON_DETAILS.frequency}" style="width:25px;" type="text"> - <select class="small" id="cron_time" name="cron_status"> - {if $CRON_DETAILS.time eq 'min'} - <option value="min" selected>{$MOD.LBL_MINS}</option> - <option value="hours">{$MOD.LBL_HOURS}</option> - {else} - <option value="min" >{$MOD.LBL_MINS}</option> - <option value="hours" selected>{$MOD.LBL_HOURS}</option> - {/if} - </td> - </tr> - <tr> - <td colspan=2> - {$CRON_DETAILS.description} - </td> - <tr> - </table> - </td> -</tr> -</table> -<table border=0 cellspacing=0 cellpadding=5 width=100% class="layerPopupTransport"> -<tr> - <td align="center" class="small"> - <input name="save" value="{$APP.LBL_SAVE_BUTTON_LABEL}" class="crmButton small save" type="button" onClick="fetchSaveCron('{$CRON_DETAILS.id}')"> - <input name="cancel" value="{$APP.LBL_CANCEL_BUTTON_LABEL}" class="crmButton small cancel" type="button" onClick="hide('editdiv');"> - </td> - </tr> -</table> -</div> diff --git a/pkg/vtiger/modules/CustomerPortal/layouts/v7/modules/Settings/CustomerPortal/CustomerPortalDashboard.tpl b/pkg/vtiger/modules/CustomerPortal/layouts/v7/modules/Settings/CustomerPortal/CustomerPortalDashboard.tpl index bbefc10c7056ed12e5ad4c05ea639e00867e6c19..13f2aa1e232ffbbedd0dd64e778107db6bc38fb2 100644 --- a/pkg/vtiger/modules/CustomerPortal/layouts/v7/modules/Settings/CustomerPortal/CustomerPortalDashboard.tpl +++ b/pkg/vtiger/modules/CustomerPortal/layouts/v7/modules/Settings/CustomerPortal/CustomerPortalDashboard.tpl @@ -19,25 +19,6 @@ </textarea> </div> </div><br> - <div> - {if isset($WIDGETS_MODULE_LIST['HelpDesk'])} - <div class="portal-chart-widget-container" > - <div class="portal-chart-header" > - <h5>{vtranslate('LBL_CHARTS',$QUALIFIED_MODULE)}</h5> - </div> - <div class="portal-chart-content" > - {foreach from=$CHARTS['charts'] key=KEY item=VALUE} - <div class="checkbox label-checkbox" style="padding: 10px 5px;"> - <label> - <input id="{$KEY}" type="checkbox" class="chartsInfo" value="{$KEY}" name="charts[]" {if $VALUE}checked{/if}/> -  {vtranslate({$KEY},$QUALIFIED_MODULE)} - </label> - </div> - {/foreach} - </div> - </div> - {/if} - </div><br><br> {foreach from=$WIDGETS['widgets'] key=module item=status} {if $module eq 'HelpDesk' && isset($WIDGETS_MODULE_LIST['HelpDesk'])} <div class="portal-record-widget-container" > @@ -72,11 +53,11 @@ {if isset($WIDGETS_MODULE_LIST[$key])} {foreach from=$value key=key1 item=value1} {if $value1 == 1} - <li class="portal-shortcut-list" data-field="{$key1}"> <div class="btn btn-large">{vtranslate({$key1},$QUALIFIED_MODULE)} {*{if $key neq 'HelpDesk'}<span class="deleteShortcut">X</span>{/if}*}</div></li> - {/if} - {/foreach} - {/if} - {/foreach} + <li class="portal-shortcut-list" data-field="{$key1}"> <div class="btn btn-large">{vtranslate({$key1},$QUALIFIED_MODULE)} {*{if $key neq 'HelpDesk'}<span class="deleteShortcut">X</span>{/if}*}</div></li> + {/if} + {/foreach} + {/if} + {/foreach} </ul> </div> </div> diff --git a/pkg/vtiger/modules/CustomerPortal/layouts/v7/modules/Settings/CustomerPortal/Index.tpl b/pkg/vtiger/modules/CustomerPortal/layouts/v7/modules/Settings/CustomerPortal/Index.tpl index 149501c8fdbc07b9566ef358fbcd068b9a5e4e02..21e06d4df1cdb1e515188f9b2c4918f1f7c610d0 100644 --- a/pkg/vtiger/modules/CustomerPortal/layouts/v7/modules/Settings/CustomerPortal/Index.tpl +++ b/pkg/vtiger/modules/CustomerPortal/layouts/v7/modules/Settings/CustomerPortal/Index.tpl @@ -10,26 +10,9 @@ {strip} <div class="listViewPageDiv" id="listViewContent"> <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12"> - <br> <br> <form id="customerPortalForm" name="customerPortalForm" action="index.php" method="POST" class="form-horizontal"> <input type="hidden" name="portalModulesInfo" value="" /> - <div class="col-sm-12 col-xs-12 input-group"> - <div class="form-group"> - <label for="privileges" class="col-sm-4 control-label fieldLabel"><span>{vtranslate('LBL_PRIVILEGES', $QUALIFIED_MODULE)}</span></label> - <div class="fieldValue col-lg-3 col-md-3 col-sm-3 input-group"> - <select name="privileges" class="select2 inputElement"> - {foreach item=USER_MODEL from=$USER_MODELS} - {assign var=USER_ID value=$USER_MODEL->getId()} - <option value="{$USER_ID}" {if $CURRENT_PORTAL_USER eq $USER_ID} selected {/if}>{$USER_MODEL->getName()}</option> - {/foreach} - </select> - <div class="input-group-addon input-select-addon"> - <a href="#" rel="tooltip" title="{vtranslate('LBL_PREVILEGES_MESSAGE', $QUALIFIED_MODULE)}"><i class="fa fa-info-circle"></i></a> - </div> - </div> - </div> - </div> <div class="col-sm-12 col-xs-12 input-group"> <div class="form-group"> <label for="defaultAssignee" class="col-sm-4 control-label fieldLabel"><span>{vtranslate('LBL_DEFAULT_ASSIGNEE', $QUALIFIED_MODULE)}</span></label> @@ -58,7 +41,7 @@ <div class="form-group"> <label for="portal-url" class="col-sm-4 control-label fieldLabel">{vtranslate('LBL_PORTAL_URL', $QUALIFIED_MODULE)}</label> <div class="col-sm-5"> - <a target="_blank" href="{$PORTAL_URL}" class="help-inline" style="width: 300px;">{$PORTAL_URL}</a> + <a target="_blank" href="{$PORTAL_URL}" class="help-inline" style="width: 300px;color:blue;">{$PORTAL_URL}</a> <div class="pull-left input-group-addon input-select-addon"> <a href="#" rel="tooltip" title="{vtranslate('LBL_PORTAL_URL_MESSAGE', $QUALIFIED_MODULE)}"><i class="fa fa-info-circle"></i></a> </div> @@ -103,7 +86,6 @@ <div id="dashboardContent" class="show" > <h4>{vtranslate('LBL_HOME_LAYOUT',$QUALIFIED_MODULE)}</h4> <hr class="hrHeader"> - <input type="hidden" name="defaultCharts" value='{Vtiger_Functions::jsonEncode($CHARTS,true)}'/> <input type="hidden" name="defaultWidgets" value='{Vtiger_Functions::jsonEncode($WIDGETS,true)}'/> {include file='CustomerPortalDashboard.tpl'|@vtemplate_path:$QUALIFIED_MODULE} </div> diff --git a/pkg/vtiger/modules/CustomerPortal/layouts/v7/modules/Settings/CustomerPortal/resources/CustomerPortal.js b/pkg/vtiger/modules/CustomerPortal/layouts/v7/modules/Settings/CustomerPortal/resources/CustomerPortal.js index 8dd9b0e4e96cd26db9cc3728c067f3caf410f54f..431ffa807bebc2b6e13dce6a2611c9f77772cef0 100644 --- a/pkg/vtiger/modules/CustomerPortal/layouts/v7/modules/Settings/CustomerPortal/resources/CustomerPortal.js +++ b/pkg/vtiger/modules/CustomerPortal/layouts/v7/modules/Settings/CustomerPortal/resources/CustomerPortal.js @@ -167,8 +167,6 @@ Vtiger.Class('Settings_Customer_Portal_Js', {}, { } var activeWidgets = {}; - var activeCharts = {}; - var defaultCharts = JSON.parse(jQuery('input[name="defaultCharts"]').val()); var defaultWidgets = JSON.parse(jQuery('input[name="defaultWidgets"]').val()); var defaultWidgetModules = ['HelpDesk', 'Faq', 'Documents']; @@ -187,26 +185,12 @@ Vtiger.Class('Settings_Customer_Portal_Js', {}, { activeWidgets[module] = parseInt(defaultWidgets.widgets[module]); }); - var chartsInfo = jQuery("input.chartsInfo"); - jQuery.each(chartsInfo, function (index, chart) { - var element = jQuery(chart); - if (element.is(":checked")) { - activeCharts[element.attr('id')] = 1; - } - else { - activeCharts[element.attr('id')] = 0; - } - }); - if (chartsInfo.length === 0) { - activeCharts = defaultCharts.charts; - } if (widgetsInfo.length === 0) { activeWidgets = defaultWidgets.widgets; } formData['moduleFieldsInfo'] = selectedFields; formData['relatedModuleList'] = relatedModuleInfo; formData['recordsVisible'] = recordsVisible; - formData['activeCharts'] = JSON.stringify(activeCharts); formData['activeWidgets'] = JSON.stringify(activeWidgets); formData['recordPermissions'] = recordPermissionsInfo; return formData; diff --git a/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/language/en_us.lang.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/Config.php similarity index 54% rename from pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/language/en_us.lang.php rename to pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/Config.php index e9e053df7a585056f7685b31af370fa727c6a64a..7cbb94e55f5554aebd38c21e01d5d5dc0e8786e3 100644 --- a/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/language/en_us.lang.php +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/Config.php @@ -1,13 +1,15 @@ <?php -/*+*********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 +/* +********************************************************************************** + * 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 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. - *************************************************************************************/ -$mod_strings=Array( - 'EmailTemplates' => 'Email Templates', -) -?> \ No newline at end of file + * ***********************************************************************************/ + +class CustomerPortal_Config { + + static $DEFAULT_PAGE_LIMIT = 50; + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/api.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/api.php new file mode 100644 index 0000000000000000000000000000000000000000..767920a6dd012abadb8e13df2f92ab25784621ca --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/api.php @@ -0,0 +1,86 @@ +<?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. + * ***********************************************************************************/ + +include_once 'include.inc'; + +class CustomerPortal_API_EntryPoint { + + protected static function authenticate(CustomerPortal_API_Abstract $controller, CustomerPortal_API_Request $request) { + if (!isset($_SERVER['PHP_AUTH_USER'])) { + header('WWW-Authenticate: Basic realm="Customer Portal"'); + header('HTTP/1.0 401 Unauthorized'); + throw new Exception("Login Required", 1412); + exit; + } else { + // Handling the case Contacts module is disabled + if (!vtlib_isModuleActive("Contacts")) { + throw new Exception("Contacts module is disabled", 1412); + } + + $ok = $controller->authenticatePortalUser($request->get('username'), $request->get('password')); + if (!$ok) { + throw new Exception("Login failed", 1412); + } + } + } + + static function process(CustomerPortal_API_Request $request) { + $operation = $request->getOperation(); + $response = false; + if (!preg_match("/[0-9a-zA-z]*/", $operation, $match)) { + throw new Exception("Invalid entry", 1412); + } + + if ($operation == $match[0]) { + $operationFile = sprintf('/apis/%s.php', $operation); + $operationClass = sprintf("CustomerPortal_%s", $operation); + include_once dirname(__FILE__).$operationFile; + $operationController = new $operationClass; + + try { + self::authenticate($operationController, $request); + + //setting active user language as Portal user language + $current_user = $operationController->getActiveUser(); + $portal_language = $request->getLanguage(); + $current_user->column_fields["language"] = $portal_language; + $current_user->language = $portal_language; + + $response = $operationController->process($request); + } catch (Exception $e) { + $response = new CustomerPortal_API_Response(); + $response->setError($e->getCode(), $e->getMessage()); + } + } else { + $response = new CustomerPortal_API_Response(); + $response->setError(1404, 'Operation not found: '.$operation); + } + + if ($response !== false) { + echo $response->emitJSON(); + } + } + +} + +/** Take care of stripping the slashes */ +function stripslashes_recursive($value) { + $value = is_array($value) ? array_map('stripslashes_recursive', $value) : stripslashes($value); + return $value; +} + +$clientRequestValues = $_POST; +if (get_magic_quotes_gpc()) { + $clientRequestValues = stripslashes_recursive($clientRequestValues); +} + +$clientRequestValuesRaw = array(); +CustomerPortal_API_EntryPoint::process(new CustomerPortal_API_Request($clientRequestValues, $clientRequestValuesRaw)); + diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/AbstractApi.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/AbstractApi.php new file mode 100644 index 0000000000000000000000000000000000000000..920f013eea9978a8540d5516876095a39f81b715 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/AbstractApi.php @@ -0,0 +1,165 @@ +<?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. + * ***********************************************************************************/ + +abstract class CustomerPortal_API_Abstract { + + private $activeUser = false; + private $activeCustomer = false; + protected $resolvedValueCache = array(); + + protected function initActiveUser($user) { + $this->activeUser = $user; + } + + protected function hasActiveUser() { + $user = $this->getActiveUser(); + return ($user !== false); + } + + protected function setActiveUser($user) { + $this->initActiveUser($user); + } + + public function getActiveUser() { + return $this->activeUser; + } + + protected function initActiveCustomer($customer) { + $this->activeCustomer = $customer; + } + + protected function hasActiveCustomer() { + $customer = $this->getActiveCustomer(); + return ($customer !== false); + } + + protected function setActiveCustomer($customer) { + $this->initActiveCustomer($customer); + } + + protected function getActiveCustomer() { + return $this->activeCustomer; + } + + function authenticatePortalUser($username, $password) { + global $adb; + $current_date = date("Y-m-d"); + $sql = "SELECT id, user_name, user_password,last_login_time, isactive, support_start_date, support_end_date, cryptmode FROM vtiger_portalinfo + INNER JOIN vtiger_customerdetails ON vtiger_portalinfo.id=vtiger_customerdetails.customerid + INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid=vtiger_portalinfo.id + WHERE vtiger_crmentity.deleted=0 AND user_name=? AND isactive=1 AND vtiger_customerdetails.portal=1 + AND (vtiger_customerdetails.support_start_date <= ? OR vtiger_customerdetails.support_start_date IS NULL) + AND (vtiger_customerdetails.support_end_date >= ? OR vtiger_customerdetails.support_end_date IS NULL)"; + + $result = $adb->pquery($sql, array($username, $current_date, $current_date)); + $num_rows = $adb->num_rows($result); + + $isAuthenticated = false; + if ($num_rows >= 0) { + for ($i = 0; $i < $num_rows; ++$i) { + $customerId = $adb->query_result($result, $i, 'id'); + if (Vtiger_Functions::compareEncryptedPassword($password, $adb->query_result($result, $i, 'user_password'), $adb->query_result($result, $i, 'cryptmode'))) { + break; + } else { + $customerId = null; + } + } + $isActive = $adb->query_result($result, $i, 'isactive'); + if ($customerId) { + $support_end_date = $adb->query_result($result, $i, 'support_end_date'); + if ($isActive && ($support_end_date >= $current_date || $support_end_date == null)) { + $current_customer = CRMEntity::getInstance('Contacts'); + $current_customer->id = $customerId; + $userName = $adb->query_result($result, $i, 'user_name'); + $current_customer->username = $userName; + $this->setActiveCustomer($current_customer); + + global $current_user; + $current_user = CRMEntity::getInstance('Users'); + $userid = Users::getActiveAdminId(); + $current_user->retrieveCurrentUserInfoFromFile($userid); + $this->setActiveUser($current_user); + $isAuthenticated = true; + } + } else if ($isActive && $support_end_date <= $current_date) { + throw new Exception("Access to the portal was disabled on ".$support_end_date, 1413); + } else if ($isActive == 0) { + throw new Exception("Portal access has not been enabled for this account.", 1414); + } + } + return $isAuthenticated; + } + + protected function getParent($contactId) { + $sql = sprintf("SELECT account_id FROM Contacts WHERE id = '%s';", $contactId); + $result = vtws_query($sql, $this->getActiveUser()); + return $result[0]['account_id']; + } + + protected function relatedRecordIds($module, $moduleLabel, $parentId = null) { + global $adb, $log; + $relatedIds = array(); + $mode = CustomerPortal_Settings_Utils::getDefaultMode($module); + if ($parentId == null) { + $contactWebserviceId = vtws_getWebserviceEntityId('Contacts', $this->getActiveCustomer()->id); + if ($mode == 'mine') { + $parentId = $contactWebserviceId; + } else { + if (in_array($module, array('Products', 'Services'))) { + $relatedIds = CustomerPortal_Utils::getAllRecordIds($module, $this->getActiveUser()); + return $relatedIds; + } else { + $parentId = $this->getParent($contactWebserviceId); + if (empty($parentId)) { + $parentId = $contactWebserviceId; + } + } + } + } + $webserviceObject = VtigerWebserviceObject::fromId($adb, $parentId); + $handlerPath = $webserviceObject->getHandlerPath(); + $handlerClass = $webserviceObject->getHandlerClass(); + require_once $handlerPath; + $handler = new $handlerClass($webserviceObject, $this->getActiveUser(), $adb, $log); + $relatedIds = $handler->relatedIds($parentId, $module, $moduleLabel); + return $relatedIds; + } + + protected function isRecordAccessible($recordId, $module = null, $moduleLabel = null) { + global $adb; + + if (empty($module)) { + $module = VtigerWebserviceObject::fromId($adb, $recordId)->getEntityName(); + $moduleLabel = CustomerPortal_Utils::getRelatedModuleLabel($module); + } + + if (empty($moduleLabel)) { + $moduleLabel = CustomerPortal_Utils::getRelatedModuleLabel($module); + } + $mode = CustomerPortal_Settings_Utils::getDefaultMode($module); + $relatedIds = $this->relatedRecordIds($module, $moduleLabel); + if (in_array($recordId, $relatedIds) || ($mode == 'all' && in_array($module, array('Products', 'Services')))) { + return true; + } else { + return false; + } + } + + protected function isFaqPublished($recordId) { + $sql = sprintf('SELECT faqstatus FROM %s WHERE id=\'%s\';', 'Faq', $recordId); + $result = vtws_query($sql, $this->getActiveUser()); + if ($result[0]['faqstatus'] == 'Published') { + return true; + } else { + return false; + } + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/AddComment.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/AddComment.php new file mode 100644 index 0000000000000000000000000000000000000000..4fd75a5a844bc451ba8eabe74e2c7ba7b6332c44 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/AddComment.php @@ -0,0 +1,79 @@ +<?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. + * ***********************************************************************************/ + +include_once dirname(__FILE__).'/SaveRecord.php'; + +class CustomerPortal_AddComment extends CustomerPortal_SaveRecord { + + function process(CustomerPortal_API_Request $request) { + $response = new CustomerPortal_API_Response(); + global $adb; + $current_user = $this->getActiveUser(); + + if ($current_user) { + $valuesJSONString = $request->get('values'); + $element = null; + + if (!empty($valuesJSONString) && is_string($valuesJSONString)) { + $element = Zend_Json::decode($valuesJSONString); + } else { + $element = $valuesJSONString; // Either empty or already decoded. + } + + $element['assigned_user_id'] = vtws_getWebserviceEntityId('Users', $current_user->id); + $parentId = $request->get('parentId'); + + $relatedRecordId = $element['related_to']; + $relatedModule = VtigerWebserviceObject::fromId($adb, $relatedRecordId)->getEntityName(); + + if (!CustomerPortal_Utils::isModuleActive($relatedModule)) { + throw new Exception("Module not accessible.", 1412); + exit; + } + + if (!empty($parentId)) { + if (!$this->isRecordAccessible($parentId)) { + throw new Exception("Parent record not accessible.", 1412); + exit; + } + $relatedRecordIds = $this->relatedRecordIds($relatedModule, CustomerPortal_Utils::getRelatedModuleLabel($relatedModule), $parentId); + + if (!in_array($relatedRecordId, $relatedRecordIds)) { + throw new Exception("Record not Accessible", 1412); + exit; + } + } else { + //If module is Faq by pass this check as we Faq's are not related to Contacts module. + if ($relatedModule == 'Faq') { + if (!($this->isFaqPublished($relatedRecordId))) { + throw new Exception("This Faq is not published", 1412); + exit; + } + } else if (!$this->isRecordAccessible($relatedRecordId)) { + throw new Exception("Record not accessible.", 1412); + exit; + } + } + // Always set the customer to Portal user when comment is added from portal + $customerId = vtws_getWebserviceEntityId('Contacts', $this->getActiveCustomer()->id); + $element['customer'] = $customerId; + $element['from_portal'] = true; + $element['commentcontent'] = nl2br($element['commentcontent']); + //comment_added_from_portal added to check workflow condition "is added from portal" for comments. + //Cannot use from_portal as Mailroom also sets to TRUE. + $element['comment_added_from_portal'] = true; + $result = vtws_create('ModComments', $element, $current_user); + $result = CustomerPortal_Utils::resolveRecordValues($result, $current_user); + $response->setResult($result); + return $response; + } + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/ChangePassword.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/ChangePassword.php new file mode 100644 index 0000000000000000000000000000000000000000..ae4dd5fc4e6686482031281bdc59cbc23c5db163 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/ChangePassword.php @@ -0,0 +1,36 @@ +<?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 CustomerPortal_ChangePassword extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + global $adb; + $response = new CustomerPortal_API_Response(); + $current_user = $this->getActiveUser(); + + if ($current_user) { + $current_customer = $this->getActiveCustomer(); + $username = $this->getActiveCustomer()->username; + $password = $request->get('password'); + + if (!$this->authenticatePortalUser($username, $password)) { + throw new Exception("Wrong password.Please try again", 1412); + exit; + } + + $newPassword = $request->get('newPassword'); + $sql = "UPDATE vtiger_portalinfo SET user_password=? WHERE id=? AND user_name=?"; + $adb->pquery($sql, array(Vtiger_Functions::generateEncryptedPassword($newPassword), $current_customer->id, $username)); + $response->setResult('Password changed successfully'); + } + return $response; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/DescribeModule.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/DescribeModule.php new file mode 100644 index 0000000000000000000000000000000000000000..055779852ebaa2e13cc8940b5125beea78b0e3a9 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/DescribeModule.php @@ -0,0 +1,78 @@ +<?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 CustomerPortal_DescribeModule extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + $current_user = $this->getActiveUser(); + $response = new CustomerPortal_API_Response(); + + if ($current_user) { + $module = $request->get('module'); + + if (!CustomerPortal_Utils::isModuleActive($module)) { + throw new Exception('Module not accessible', 1412); + exit; + } + + $describeInfo = vtws_describe($module, $current_user); + // Get active fields with read, write permissions + $activeFields = CustomerPortal_Utils::getActiveFields($module, true); + $activeFieldKeys = array_keys($activeFields); + foreach ($describeInfo['fields'] as $key => $value) { + if (!in_array($value['name'], $activeFieldKeys)) { + unset($describeInfo['fields'][$key]); + } else { + // Handling UTF-8 charecters in Picklist values + $value['default'] = decode_html($value['default']); + if ($value['type']['name'] === 'picklist' || $value['type']['name'] === 'metricpicklist') { + $pickList = $value['type']['picklistValues']; + + foreach ($pickList as $pickListKey => $pickListValue) { + $pickListValue['label'] = decode_html(vtranslate($pickListValue['value'], $module)); + $pickListValue['value'] = decode_html($pickListValue['value']); + $pickList[$pickListKey] = $pickListValue; + } + $value['type']['picklistValues'] = $pickList; + } else if ($value['type']['name'] === 'time') { + $value['default'] = Vtiger_Time_UIType::getTimeValueWithSeconds($value['default']); + } + $value['label'] = decode_html($value['label']); + if ($activeFields[$value['name']]) { + $value['editable'] = true; + } else { + $value['editable'] = false; + } + $describeInfo['fields'][$key] = $value; + + $position = array_search($value['name'], $activeFieldKeys); + $fieldList[$position] = $describeInfo['fields'][$key]; + } + } + if ($fieldList) { + unset($describeInfo['fields']); + $describeInfo['fields'] = $fieldList; + } + + //Describe giving wrong labelfields for HelpDesk and Documents. + if ($module == 'Documents') { + $describeInfo['labelFields'] = 'notes_title'; + } + if ($module == 'HelpDesk') { + $describeInfo['labelFields'] = 'ticket_title'; + } + + $describeInfo['label'] = decode_html(vtranslate($describeInfo['label'], $module)); + $response->addToResult('describe', $describeInfo); + } + return $response; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/DownloadFile.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/DownloadFile.php new file mode 100644 index 0000000000000000000000000000000000000000..c8260dda8db6e8922a0d84fe144430c510e00b4b --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/DownloadFile.php @@ -0,0 +1,124 @@ +<?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 CustomerPortal_DownloadFile extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + global $adb; + $current_user = $this->getActiveUser(); + $response = new CustomerPortal_API_Response(); + + if ($current_user) { + $parentId = $request->get('parentId'); + $recordId = $request->get('recordId'); + $module = $request->get('module'); + $parentModule = $request->get('parentModule'); + if (!CustomerPortal_Utils::isModuleActive($module)) { + $response->setError(1404, 'Module is disabled.'); + return $response; + } + + if (!empty($parentId)) { + if ($parentModule === 'Faq') { + if (!($this->isFaqPublished($parentId))) { + throw new Exception("This Faq is not published", 1412); + exit; + } + } else { + if (!$this->isRecordAccessible($parentId)) { + throw new Exception("Parent record not Accessible", 1412); + exit; + } + $relatedRecordIds = $this->relatedRecordIds($module, CustomerPortal_Utils::getRelatedModuleLabel($module, $parentModule), $parentId); + + + if (!in_array($recordId, $relatedRecordIds)) { + throw new Exception("Record not Accessible", 1412); + exit; + } + } + } else { + if (!$this->isRecordAccessible($recordId, $module) && $module != 'ModComments') { + $response->setError(1404, 'Record not accessible'); + return $response; + } + } + $idComponents = vtws_getIdComponents($recordId); + $id = $idComponents[1]; + if ($module == 'Documents') { + $query = "SELECT filetype FROM vtiger_notes INNER JOIN vtiger_crmentity ON vtiger_notes.notesid= vtiger_crmentity.crmid + WHERE notesid =? AND vtiger_crmentity.deleted=?"; + $res = $adb->pquery($query, array($id, '0')); + $filetype = $adb->query_result($res, 0, "filetype"); + $this->updateDownloadCount($id); + + $fileidQuery = 'SELECT attachmentsid FROM vtiger_seattachmentsrel WHERE crmid = ?'; + $fileres = $adb->pquery($fileidQuery, array($id)); + $fileid = $adb->query_result($fileres, 0, 'attachmentsid'); + + $filepathQuery = 'SELECT path,name FROM vtiger_attachments WHERE attachmentsid = ?'; + $fileres = $adb->pquery($filepathQuery, array($fileid)); + $filepath = $adb->query_result($fileres, 0, 'path'); + $filename = $adb->query_result($fileres, 0, 'name'); + $filename = decode_html($filename); + + $saved_filename = $fileid."_".$filename; + $filenamewithpath = $filepath.$saved_filename; + $filesize = filesize($filenamewithpath); + $fileDetails = array(); + $fileDetails['fileid'] = $fileid; + $fileDetails['filename'] = $filename; + $fileDetails['filetype'] = $filetype; + $fileDetails['filesize'] = $filesize; + $fileDetails['filecontents'] = base64_encode(file_get_contents($filenamewithpath)); + $response->setResult($fileDetails); + } else if ($module == 'ModComments') { + $attachmentId = $request->get('attachmentId'); + $modCommentsRecordModel = Vtiger_Record_Model::getInstanceById($id, $module); + $rawAttachmentDetails = $modCommentsRecordModel->getFileDetails($attachmentId); + //construct path for attachment and get file size and type details + $attachmentDetails = $rawAttachmentDetails[0]; + $fileid = $attachmentDetails['attachmentsid']; + $filename = $attachmentDetails['name']; + $filepath = $attachmentDetails['path']; + $saved_filename = $fileid."_".$filename; + $filenamewithpath = $filepath.$saved_filename; + $filesize = filesize($filenamewithpath); + $filetype = $attachmentDetails['type']; + + //Construct array with all attachment details + $fileDetails = array(); + $fileDetails['fileid'] = $fileid; + $fileDetails['filename'] = $filename; + $fileDetails['filetype'] = $filetype; + $fileDetails['filesize'] = $filesize; + $fileDetails['filecontents'] = base64_encode(file_get_contents($filenamewithpath)); + $response->setResult($fileDetails); + } else { + throw new Exception("Download not supported.", 1412); + exit; + } + return $response; + } + } + + /** + * Function to update the download count of a file + */ + function updateDownloadCount($id) { + global $adb, $log; + $log->debug("Entering customer portal function updateDownloadCount"); + $updateDownloadCount = "UPDATE vtiger_notes SET filedownloadcount = filedownloadcount+1 WHERE notesid = ?"; + $countres = $adb->pquery($updateDownloadCount, array($id)); + $log->debug("Entering customer portal function updateDownloadCount"); + return true; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/ExportRecords.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/ExportRecords.php new file mode 100644 index 0000000000000000000000000000000000000000..0a6721e8161e49eaea1afad20ce3da3a6a75d197 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/ExportRecords.php @@ -0,0 +1,114 @@ +<?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 CustomerPortal_ExportRecords extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + $response = new CustomerPortal_API_Response(); + $current_user = $this->getActiveUser(); + $db = PearDatabase::getInstance(); + if ($current_user) { + $customerId = $this->getActiveCustomer()->id; + $contactWebserviceId = vtws_getWebserviceEntityId('Contacts', $customerId); + $accountId = $this->getParent($contactWebserviceId); + $mode = $request->get('mode'); + $module = $request->get('module'); + $fieldsArray = $request->get('fields'); + $fieldsArray = Zend_Json::decode($fieldsArray); + + //validate module with portal settings + if (!CustomerPortal_Utils::isModuleActive($module)) { + throw new Exception("Module not accessible", 1412); + exit; + } + + //validate filter fields with portal settings + $activeFields = CustomerPortal_Utils::getActiveFields($module); + if ($fieldsArray !== null) { + foreach ($fieldsArray as $key => $value) { + if (!in_array($key, $activeFields)) { + throw new Exception($key." is not accessible.", 1412); + exit; + } + } + } + + $fields = $fields = implode(',', $activeFields); + if (empty($mode)) { + $mode = CustomerPortal_Settings_Utils::getDefaultMode($module); + } + if ($mode == 'all' && in_array($module, array('Products', 'Services'))) { + $countSql = sprintf('SELECT count(*) FROM %s;', $module); + $countResult = vtws_query($countSql, $current_user); + $count = $countResult[0]['count']; + } else { + //setting parentId based on mode + $parentId = null; + if ($mode == 'mine') { + $parentId = $contactWebserviceId; + } else if ($mode == 'all') { + if (!empty($accountId)) { + if (CustomerPortal_Settings_Utils::getDefaultMode($module) == 'all') + $parentId = $accountId; + else + $parentId = $contactWebserviceId; + } + else { + $parentId = $contactWebserviceId; + } + } + $groupConditionsBy = $request->get('groupConditions'); + if (empty($groupConditionsBy)) + $groupConditionsBy = 'AND'; + $countSql = sprintf('SELECT count(*) FROM %s', $module); + + if (!empty($fieldsArray)) { + $countSql = sprintf('SELECT count(*) FROM %s WHERE ', $module); + foreach ($fieldsArray as $key => $value) { + $countSql.= $key.'=\''.$value."' ".$groupConditionsBy." "; + } + $countSql = CustomerPortal_Utils::str_replace_last($groupConditionsBy, '', $countSql); + } + $moduleLabel = CustomerPortal_Utils::getRelatedModuleLabel($module); + $countResult = vtws_query_related($countSql, $parentId, $moduleLabel, $current_user); + $count = $countResult[0]['count']; + } + //vtws_query gives max of 100 records per request.loop for records if more than 100 + $pageLimit = 100; + $loopCount = $count / $pageLimit; + $records = array(); + + for ($i = 0; $i < $loopCount; $i++) { + if (!empty($fieldsArray)) { + $sql = sprintf('SELECT %s FROM %s WHERE ', $fields, $module); + foreach ($fieldsArray as $key => $value) { + $sql.= $key.'=\''.$value."' ".$groupConditionsBy." "; + } + $sql = CustomerPortal_Utils::str_replace_last($groupConditionsBy, '', $sql); + } else { + $sql = sprintf('SELECT %s FROM %s', $fields, $module); + } + $filterClause = sprintf(" LIMIT %s,%s", $i * $pageLimit, $pageLimit); + if ($mode == 'all' && in_array($module, array('Products', 'Services'))) { + $result = vtws_query($sql.' '.$filterClause.';', $current_user); + } else { + $result = vtws_query_related($sql, $parentId, $moduleLabel, $current_user, $filterClause); + } + // process result + foreach ($result as $key => $recordValues) { + $records[] = CustomerPortal_Utils::resolveRecordValues($recordValues); + } + } + $response->setResult($records); + return $response; + } + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchAnnouncement.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchAnnouncement.php new file mode 100644 index 0000000000000000000000000000000000000000..7b51128cf33efc8bce6a3a9db99d54018b8f2cfa --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchAnnouncement.php @@ -0,0 +1,27 @@ +<?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 CustomerPortal_FetchAnnouncement extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + global $adb; + $response = new CustomerPortal_API_Response(); + $current_user = $this->getActiveUser(); + + if ($current_user) { + $sql = "SELECT announcement FROM vtiger_customerportal_settings LIMIT 1"; + $result = $adb->pquery($sql, array()); + $announcement = $adb->query_result($result, 0, 'announcement'); + $response->setResult(array('announcement' => $announcement)); + } + return $response; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchCompanyDetails.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchCompanyDetails.php new file mode 100644 index 0000000000000000000000000000000000000000..5c1ff50e1cfe7fd2de7484bdffb905284639cb89 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchCompanyDetails.php @@ -0,0 +1,30 @@ +<?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 CustomerPortal_FetchCompanyDetails extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + $current_user = $this->getActiveUser(); + $response = new CustomerPortal_API_Response(); + + if ($current_user) { + $company_id = vtws_getCompanyId(); + $companyDetails = vtws_retrieve($company_id, $current_user); + $companyDetailsModel = new Settings_Vtiger_CompanyDetails_Model(); + $companyDetailsModel->set('logoname', $companyDetails['logoname']); + $filePath = $companyDetailsModel->getLogoPath(); + $imageInfo = getimagesize($filePath); + $companyDetails['mime'] = $imageInfo['mime']; + $response->setResult($companyDetails); + } + return $response; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchCompanyTitle.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchCompanyTitle.php new file mode 100644 index 0000000000000000000000000000000000000000..b2e21e2cd7558c3b607292b8e5a7c4c802b88b4d --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchCompanyTitle.php @@ -0,0 +1,25 @@ +<?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 CustomerPortal_FetchCompanyTitle extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + $current_user = $this->getActiveUser(); + $response = new CustomerPortal_API_Response(); + + if ($current_user) { + $company_id = vtws_getCompanyId(); + $companyDetails = vtws_retrieve($company_id, $current_user); + $response->setResult($companyDetails); + } + return $response; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchHistory.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchHistory.php new file mode 100644 index 0000000000000000000000000000000000000000..9f289b12b21d2d7be51876c6ba16a60352544f59 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchHistory.php @@ -0,0 +1,226 @@ +<?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 CustomerPortal_FetchHistory extends CustomerPortal_FetchRecord { + + function process(CustomerPortal_API_Request $request) { + global $adb; + $response = new CustomerPortal_API_Response(); + $current_user = $this->getActiveUser(); + $pageLimit = (int) $request->get('pageLimit'); + + if (empty($pageLimit)) + $pageLimit = CustomerPortal_Config::$DEFAULT_PAGE_LIMIT; + + if ($current_user) { + $module = $request->get('module'); + $recordId = $request->get('record'); + + if (!CustomerPortal_Utils::isModuleActive($module)) { + throw new Exception("History not available for this module", 1412); + exit; + } + + if (!ModTracker::isTrackingEnabledForModule($module)) { + throw new Exception("Module not tracked for changes.", 1412); + exit; + } + + //Incase of ProjectTask and Milestones parent will be Project + $parentId = $request->get('parentId'); + if (!empty($parentId)) { + if (!$this->isRecordAccessible($parentId)) { + throw new Exception("Parent record not accessible", 1412); + exit; + } else { + $relatedIds = $this->relatedRecordIds($module, CustomerPortal_Utils::getRelatedModuleLabel($module), $parentId); + } + } else { + $relatedIds = $this->relatedRecordIds($module, CustomerPortal_Utils::getRelatedModuleLabel($module)); + } + if (empty($relatedIds)) { + throw new Exception("No records found", 1412); + exit; + } + $recordIds = array(); + + if (!empty($recordId)) { + if (!in_array($recordId, $relatedIds)) { + throw new Exception("Record not accessible", 1412); + exit; + } + + $idComponents = explode("x", $recordId); + $recordIds[] = $idComponents[1]; + } else { + foreach ($relatedIds as $id) { + $idComponents = explode("x", $id); + $recordIds[] = $idComponents[1]; + } + } + + $sql = 'SELECT vtiger_modtracker_basic.* FROM vtiger_modtracker_basic + INNER JOIN vtiger_crmentity ON vtiger_modtracker_basic.crmid = vtiger_crmentity.crmid WHERE + vtiger_modtracker_basic.module = ? AND vtiger_crmentity.deleted = ? AND vtiger_modtracker_basic.crmid IN ('.generateQuestionMarks($recordIds).') + ORDER BY changedon DESC'; + + $params = array(); + $params[] = $module; + $params[] = '0'; + + foreach ($recordIds as $id) { + $params[] = $id; + } + + $result = $adb->pquery($sql, $params); + $recordValuesMap = array(); + $orderedIds = array(); + + while ($row = $adb->fetch_array($result)) { + $orderedIds[] = $row['id']; + $whodid = vtws_history_entityIdHelper('Users', $row['whodid']); + $crmid = vtws_history_entityIdHelper($module, $row['crmid']); + $status = $row['status']; + + switch ($status) { + case ModTracker::$UPDATED: $statuslabel = 'updated'; + break; + case ModTracker::$DELETED: $statuslabel = 'deleted'; + break; + case ModTracker::$CREATED: $statuslabel = 'created'; + break; + case ModTracker::$RESTORED: $statuslabel = 'restored'; + break; + case ModTracker::$LINK: $statuslabel = 'link'; + break; + case ModTracker::$UNLINK: $statuslabel = 'unlink'; + break; + } + + $item['modifieduser'] = $whodid; + $item['id'] = $crmid; + $item['modifiedtime'] = $row['changedon']; + $item['values'] = array(); + $item['status'] = $statuslabel; + + $recordValuesMap[$row['id']] = $item; + } + + $historyItems = array(); + + if (!empty($orderedIds)) { + $activeFields = CustomerPortal_Utils::getActiveFields($module); + $sql = 'SELECT vtiger_modtracker_detail.* FROM vtiger_modtracker_detail'; + $sql .= ' WHERE id IN ('.generateQuestionMarks($orderedIds).') AND + fieldname IN('.generateQuestionMarks($activeFields).') ORDER BY id DESC LIMIT ?,?'; + + $params = $orderedIds; + foreach ($activeFields as $field) { + $params[] = $field; + } + $page = $request->get('page'); + + if (empty($page)) { + $params[] = 0; + } else { + $params[] = $page * $pageLimit; + } + $params[] = $pageLimit; + + $result = $adb->pquery($sql, $params); + + while ($row = $adb->fetch_array($result)) { + $item = $recordValuesMap[$row['id']]; + + // NOTE: For reference field values transform them to webservice id. + $item['values'][$row['fieldname']] = array( + 'previous' => decode_html($row['prevalue']), + 'current' => decode_html($row['postvalue']) + ); + + + $recordValuesMap[$row['id']] = $item; + } + + // Group the values per basic-transaction + foreach ($orderedIds as $id) { + if (count($recordValuesMap[$id]['values']) > 0) + $historyItems[] = $recordValuesMap[$id]; + } + } + + if (!empty($historyItems)) + $this->resolveReferences($historyItems, $module, $current_user); + $response->setResult(array('history' => $historyItems)); + } else { + $response->setError(1404, "No permission to perform this operation."); + } + return $response; + } + + protected function resolveReferences(&$items, $module, $user) { + $ids = array(); + + foreach ($items as $item) { + $ids[] = $item['id']; + } + $labels = Vtiger_Util_Helper::fetchRecordLabelsForIds($ids); + $describe = vtws_describe($module, $user); + + foreach ($items as &$item) { + $modifiedUser = $this->fetchLabelForUserId($item['modifieduser'], $user); + $modifiedUser['label'] = decode_html($modifiedUser['label']); + $item['modifieduser'] = $modifiedUser; + $item['label'] = decode_html($labels[$item['id']]); + $values = $item['values']; + + + + foreach ($values as $field => $value) { + if (CustomerPortal_Utils::isOwnerType($field, $describe)) { + $previous = $value['previous']; + $current = $value['current']; + + if (!empty($previous)) { + $previousOwnerType = vtws_getOwnerType($previous); + $previousWSId = vtws_getWebserviceEntityId($previousOwnerType, $previous); + $value['previous'] = trim(vtws_getName($previousWSId, $user)); + } + + $currentOwnerType = vtws_getOwnerType($current); + $currentWSId = vtws_getWebserviceEntityId($currentOwnerType, $current); + $value['current'] = trim(vtws_getName($currentWSId, $user)); + } + + if (CustomerPortal_Utils::isReferenceType($field, $describe)) { + $previous = $value['previous']; + $current = $value['current']; + + if (!empty($previous)) { + $value['previous'] = Vtiger_Util_Helper::getRecordName($previous, true); + } + $value['current'] = Vtiger_Util_Helper::getRecordName($current, true); + } + + $value['previous'] = decode_html($value['previous']); + $value['current'] = decode_html($value['current']); + $values[$field] = $value; + } + $item['values'] = $values; + unset($item); + } + } + + protected function fetchLabelForUserId($id, $user) { + $label = trim(vtws_getName($id, $user)); + return array('value' => $id, 'label' => $label); + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchLabelFields.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchLabelFields.php new file mode 100644 index 0000000000000000000000000000000000000000..1c22b8192e088f79f759c521aa33c21a6ab3a925 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchLabelFields.php @@ -0,0 +1,36 @@ +<?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 CustomerPortal_FetchLabelFields extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + $current_user = $this->getActiveUser(); + $response = new CustomerPortal_API_Response(); + global $adb; + + if ($current_user) { + $sql = "SELECT tabid FROM vtiger_customerportal_tabs WHERE visible=? "; + $sqlResult = $adb->pquery($sql, array(1)); + $num_rows = $adb->num_rows($sqlResult); + $result = array(); + + for ($i = 0; $i < $num_rows; $i++) { + $moduleId = $adb->query_result($sqlResult, $i, 'tabid'); + $module = Vtiger_Functions::getModuleName($moduleId); + $describe = vtws_describe($module, $current_user); + $labelFields = explode(',', $describe['labelFields']); + $result[] = array($module => $labelFields); + } + } + $response->setResult($result); + return $response; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchModules.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchModules.php new file mode 100644 index 0000000000000000000000000000000000000000..039d16d0a960121b977235e785474d6c7b9341a4 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchModules.php @@ -0,0 +1,63 @@ +<?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 CustomerPortal_FetchModules extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + $current_user = $this->getActiveUser(); + $response = new CustomerPortal_API_Response(); + global $adb; + + if ($current_user) { + $result = array(); + $customerId = vtws_getWebserviceEntityId('Contacts', $this->getActiveCustomer()->id); + $accountId = $this->getParent($customerId); + $user_id = CustomerPortal_Settings_Utils::getDefaultAssignee(); + $result['contact_id'] = array('value' => $customerId, 'label' => Vtiger_Util_Helper::fetchRecordLabelForId($customerId)); + + if (!empty($accountId)) { + $result['account_id'] = array('value' => $accountId, 'label' => Vtiger_Util_Helper::fetchRecordLabelForId($accountId)); + } + + $result['user_id'] = array('value' => $user_id, 'label' => decode_html(trim(vtws_getName($user_id, $current_user)))); + $sql = "SELECT vtiger_relatedlists.label, vtiger_customerportal_tabs.tabid, vtiger_customerportal_tabs.sequence, + vtiger_customerportal_tabs.createrecord,vtiger_customerportal_tabs.editrecord,vtiger_customerportal_fields.records_visible + FROM vtiger_customerportal_tabs INNER JOIN vtiger_tab on vtiger_tab.tabid = vtiger_customerportal_tabs.tabid + and vtiger_tab.presence=? INNER JOIN vtiger_relatedlists ON vtiger_customerportal_tabs.tabid =vtiger_relatedlists.related_tabid + INNER JOIN vtiger_customerportal_fields ON vtiger_customerportal_fields.tabid = vtiger_customerportal_tabs.tabid WHERE + vtiger_customerportal_tabs.visible =? GROUP BY vtiger_customerportal_tabs.tabid ORDER BY vtiger_customerportal_tabs.sequence ASC;"; + $sqlResult = $adb->pquery($sql, array(0, 1)); + $num_rows = $adb->num_rows($sqlResult); + + $modules = array('types' => array(), 'information' => array()); + for ($i = 0; $i < $num_rows; $i++) { + $moduleId = $adb->query_result($sqlResult, $i, 'tabid'); + $moduleName = Vtiger_Functions::getModuleName($moduleId); + if (!Vtiger_Runtime::isRestricted('modules', $moduleName)) { + $modules['types'][] = $moduleName; + $modules['information'][$moduleName] = array( + 'name' => $moduleName, + 'label' => $adb->query_result($sqlResult, $i, 'label'), + 'uiLabel' => decode_html(vtranslate($moduleName, $moduleName)), + 'order' => $adb->query_result($sqlResult, $i, 'sequence'), + 'create' => $adb->query_result($sqlResult, $i, 'createrecord'), + 'edit' => $adb->query_result($sqlResult, $i, 'editrecord'), + 'recordvisibility' => $adb->query_result($sqlResult, $i, 'records_visible') + ); + } + } + + $result['modules'] = $modules; + $response->setResult($result); + return $response; + } + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchProfile.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchProfile.php new file mode 100644 index 0000000000000000000000000000000000000000..d9535a12228bd017d2fe99f1f98b30bfd78c1d2b --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchProfile.php @@ -0,0 +1,41 @@ +<?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 CustomerPortal_FetchProfile extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + $response = new CustomerPortal_API_Response(); + $current_user = $this->getActiveUser(); + + if ($current_user) { + $contactId = vtws_getWebserviceEntityId('Contacts', $this->getActiveCustomer()->id); + $encodedContactImage = CustomerPortal_Utils::getImageDetails($this->getActiveCustomer()->id, 'Contacts'); + $accountId = $this->getParent($contactId); + + $contact = vtws_retrieve($contactId, $current_user); + $contact = CustomerPortal_Utils::resolveRecordValues($contact); + $contact['imagedata'] = $encodedContactImage['imagedata']; + $contact['imagetype'] = $encodedContactImage['imagetype']; + $response->addToResult('customer_details', $contact); + + if (!empty($accountId)) { + $idComponents = explode('x', $accountId); + $encodedAccountImage = CustomerPortal_Utils::getImageDetails($idComponents[1], 'Accounts'); + $account = vtws_retrieve($accountId, $current_user); + $account = CustomerPortal_Utils::resolveRecordValues($account); + $account['imagedata'] = $encodedAccountImage['imagedata']; + $account['imagetype'] = $encodedAccountImage['imagetype']; + $response->addToResult('company_details', $account); + } + } + return $response; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchRecentRecords.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchRecentRecords.php new file mode 100644 index 0000000000000000000000000000000000000000..dbceef6076b5143ece48103786e53ef18d90352d --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchRecentRecords.php @@ -0,0 +1,111 @@ +<?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 CustomerPortal_FetchRecentRecords extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + $response = new CustomerPortal_API_Response(); + $current_user = $this->getActiveUser(); + global $adb; + + if ($current_user) { + $sql = "SELECT widgets FROM vtiger_customerportal_settings LIMIT 1"; + $result = $adb->pquery($sql, array()); + $widgetsJSON = $adb->query_result($result, 0, 'widgets'); + $data = array(); + $data = Zend_Json::decode(decode_html($widgetsJSON)); + $widgets = $data['widgets']; + $activeModules = array(); + + foreach ($widgets as $key => $value) { + if (CustomerPortal_Utils::isModuleActive($key) && $value == '1') + $activeModules[] = $key; + } + $result = array(); + $customerId = $this->getActiveCustomer()->id; + $contactWebserviceId = vtws_getWebserviceEntityId('Contacts', $customerId); + + foreach ($activeModules as $module) { + $mode = CustomerPortal_Settings_Utils::getDefaultMode($module); + + if ($mode === 'all') { + $parentId = $this->getParent($contactWebserviceId); + if (empty($parentId)) { + $parentId = $contactWebserviceId; + } + } else { + $parentId = $contactWebserviceId; + } + $limit = 5; + $sql = sprintf("SELECT id FROM %s ", $module); + $filterClause = sprintf('ORDER BY modifiedtime DESC LIMIT %s', $limit); + + if ($module == 'Faq') { + $queryResult = vtws_query($sql . "WHERE faqstatus='Published' " . $filterClause . ';', $current_user); + } else if ($module == 'HelpDesk') { + $fields = array("ticketstatus", "description"); + $moduleModel = Vtiger_Module_Model::getInstance($module); + $allowedFields = array(); + + foreach ($fields as $field) { + $fieldModel = Vtiger_Field_Model::getInstance($field, $moduleModel); + if ($fieldModel->isActiveField()) { + $allowedFields[] = $field; + } + } + + if (!empty($allowedFields)) { + $fieldsSql = implode(",", $allowedFields); + $sql = sprintf("SELECT id, %s FROM %s", $fieldsSql, $module); + } + $queryResult = vtws_query_related($sql, $parentId, CustomerPortal_Utils::getRelatedModuleLabel($module), $current_user, $filterClause); + } else if ($mode == 'all' && in_array($module, array('Products', 'Services'))) { + $sql = sprintf("SELECT id FROM %s", $module); + $filterClause = sprintf("ORDER BY modifiedtime DESC LIMIT %s;", $limit); + $queryResult = vtws_query($sql . ' ' . $filterClause, $current_user); + } else { + $queryResult = vtws_query_related($sql, $parentId, CustomerPortal_Utils::getRelatedModuleLabel($module), $current_user, $filterClause); + } + $num_rows = sizeof($queryResult); + $records = array(); + $recordIds = array(); + + if (!empty($queryResult)) { + foreach ($queryResult as $resultRecord) { + $recordIds[] = $resultRecord['id']; + } + $recordLabels = Vtiger_Util_Helper::fetchRecordLabelsForIds($recordIds); + for ($i = 0; $i < $num_rows; $i++) { + $record = array(); + $id = $recordIds[$i]; + foreach ($recordLabels as $key => $value) { + if ($key == $id) { + $record['label'] = decode_html($value); + break; + } + } + + if ($module == 'HelpDesk') { + $record['status'] = $queryResult[$i]['ticketstatus']; + $record['statuslabel'] = decode_html(vtranslate($queryResult[$i]['ticketstatus'], $module)); + $record['description'] = decode_html($queryResult[$i]['description']); + } + $record['id'] = $id; + $records[] = $record; + } + } + $result[] = array($module => $records); + } + $response->setResult($result); + } + return $response; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchRecord.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchRecord.php new file mode 100644 index 0000000000000000000000000000000000000000..32206904d54c6cd97c990a992d9dacde8f0cc56e --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchRecord.php @@ -0,0 +1,61 @@ +<?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 CustomerPortal_FetchRecord extends CustomerPortal_API_Abstract { + + protected function processRetrieve(CustomerPortal_API_Request $request) { + global $adb; + $parentId = $request->get('parentId'); + $recordId = $request->get('recordId'); + $module = VtigerWebserviceObject::fromId($adb, $recordId)->getEntityName(); + + if (!CustomerPortal_Utils::isModuleActive($module)) { + throw new Exception("Records not Accessible for this module", 1412); + exit; + } + + if (!empty($parentId)) { + if (!$this->isRecordAccessible($parentId)) { + throw new Exception("Parent record not Accessible", 1412); + exit; + } + $relatedRecordIds = $this->relatedRecordIds($module, CustomerPortal_Utils::getRelatedModuleLabel($module), $parentId); + + if (!in_array($recordId, $relatedRecordIds)) { + throw new Exception("Record not Accessible", 1412); + exit; + } + } else { + if (!$this->isRecordAccessible($recordId, $module)) { + throw new Exception("Record not Accessible", 1412); + exit; + } + } + + $fields = implode(',', CustomerPortal_Utils::getActiveFields($module)); + $sql = sprintf('SELECT %s FROM %s WHERE id=\'%s\';', $fields, $module, $recordId); + $result = vtws_query($sql, $this->getActiveUser()); + return $result[0]; + } + + function process(CustomerPortal_API_Request $request) { + $response = new CustomerPortal_API_Response(); + $current_user = $this->getActiveUser(); + + if ($current_user) { + $record = $this->processRetrieve($request); + + $record = CustomerPortal_Utils::resolveRecordValues($record); + $response->setResult(array('record' => $record)); + } + return $response; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchRecords.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchRecords.php new file mode 100644 index 0000000000000000000000000000000000000000..931c68d56638faa5991bb6b7e5d299ee033f9cd4 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchRecords.php @@ -0,0 +1,169 @@ +<?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 CustomerPortal_FetchRecords extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + $response = new CustomerPortal_API_Response(); + $current_user = $this->getActiveUser(); + + if ($current_user) { + $customerId = $this->getActiveCustomer()->id; + $contactWebserviceId = vtws_getWebserviceEntityId('Contacts', $customerId); + $accountId = $this->getParent($contactWebserviceId); + $mode = $request->get('mode'); + $module = $request->get('module'); + $moduleLabel = $request->get('moduleLabel'); + $fieldsArray = $request->get('fields'); + $orderBy = $request->get('orderBy'); + $order = $request->get('order'); + $activeFields = CustomerPortal_Utils::getActiveFields($module); + + if (empty($orderBy)) { + $orderBy = 'modifiedtime'; + } else { + if (!in_array($orderBy, $activeFields)) { + throw new Exception("sort by $orderBy not allowed", 1412); + exit; + } + } + + if (empty($order)) { + $order = 'DESC'; + } else { + if (!in_array(strtoupper($order), array("DESC", "ASC"))) { + throw new Exception("Invalid sorting order", 1412); + exit; + } + } + $fieldsArray = Zend_Json::decode($fieldsArray); + $groupConditionsBy = $request->get('groupConditions'); + $page = $request->get('page'); + if (empty($page)) + $page = 0; + + $pageLimit = $request->get('pageLimit'); + + if (empty($pageLimit)) + $pageLimit = CustomerPortal_Config::$DEFAULT_PAGE_LIMIT; + + if (empty($groupConditionsBy)) + $groupConditionsBy = 'AND'; + + if (!CustomerPortal_Utils::isModuleActive($module)) { + throw new Exception("Module not accessible", 1412); + exit; + } + + if (empty($mode)) { + $mode = CustomerPortal_Settings_Utils::getDefaultMode($module); + } + $count = null; + + if ($fieldsArray !== null) { + foreach ($fieldsArray as $key => $value) { + if (!in_array($key, $activeFields)) { + throw new Exception($key." is not accessible.", 1412); + exit; + } + } + } + $fields = implode(',', $activeFields); + + if ($module == 'Faq') { + if (!empty($fieldsArray)) { + $countSql = "SELECT COUNT(*) FROM Faq WHERE faqstatus='Published' AND "; + $sql = sprintf('SELECT %s FROM Faq WHERE faqstatus=\'Published\' AND ', $fields); + + foreach ($fieldsArray as $key => $value) { + $countSql.= $key.'=\''.$value."' ".$groupConditionsBy." "; + $sql.= $key.'=\''.$value."' ".$groupConditionsBy." "; + } + $countSql = CustomerPortal_Utils::str_replace_last($groupConditionsBy, ';', $countSql); + $sql = CustomerPortal_Utils::str_replace_last($groupConditionsBy, '', $sql); + } else { + $countSql = "SELECT COUNT(*) FROM Faq WHERE faqstatus='Published';"; + $sql = sprintf('SELECT %s FROM Faq WHERE faqstatus=\'Published\'', $fields); + } + $countResult = vtws_query($countSql, $current_user); + $count = $countResult[0]['count']; + + $sql = sprintf('%s ORDER BY %s %s LIMIT %s,%s ;', $sql, $orderBy, $order, ($page * $pageLimit), $pageLimit); + $result = vtws_query($sql, $current_user); + } else if ($module == 'Contacts') { + $result = vtws_query(sprintf("SELECT %s FROM %s WHERE id='%s';", $fields, $module, $contactWebserviceId), $current_user); + } else if ($module == 'Accounts') { + if (!empty($accountId)) + $result = vtws_query(sprintf("SELECT %s FROM %s WHERE id='%s';", $fields, $module, $accountId), $current_user); + } else { + $relatedId = null; + $defaultMode = CustomerPortal_Settings_Utils::getDefaultMode($module); + if (!empty($fieldsArray)) { + $countSql = sprintf('SELECT count(*) FROM %s WHERE ', $module); + $sql = sprintf('SELECT %s FROM %s WHERE ', $fields, $module); + + foreach ($fieldsArray as $key => $value) { + $countSql.= $key.'=\''.$value."' ".$groupConditionsBy." "; + $sql.= $key.'=\''.$value."' ".$groupConditionsBy." "; + } + + $countSql = CustomerPortal_Utils::str_replace_last($groupConditionsBy, '', $countSql); + $sql = CustomerPortal_Utils::str_replace_last($groupConditionsBy, '', $sql); + } else { + $countSql = sprintf('SELECT count(*) FROM %s', $module); + $sql = sprintf('SELECT %s FROM %s', $fields, $module); + } + if ($mode == 'mine') { + $relatedId = $contactWebserviceId; + $countResult = vtws_query_related($countSql, $relatedId, $moduleLabel, $current_user); + $count = $countResult[0]['count']; + + $limitClause = sprintf('ORDER BY %s %s LIMIT %s,%s', $orderBy, $order, ($page * $pageLimit), $pageLimit); + $result = vtws_query_related($sql, $relatedId, $moduleLabel, $current_user, $limitClause); + } else if ($mode == 'all') { + if (in_array($module, array('Products', 'Services'))) { + $countSql = sprintf('SELECT count(*) FROM %s;', $module); + $sql = sprintf('SELECT %s FROM %s', $fields, $module); + $limitClause = sprintf('ORDER BY %s %s LIMIT %s,%s;', $orderBy, $order, ($page * $pageLimit), $pageLimit); + $sql = $sql.' '.$limitClause; + $result = vtws_query($sql, $current_user); + $countResult = vtws_query($countSql, $current_user); + $count = $countResult[0]['count']; + } else { + if (!empty($accountId)) { + if ($defaultMode == 'all') + $relatedId = $accountId; + else + $relatedId = $contactWebserviceId; + } + else { + $relatedId = $contactWebserviceId; + } + + $countResult = vtws_query_related($countSql, $relatedId, $moduleLabel, $current_user); + $count = $countResult[0]['count']; + + $limitClause = sprintf('ORDER BY %s %s LIMIT %s,%s', $orderBy, $order, ($page * $pageLimit), $pageLimit); + $result = vtws_query_related($sql, $relatedId, $moduleLabel, $current_user, $limitClause); + } + } + } + + foreach ($result as $key => $recordValues) { + $result[$key] = CustomerPortal_Utils::resolveRecordValues($recordValues); + } + + $response->setResult($result); + $response->addToResult('count', $count); + return $response; + } + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchReferenceRecords.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchReferenceRecords.php new file mode 100644 index 0000000000000000000000000000000000000000..d3e0e750d18b00bd337abc2253230a18c97d2094 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchReferenceRecords.php @@ -0,0 +1,81 @@ +<?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 CustomerPortal_FetchReferenceRecords extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + $response = new CustomerPortal_API_Response(); + $current_user = $this->getActiveUser(); + + if ($current_user) { + $customerId = $this->getActiveCustomer()->id; + $contactWebserviceId = vtws_getWebserviceEntityId('Contacts', $customerId); + $module = $request->get('module'); + $searchKey = $request->get('searchKey'); + + if (!CustomerPortal_Utils::isModuleActive($module)) { + throw new Exception("Module not accessible", 1412); + exit; + } + + $describe = vtws_describe($module, $current_user); + $labelFields = $describe['labelFields']; + //Describe giving wrong labels for HelpDesk and Documents. + if ($module == 'Documents') { + $labelFields = 'notes_title'; + } + if ($module == 'HelpDesk') { + $labelFields = 'ticket_title'; + } + $sql = sprintf("SELECT %s FROM %s ", $labelFields, $module); + $labelFieldsArray = explode(',', $labelFields); + + if (!empty($searchKey)) { + $sql .= "WHERE "; + foreach ($labelFieldsArray as $labelField) { + $sql .= $labelField . " LIKE '%" . $searchKey . "%' OR "; + } + $sql = rtrim($sql, ' OR '); + } + $accountId = $this->getParent($contactWebserviceId); + $mode = CustomerPortal_Settings_Utils::getDefaultMode($module); + $relatedId = null; + $referenceRecords = array(); + if ($mode == 'mine') { + $relatedId = $contactWebserviceId; + $result = vtws_query_related($sql, $relatedId, CustomerPortal_Utils::getRelatedModuleLabel($module), $current_user); + } else if ($mode == 'all') { + if (in_array($module, array('Products', 'Services'))) { + $sql = $sql . ';'; + $result = vtws_query($sql, $current_user); + } else { + if (!empty($accountId)) { + $relatedId = $accountId; + } else { + $relatedId = $contactWebserviceId; + } + $result = vtws_query_related($sql, $relatedId, CustomerPortal_Utils::getRelatedModuleLabel($module), $current_user); + } + } + + foreach ($result as $value) { + $record = array(); + foreach ($labelFieldsArray as $labelField) { + $record['label'].= ' ' . decode_html($value[$labelField]); + $record['id'] = decode_html($value['id']); + } + $referenceRecords[] = $record; + } + $response->setResult($referenceRecords); + } + return $response; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchRelatedModules.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchRelatedModules.php new file mode 100644 index 0000000000000000000000000000000000000000..48e11360723362cb1fa95a95b3de34492a4336cb --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchRelatedModules.php @@ -0,0 +1,44 @@ +<?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 CustomerPortal_FetchRelatedModules extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + $current_user = $this->getActiveUser(); + $response = new CustomerPortal_API_Response(); + + if ($current_user) { + $module = $request->get("module"); + + if (!CustomerPortal_Utils::isModuleActive($module)) { + throw new Exception("Module not accessible", 1412); + exit; + } + global $adb; + $sql = "SELECT vtiger_customerportal_relatedmoduleinfo.relatedmodules FROM vtiger_customerportal_relatedmoduleinfo + INNER JOIN vtiger_tab ON vtiger_customerportal_relatedmoduleinfo.tabid = vtiger_tab.tabid + WHERE vtiger_tab.name= ?"; + $result = $adb->pquery($sql, array($module)); + if ($adb->num_rows($result) > 0) { + $relatedModulesJSON = $adb->query_result($result, 0, 'relatedmodules'); + $data = Zend_Json::decode(decode_html($relatedModulesJSON)); + $relatedModules = array(); + foreach ($data as $module) { + if ($module["value"] == 1 && CustomerPortal_Utils::isModuleActive($module["name"])) { + $relatedModules[] = $module["name"]; + } + } + $response->setResult($relatedModules); + } + } + return $response; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchRelatedRecords.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchRelatedRecords.php new file mode 100644 index 0000000000000000000000000000000000000000..3043d9cc21ccfda72329b21ab064e5127f3c103b --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchRelatedRecords.php @@ -0,0 +1,136 @@ +<?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 CustomerPortal_FetchRelatedRecords extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + global $adb; + $response = new CustomerPortal_API_Response(); + $current_user = $this->getActiveUser(); + + if ($current_user) { + $recordId = $request->get('recordId'); + $parentId = $request->get('parentId'); + $parentModule = $request->get('module'); + $module = $request->get('relatedModule'); + $moduleLabel = $request->get('relatedModuleLabel'); + $page = $request->get('page'); + $pageLimit = $request->get('pageLimit'); + $mode = CustomerPortal_Settings_Utils::getDefaultMode($moduleLabel); + if (empty($pageLimit)) + $pageLimit = CustomerPortal_Config::$DEFAULT_PAGE_LIMIT; + + if (empty($page)) { + $page = 0; + } + + if ($module != 'ModComments' && !CustomerPortal_Utils::isModuleActive($module)) { + throw new Exception("Module not Accessible", 1412); + exit; + } + + if (!empty($parentId)) { + if (!$this->isRecordAccessible($parentId)) { + throw new Exception("Parent record not accessible", 1412); + exit; + } + $baseModule = VtigerWebserviceObject::fromId($adb, $recordId)->getEntityName(); + $relatedRecordIds = $this->relatedRecordIds($baseModule, CustomerPortal_Utils::getRelatedModuleLabel($baseModule), $parentId); + + if (!in_array($recordId, $relatedRecordIds)) { + throw new Exception("Record not Accessible", 1412); + exit; + } + } else if ($parentModule !== 'Faq') { + if (!$this->isRecordAccessible($recordId) && $prentModule !== 'Faq') { + throw new Exception("Record not accessible", 1412); + exit; + } + } else { + //If module is Faq by pass this check as we Faq's are not related to Contacts module. + if (!$this->isFaqPublished($recordId)) { + throw new Exception("This Faq is not published", 1412); + exit; + } + } + + if ($module == 'ModComments' && !empty($recordId)) { + global $adb; + $relatedModule = VtigerWebserviceObject::fromId($adb, $recordId)->getEntityName(); + + if (!CustomerPortal_Utils::isModuleActive($relatedModule)) { + throw new Exception("Comments not accessible for this record", 1412); + exit; + } + $result = vtws_query(sprintf("SELECT * FROM ModComments WHERE related_to = '%s' AND is_private='%s' ORDER BY %s DESC LIMIT %s,%s;", $recordId, 0, 'modifiedtime', ($page * $pageLimit), $pageLimit), $current_user); + + $fileIds = array(); + $$relatedEmailIds = array(); + if (is_array($result)) { + foreach ($result as $index => $value) { + $fileId = $value['filename']; + $attachmentIds = explode(',', $fileId); + //Fetching all attachments and its properties and appending to each comment. + if (!empty($attachmentIds)) { + $attachmentsResult = $adb->pquery('SELECT attachmentsid,name FROM vtiger_attachments WHERE attachmentsid IN ('.generateQuestionMarks($attachmentIds).')', $attachmentIds); + $result[$index]['attachments'] = array(); + $noOfAttachments = $adb->num_rows($attachmentsResult); + $attachments = array(); + for ($i = 0; $i < $noOfAttachments; $i++) { + $attachments[$i]['filename'] = decode_html($adb->query_result($attachmentsResult, $i, 'name')); + $attachments[$i]['attachmentid'] = $adb->query_result($attachmentsResult, $i, 'attachmentsid'); + } + } + $result[$index]['attachments'] = $attachments; + $relatedEmailId = $value['related_email_id']; + if (!empty($relatedEmailId)) { + $relatedEmailIds[$value['id']] = $relatedEmailId; + } + if ($value['commentcontent']) { + $result[$index]['commentcontent'] = trim(decode_html(strip_tags($value['commentcontent']))); + } + } + } + if (!empty($relatedEmailIds)) { + foreach ($relatedEmailIds as $id => $emailId) { + $attachmentsResult = $adb->pquery('SELECT * FROM vtiger_attachments + INNER JOIN vtiger_seattachmentsrel ON vtiger_attachments.attachmentsid = vtiger_seattachmentsrel.attachmentsid + WHERE vtiger_seattachmentsrel.crmid = ?', array($emailId)); + if ($row = $adb->fetch_row($attachmentsResult)) { + foreach ($result as $index => $value) { + if ($id == $value['id']) + $result[$index]['attachmentName'] = decode_html($row['name']); + } + } + } + } + } else { + $activeFields = CustomerPortal_Utils::getActiveFields($module); + $fields = implode(',', $activeFields); + $limitCaluse = sprintf('ORDER BY modifiedtime DESC LIMIT %s,%s', ($page * $pageLimit), $pageLimit); + if ($mode == 'all' && in_array($module, array('Products', 'Services'))) { + $sql = sprintf("SELECT %s FROM %s", $fields, $module); + $sql = $sql.' '.$limitCaluse; + $result = vtws_query($sql, $current_user); + } else { + $result = vtws_query_related(sprintf("SELECT %s FROM %s", $fields, $module), $recordId, $moduleLabel, $current_user, $limitCaluse); + } + } + + foreach ($result as $key => $recordValues) { + $result[$key] = CustomerPortal_Utils::resolveRecordValues($recordValues); + } + + $response->setResult($result); + return $response; + } + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchShortcuts.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchShortcuts.php new file mode 100644 index 0000000000000000000000000000000000000000..ee29fb31985b4638a1cc0fb3f0c7b039aa68c46c --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FetchShortcuts.php @@ -0,0 +1,55 @@ +<?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 CustomerPortal_FetchShortcuts extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + global $adb; + $response = new CustomerPortal_API_Response(); + $current_user = $this->getActiveUser(); + + if ($current_user) { + $shortcuts = array(); + $sql = "SELECT shortcuts FROM vtiger_customerportal_settings LIMIT 1"; + $result = $adb->pquery($sql, array()); + $shortcutsJSON = $adb->query_result($result, 0, 'shortcuts'); + $data = Zend_Json::decode(decode_html($shortcutsJSON)); + + foreach ($data as $module => $value) { + $operations = array(); + if (is_array($value)) { + foreach ($value as $key1 => $value1) { + if ($value1 != 0) + $operations[] = $key1; + } + + if (!empty($operations) && CustomerPortal_Utils::isModuleActive($module)) { + $shortcuts[] = array($module => $operations); + } + } + } + $isHelpDeskRecordCreatable = CustomerPortal_Utils::isModuleRecordCreatable('HelpDesk'); + foreach ($shortcuts as $shortcutArray => $shortcutValues) { + foreach ($shortcutValues as $module => $values) { + if ($module == 'HelpDesk' && !$isHelpDeskRecordCreatable) { + $createShortCutKey = array_search('LBL_CREATE_TICKET', $values); + unset($values[$createShortCutKey]); + $values = array_values($values); + $shortcutValues['HelpDesk'] = $values; + $shortcuts[$shortcutArray] = $shortcutValues; + } + } + } + $response->setResult(array('shortcuts' => $shortcuts)); + } + return $response; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FilterRecords.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FilterRecords.php new file mode 100644 index 0000000000000000000000000000000000000000..da68109252403df19acbb8ec1fb0d3a14ccf19eb --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/FilterRecords.php @@ -0,0 +1,74 @@ +<?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 CustomerPortal_FilterRecords extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + $response = new CustomerPortal_API_Response(); + $current_user = $this->getActiveUser(); + + if ($current_user) { + $customerId = $this->getActiveCustomer()->id; + $contactWebserviceId = vtws_getWebserviceEntityId('Contacts', $customerId); + $module = $request->get('module'); + + if (!CustomerPortal_Utils::isModuleActive($module)) { + throw new Exception("Module not accessible", 1412); + exit; + } + + $moduleLabel = $request->get('moduleLabel'); + $mode = CustomerPortal_Settings_Utils::getDefaultMode($module); + $orderByfield = $request->get('field'); + $order = $request->get('orderBy'); + $limit = $request->get('limit'); + + if (empty($limit)) + $limit = CustomerPortal_Config::$DEFAULT_PAGE_LIMIT; + + $activeFields = CustomerPortal_Utils::getActiveFields($module); + + if (!empty($orderByfield) && !in_array($orderByfield, $activeFields)) { + throw new Exception("filter by field not accessible", 1412); + exit; + } + + $fields = implode(',', $activeFields); + $relatedId = $contactWebserviceId; + + if ($mode == 'all') { + $accountId = $this->getParent($contactWebserviceId); + if (!empty($accountId)) + $relatedId = $accountId; + } + + $sql = sprintf("SELECT %s FROM %s", $fields, $module); + $filterClause = null; + + if (!empty($orderByfield) && !empty($order)) { + $filterClause.= ' ORDER BY '.$orderByfield." ".$order; + } + + if (!empty($limit)) { + $filterClause.= ' LIMIT '.$limit; + } + + $result = vtws_query_related($sql, $relatedId, $moduleLabel, $this->getActiveUser(), $filterClause); + + foreach ($result as $key => $recordValues) { + $result[$key] = CustomerPortal_Utils::resolveRecordValues($recordValues); + } + + $response->setResult($result); + return $response; + } + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/ForgotPassword.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/ForgotPassword.php new file mode 100644 index 0000000000000000000000000000000000000000..ad8ce5a8dc309c33cee9692e5cd1dc9ca2e2c5f3 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/ForgotPassword.php @@ -0,0 +1,96 @@ +<?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 CustomerPortal_ForgotPassword extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + global $adb, $PORTAL_URL, $current_user; + $userId = $this->getCurrentPortalUser(); + $user = new Users(); + $current_user = $user->retrieveCurrentUserInfoFromFile($userId); + + $response = new CustomerPortal_API_Response(); + $mailid = $request->get('email'); + $current_date = date("Y-m-d"); + $sql = 'SELECT * FROM vtiger_portalinfo + INNER JOIN vtiger_contactdetails ON vtiger_contactdetails.contactid=vtiger_portalinfo.id + INNER JOIN vtiger_customerdetails ON vtiger_customerdetails.customerid=vtiger_portalinfo.id + INNER JOIN vtiger_crmentity ON vtiger_portalinfo.id=vtiger_crmentity.crmid + WHERE vtiger_portalinfo.user_name = ? AND vtiger_crmentity.deleted= ? + AND vtiger_customerdetails.support_start_date <= ?'; + + $res = $adb->pquery($sql, array($mailid, '0', $current_date)); + $num_rows = $adb->num_rows($res); + + if ($num_rows > 0) { + $isActive = $adb->query_result($res, 0, 'isactive'); + $support_end_date = $adb->query_result($res, 0, 'support_end_date'); + + if ($isActive && ($support_end_date >= $current_date || $support_end_date == null )) { + $moduleName = 'Contacts'; + global $HELPDESK_SUPPORT_EMAIL_ID, $HELPDESK_SUPPORT_NAME; + $user_name = $adb->query_result($res, 0, 'user_name'); + $contactId = $adb->query_result($res, 0, 'id'); + + if (!empty($adb->query_result($res, 0, 'cryptmode'))) { + $password = makeRandomPassword(); + $enc_password = Vtiger_Functions::generateEncryptedPassword($password); + + $sql = 'UPDATE vtiger_portalinfo SET user_password=?, cryptmode=? WHERE id=?'; + $params = array($enc_password, 'CRYPT', $contactId); + $adb->pquery($sql, $params); + } + + $portalURL = vtranslate('Please ', $moduleName).'<a href="'.$PORTAL_URL.'" style="font-family:Arial, Helvetica, sans-serif;font-size:13px;">'.vtranslate('click here', $moduleName).'</a>'; + $contents = '<table><tr><td> + <strong>Dear '.$adb->query_result($res, 0, 'firstname')." ".$adb->query_result($res, 0, 'lastname').'</strong><br></td></tr><tr> + <td>'.vtranslate('Here is your self service portal login details:', $moduleName).'</td></tr><tr><td align="center"><br><table style="border:2px solid rgb(180,180,179);background-color:rgb(226,226,225);" cellspacing="0" cellpadding="10" border="0" width="75%"><tr> + <td><br>'.vtranslate('User ID').' : <font color="#990000"><strong><a target="_blank">'.$user_name.'</a></strong></font></td></tr><tr> + <td>'.vtranslate('Password').' : <font color="#990000"><strong>'.$password.'</strong></font></td></tr><tr> + <td align="center"><strong>'.$portalURL.'</strong></td> + </tr></table><br></td></tr><tr><td><strong>NOTE: </strong>'.vtranslate('We suggest you to change your password after logging in first time').'.<br> + </td></tr></table>'; + + $subject = 'Customer Portal Login Details'; + $subject = decode_html(getMergedDescription($subject, $contactId, $moduleName)); + + $mailStatus = send_mail($moduleName, $user_name, $HELPDESK_SUPPORT_NAME, $HELPDESK_SUPPORT_EMAIL_ID, $subject, $contents, '', '', '', '', '', true); + $ret_msg = vtranslate('LBL_MAIL_COULDNOT_SENT', 'HelpDesk'); + if ($mailStatus) { + $ret_msg = vtranslate('LBL_MAIL_SENT', 'HelpDesk'); + } + $response->setResult($ret_msg); + } else if ($isActive && $support_end_date <= $current_date) { + throw new Exception('Access to the portal was disabled on '.$support_end_date, 1413); + } else if ($isActive == 0) { + throw new Exception('Portal access has not been enabled for this account.', 1414); + } + } else { + $response->setError('1412', 'Invalid email'); + } + return $response; + } + + function authenticatePortalUser($username, $password) { + // always return true + return true; + } + + public function getCurrentPortalUser() { + $db = PearDatabase::getInstance(); + + $result = $db->pquery("SELECT prefvalue FROM vtiger_customerportal_prefs WHERE prefkey = 'userid' AND tabid = 0", array()); + if ($db->num_rows($result)) { + return $db->query_result($result, 0, 'prefvalue'); + } + return false; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/Ping.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/Ping.php new file mode 100644 index 0000000000000000000000000000000000000000..2587079965c4cc670d266a4d73d63be25da724c3 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/Ping.php @@ -0,0 +1,19 @@ +<?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 CustomerPortal_Ping extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + $response = new CustomerPortal_API_Response(); + $response->setResult('login success'); + return $response; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/Request.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/Request.php new file mode 100644 index 0000000000000000000000000000000000000000..f2ccbdbf075efa90124123d6bebf0a507054ee40 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/Request.php @@ -0,0 +1,55 @@ +<?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 CustomerPortal_API_Request { + + private $valuemap; + private $rawvaluemap; + private $defaultmap = array(); + + function __construct($values = array(), $rawvalues = array()) { + $this->valuemap = $values; + $this->rawvaluemap = $rawvalues; + } + + function get($key, $defvalue = '', $purify = true) { + if (isset($this->valuemap[$key])) { + return $purify ? /* vtlib_purify */($this->valuemap[$key]) : $this->valuemap[$key]; + } + if ($defvalue === '' && isset($this->defaultmap[$key])) { + $defvalue = $this->defaultmap[$key]; + } + return $defvalue; + } + + function has($key) { + return isset($this->valuemap[$key]); + } + + function getRaw($key, $defvalue = '') { + if (isset($this->rawvaluemap[$key])) { + return $this->rawvaluemap[$key]; + } + return $this->get($key, $defvalue); + } + + function set($key, $newvalue) { + $this->valuemap[$key] = $newvalue; + } + + function setDefault($key, $defvalue) { + $this->defaultmap[$key] = $defvalue; + } + + function getOperation() { + return $this->get('_operation'); + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/Response.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/Response.php new file mode 100644 index 0000000000000000000000000000000000000000..71c8ffe87c30efc698ac4fb5a957e08ef2a5e12f --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/Response.php @@ -0,0 +1,63 @@ +<?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 CustomerPortal_API_Response { + + private $error = NULL; + private $result = NULL; + + function setError($code, $message) { + $error = array('code' => $code, 'message' => $message); + $this->error = $error; + } + + function getError() { + return $this->error; + } + + function hasError() { + return !is_null($this->error); + } + + function setResult($result) { + $this->result = $result; + } + + function getResult() { + return $this->result; + } + + function addToResult($key, $value) { + $this->result[$key] = $value; + } + + function prepareResponse() { + $response = array(); + if ($this->result === NULL) { + $response['success'] = false; + $response['error'] = $this->error; + } else { + $response['success'] = true; + $response['result'] = $this->result; + } + return $response; + } + + function emitJSON() { + return Zend_Json::encode($this->prepareResponse()); + } + + function emitHTML() { + if ($this->result === NULL) + return (is_string($this->error)) ? $this->error : var_export($this->error, true); + return $this->result; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/SaveRecord.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/SaveRecord.php new file mode 100644 index 0000000000000000000000000000000000000000..2e9bf19a36dfbb878c6872145a9fe17f77c38374 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/SaveRecord.php @@ -0,0 +1,216 @@ +<?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 CustomerPortal_SaveRecord extends CustomerPortal_FetchRecord { + + protected $recordValues = false; + protected $mode = 'edit'; + + protected function isNewRecordRequest(CustomerPortal_API_Request $request) { + $recordid = $request->get('recordId'); + return (preg_match("/([0-9]+)x0/", $recordid)); + } + + function process(CustomerPortal_API_Request $request) { + $response = new CustomerPortal_API_Response(); + global $current_user; + $current_user = $this->getActiveUser(); + + if ($current_user) { + $module = $request->get('module'); + + if (!CustomerPortal_Utils::isModuleActive($module)) { + throw new Exception("Module not accessible", 1412); + exit; + } + + + + if (in_array($module, array('HelpDesk', 'Documents', 'Assets', 'Quotes', 'Contacts', 'Accounts'))) { + $recordId = $request->get('recordId'); + if (!empty($recordId)) { + //Stop edit record if edit is disabled + if (!CustomerPortal_Utils::isModuleRecordEditable($module)) { + throw new Exception("Module record cannot be edited", 1412); + exit; + } + } else { + if (!CustomerPortal_Utils::isModuleRecordCreatable($module)) { + throw new Exception("Module record cannot be created", 1412); + exit; + } + } + $valuesJSONString = $request->get('values', '', false); + $values = ""; + + if (!empty($valuesJSONString) && is_string($valuesJSONString)) { + $values = Zend_Json::decode($valuesJSONString); + } else { + $values = $valuesJSONString; // Either empty or already decoded. + } + //Avoiding fetching fields from customerportal_fields for Accounts and Contacts + if ($module !== 'Contacts' && $module !== 'Accounts') { + //get active fieids with read , write permissions + $activeFields = CustomerPortal_Utils::getActiveFields($module, true); + $editableFields = array(); + + foreach ($activeFields as $key => $value) { + if ($value == 1) + $editableFields[] = $key; + } + if ($module == 'HelpDesk') { + $editableFields[] = 'serviceid'; + $editableFields[] = 'ticketstatus'; + $editableFields[] = 'ticketpriorities'; + } + if ($module == 'Quotes') { + $editableFields[] = 'quotestage'; + } + + if (!empty($values)) { + foreach ($values as $key => $value) { + if (!in_array($key, $editableFields)) { + throw new Exception("Specified fields not editable", 1412); + exit; + } + } + } + } + + try { + if (vtws_recordExists($recordId)) { + // Retrieve or Initalize + if (!empty($recordId) && !$this->isNewRecordRequest($request)) { + $this->recordValues = vtws_retrieve($recordId, $current_user); + } else { + $this->recordValues = array(); + // set assigned user to default assignee + $this->recordValues['assigned_user_id'] = CustomerPortal_Settings_Utils::getDefaultAssignee(); + } + + // Set the modified values + if (!empty($values)) { + foreach ($values as $name => $value) { + $this->recordValues[$name] = $value; + } + } + // set contact , Organization for Helpdesk record + if ($module == 'HelpDesk') { + $contactId = vtws_getWebserviceEntityId('Contacts', $this->getActiveCustomer()->id); + $this->recordValues['contact_id'] = $contactId; + $this->recordValues['from_portal'] = true; + $accountId = $this->getParent($contactId); + if (!empty($accountId)) + $this->recordValues['parent_id'] = $accountId; + } + + if ($module == 'Documents' && count($_FILES)) { + $file = $_FILES['file']; + $this->recordValues['notes_title'] = $request->get('filename'); + $this->recordValues['filelocationtype'] = 'I'; // location type is internal + $this->recordValues['filestatus'] = '1'; //status always active + $this->recordValues['filename'] = $file['name']; + $this->recordValues['filetype'] = $file['type']; + $this->recordValues['filesize'] = $file['size']; + } + + // Setting missing mandatory fields for record. + $describe = vtws_describe($module, $current_user); + $mandatoryFields = CustomerPortal_Utils:: getMandatoryFields($describe); + foreach ($mandatoryFields as $fieldName => $type) { + if (!isset($this->recordValues[$fieldName])) { + if ($type['name'] == 'reference') { + $crmId = Vtiger_Util_Helper::fillMandatoryFields($fieldName, $module); + $wsId = vtws_getWebserviceEntityId($type['refersTo'][0], $crmId); + $this->recordValues[$fieldName] = $wsId; + } else { + $this->recordValues[$fieldName] = Vtiger_Util_Helper::fillMandatoryFields($fieldName, $module); + } + } + } + // Update or Create + if (isset($this->recordValues['id'])) { + if ($module == 'Contacts' || $module == 'Accounts') { + $updatedStatus = vtws_update($this->recordValues, $current_user); + if ($updatedStatus['id'] == $recordId) { + $response = new CustomerPortal_API_Response(); + $response->setResult($updatedStatus); + } else { + $response->setError("RECORD_NOT_FOUND", "Record does not exist"); + } + return $response; + } + foreach ($mandatoryFields as $fieldName => $type) { + if (!isset($this->recordValues[$fieldName]) || empty($this->recordValues[$fieldName])) { + if ($type['name'] !== 'reference') { + $this->recordValues[$fieldName] = Vtiger_Util_Helper::fillMandatoryFields($fieldName, $module); + } + } + } + $this->recordValues = vtws_update($this->recordValues, $current_user); + } else { + $this->mode = 'create'; + //Setting source to customer portal + $this->recordValues['source'] = 'CUSTOMER PORTAL'; + $this->recordValues = vtws_create($module, $this->recordValues, $current_user); + } + + // Update the record id + $request->set('recordId', $this->recordValues['id']); + $idComponents = explode('x', $this->recordValues['id']); + $recordId = $idComponents[1]; + + //Adding relation to Service Contracts + + if ($module == 'HelpDesk' && !empty($values['serviceid'])) { + $contact = new Contacts(); + $serviceId = $values['serviceid']; + $ids = explode('x', $serviceId); + $crmId = explode('x', $this->recordValues['id']); + $contact->save_related_module('HelpDesk', $crmId[1], 'ServiceContracts', array($ids[1])); + } + + if ($module == 'Documents') { + $contact = new Contacts(); + $contact->save_related_module('Contacts', $this->getActiveCustomer()->id, 'Documents', array($recordId)); + + //relate Document with a Ticket OR Project + $parentId = $request->get('parentId'); + + if (!empty($parentId) && $this->isRecordAccessible($parentId)) { + $focus = CRMEntity::getInstance('Documents'); + $parentIdComponents = explode('x', $parentId); + $focus->insertintonotesrel($parentIdComponents[1], $recordId); + } + } + + if (count($_FILES)) { + $_FILES = Vtiger_Util_Helper::transformUploadedFiles($_FILES, true); + $attachmentType = $request->get('attachmentType'); + $focus = CRMEntity::getInstance($module); + $focus->uploadAndSaveFile($recordId, $module, $_FILES['file'], $attachmentType); + } + + // Gather response with full details + $response = parent::process($request); + } else { + $response->setError("RECORD_NOT_FOUND", "Record does not exist"); + } + } catch (Exception $e) { + $response->setError($e->getCode(), $e->getMessage()); + } + } else { + $response->setError(1404, 'save operation not supported for this module'); + } + return $response; + } + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/SearchFaqs.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/SearchFaqs.php new file mode 100644 index 0000000000000000000000000000000000000000..bea9cd3297bbb05ab0501b70d4084055e9e18fb5 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/SearchFaqs.php @@ -0,0 +1,50 @@ +<?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 CustomerPortal_SearchFaqs extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + $response = new CustomerPortal_API_Response(); + $current_user = $this->getActiveUser(); + $module = "Faq"; + global $adb; + + if ($current_user) { + if (!CustomerPortal_Utils::isModuleActive($module)) { + throw new Exception($module." not accessible", 1412); + exit; + } + + $searchKey = $request->get('searchKey'); + $searchKey = decode_html(htmlspecialchars_decode($searchKey)); + $searchKey = addslashes(addslashes($searchKey)); + $searchFields = array('question', 'answer'); + + $sql = sprintf('SELECT id,question,answer,status FROM vtiger_faq WHERE status=? AND ('); + $sql.= implode(" LIKE '%$searchKey%' OR ", $searchFields); + $sql.= " LIKE '%".$searchKey."%') ;"; + $sqlResult = $adb->pquery($sql, array("Published")); + $num_rows = $adb->num_rows($sqlResult); + $data = array(); + for ($i = 0; $i < $num_rows; $i++) { + $record = array(); + $record['question'] = decode_html($adb->query_result($sqlResult, $i, 'question')); + $record['faq_answer'] = decode_html($adb->query_result($sqlResult, $i, 'answer')); + $record['faqstatus'] = decode_html($adb->query_result($sqlResult, $i, 'status')); + $record['id'] = vtws_getWebserviceEntityId("Faq", $adb->query_result($sqlResult, $i, 'id')); + $data[] = $record; + } + + $response->setResult($data); + return $response; + } + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/SearchRecords.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/SearchRecords.php new file mode 100644 index 0000000000000000000000000000000000000000..ccec270d926545c1eae45681c3dfb98850b45249 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/SearchRecords.php @@ -0,0 +1,124 @@ +<?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 CustomerPortal_SearchRecords extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + $response = new CustomerPortal_API_Response(); + $current_user = $this->getActiveUser(); + global $adb; + + if ($current_user) { + $searchKey = $request->get('searchKey'); + $orderBy = 'modifiedtime'; + + if (!empty($searchKey)) { + $portalActiveModules = CustomerPortal_Utils::getActiveModules(); + + if (!empty($portalActiveModules)) { + $searchResult = array(); + + foreach ($portalActiveModules as $key => $module) { + $moduleModel = Vtiger_Module_Model::getInstance($module); + //Restricting search to Contact related modules + if (in_array($module, array("Faq", "ProjectTask", "ProjectMilestone"))) { + // do nothing + } else { + $activeFields = CustomerPortal_Utils::getActiveFields($module); + + // unset date, time fields as search will fail on them + foreach ($activeFields as $key => $field) { + $field_model = Vtiger_Field_Model::getInstance($field, $moduleModel); + + if (in_array($field_model->getFieldDataType(), array('date', 'datetime', 'time', 'currency'))) { + unset($activeFields[$key]); + } + } + + $describe = vtws_describe($module, $current_user); + $labelFields = $describe['labelFields']; + if ($module == 'Documents') { + $labelFields = 'notes_title'; + } + if ($module == 'HelpDesk') { + $labelFields = 'ticket_title'; + } + + //generate query using Query Generator + $queryGenerator = new QueryGenerator($module, $current_user); + $labelFieldsArray = explode(',', $labelFields); + $queryGenerator->setFields($labelFieldsArray); + + foreach ($activeFields as $fieldName) { + $queryGenerator->addCondition($fieldName, $searchKey, 'c', 'OR'); + } + $query = $queryGenerator->getQuery(); + + $moduleLabel = CustomerPortal_Utils::getRelatedModuleLabel($module); + $relatedRecordWSIds = $this->relatedRecordIds($module, $moduleLabel); + $relatedRecordCRMIds = array(); + + //extract crm ids from webservice ids + if (!empty($relatedRecordWSIds)) { + foreach ($relatedRecordWSIds as $wsId) { + $idParts = explode('x', $wsId); + $relatedRecordCRMIds[] = $idParts[1]; + } + } + + $whereClause = "crmid IN ('".implode("','", $relatedRecordCRMIds)."')"; + if (stripos($query, 'WHERE') == false) { + $query .= " WHERE ".$whereClause; + } else { + $queryParts = explode('WHERE', $query); + // adding crmid into query select fields list + $subParts = explode('FROM', $queryParts[0]); + $queryParts[0] = $subParts[0].",vtiger_crmentity.crmid FROM ".$subParts[1]; + $query = $queryParts[0]." WHERE ".$whereClause; + $query .= " AND (".$queryParts[1].")"; + } + $query = sprintf('%s ORDER BY %s %s', $query, $orderBy, 'DESC'); + $queryResult = $adb->pquery($query, array()); + $result = array(); + + $num_rows = $adb->num_rows($queryResult); + if ($num_rows > 0) { + $result['uiLabel'] = decode_html(vtranslate($moduleLabel, $module)); + $result['labelField'] = $labelFields; + } + + // Parse result and construct response + while ($row = $adb->fetch_array($queryResult)) { + $record = array(); + $crmId = $row['crmid']; + $recordWSId = vtws_getWebserviceEntityId($module, $crmId); + $record['id'] = $recordWSId; + $label = ''; + foreach ($labelFieldsArray as $labelField) { + $fieldModel = Vtiger_Field_Model::getInstance($labelField, $moduleModel); + $label.= $row[$fieldModel->column]." "; + } + $record['label'] = decode_html($label); + $result[] = $record; + } + + $searchResult[$module] = $result; + } + } + } + } else { + throw new Exception("Search key is empty", 1412); + } + $response->setResult($searchResult); + return $response; + } + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/UpdateLoginDetails.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/UpdateLoginDetails.php new file mode 100644 index 0000000000000000000000000000000000000000..b155321805813f6720fad1a964a7be71d502891e --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/apis/UpdateLoginDetails.php @@ -0,0 +1,32 @@ +<?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 CustomerPortal_UpdateLoginDetails extends CustomerPortal_API_Abstract { + + function process(CustomerPortal_API_Request $request) { + $response = new CustomerPortal_API_Response(); + $customer = $this->getActiveCustomer(); + $status = $request->get('status'); + global $adb; + $currentTime = $adb->formatDate(date('YmdHis'), true); + + if ($status == 'Login') { + $sql = 'UPDATE vtiger_portalinfo SET login_time=? WHERE id=?'; + $adb->pquery($sql, array($currentTime, $customer->id)); + } elseif ($status == 'Logout') { + $sql = 'UPDATE vtiger_portalinfo SET logout_time=?, last_login_time=login_time WHERE id=?'; + $adb->pquery($sql, array($currentTime, $customer->id)); + } + + $response->setResult(true); + return $response; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/helpers/Request.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/helpers/Request.php new file mode 100644 index 0000000000000000000000000000000000000000..13fe50c271d9647f7beff6abeb40069e339b7300 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/helpers/Request.php @@ -0,0 +1,59 @@ +<?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 CustomerPortal_API_Request { + + private $valuemap; + private $rawvaluemap; + private $defaultmap = array(); + + function __construct($values = array(), $rawvalues = array()) { + $this->valuemap = $values; + $this->rawvaluemap = $rawvalues; + } + + function get($key, $defvalue = '', $purify = true) { + if (isset($this->valuemap[$key])) { + return $purify ? vtlib_purify($this->valuemap[$key]) : $this->valuemap[$key]; + } + if ($defvalue === '' && isset($this->defaultmap[$key])) { + $defvalue = $this->defaultmap[$key]; + } + return $defvalue; + } + + function has($key) { + return isset($this->valuemap[$key]); + } + + function getRaw($key, $defvalue = '') { + if (isset($this->rawvaluemap[$key])) { + return $this->rawvaluemap[$key]; + } + return $this->get($key, $defvalue); + } + + function set($key, $newvalue) { + $this->valuemap[$key] = $newvalue; + } + + function setDefault($key, $defvalue) { + $this->defaultmap[$key] = $defvalue; + } + + function getOperation() { + return $this->get('_operation'); + } + + function getLanguage() { + return $this->get('language'); + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/helpers/Response.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/helpers/Response.php new file mode 100644 index 0000000000000000000000000000000000000000..71c8ffe87c30efc698ac4fb5a957e08ef2a5e12f --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/helpers/Response.php @@ -0,0 +1,63 @@ +<?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 CustomerPortal_API_Response { + + private $error = NULL; + private $result = NULL; + + function setError($code, $message) { + $error = array('code' => $code, 'message' => $message); + $this->error = $error; + } + + function getError() { + return $this->error; + } + + function hasError() { + return !is_null($this->error); + } + + function setResult($result) { + $this->result = $result; + } + + function getResult() { + return $this->result; + } + + function addToResult($key, $value) { + $this->result[$key] = $value; + } + + function prepareResponse() { + $response = array(); + if ($this->result === NULL) { + $response['success'] = false; + $response['error'] = $this->error; + } else { + $response['success'] = true; + $response['result'] = $this->result; + } + return $response; + } + + function emitJSON() { + return Zend_Json::encode($this->prepareResponse()); + } + + function emitHTML() { + if ($this->result === NULL) + return (is_string($this->error)) ? $this->error : var_export($this->error, true); + return $this->result; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/helpers/SettingsUtils.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/helpers/SettingsUtils.php new file mode 100644 index 0000000000000000000000000000000000000000..9c3e37b66bae817053ea746a182162762039887c --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/helpers/SettingsUtils.php @@ -0,0 +1,39 @@ +<?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 CustomerPortal_Settings_Utils { + + static function getDefaultMode($module) { + global $adb; + $sql = "SELECT vtiger_customerportal_fields.records_visible FROM vtiger_customerportal_fields + INNER JOIN vtiger_tab ON vtiger_customerportal_fields.tabid= vtiger_tab.tabid WHERE vtiger_tab.name= ?"; + $result = $adb->pquery($sql, array($module)); + $IsVisible = $adb->query_result($result, 0, 'records_visible'); + + if ($IsVisible) { + return 'all'; + } else { + return 'mine'; + } + } + + static function getDefaultAssignee() { + global $adb; + $sql = "SELECT default_assignee FROM vtiger_customerportal_settings LIMIT 1"; + $result = $adb->pquery($sql); + $default_assignee = $adb->query_result($result, 0, 'default_assignee'); + + if (!empty($default_assignee)) { + $userId = vtws_getWebserviceEntityId('Users', $default_assignee); + return $userId; + } + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/helpers/Utils.php b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/helpers/Utils.php new file mode 100644 index 0000000000000000000000000000000000000000..2a9d9631dbadacaff630641cc4224a02305658d9 --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/helpers/Utils.php @@ -0,0 +1,285 @@ +<?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 CustomerPortal_Utils { + + static function getImageDetails($recordId, $module) { + global $adb; + $sql = "SELECT vtiger_attachments.*, vtiger_crmentity.setype FROM vtiger_attachments + INNER JOIN vtiger_seattachmentsrel ON vtiger_seattachmentsrel.attachmentsid = vtiger_attachments.attachmentsid + INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_attachments.attachmentsid + WHERE vtiger_crmentity.setype = ? and vtiger_seattachmentsrel.crmid = ?"; + + $result = $adb->pquery($sql, array($module.' Image', $recordId)); + + $imageId = $adb->query_result($result, 0, 'attachmentsid'); + $imagePath = $adb->query_result($result, 0, 'path'); + $imageName = $adb->query_result($result, 0, 'name'); + $imageType = $adb->query_result($result, 0, 'type'); + $imageOriginalName = urlencode(decode_html($imageName)); + + if (!empty($imageName)) { + $imageDetails[] = array( + 'id' => $imageId, + 'orgname' => $imageOriginalName, + 'path' => $imagePath.$imageId, + 'name' => $imageName, + 'type' => $imageType + ); + } + + if (!isset($imageDetails)) + return; + else + return self::getEncodedImage($imageDetails[0]); + } + + static function getEncodedImage($imageDetails) { + global $root_directory; + $image = $root_directory.'/'.$imageDetails['path'].'_'.$imageDetails['name']; + $image_data = file_get_contents($image); + $encoded_image = base64_encode($image_data); + $encodedImageData = array(); + $encodedImageData['imagetype'] = $imageDetails['type']; + $encodedImageData['imagedata'] = $encoded_image; + return $encodedImageData; + } + + public static function getActiveModules() { + $activeModules = Vtiger_Cache::get('CustomerPortal', 'activeModules'); // need to flush cache when modules updated at CRM settings + + if (empty($activeModules)) { + global $adb; + $sql = "SELECT vtiger_tab.name FROM vtiger_customerportal_tabs INNER JOIN vtiger_tab + ON vtiger_customerportal_tabs.tabid= vtiger_tab.tabid AND vtiger_tab.presence= ? WHERE vtiger_customerportal_tabs.visible = ? "; + $sqlResult = $adb->pquery($sql, array(0, 1)); + + for ($i = 0; $i < $adb->num_rows($sqlResult); $i++) { + $activeModules[] = $adb->query_result($sqlResult, $i, 'name'); + } + //Checking if module is active at Module Manager + foreach ($activeModules as $index => $moduleName) { + $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + if (!$moduleModel || !$moduleModel->isActive() || Vtiger_Runtime::isRestricted('modules', $moduleName)) { + unset($activeModules[$index]); + } + } + Vtiger_Cache::set('CustomerPortal', 'activeModules', $activeModules); + } + return $activeModules; + } + + public static function isModuleActive($module) { + $activeModules = self::getActiveModules(); + $defaultAllowedModules = array("ModComments", "History", "Contacts", "Accounts"); + + if (in_array($module, $defaultAllowedModules)) { + return true; + } else if (in_array($module, $activeModules) && !Vtiger_Runtime::isRestricted('modules', $module)) { + return true; + } + return false; + } + + static function resolveRecordValues(&$record, $user = null, $ignoreUnsetFields = false) { + $userTypeFields = array('assigned_user_id', 'creator', 'userid', 'created_user_id', 'modifiedby', 'folderid'); + + if (empty($record)) + return $record; + + $module = Vtiger_Util_Helper::detectModulenameFromRecordId($record['id']); + $fieldnamesToResolve = Vtiger_Util_Helper::detectFieldnamesToResolve($module); + $activeFields = self::getActiveFields($module); + + if (is_array($activeFields) && $module !== 'ModComments') { + foreach ($fieldnamesToResolve as $key => $field) { + if (!in_array($field, $activeFields)) { + unset($fieldnamesToResolve[$key]); + } + } + } + + if (!empty($fieldnamesToResolve)) { + foreach ($fieldnamesToResolve as $resolveFieldname) { + + if (isset($record[$resolveFieldname]) && !empty($record[$resolveFieldname])) { + $fieldvalueid = $record[$resolveFieldname]; + + if (in_array($resolveFieldname, $userTypeFields)) { + $fieldvalue = decode_html(trim(vtws_getName($fieldvalueid, $user))); + } else { + $fieldvalue = Vtiger_Util_Helper::fetchRecordLabelForId($fieldvalueid); + } + $record[$resolveFieldname] = array('value' => $fieldvalueid, 'label' => $fieldvalue); + } + } + } + return $record; + } + + static function getRelatedModuleLabel($relatedModule, $parentModule = "Contacts") { + $relatedModuleLabel = Vtiger_Cache::get('CustomerPortal', $relatedModule.':label'); + + if (empty($relatedModuleLabel)) { + global $adb; + + if (in_array($relatedModule, array('ProjectTask', 'ProjectMilestone'))) + $parentModule = 'Project'; + + $sql = "SELECT vtiger_relatedlists.label FROM vtiger_relatedlists + INNER JOIN vtiger_customerportal_tabs ON vtiger_relatedlists.related_tabid =vtiger_customerportal_tabs.tabid + INNER JOIN vtiger_tab ON vtiger_customerportal_tabs.tabid =vtiger_tab.tabid WHERE vtiger_tab.name=? AND vtiger_relatedlists.tabid=?"; + $sqlResult = $adb->pquery($sql, array($relatedModule, getTabid($parentModule))); + + if ($adb->num_rows($sqlResult) > 0) { + $relatedModuleLabel = $adb->query_result($sqlResult, 0, 'label'); + Vtiger_Cache::set('CustomerPortal', $relatedModule.':label', $relatedModuleLabel); + } + } + return $relatedModuleLabel; + } + + static function getActiveFields($module, $withPermissions = false) { + $activeFields = Vtiger_Cache::get('CustomerPortal', 'activeFields'); // need to flush cache when fields updated at CRM settings + + if (empty($activeFields)) { + global $adb; + $sql = "SELECT name, fieldinfo FROM vtiger_customerportal_fields INNER JOIN vtiger_tab ON vtiger_customerportal_fields.tabid=vtiger_tab.tabid"; + $sqlResult = $adb->pquery($sql, array()); + $num_rows = $adb->num_rows($sqlResult); + + for ($i = 0; $i < $num_rows; $i++) { + $retrievedModule = $adb->query_result($sqlResult, $i, 'name'); + $fieldInfo = $adb->query_result($sqlResult, $i, 'fieldinfo'); + $activeFields[$retrievedModule] = $fieldInfo; + } + Vtiger_Cache::set('CustomerPortal', 'activeFields', $activeFields); + } + + $fieldsJSON = $activeFields[$module]; + $data = Zend_Json::decode(decode_html($fieldsJSON)); + $fields = array(); + + if (!empty($data)) { + foreach ($data as $key => $value) { + if (self::isViewable($key, $module)) { + if ($withPermissions) { + $fields[$key] = $value; + } else { + $fields[] = $key; + } + } + } + } + return $fields; + } + + static function str_replace_last($search, $replace, $str) { + if (( $pos = strrpos($str, $search) ) !== false) { + $search_length = strlen($search); + $str = substr_replace($str, $replace, $pos, $search_length); + } + return $str; + } + + static function isViewable($fieldName, $module) { + global $db; + $db = PearDatabase::getInstance(); + $tabidSql = "SELECT tabid from vtiger_tab WHERE name = ?"; + $tabidResult = $db->pquery($tabidSql, array($module)); + if ($db->num_rows($tabidResult)) { + $tabId = $db->query_result($tabidResult, 0, 'tabid'); + } + $presenceSql = "SELECT presence,displaytype FROM vtiger_field WHERE fieldname=? AND tabid = ?"; + $presenceResult = $db->pquery($presenceSql, array($fieldName, $tabId)); + $num_rows = $db->num_rows($presenceResult); + if ($num_rows) { + $fieldPresence = $db->query_result($presenceResult, 0, 'presence'); + $displayType = $db->query_result($presenceResult, 0, 'displaytype'); + if ($fieldPresence == 0 || $fieldPresence == 2 && $displayType !== 4) { + return true; + } else { + return false; + } + } + } + + static function isReferenceType($fieldName, $describe) { + $type = self::getFieldType($fieldName, $describe); + + if ($type === 'reference') { + return true; + } + return false; + } + + static function isOwnerType($fieldName, $describe) { + $type = self::getFieldType($fieldName, $describe); + + if ($type === 'owner') { + return true; + } + return false; + } + + static function getFieldType($fieldName, $describe) { + $fields = $describe['fields']; + + foreach ($fields as $field) { + if ($fieldName === $field['name']) { + return $field['type']['name']; + } + } + return null; + } + + static function getMandatoryFields($describe) { + + $fields = $describe["fields"]; + $mandatoryFields = array(); + foreach ($fields as $field) { + if ($field['mandatory'] == 1) { + $mandatoryFields[$field['name']] = $field['type']; + } + } + return $mandatoryFields; + } + + static function isModuleRecordCreatable($module) { + global $db; + $db = PearDatabase::getInstance(); + $recordPermissionQuery = "SELECT createrecord from vtiger_customerportal_tabs WHERE tabid=?"; + $createPermissionResult = $db->pquery($recordPermissionQuery, array(getTabid($module))); + $createPermission = $db->query_result($createPermissionResult, 0, 'createrecord'); + return $createPermission; + } + + static function isModuleRecordEditable($module) { + global $db; + $db = PearDatabase::getInstance(); + $recordPermissionQuery = "SELECT editrecord from vtiger_customerportal_tabs WHERE tabid=?"; + $editPermissionResult = $db->pquery($recordPermissionQuery, array(getTabid($module))); + $editPermission = $db->query_result($editPermissionResult, 0, 'editrecord'); + return $editPermission; + } + + //Function to get all Ids when mode is set to published. + + static function getAllRecordIds($module, $current_user) { + $relatedIds = array(); + $sql = sprintf('SELECT id FROM %s;', $module); + $result = vtws_query($sql, $current_user); + foreach ($result as $resultArray) { + $relatedIds[] = $resultArray['id']; + } + return $relatedIds; + } + +} diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/include.inc b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/include.inc new file mode 100644 index 0000000000000000000000000000000000000000..9c57495b3be7c0aef42df90fe20efe81619254cb --- /dev/null +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/include.inc @@ -0,0 +1,51 @@ +<?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. + * ***********************************************************************************/ + +chdir(dirname(__FILE__).'/../../'); + +include_once 'includes/Loader.php'; +include_once 'includes/runtime/Globals.php'; +include_once 'include/Webservices/Relation.php'; +require_once 'include/utils/utils.php'; +include_once 'include/Webservices/Query.php'; +include_once 'include/Webservices/QueryRelated.php'; +include_once 'include/Webservices/RetrieveRelated.php'; +include_once 'include/Webservices/VtigerModuleOperation.php'; +include_once 'include/Webservices/Create.php'; +include_once 'include/Webservices/Retrieve.php'; +include_once 'include/Webservices/History.php'; +include_once 'include/Webservices/Utils.php'; +include_once 'include/Zend/Json.php'; +include_once 'include/QueryGenerator/QueryGenerator.php'; +include_once 'include/Webservices/DescribeObject.php'; +include_once 'includes/runtime/LanguageHandler.php'; +include_once 'modules/Emails/class.phpmailer.php'; +include_once 'modules/ModTracker/ModTracker.php'; +include_once 'modules/Contacts/Contacts.php'; +include_once 'modules/Vtiger/helpers/Util.php'; +include_once 'includes/runtime/BaseModel.php'; +include_once 'modules/Vtiger/uitypes/Base.php'; +include_once 'modules/Vtiger/models/CompanyDetails.php'; +include_once 'modules/Vtiger/models/Field.php'; +include_once 'modules/Vtiger/uitypes/Time.php'; +include_once 'modules/Emails/mail.php'; +require_once 'vtlib/Vtiger/Runtime.php'; +include_once 'includes/runtime/Viewer.php'; +include_once 'includes/runtime/Theme.php'; +include_once 'includes/http/Request.php'; +include_once 'libraries/Smarty/libs/sysplugins/smarty_security.php'; +include_once dirname(__FILE__).'/helpers/Request.php'; +include_once dirname(__FILE__).'/helpers/Response.php'; +include_once dirname(__FILE__).'/helpers/Utils.php'; +include_once dirname(__FILE__).'/helpers/SettingsUtils.php'; +include_once dirname(__FILE__).'/apis/AbstractApi.php'; +include_once dirname(__FILE__).'/apis/FetchRecord.php'; +include_once dirname(__FILE__).'/Config.php'; + diff --git a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/schema.xml b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/schema.xml index c33b366ffc11369189f48666fd57826986f0acb5..9fb4a1f7da0dd95def957bb7b937325b05b5a2ba 100644 --- a/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/schema.xml +++ b/pkg/vtiger/modules/CustomerPortal/modules/CustomerPortal/schema.xml @@ -4,27 +4,27 @@ <table> <name>vtiger_customerportal_tabs</name> <sql><![CDATA[CREATE TABLE `vtiger_customerportal_tabs` ( - `tabid` int(19) NOT NULL, - `visible` int(1) default '1', - `sequence` int(1) default NULL, - PRIMARY KEY (`tabid`) -)]]></sql> + `tabid` int(19) NOT NULL, + `visible` int(1) default '1', + `sequence` int(1) default NULL, + PRIMARY KEY (`tabid`) + )]]></sql> </table> <table> <name>vtiger_customerportal_fields</name> <sql><![CDATA[CREATE TABLE `vtiger_customerportal_fields` ( - `tabid` int(19) NOT NULL, - `fieldid` int(19) default NULL, - `visible` int(1) default NULL -)]]></sql> + `tabid` int(19) NOT NULL, + `fieldid` int(19) default NULL, + `visible` int(1) default NULL + )]]></sql> </table> <table> <name>vtiger_customerportal_prefs</name> <sql><![CDATA[CREATE TABLE `vtiger_customerportal_prefs` ( - `tabid` int(11) NOT NULL, - `prefkey` varchar(100) default NULL, - `prefvalue` int(20) default NULL -)]]></sql> + `tabid` int(11) NOT NULL, + `prefkey` varchar(100) default NULL, + `prefvalue` int(20) default NULL + )]]></sql> </table> </tables> </schema> diff --git a/pkg/vtiger/modules/CustomerPortal/settings/actions/Save.php b/pkg/vtiger/modules/CustomerPortal/settings/actions/Save.php index 1b95d458d0318e8d973c29ebba1066ec8cc8521f..0bd65003eea490027c57eb1505f05f4ef182554e 100644 --- a/pkg/vtiger/modules/CustomerPortal/settings/actions/Save.php +++ b/pkg/vtiger/modules/CustomerPortal/settings/actions/Save.php @@ -25,7 +25,6 @@ class Settings_CustomerPortal_Save_Action extends Settings_Vtiger_Index_Action { $moduleModel->set('shortcuts', $request->get('defaultShortcuts')); $moduleModel->set('moduleFieldsInfo', $request->get('moduleFieldsInfo')); $moduleModel->set('relatedModuleList', $request->get('relatedModuleList')); - $moduleModel->set('charts', $request->get('activeCharts')); $moduleModel->set('widgets', $request->get('activeWidgets')); $moduleModel->set('recordsVisible', $request->get('recordsVisible')); $moduleModel->set('recordPermissions', $request->get('recordPermissions')); diff --git a/pkg/vtiger/modules/CustomerPortal/settings/models/Module.php b/pkg/vtiger/modules/CustomerPortal/settings/models/Module.php index 6cadc8f1127ccb7722d6184f532ddc67999dba11..bf5937465d5cefcb7af7468402b499111cf20c2d 100644 --- a/pkg/vtiger/modules/CustomerPortal/settings/models/Module.php +++ b/pkg/vtiger/modules/CustomerPortal/settings/models/Module.php @@ -125,12 +125,9 @@ class Settings_CustomerPortal_Module_Model extends Settings_Vtiger_Module_Model //Update the dashboard widgets, charts, announcement and support_notification details. $activeWidgets['widgets'] = $widgets; - $activeCharts['charts'] = $charts; $dashboardWidgets = json_encode($activeWidgets); - $dashboardCharts = json_encode($activeCharts); - if ($dashboardWidgets || $dashboardCharts) { - $db->pquery('UPDATE vtiger_customerportal_settings SET default_assignee = ? ,support_notification = ? - ,announcement = ?,widgets = ?,charts=?', array($defaultAssignee, $renewalPeriod, $announcement, $dashboardWidgets, $dashboardCharts)); + if ($dashboardWidgets) { + $db->pquery('UPDATE vtiger_customerportal_settings SET default_assignee=?, support_notification=?, announcement=?, widgets=?', array($defaultAssignee, $renewalPeriod, $announcement, $dashboardWidgets)); } //Update module field info if (!empty($moduleFieldsInfo)) { @@ -214,12 +211,9 @@ class Settings_CustomerPortal_Module_Model extends Settings_Vtiger_Module_Model $dashboardInfo['announcement'] = $row['announcement']; $dashboardInfo['shortcuts'] = decode_html($row['shortcuts']); $dashboardInfo['widgets'] = decode_html($row['widgets']); - $dashboardInfo['charts'] = decode_html($row['charts']); } $currentWidgets = json_decode($dashboardInfo['widgets'], true); - $currentCharts = json_decode($dashboardInfo['charts'], true); $dashboardInfo['widgets'] = json_encode($currentWidgets); - $dashboardInfo['charts'] = json_encode($currentCharts); $this->set('dashboardInfo', $dashboardInfo); } return $this; diff --git a/pkg/vtiger/modules/CustomerPortal/settings/views/Index.php b/pkg/vtiger/modules/CustomerPortal/settings/views/Index.php index 9a1ef79987ef4470d85c8cca6ac67f02ac8aa78c..b7ebe1f7423f508ea80678359254a121898dc836 100644 --- a/pkg/vtiger/modules/CustomerPortal/settings/views/Index.php +++ b/pkg/vtiger/modules/CustomerPortal/settings/views/Index.php @@ -45,12 +45,10 @@ class Settings_CustomerPortal_Index_View extends Settings_Vtiger_Index_View { $default_shortcuts = $dashboardInfo['shortcuts']; $announcement = $dashboardInfo['announcement']; $widgets = json_decode($dashboardInfo['widgets'], true); - $charts = json_decode($dashboardInfo['charts'], true); $supportNotification = $dashboardInfo['support_notification']; $viewer->assign('DEFAULT_SHORTCUTS', $default_shortcuts); $viewer->assign('ANNOUNCEMENT', $announcement); $viewer->assign('WIDGETS', $widgets); - $viewer->assign('CHARTS', $charts); $viewer->assign('SUPPORTNOTIFICATION', $supportNotification); $viewer->assign('WIDGETS_MODULE_LIST', $widgetsModuleList); diff --git a/pkg/vtiger/modules/EmailTemplates/actions/Delete.php b/pkg/vtiger/modules/EmailTemplates/actions/Delete.php deleted file mode 100755 index 7b5d6d2c7694ba5921a202d5a1d4e537d359e9ab..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/EmailTemplates/actions/Delete.php +++ /dev/null @@ -1,36 +0,0 @@ -<?php -/*+*********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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 EmailTemplates_Delete_Action extends Vtiger_Delete_Action { - - function checkPermission(Vtiger_Request $request) { - return true; - } - - public function process(Vtiger_Request $request) { - $moduleName = $request->getModule(); - $recordId = $request->get('record'); - $ajaxDelete = $request->get('ajaxDelete'); - - $recordModel = EmailTemplates_Record_Model::getInstanceById($recordId); - $moduleModel = $recordModel->getModule(); - - $recordModel->delete($recordId); - - $listViewUrl = $moduleModel->getListViewUrl(); - if($ajaxDelete) { - $response = new Vtiger_Response(); - $response->setResult($listViewUrl); - return $response; - } else { - header("Location: $listViewUrl"); - } - } -} diff --git a/pkg/vtiger/modules/EmailTemplates/actions/DeleteAjax.php b/pkg/vtiger/modules/EmailTemplates/actions/DeleteAjax.php deleted file mode 100755 index e2602121bfc647961d1327af53f1ec3798c02849..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/EmailTemplates/actions/DeleteAjax.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php -/*+*********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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 EmailTemplates_DeleteAjax_Action extends Vtiger_Delete_Action { - - public function process(Vtiger_Request $request) { - $moduleName = $request->getModule(); - $recordId = $request->get('record'); - - $recordModel = EmailTemplates_Record_Model::getInstanceById($recordId); - $recordModel->setModule($moduleName); - $recordModel->delete(); - - $cvId = $request->get('viewname'); - $response = new Vtiger_Response(); - $response->setResult(array('viewname'=>$cvId, 'module'=>$moduleName)); - $response->emit(); - } -} diff --git a/pkg/vtiger/modules/EmailTemplates/actions/MassDelete.php b/pkg/vtiger/modules/EmailTemplates/actions/MassDelete.php deleted file mode 100755 index ff0959be57861230f6b565b416c8d4e6f0382623..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/EmailTemplates/actions/MassDelete.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php -/*+*********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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 EmailTemplates_MassDelete_Action extends Vtiger_Mass_Action { - - function checkPermission(){ - return true; - } - - function preProcess(Vtiger_Request $request) { - return true; - } - - function postProcess(Vtiger_Request $request) { - return true; - } - - public function process(Vtiger_Request $request) { - $moduleName = $request->getModule(); - - $recordModel = new EmailTemplates_Record_Model(); - $recordModel->setModule($moduleName); - $selectedIds = $request->get('selected_ids'); - $excludedIds = $request->get('excluded_ids'); - - if($selectedIds == 'all' && empty($excludedIds)){ - $recordModel->deleteAllRecords(); - }else{ - $recordIds = $this->getRecordsListFromRequest($request, $recordModel); - foreach($recordIds as $recordId) { - $recordModel = EmailTemplates_Record_Model::getInstanceById($recordId); - $recordModel->delete(); - } - } - - $response = new Vtiger_Response(); - $response->setResult(array('module'=>$moduleName)); - $response->emit(); - } - - public function getRecordsListFromRequest(Vtiger_Request $request, $recordModel) { - $selectedIds = $request->get('selected_ids'); - $excludedIds = $request->get('excluded_ids'); - - if(!empty($selectedIds) && $selectedIds != 'all') { - if(!empty($selectedIds) && count($selectedIds) > 0) { - return $selectedIds; - } - } - if(!empty($excludedIds)){ - $moduleModel = $recordModel->getModule(); - $recordIds = $moduleModel->getRecordIds($excludedIds); - return $recordIds; - } - } -} diff --git a/pkg/vtiger/modules/EmailTemplates/actions/Save.php b/pkg/vtiger/modules/EmailTemplates/actions/Save.php deleted file mode 100755 index a1d061c4c1cac544f5ff91e1c6901c794a7014c0..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/EmailTemplates/actions/Save.php +++ /dev/null @@ -1,34 +0,0 @@ -<?php -/*+*********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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 EmailTemplates_Save_Action extends Vtiger_Save_Action { - - public function process(Vtiger_Request $request) { - $moduleName = $request->getModule(); - $record = $request->get('record'); - $recordModel = new EmailTemplates_Record_Model(); - $recordModel->setModule($moduleName); - - if(!empty($record)) { - $recordModel->setId($record); - } - - $recordModel->set('templatename', $request->get('templatename')); - $recordModel->set('description', $request->get('description')); - $recordModel->set('subject', $request->get('subject')); - $recordModel->set('body', $request->get('templatecontent')); - - $recordModel->save(); - - $loadUrl = $recordModel->getDetailViewUrl(); - header("Location: $loadUrl"); - } - -} \ No newline at end of file diff --git a/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/DetailViewFullContents.tpl b/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/DetailViewFullContents.tpl index 78f4143e1f29186c3cfe7b81437ec565e32ce172..39dfe6a28ff8bf4489734167bfcb63ae0015b9fc 100644 --- a/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/DetailViewFullContents.tpl +++ b/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/DetailViewFullContents.tpl @@ -1,53 +1,52 @@ {*+********************************************************************************** * 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 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. ************************************************************************************} + {strip} - <input id="recordId" type="hidden" value="{$RECORD->getId()}" /> - <div class="col-sm-12 col-xs-12"> - {include file="DetailViewHeader.tpl"|vtemplate_path:$MODULE} - <div class="detailview-content container-fluid"> - <div class="details row"> - <div class="block"> - {assign var=WIDTHTYPE value=$USER_MODEL->get('rowheight')} - <div> - <h4>{vtranslate('Email Template - Properties of ', $MODULE_NAME)} " {$RECORD->get('templatename')} "</h4> - </div> - <hr> - <table class="table detailview-table no-border"> - <tbody> - <tr> - <td class="fieldLabel {$WIDTHTYPE}"><label class="muted marginRight10px">{vtranslate('Templatename', $MODULE_NAME)}</label></td> - <td class="fieldValue {$WIDTHTYPE}">{$RECORD->get('templatename')}</td> - </tr> - <tr> - <td class="fieldLabel {$WIDTHTYPE}"><label class="muted marginRight10px">{vtranslate('Description', $MODULE_NAME)}</label></td> - <td class="fieldValue {$WIDTHTYPE}">{nl2br($RECORD->get('description'))}</td> - </tr> - <tr> - <td class="fieldLabel {$WIDTHTYPE}"><label class="muted marginRight10px">{vtranslate('LBL_MODULE_NAME', $MODULE_NAME)}</label></td> - <td class="fieldValue {$WIDTHTYPE}">{if $RECORD->get('module')} {vtranslate($RECORD->get('module'), $RECORD->get('module'))}{/if}</td> - </tr> - <tr> - <td class="fieldLabel {$WIDTHTYPE}"><label class="muted marginRight10px">{vtranslate('Subject',$MODULE_NAME)}</label></td> - <td class="fieldValue {$WIDTHTYPE}">{$RECORD->get('subject')}</td> - </tr> - <tr> - <td class="fieldLabel {$WIDTHTYPE}"><label class="muted marginRight10px">{vtranslate('Message',$MODULE_NAME)}</label></td> - <td class="fieldValue {$WIDTHTYPE}"> - <iframe id="TemplateIFrame" style="height:400px;" class="col-sm-12 col-xs-12 overflowScrollBlock"></iframe> - </td> - </tr> - </tbody> - </table> - </div> - </div> - </div> - </div> + <input id="recordId" type="hidden" value="{$RECORD->getId()}" /> + {include file="DetailViewHeader.tpl"|vtemplate_path:$MODULE} + <div class="detailview-content container-fluid"> + <div class="details row"> + <div class="block"> + {assign var=WIDTHTYPE value=$USER_MODEL->get('rowheight')} + <div> + <h4>{vtranslate('Email Template - Properties of ', $MODULE_NAME)} " {$RECORD->get('templatename')} "</h4> + </div> + <hr> + <table class="table detailview-table no-border"> + <tbody> + <tr> + <td class="fieldLabel {$WIDTHTYPE}"><label class="muted marginRight10px">{vtranslate('Templatename', $MODULE_NAME)}</label></td> + <td class="fieldValue {$WIDTHTYPE}">{$RECORD->get('templatename')}</td> + </tr> + <tr> + <td class="fieldLabel {$WIDTHTYPE}"><label class="muted marginRight10px">{vtranslate('Description', $MODULE_NAME)}</label></td> + <td class="fieldValue {$WIDTHTYPE}">{nl2br($RECORD->get('description'))}</td> + </tr> + <tr> + <td class="fieldLabel {$WIDTHTYPE}"><label class="muted marginRight10px">{vtranslate('LBL_MODULE_NAME', $MODULE_NAME)}</label></td> + <td class="fieldValue {$WIDTHTYPE}">{if $RECORD->get('module')} {vtranslate($RECORD->get('module'), $RECORD->get('module'))}{/if}</td> + </tr> + <tr> + <td class="fieldLabel {$WIDTHTYPE}"><label class="muted marginRight10px">{vtranslate('Subject',$MODULE_NAME)}</label></td> + <td class="fieldValue {$WIDTHTYPE}">{$RECORD->get('subject')}</td> + </tr> + <tr> + <td class="fieldLabel {$WIDTHTYPE}"><label class="muted marginRight10px">{vtranslate('Message',$MODULE_NAME)}</label></td> + <td class="fieldValue {$WIDTHTYPE}"> + <iframe id="TemplateIFrame" style="height:400px;" class="col-sm-12 col-xs-12 overflowScrollBlock"></iframe> + </td> + </tr> + </tbody> + </table> + </div> + </div> + </div> +</div> </div> -</div> {/strip} diff --git a/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/DetailViewPreProcess.tpl b/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/DetailViewPreProcess.tpl index 3ec822c2573ef52520ac7dd63ae9cd3f7ed01102..b9b1f8879c44f074d8235519bdcdc72217ea22a8 100644 --- a/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/DetailViewPreProcess.tpl +++ b/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/DetailViewPreProcess.tpl @@ -1,28 +1,34 @@ {*+********************************************************************************** - * 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. - ************************************************************************************} +* 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. +************************************************************************************} {* START YOUR IMPLEMENTATION FROM BELOW. Use {debug} for information *} {include file="modules/Vtiger/partials/Topbar.tpl"} <div class="container-fluid app-nav"> - <div class="row"> - {include file="partials/SidebarHeader.tpl"|vtemplate_path:$MODULE} - {include file="ModuleHeader.tpl"|vtemplate_path:$MODULE} - </div> + <div class="row"> + {include file="partials/SidebarHeader.tpl"|vtemplate_path:$MODULE} + {include file="ModuleHeader.tpl"|vtemplate_path:$MODULE} + </div> +</div> +</nav> +<div id='overlayPageContent' class='fade modal overlayPageContent content-area overlay-container-60' tabindex='-1' role='dialog' aria-hidden='true'> + <div class="data"> + </div> + <div class="modal-dialog"> + </div> </div> -</nav> - <div id='overlayPageContent' class='fade modal overlayPageContent content-area overlay-container-60' tabindex='-1' role='dialog' aria-hidden='true'> - <div class="data"> - </div> - <div class="modal-dialog"> - </div> - </div> <div class="container-fluid main-container"> - <div class="row"> - <div class="detailViewContainer viewContent clearfix"> \ No newline at end of file + <div class="row"> + <div id="modnavigator" class="module-nav detailViewModNavigator clearfix"> + <div class="hidden-xs hidden-sm mod-switcher-container"> + {include file="partials/Menubar.tpl"|vtemplate_path:$MODULE} + </div> + </div> + <div class="detailViewContainer viewContent clearfix"> + <div class="content-area container-fluid"> diff --git a/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/EditView.tpl b/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/EditView.tpl index 39be94b0143ab7925152373a8e67628c28b66cc6..82d2854cf844cfe89391f430d1b2a9ec74c0653f 100644 --- a/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/EditView.tpl +++ b/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/EditView.tpl @@ -1,7 +1,7 @@ {*+********************************************************************************** * 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 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. @@ -9,9 +9,14 @@ {strip} <div class="main-container clearfix"> - <div class="editViewPageDiv full-width"> - <div class="col-sm-12 col-xs-12 "> - <form id="EditView" class="form-horizontal recordEditView" name="EditView" method="post" action="index.php"> + <div id="modnavigator" class="module-nav editViewModNavigator"> + <div class="hidden-xs hidden-sm mod-switcher-container"> + {include file="partials/Menubar.tpl"|vtemplate_path:$MODULE} + </div> + </div> + <div class="editViewPageDiv viewContent"> + <div class="col-sm-12 col-xs-12 content-area"> + <form id="EditView" class="form-horizontal recordEditView" name="EditView" method="post" action="index.php"> <div class="editViewHeader"> <div class='row'> <div class="col-lg-12 col-md-12 col-lg-pull-0"> diff --git a/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/ListViewPreProcess.tpl b/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/ListViewPreProcess.tpl index 3c19bd62779b1debaf1c108301aed9f8dbe65daa..9d8d32d65790d3ef6ff83908d77fba86b4544624 100644 --- a/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/ListViewPreProcess.tpl +++ b/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/ListViewPreProcess.tpl @@ -1,29 +1,33 @@ {*+********************************************************************************** * 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 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. ************************************************************************************} -{* modules/Vtiger/views/List.php *} -{* START YOUR IMPLEMENTATION FROM BELOW. Use {debug} for information *} -{include file="modules/Vtiger/partials/Topbar.tpl"} +{strip} + {include file="modules/Vtiger/partials/Topbar.tpl"} -<div class="container-fluid app-nav"> - <div class="row"> - {include file="partials/SidebarHeader.tpl"|vtemplate_path:$MODULE} - {include file="ModuleHeader.tpl"|vtemplate_path:$MODULE} - </div> -</div> -</nav> - <div id='overlayPageContent' class='fade modal overlayPageContent content-area overlay-container-60' tabindex='-1' role='dialog' aria-hidden='true'> - <div class="data"> - </div> - <div class="modal-dialog"> - </div> - </div> -<div class="main-container main-container-{$MODULE}"> - <br> - <div class="listViewPageDiv full-width" id="listViewContent"> + <div class="container-fluid app-nav"> + <div class="row"> + {include file="partials/SidebarHeader.tpl"|vtemplate_path:$MODULE} + {include file="ModuleHeader.tpl"|vtemplate_path:$MODULE} + </div> + </div> + </nav> + <div id='overlayPageContent' class='fade modal overlayPageContent content-area overlay-container-60' tabindex='-1' role='dialog' aria-hidden='true'> + <div class="data"> + </div> + <div class="modal-dialog"> + </div> + </div> + <div class="main-container main-container-{$MODULE}"> + <div id="modnavigator" class="module-nav"> + <div class="hidden-xs hidden-sm mod-switcher-container"> + {include file="partials/Menubar.tpl"|vtemplate_path:$MODULE} + </div> + </div> + <div class="listViewPageDiv content-area full-width" id="listViewContent"> +{/strip} \ No newline at end of file diff --git a/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/ModuleHeader.tpl b/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/ModuleHeader.tpl index eb26c0dd5fec521cd0c6e7bca59488b297f3ca34..70bf6ccbc8d3ccc22ae4fb5700874fff9f82cece 100644 --- a/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/ModuleHeader.tpl +++ b/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/ModuleHeader.tpl @@ -13,20 +13,21 @@ <div class="col-lg-5 col-md-5 module-breadcrumb"> {assign var=MODULE_MODEL value=Vtiger_Module_Model::getInstance($MODULE)} <a title="{vtranslate($MODULE, $MODULE)}" href='{$MODULE_MODEL->getDefaultUrl()}'> - <h4 class="module-title pull-left text-uppercase"> {vtranslate($MODULE, $MODULE)} </h4> + <h4 class="module-title pull-left text-uppercase"> {vtranslate($MODULE, $MODULE)} </h4> </a> <p class="current-filter-name filter-name pull-left cursorPointer"> <span class="fa fa-angle-right pull-left" aria-hidden="true"></span> {if $smarty.request.view eq 'List'} {vtranslate('LBL_FILTER', $MODULE)} {/if} + {if $smarty.request.view eq 'Detail'} - <a title="{$RECORD->get('templatename')}"> {$RECORD->get('templatename')} </a> + <a title="{$RECORD->get('templatename')}"> {$RECORD->get('templatename')} </a> {/if} {if $RECORD and $smarty.request.view eq 'Edit'} - <a title="{$RECORD->get('templatename')}"> {vtranslate('LBL_EDITING', $MODULE)} : {$RECORD->get('templatename')} </a> + <a title="{$RECORD->get('templatename')}"> {vtranslate('LBL_EDITING', $MODULE)} : {$RECORD->get('templatename')} </a> {else if $smarty.request.view eq 'Edit'} - <a> {vtranslate('LBL_ADDING_NEW', $MODULE)} </a> + <a> {vtranslate('LBL_ADDING_NEW', $MODULE)} </a> {/if} </p> </div> diff --git a/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/partials/SidebarHeader.tpl b/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/partials/SidebarHeader.tpl index 3c9c19be329a32aed8acdad660e4cfe390142c61..aa71267d4f7fc56ddc82ffbc343866938e9f0cfa 100644 --- a/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/partials/SidebarHeader.tpl +++ b/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/partials/SidebarHeader.tpl @@ -7,13 +7,7 @@ * All Rights Reserved. ************************************************************************************} -{assign var="APP_IMAGE_MAP" value=[ - 'MARKETING' => 'fa-users', - 'SALES' => 'fa-dot-circle-o', - 'SUPPORT' => 'fa-life-ring', - 'INVENTORY' => 'vicon-inventory', - 'PROJECT' => 'fa-briefcase' - ]} +{assign var=APP_IMAGE_MAP value=Vtiger_MenuStructure_Model::getAppIcons()} <div class="col-sm-12 col-xs-12 app-indicator-icon-container app-{$SELECTED_MENU_CATEGORY}"> <div class="row" title="{vtranslate($MODULE,$MODULE)}"> diff --git a/pkg/vtiger/modules/EmailTemplates/models/DetailView.php b/pkg/vtiger/modules/EmailTemplates/models/DetailView.php deleted file mode 100755 index 337207f6b2981233c87548ac2e07f1a70546fa9c..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/EmailTemplates/models/DetailView.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php -/*+*********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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 EmailTemplates_DetailView_Model extends Vtiger_DetailView_Model { - - /** - * Function to get the detail view links (links and widgets) - * @param <array> $linkParams - parameters which will be used to calicaulate the params - * @return <array> - array of link models in the format as below - * array('linktype'=>list of link models); - */ - public function getDetailViewLinks($linkParams) { - $linkTypes = array('DETAILVIEWBASIC','DETAILVIEW'); - $moduleModel = $this->getModule(); - $recordModel = $this->getRecord(); - - $moduleName = $moduleModel->getName(); - $recordId = $recordModel->getId(); - - $detailViewLink = array(); - - $detailViewLinks[] = array( - 'linktype' => 'DETAILVIEWBASIC', - 'linklabel' => 'LBL_EDIT', - 'linkurl' => $recordModel->getEditViewUrl(), - 'linkicon' => '' - ); - - foreach ($detailViewLinks as $detailViewLink) { - $linkModelList['DETAILVIEWBASIC'][] = Vtiger_Link_Model::getInstanceFromValues($detailViewLink); - } - - $linkModelListDetails = Vtiger_Link_Model::getAllByType($moduleModel->getId(),$linkTypes,$linkParams); - $detailViewBasiclinks = $linkModelListDetails['DETAILVIEWBASIC']; - unset($linkModelListDetails['DETAILVIEWBASIC']); - - $deletelinkModel = array( - 'linktype' => 'DETAILVIEW', - 'linklabel' => 'LBL_DELETE', - 'linkurl' => 'javascript:Vtiger_Detail_Js.deleteRecord("'.$recordModel->getDeleteUrl().'")', - 'linkicon' => '' - ); - $linkModelList['DETAILVIEW'][] = Vtiger_Link_Model::getInstanceFromValues($deletelinkModel); - - if(!empty($detailViewBasiclinks)) { - foreach($detailViewBasiclinks as $linkModel) { - $linkModelList['DETAILVIEW'][] = $linkModel; - } - } - return $linkModelList; - } - - /** - * Function to get the Quick Links for the Detail view of the module - * @param <Array> $linkParams - * @return <Array> List of Vtiger_Link_Model instances - */ - public function getSideBarLinks($linkParams) { - $linkTypes = array('SIDEBARLINK', 'SIDEBARWIDGET'); - $moduleLinks = $this->getModule()->getSideBarLinks($linkTypes); - - $listLinkTypes = array('DETAILVIEWSIDEBARLINK', 'DETAILVIEWSIDEBARWIDGET'); - $listLinks = Vtiger_Link_Model::getAllByType($this->getModule()->getId(), $listLinkTypes); - - if($listLinks['DETAILVIEWSIDEBARLINK']) { - foreach($listLinks['DETAILVIEWSIDEBARLINK'] as $link) { - $link->linkurl = $link->linkurl.'&record='.$this->getRecord()->getId().'&source_module='.$this->getModule()->getName(); - $moduleLinks['SIDEBARLINK'][] = $link; - } - } - - if($listLinks['DETAILVIEWSIDEBARWIDGET']) { - foreach($listLinks['DETAILVIEWSIDEBARWIDGET'] as $link) { - $link->linkurl = $link->linkurl.'&record='.$this->getRecord()->getId().'&source_module='.$this->getModule()->getName(); - $moduleLinks['SIDEBARWIDGET'][] = $link; - } - } - - return $moduleLinks; - } - - /** - * Function to get the instance - * @param <String> $moduleName - module name - * @param <String> $recordId - record id - * @return <Vtiger_DetailView_Model> - */ - public static function getInstance($moduleName,$recordId) { - $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'DetailView', $moduleName); - $instance = new $modelClassName(); - - $moduleModel = EmailTemplates_Module_Model::getInstance($moduleName); - $recordModel = EmailTemplates_Record_Model::getInstanceById($recordId, $moduleName); - - return $instance->setModule($moduleModel)->setRecord($recordModel); - } -} \ No newline at end of file diff --git a/pkg/vtiger/modules/EmailTemplates/models/Field.php b/pkg/vtiger/modules/EmailTemplates/models/Field.php deleted file mode 100755 index 1b28dbef637391ebfd1e958734f8cbd4e35b0b34..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/EmailTemplates/models/Field.php +++ /dev/null @@ -1,21 +0,0 @@ -<?php -/*+*********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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 EmailTemplates_Field_Model extends Vtiger_Field_Model { - - /** - * Function to check if the field is named field of the module - * @return <Boolean> - True/False - */ - public function isNameField() { - return false; - } - -} \ No newline at end of file diff --git a/pkg/vtiger/modules/EmailTemplates/models/ListView.php b/pkg/vtiger/modules/EmailTemplates/models/ListView.php deleted file mode 100755 index b4239d85b7d43385146ec2d168ff5a147abb5575..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/EmailTemplates/models/ListView.php +++ /dev/null @@ -1,186 +0,0 @@ -<?php -/*+*********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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 EmailTemplates_ListView_Model extends Vtiger_ListView_Model { - - - /** - * Function to get the list of Mass actions for the module - * @param <Array> $linkParams - * @return <Array> - Associative array of Link type to List of Vtiger_Link_Model instances for Mass Actions - */ - public function getListViewMassActions($linkParams) { - $moduleModel = $this->getModule(); - $linkTypes = array('LISTVIEWMASSACTION'); - $links = array(); - - $massActionLinks[] = array( - 'linktype' => 'LISTVIEWMASSACTION', - 'linklabel' => 'LBL_DELETE', - 'linkurl' => 'javascript:Vtiger_List_Js.massDeleteRecords("index.php?module='.$moduleModel->get('name').'&action=MassDelete");', - 'linkicon' => '' - ); - - foreach($massActionLinks as $massActionLink) { - $links['LISTVIEWMASSACTION'][] = Vtiger_Link_Model::getInstanceFromValues($massActionLink); - } - - return $links; - } - - /** - * Static Function to get the Instance of Vtiger ListView model for a given module and custom view - * @param <String> $moduleName - Module Name - * @param <Number> $viewId - Custom View Id - * @return Vtiger_ListView_Model instance - */ - public static function getInstance($moduleName, $viewId = 0) { - $db = PearDatabase::getInstance(); - $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'ListView', $moduleName); - $instance = new $modelClassName(); - - $moduleModel = Vtiger_Module_Model::getInstance($moduleName); - return $instance->set('module', $moduleModel); - } - - /** - * Function to get the list view header - * @return <Array> - List of Vtiger_Field_Model instances - */ - public function getListViewHeaders() { - $fieldObjects = array(); - $listViewHeaders = array('Template Name' => 'templatename', 'Subject' => 'subject'); - foreach ($listViewHeaders as $key => $fieldName) { - $fieldModel = new EmailTemplates_Field_Model(); - $fieldModel->set('name', $fieldName); - $fieldModel->set('label', $key); - $fieldModel->set('column', $fieldName); - $fieldObjects[] = $fieldModel; - } - return $fieldObjects; - } - - /** - * Function to get the list view entries - * @param Vtiger_Paging_Model $pagingModel - * @return <Array> - Associative array of record id mapped to Vtiger_Record_Model instance. - */ - - public function getListViewEntries($pagingModel) { - $db = PearDatabase::getInstance(); - $startIndex = $pagingModel->getStartIndex(); - $pageLimit = $pagingModel->getPageLimit(); - $orderBy = $this->getForSql('orderby'); - $sortOrder = $this->getForSql('sortorder'); - $moduleModel = $this->getModule(); - - $listQuery = $this->getQuery(); - $searchKey = $this->get('search_key'); - $searchValue = $this->get('search_value'); - - if(!empty($searchKey) && !empty($searchValue)) { - $listQuery .= " WHERE $searchKey LIKE '$searchValue%'"; - } - if (!empty($orderBy) && $orderBy === 'smownerid') { - $fieldModel = Vtiger_Field_Model::getInstance('assigned_user_id', $moduleModel); - if ($fieldModel->getFieldDataType() == 'owner') { - $orderBy = 'COALESCE(CONCAT(vtiger_users.first_name,vtiger_users.last_name),vtiger_groups.groupname)'; - } - } - if ($orderBy) { - $listQuery .= " ORDER BY $orderBy $sortOrder"; - } - $listQuery .= " LIMIT $startIndex,".($pageLimit+1); - - $result = $db->pquery($listQuery, array()); - $num_rows = $db->num_rows($result); - - $listViewRecordModels = array(); - for ($i = 0; $i < $num_rows; $i++) { - $recordModel = new EmailTemplates_Record_Model(); - $recordModel->setModule('EmailTemplates'); - $row = $db->query_result_rowdata($result, $i); - $listViewRecordModels[$row['templateid']] = $recordModel->setData($row); - } - - $pagingModel->calculatePageRange($listViewRecordModels); - - if($num_rows > $pageLimit){ - array_pop($listViewRecordModels); - $pagingModel->set('nextPageExists', true); - }else{ - $pagingModel->set('nextPageExists', false); - } - - return $listViewRecordModels; - } - - /** - * Function to get the list of listview links for the module - * @param <Array> $linkParams - * @return <Array> - Associate array of Link Type to List of Vtiger_Link_Model instances - */ - public function getListViewLinks($linkParams) { - $moduleModel = $this->getModule(); - - $linkTypes = array('LISTVIEWBASIC', 'LISTVIEW', 'LISTVIEWSETTING'); - $links = Vtiger_Link_Model::getAllByType($moduleModel->getId(), $linkTypes, $linkParams); - - $basicLinks = array( - array( - 'linktype' => 'LISTVIEWBASIC', - 'linklabel' => 'LBL_ADD_RECORD', - 'linkurl' => $moduleModel->getCreateRecordUrl(), - 'linkicon' => '' - ) - ); - foreach($basicLinks as $basicLink) { - $links['LISTVIEWBASIC'][] = Vtiger_Link_Model::getInstanceFromValues($basicLink); - } - - return $links; - } - - function getQuery() { - $listQuery = 'SELECT templateid, templatename, foldername, subject FROM vtiger_emailtemplates'; - return $listQuery; - } - - /** - * Function to get the list view entries - * @param Vtiger_Paging_Model $pagingModel - * @return <Array> - Associative array of record id mapped to Vtiger_Record_Model instance. - */ - public function getListViewCount() { - $db = PearDatabase::getInstance(); - - $listQuery = $this->getQuery(); - - $position = stripos($listQuery, 'from'); - if ($position) { - $split = preg_split('/from/i', $listQuery); - $splitCount = count($split); - $listQuery = 'SELECT count(*) AS count '; - for ($i=1; $i<$splitCount; $i++) { - $listQuery = $listQuery. ' FROM ' .$split[$i]; - } - } - $searchKey = $this->get('search_key'); - $searchValue = $this->get('search_value'); - - if(!empty($searchKey) && !empty($searchValue)) { - $listQuery .= " WHERE $searchKey LIKE '$searchValue%'"; - } - - $listResult = $db->pquery($listQuery, array()); - return $db->query_result($listResult, 0, 'count'); - } - -} \ No newline at end of file diff --git a/pkg/vtiger/modules/EmailTemplates/models/Module.php b/pkg/vtiger/modules/EmailTemplates/models/Module.php deleted file mode 100755 index fd9dce4c4e32fa3e030299d320482f98e1f10600..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/EmailTemplates/models/Module.php +++ /dev/null @@ -1,229 +0,0 @@ -<?php - -/* +*********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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 EmailTemplates_Module_Model extends Vtiger_Module_Model { - - /** - * Function to get Alphabet Search Field - */ - public function getAlphabetSearchField() { - return 'templatename'; - } - - /** - * Function to get the url for the Create Record view of the module - * @return <String> - url - */ - public function getCreateRecordUrl() { - return 'index.php?module=' . $this->get('name') . '&view=' . $this->getEditViewName(); - } - - /** - * Function to save a given record model of the current module - * @param EmailtTemplates_Record_Model $recordModel - * @return <integer> template id - */ - public function saveRecord($recordModel) { - $db = PearDatabase::getInstance(); - $templateid = $recordModel->getId(); - if(empty($templateid)){ - $templateid = $db->getUniqueID('vtiger_emailtemplates'); - $sql = "INSERT INTO vtiger_emailtemplates(templatename, subject, description, body, deleted, templateid) VALUES (?,?,?,?,?,?)"; - }else{ - $sql = "UPDATE vtiger_emailtemplates SET templatename=?, subject=?, description=?, body=?, deleted=? WHERE templateid = ?"; - } - $params = array(decode_html($recordModel->get('templatename')), decode_html($recordModel->get('subject')), - decode_html($recordModel->get('description')), $recordModel->get('body'), 0, $templateid); - $db->pquery($sql, $params); - return $recordModel->setId($templateid); - } - - /** - * Function to delete the email template - * @param type $recordIds - */ - public function deleteRecord($recordModel) { - $recordId = $recordModel->getId(); - $db = PearDatabase::getInstance(); - $db->pquery('DELETE FROM vtiger_emailtemplates WHERE templateid = ? ', array($recordId)); - } - - /** - * Function to delete all the email templates - * @param type $recordIds - */ - public function deleteAllRecords() { - $db = PearDatabase::getInstance(); - $db->pquery('DELETE FROM vtiger_emailtemplates', array()); - } - - /** - * Function to get Email template fields from modules - * @return <array> template fields - */ - public function getAllModuleEmailTemplateFields() { - $currentUserModel = Users_Record_Model::getCurrentUserModel(); - $allModuleList = $this->getAllModuleList(); - $allRelFields = array(); - foreach ($allModuleList as $index => $module) { - if($module == 'Users'){ - $fieldList = $this->getRelatedModuleFieldList($module, $currentUserModel); - }else{ - $fieldList = $this->getRelatedFields($module, $currentUserModel); - } - foreach ($fieldList as $key => $field) { - $option = array(vtranslate($field['module'], $field['module']) . ':' . vtranslate($field['fieldlabel'], $field['module']), "$" . strtolower($field['module']) . "-" . $field['columnname'] . "$"); - $allFields[] = $option; - if (!empty($field['referencelist'])) { - foreach ($field['referencelist'] as $key => $relField) { - $relOption = array(vtranslate($field['fieldlabel'], $field['module']) . ':' . '(' . vtranslate($relField['module'], $relField['module']) . ')' . vtranslate($relField['fieldlabel'],$relField['module']), "$" . strtolower($field['module']) . "-" . $field['columnname'] . ":" . $relField['columnname'] . "$"); - $allRelFields[] = $relOption; - } - } - } - if(is_array($allFields) && is_array($allRelFields)){ - $allFields = array_merge($allFields, $allRelFields); - $allRelFields=""; - } - $allOptions[vtranslate($module, $module)] = $allFields; - $allFields = ""; - } - - $option = array(vtranslate('LBL_CURRENT_DATE'), '$custom-currentdate$'); - $allFields[] = $option; - $option = array(vtranslate('LBL_CURRENT_TIME'), '$custom-currenttime$'); - $allFields[] = $option; - $allOptions['generalFields'] = $allFields; - return $allOptions; - } - - /** - * Function to get module fields - * @param type $module - * @param type $currentUserModel - * @return <arrau> - */ - function getRelatedFields($module, $currentUserModel) { - $handler = vtws_getModuleHandlerFromName($module, $currentUserModel); - $meta = $handler->getMeta(); - $moduleFields = $meta->getModuleFields(); - - $returnData = array(); - foreach ($moduleFields as $key => $field) { - $referencelist = array(); - $relatedField = $field->getReferenceList(); - if ($field->getFieldName() == 'assigned_user_id') { - $relModule = 'Users'; - $referencelist = $this->getRelatedModuleFieldList($relModule, $currentUserModel); - } - if (!empty($relatedField)) { - foreach ($relatedField as $ind => $relModule) { - $referencelist = $this->getRelatedModuleFieldList($relModule, $currentUserModel); - } - } - $returnData[] = array('module' => $module, 'fieldname' => $field->getFieldName(), 'columnname' => $field->getColumnName(), 'fieldlabel' => $field->getFieldLabelKey(), 'referencelist' => $referencelist); - - } - return $returnData; - } - - /** - * Function to get related module fields - * @param type $relModule - * @param type $user - * @return null - */ - - function getRelatedModuleFieldList($relModule, $user) { - $handler = vtws_getModuleHandlerFromName($relModule, $user); - $relMeta = $handler->getMeta(); - if (!$relMeta->isModuleEntity()) { - return null; - } - $relModuleFields = $relMeta->getModuleFields(); - $relModuleFieldList = array(); - foreach ($relModuleFields as $relind => $relModuleField) { - if($relModule == 'Users') { - if($relModuleField->getFieldDataType() == 'string' || $relModuleField->getFieldDataType() == 'email' || $relModuleField->getFieldDataType() == 'phone') { - $skipFields = array(98,115,116,31,32); - if(!in_array($relModuleField->getUIType(), $skipFields) && $relModuleField->getFieldName() != 'asterisk_extension'){ - $relModuleFieldList[] = array('module' => $relModule, 'fieldname' => $relModuleField->getFieldName(), 'columnname' => $relModuleField->getColumnName(), 'fieldlabel' => $relModuleField->getFieldLabelKey()); - } - } - } else { - $relModuleFieldList[] = array('module' => $relModule, 'fieldname' => $relModuleField->getFieldName(), 'columnname' => $relModuleField->getColumnName(), 'fieldlabel' => $relModuleField->getFieldLabelKey()); - } - } - return $relModuleFieldList; - } - - /** - * Function to get module list which has the email field. - * @return type - */ - public function getAllModuleList(){ - $db = PearDatabase::getInstance(); - - $query = 'SELECT DISTINCT(name) AS modulename FROM vtiger_tab - LEFT JOIN vtiger_field ON vtiger_field.tabid = vtiger_tab.tabid - WHERE vtiger_field.uitype = ?'; - $result = $db->pquery($query, array(13)); - $num_rows = $db->num_rows($result); - $moduleList = array(); - for($i=0; $i<$num_rows; $i++){ - $moduleList[] = $db->query_result($result, $i, 'modulename'); - } - return $moduleList; - } - - /** - * Function to get the Quick Links for the module - * @param <Array> $linkParams - * @return <Array> List of Vtiger_Link_Model instances - */ - public function getSideBarLinks($linkParams) { - $linkTypes = array('SIDEBARLINK', 'SIDEBARWIDGET'); - $links = Vtiger_Link_Model::getAllByType($this->getId(), $linkTypes, $linkParams); - - $quickLinks = array( - array( - 'linktype' => 'SIDEBARLINK', - 'linklabel' => 'LBL_RECORDS_LIST', - 'linkurl' => $this->getDefaultUrl(), - 'linkicon' => '', - ), - ); - foreach($quickLinks as $quickLink) { - $links['SIDEBARLINK'][] = Vtiger_Link_Model::getInstanceFromValues($quickLink); - } - return $links; - } - - public function getRecordIds($skipRecords){ - $db = PearDatabase::getInstance(); - - $query = 'SELECT templateid FROM vtiger_emailtemplates WHERE templateid NOT IN ('.generateQuestionMarks($skipRecords).')'; - $result = $db->pquery($query, $skipRecords); - $num_rows = $db->num_rows($result); - $recordIds = array(); - for($i; $i<$num_rows; $i++){ - $recordIds[] = $db->query_result($result, $i, 'templateid'); - } - return $recordIds; - } - - /** - * Funxtion to identify if the module supports quick search or not - */ - public function isQuickSearchEnabled() { - return false; - } -} \ No newline at end of file diff --git a/pkg/vtiger/modules/EmailTemplates/models/Record.php b/pkg/vtiger/modules/EmailTemplates/models/Record.php deleted file mode 100755 index 07af22c2a5217335fda7fdde4f9b4d69f2926217..0000000000000000000000000000000000000000 --- a/pkg/vtiger/modules/EmailTemplates/models/Record.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php -/*+*********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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 EmailTemplates_Record_Model extends Vtiger_Record_Model { - - /** - * Function to get the id of the record - * @return <Number> - Record Id - */ - public function getId() { - return $this->get('templateid'); - } - - /** - * Function to set the id of the record - * @param <type> $value - id value - * @return <Object> - current instance - */ - public function setId($value) { - return $this->set('templateid',$value); - } - - /** - * Function to delete the email template - * @param type $recordIds - */ - public function delete(){ - $this->getModule()->deleteRecord($this); - } - - /** - * Function to delete all the email templates - * @param type $recordIds - */ - public function deleteAllRecords(){ - $this->getModule()->deleteAllRecords(); - } - - /** - * Function to get template fields - * To get the fields from module, which has the email field - * @return <arrray> template fields - */ - public function getEmailTemplateFields(){ - return $this->getModule()->getAllModuleEmailTemplateFields(); - } - - /** - * Function to get the Email Template Record - * @param type $record - * @return <EmailTemplate_Record_Model> - */ - - public function getTemplateData($record){ - return $this->getModule()->getTemplateData($record); - } - - /** - * Function to get the Detail View url for the record - * @return <String> - Record Detail View Url - */ - public function getDetailViewUrl() { - $module = $this->getModule(); - return 'index.php?module='.$this->getModuleName().'&view='.$module->getDetailViewName().'&record='.$this->getId(); - } - - /** - * Function to get the instance of Custom View module, given custom view id - * @param <Integer> $cvId - * @return CustomView_Record_Model instance, if exists. Null otherwise - */ - public static function getInstanceById($templateId, $module=null) { - $db = PearDatabase::getInstance(); - $sql = 'SELECT * FROM vtiger_emailtemplates WHERE templateid = ?'; - $params = array($templateId); - $result = $db->pquery($sql, $params); - if($db->num_rows($result) > 0) { - $row = $db->query_result_rowdata($result, 0); - $recordModel = new self(); - return $recordModel->setData($row)->setModule('EmailTemplates'); - } - return null; - } - -} diff --git a/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/models/Module.php b/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/models/Module.php index 6e3e1dd3c16adcc747735429e810963f3653efb6..8b56e142fdaae71cc80f3a7fd7d03c0349020c71 100644 --- a/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/models/Module.php +++ b/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/models/Module.php @@ -101,6 +101,7 @@ class EmailTemplates_Module_Model extends Vtiger_Module_Model { }else{ $fieldList = $this->getRelatedFields($module, $currentUserModel); } + $allFields = array(); foreach ($fieldList as $key => $field) { $option = array(vtranslate($field['module'], $field['module']) . ':' . vtranslate($field['fieldlabel'], $field['module']), "$" . strtolower($field['module']) . "-" . $field['columnname'] . "$"); $allFields[] = $option; @@ -115,10 +116,10 @@ class EmailTemplates_Module_Model extends Vtiger_Module_Model { } if(is_array($allFields) && is_array($allRelFields)){ $allFields = array_merge($allFields, $allRelFields); - $allRelFields=""; + $allRelFields= array(); } $allOptions[$module] = $allFields; - $allFields = ""; + $allFields = array(); } return $allOptions; } @@ -362,4 +363,4 @@ class EmailTemplates_Module_Model extends Vtiger_Module_Model { function isFilterColumnEnabled() { return false; } -} \ No newline at end of file +} diff --git a/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/views/Detail.php b/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/views/Detail.php index 81325f82545a4d8e9456b694b190a56bd010ff2d..484363abe2f1402ae0dd011e085c06d9de2d7f36 100644 --- a/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/views/Detail.php +++ b/pkg/vtiger/modules/EmailTemplates/modules/EmailTemplates/views/Detail.php @@ -60,6 +60,9 @@ class EmailTemplates_Detail_View extends Vtiger_Index_View { $viewer->assign('RECORD', $recordModel); $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); $viewer->assign('MODULE_NAME', $moduleName); + if ($request->isAjax()) { + $viewer->assign('MODULE_MODEL', $recordModel->getModule()); + } $viewer->view('DetailViewFullContents.tpl', $moduleName); } @@ -79,4 +82,4 @@ class EmailTemplates_Detail_View extends Vtiger_Index_View { $headerScriptInstances = array_merge($headerScriptInstances, $jsScriptInstances); return $headerScriptInstances; } -} \ No newline at end of file +} diff --git a/pkg/vtiger/modules/ExtensionStore/settings/actions/Basic.php b/pkg/vtiger/modules/ExtensionStore/settings/actions/Basic.php index d12bf1d0633ca5e1a48474f2dfbd964bfd691147..ebb8699b33807ae935af78c14583983321f7d328 100644 --- a/pkg/vtiger/modules/ExtensionStore/settings/actions/Basic.php +++ b/pkg/vtiger/modules/ExtensionStore/settings/actions/Basic.php @@ -21,6 +21,7 @@ class Settings_ExtensionStore_Basic_Action extends Settings_Vtiger_IndexAjax_Vie $this->exposeMethod('updateTrialMode'); $this->exposeMethod('updateCardDetails'); $this->exposeMethod('logoutMarketPlace'); + $this->exposeMethod('forgotPassword'); } function process(Vtiger_Request $request) { @@ -157,11 +158,8 @@ class Settings_ExtensionStore_Basic_Action extends Settings_Vtiger_IndexAjax_Vie $options['savePassword'] = ($request->get('savePassword') == 'true') ? true : false; $options['password'] = md5($options['password']); $profieInfo = $modelInstance->login($options); - } elseif ($userAction == 'register') { - $options['savePassword'] = $request->get('savePassword'); - $options['password'] = $options['password']; - $profieInfo = $modelInstance->register($options); } + $response = new Vtiger_Response(); if ($profieInfo['success'] != 'true') { $response->setError('', $profieInfo['error']); @@ -204,6 +202,20 @@ class Settings_ExtensionStore_Basic_Action extends Settings_Vtiger_IndexAjax_Vie $response->emit(); } + public function forgotPassword(Vtiger_Request $request) { + $response = new Vtiger_Response(); + $qualifiedModuleName = $request->getModule(false); + $modelInstance = $this->getModelInstance(); + $forgotPasswordRes = $modelInstance->forgotPassword($request->getAll()); + if ($forgotPasswordRes['success']) { + $response->setResult(array('message' => vtranslate('LBL_RESET_PASSWORD_LINK_EMAILED', $qualifiedModuleName))); + } else { + $response->setError('', $forgotPasswordRes['error']); + } + + $response->emit(); + } + public function validateRequest(Vtiger_Request $request) { $request->validateWriteAccess(); } diff --git a/pkg/vtiger/modules/ExtensionStore/settings/connectors/ExtnStore.php b/pkg/vtiger/modules/ExtensionStore/settings/connectors/ExtnStore.php index aab4dac2027744d4c50fef5d263855620d2138fb..c6abbc941c32dd39a07022d8ba7072d0a8e03b63 100644 --- a/pkg/vtiger/modules/ExtensionStore/settings/connectors/ExtnStore.php +++ b/pkg/vtiger/modules/ExtensionStore/settings/connectors/ExtnStore.php @@ -371,7 +371,7 @@ class Settings_ExtensionStore_ExtnStore_Connector { try { $this->auth = $this->api('/app/customer', 'POST', $signupParams, false); if ($this->auth) { - $this->persistLogin($this->auth['email'], $this->auth['password'], false); + $this->persistLogin($this->auth['email'], md5($this->auth['password']), false); } return array('success' => true, 'result' => $this->auth); } catch (Exception $ex) { @@ -483,4 +483,15 @@ class Settings_ExtensionStore_ExtnStore_Connector { return array('success' => false, 'error' => $ex->getMessage()); } } + + public function forgotPassword($emailAddress) { + $params = array('email' => $emailAddress); + try { + $response = $this->api('/app/forgotpassword', 'POST', $params, false); + return array('success' => true, 'result' => $response); + } catch (Exception $ex) { + return array('success' => false, 'error' => $ex->getMessage()); + } + } + } diff --git a/pkg/vtiger/modules/ExtensionStore/settings/models/Extension.php b/pkg/vtiger/modules/ExtensionStore/settings/models/Extension.php index cededb6fae0618338461580d62f6fa9c25f534f8..2a77986d4c88f4ecde3e33453bfc132dbb0e162b 100644 --- a/pkg/vtiger/modules/ExtensionStore/settings/models/Extension.php +++ b/pkg/vtiger/modules/ExtensionStore/settings/models/Extension.php @@ -136,9 +136,9 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { } public static function getLanguageInstance($lang) { - $sql = 'SELECT id,name,prefix FROM vtiger_language WHERE name = ?'; + $sql = 'SELECT id,name,prefix FROM vtiger_language WHERE name = ? OR prefix = ?'; $db = PearDatabase::getInstance(); - $result = $db->pquery($sql, array($lang)); + $result = $db->pquery($sql, array($lang, $lang)); if ($db->num_rows($result) > 0) { $instance = new self(); $row = $db->query_result_rowdata($result, 0); @@ -205,9 +205,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { * Function to get max created on promotion */ public function getMaxCreatedOn($type = 'Extension', $function, $field) { - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $listings = $connector->getMaxCreatedOn($type, $function, $field); return $listings; } @@ -215,9 +214,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { public function getNews() { $news = array(); - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $news = $connector->getNews(); } return $news; @@ -230,9 +228,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { */ public function getListings($id = null, $type = 'Extension') { $extensionModelsList = array(); - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $listings = $connector->getListings($id, $type); if ($listings['success']) { @@ -254,9 +251,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { */ public function getExtensionListings($extensionId) { $extensionModelsList = array(); - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $listings = $connector->getListings($extensionId); if ($listings['success']) { $listing = $listings['response']; @@ -282,14 +278,15 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { $downloadURL = $downloadURL.'&mode=Trial'; } if ($downloadURL) { - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); - $response = $connector->download($downloadURL); - if ($response['success']) { - file_put_contents($targetFileName, $response['response']); - return array('success' => true); - } else { - return array('success' => false, 'message' => $response['error']); + $connector = $this->getConnector(); + if ($connector) { + $response = $connector->download($downloadURL); + if ($response['success']) { + file_put_contents($targetFileName, $response['response']); + return array('success' => true); + } else { + return array('success' => false, 'message' => $response['error']); + } } } return false; @@ -302,9 +299,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { */ public function findListings($searchTerm = null, $searchType) { $extensionModelsList = array(); - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $listings = $connector->findListings($searchTerm, $searchType); if ($listings['success']) { @@ -322,9 +318,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { } public function getExtensionTable() { - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $tableName = $connector->getExtensionTable(); } return $tableName; @@ -344,9 +339,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { } public function getSessionIdentifier() { - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { return $connector->getSessionIdentifier(); } } @@ -382,9 +376,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { * Function to register user for extension store */ public function signup($options) { - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $response = $connector->signUp($options['emailAddress'], $options['password'], $options['confirmPassword'], $options['firstName'], $options['lastName'], $options['companyName']); return $response; } @@ -403,9 +396,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { * Function to login user to extension store */ public function login($options) { - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $response = $connector->login($options['emailAddress'], $options['password'], $options['savePassword']); return $response; } @@ -415,9 +407,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { * Funstion to get customer reviews based on extension id */ public function getCustomerReviews($extensionId) { - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $response = $connector->getCustomerReviews($extensionId); return $response; } @@ -427,9 +418,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { * Function to post customer reviews */ public function postReview($listing, $comment, $rating) { - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $response = $connector->postReview($listing, $comment, $rating); return $response; } @@ -440,9 +430,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { */ public function getScreenShots($extensionId) { $screenShotListings = array(); - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $listings = $connector->getScreenShots($extensionId); foreach ($listings as $listing) { $screenShotListings[(string) $listing['id']] = $this->getInstanceFromScreenShotArray($listing); @@ -455,9 +444,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { * Function to verify extension purchase */ public function verifyPurchase($listingName) { - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $response = $connector->verifyPurchase($listingName); if ($response == 1) { return true; @@ -470,9 +458,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { * Function to get listing author information */ public function getListingAuthor($extensionId) { - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $authorInfo = $connector->getListingAuthor($extensionId); return $authorInfo; } @@ -482,9 +469,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { * Function to get customer profile details */ public function getProfile() { - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $customerInfo = $connector->getProfile(); return $customerInfo; } @@ -587,9 +573,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { } public function getCustomerDetails($customerId) { - $extensionLookUpUrl = self::getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $customerInfo = $connector->getCustomerDetails($customerId); return $customerInfo; } @@ -599,9 +584,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { * Function to insert card details of registered user */ public function createCard($number, $expmonth, $expyear, $cvc) { - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $response = $connector->createCard($number, $expmonth, $expyear, $cvc); return $response; } @@ -611,9 +595,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { * Function to update card details of registered user */ public function updateCard($number, $expmonth, $expyear, $cvc, $customerId) { - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $response = $connector->updateCard($number, $expmonth, $expyear, $cvc, $customerId); return $response; } @@ -623,9 +606,8 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { * Function to get card details of customer */ public function getCardDetails($cardId) { - $extensionLookUpUrl = $this->getExtensionsLookUpUrl(); - if ($extensionLookUpUrl) { - $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($extensionLookUpUrl); + $connector = $this->getConnector(); + if ($connector) { $response = $connector->getCardDetails($cardId); return $response; } @@ -653,4 +635,25 @@ class Settings_ExtensionStore_Extension_Model extends Vtiger_Base_Model { } } + public function forgotPassword($options) { + $emailAddress = $options['emailAddress']; + if (filter_var($emailAddress, FILTER_VALIDATE_EMAIL)) { + $connector = $this->getConnector(); + if ($connector) { + $response = $connector->forgotPassword($emailAddress); + return $response; + } + } + return array('success' => false, 'error' => 'Invalid EmailAddress!'); + } + + public function getConnector() { + $connector = null; + $url = $this->getExtensionsLookUpUrl(); + if ($url) { + $connector = Settings_ExtensionStore_ExtnStore_Connector::getInstance($url); + } + return $connector; + } + } diff --git a/pkg/vtiger/modules/ExtensionStore/settings/views/ExtensionStore.php b/pkg/vtiger/modules/ExtensionStore/settings/views/ExtensionStore.php index b5e344393b53313161fbf41da2fc1b5eec7839ca..1c4227db35aed0d7330dfff69f95549ed1545da4 100644 --- a/pkg/vtiger/modules/ExtensionStore/settings/views/ExtensionStore.php +++ b/pkg/vtiger/modules/ExtensionStore/settings/views/ExtensionStore.php @@ -12,14 +12,58 @@ include_once dirname(__FILE__).'/../libraries/LoaderSuggest.php'; class Settings_ExtensionStore_ExtensionStore_View extends Settings_Vtiger_Index_View { + protected $registrationStatus = false; + protected $passwordStatus = false; + protected $customerProfile = array(); + protected $customerCardInfo = array(); + public function __construct() { parent::__construct(); + $this->init(); $this->exposeMethod('searchExtension'); $this->exposeMethod('detail'); $this->exposeMethod('installationLog'); $this->exposeMethod('oneClickInstall'); } + protected function init() { + $modelInstance = $this->getModelInstance(); + $this->registrationStatus = $modelInstance->checkRegistration(); + + if ($this->registrationStatus) { + $pwdStatus = false; + $pwdStatus = $modelInstance->passwordStatus(); + if (!$pwdStatus) { + $sessionIdentifer = $modelInstance->getSessionIdentifier(); + $pwd = $_SESSION[$sessionIdentifer.'_password']; + if (!empty($pwd)) { + $pwdStatus = true; + } + } + $this->passwordStatus = $pwdStatus; + } + + if ($this->registrationStatus && $this->passwordStatus) { + $customerProfile = $modelInstance->getProfile(); + /* check if pwd is updated in marketplace by user, then marketplace will + * respond with unauthozied message while getting customer profile. + * So at this time we will remove + * old password from DB and session, So user will login again with new + * password + */ + if ($customerProfile['id']) { + $this->customerProfile = $customerProfile; + $customerCardId = $customerProfile['CustomerCardId']; + if (!empty($customerCardId)) { + $this->customerCardInfo = $modelInstance->getCardDetails($customerCardId); + } + } else { + $modelInstance->unsetPassword(); + $this->passwordStatus = false; + } + } + } + protected function getModelInstance() { if (!isset($this->modelInstance)) { $this->modelInstance = Settings_ExtensionStore_Extension_Model::getInstance(); @@ -27,7 +71,19 @@ class Settings_ExtensionStore_ExtensionStore_View extends Settings_Vtiger_Index_ return $this->modelInstance; } + function preProcess(Vtiger_Request $request) { + parent::preProcess($request, false); + $extensionStoreModuleModel = Settings_ExtensionStore_Module_Model::getInstance(); + $viewer = $this->getViewer($request); + $viewer->assign('MODULE_MODEL', $extensionStoreModuleModel); + $viewer->assign('PASSWORD_STATUS', $this->passwordStatus); + $viewer->assign('CUSTOMER_PROFILE', $this->customerProfile); + $this->preProcessSettings($request, false); + $this->preProcessDisplay($request); + } + public function process(Vtiger_Request $request) { + $modelInstance = $this->getModelInstance(); $mode = $request->getMode(); if (!empty($mode)) { $this->invokeExposedMethod($mode, $request); @@ -36,31 +92,14 @@ class Settings_ExtensionStore_ExtensionStore_View extends Settings_Vtiger_Index_ $viewer = $this->getViewer($request); $qualifiedModuleName = $request->getModule(false); - $modelInstance = $this->getModelInstance(); - $registrationStatus = $modelInstance->checkRegistration(); - if ($registrationStatus) { + if ($this->registrationStatus) { $userName = $modelInstance->getRegisteredUser(); - //check if remember password is enabled - $pwdStatus = $modelInstance->passwordStatus(); - //check if password set in current session - if (!$pwdStatus) { - $sessionIdentifer = $modelInstance->getSessionIdentifier(); - $pwd = $_SESSION[$sessionIdentifer.'_password']; - if (!empty($pwd)) { - $pwdStatus = true; - } - } $viewer->assign('USER_NAME', $userName); } - if ($registrationStatus && $pwdStatus) { - $customerProfile = $modelInstance->getProfile(); - $customerCardId = $customerProfile['CustomerCardId']; - if (!empty($customerCardId)) { - $customerCardDetails = $modelInstance->getCardDetails($customerCardId); - $viewer->assign('CUSTOMER_CARD_INFO', $customerCardDetails); - } - $viewer->assign('CUSTOMER_PROFILE', $customerProfile); + if ($this->registrationStatus && $this->passwordStatus) { + $viewer->assign('CUSTOMER_CARD_INFO', $this->customerCardInfo); + $viewer->assign('CUSTOMER_PROFILE', $this->customerProfile); } $loaderRequired = false; @@ -69,11 +108,11 @@ class Settings_ExtensionStore_ExtensionStore_View extends Settings_Vtiger_Index_ $viewer->assign('LOADER_REQUIRED', $loaderRequired); $viewer->assign('LOADER_INFO', $loaderInfo); - $viewer->assign('PASSWORD_STATUS', $pwdStatus); + $viewer->assign('PASSWORD_STATUS', $this->passwordStatus); $viewer->assign('IS_PRO', true); $viewer->assign('QUALIFIED_MODULE', $qualifiedModuleName); $viewer->assign('EXTENSIONS_LIST', $modelInstance->getListings()); - $viewer->assign('REGISTRATION_STATUS', $registrationStatus); + $viewer->assign('REGISTRATION_STATUS', $this->registrationStatus); $viewer->view('Index.tpl', $qualifiedModuleName); } @@ -103,22 +142,10 @@ class Settings_ExtensionStore_ExtensionStore_View extends Settings_Vtiger_Index_ $viewer = $this->getViewer($request); $qualifiedModuleName = $request->getModule(false); $modelInstance = $this->getModelInstance(); - $registrationStatus = $modelInstance->checkRegistration(); - if ($registrationStatus) { - $pwdStatus = $modelInstance->passwordStatus(); - if (!$pwdStatus) { - $sessionIdentifer = $modelInstance->getSessionIdentifier(); - $pwd = $_SESSION[$sessionIdentifer.'_password']; - if (!empty($pwd)) { - $pwdStatus = true; - } - } - } - - $viewer->assign('PASSWORD_STATUS', $pwdStatus); + $viewer->assign('PASSWORD_STATUS', $this->passwordStatus); $viewer->assign('IS_PRO', true); - $viewer->assign('REGISTRATION_STATUS', $registrationStatus); + $viewer->assign('REGISTRATION_STATUS', $this->registrationStatus); $viewer->assign('QUALIFIED_MODULE', $qualifiedModuleName); $viewer->assign('EXTENSIONS_LIST', $modelInstance->findListings($searchTerm, $searchType)); $viewer->view('ExtensionModules.tpl', $qualifiedModuleName); @@ -138,30 +165,19 @@ class Settings_ExtensionStore_ExtensionStore_View extends Settings_Vtiger_Index_ $customerReviews = $modelInstance->getCustomerReviews($extensionId); $screenShots = $modelInstance->getScreenShots($extensionId); $authorInfo = $modelInstance->getListingAuthor($extensionId); - $registrationStatus = $modelInstance->checkRegistration(); - - if ($registrationStatus) { - $pwdStatus = $modelInstance->passwordStatus(); - if (!$pwdStatus) { - $sessionIdentifer = $modelInstance->getSessionIdentifier(); - $pwd = $_SESSION[$sessionIdentifer.'_password']; - if (!empty($pwd)) { - $pwdStatus = true; - } - } - $viewer->assign('PASSWORD_STATUS', $pwdStatus); - } - if ($registrationStatus && $pwdStatus) { - $customerProfile = $modelInstance->getProfile(); - $customerCardId = $customerProfile['CustomerCardId']; - if (!empty($customerCardId)) { - $customerCardDetails = $modelInstance->getCardDetails($customerCardId); - $viewer->assign('CUSTOMER_CARD_INFO', $customerCardDetails); + $viewer->assign('PASSWORD_STATUS', $this->passwordStatus); + $viewer->assign('CUSTOMER_CARD_INFO', $this->customerCardInfo); + $viewer->assign('CUSTOMER_PROFILE', $this->customerProfile); + + if ($request->get('extensionName') == 'Payments') { + $moduleModel = Vtiger_Module_Model::getInstance('Subscription'); + if ($moduleModel && $moduleModel->get('presence') == 0) { + $viewer->assign('CHECK_SUBSCRIPTION', TRUE); } - $viewer->assign('CUSTOMER_PROFILE', $customerProfile); } + $extension = $extensionDetail[$extensionId]; $viewer->assign('IS_PRO', true); $viewer->assign('MODULE_ACTION', $moduleAction); $viewer->assign('SCREEN_SHOTS', $screenShots); @@ -171,7 +187,7 @@ class Settings_ExtensionStore_ExtensionStore_View extends Settings_Vtiger_Index_ $viewer->assign('EXTENSION_MODULE_MODEL', $extension->get('moduleModel')); $viewer->assign('EXTENSION_ID', $extensionId); $viewer->assign('QUALIFIED_MODULE', $qualifiedModuleName); - $viewer->assign('REGISTRATION_STATUS', $registrationStatus); + $viewer->assign('REGISTRATION_STATUS', $this->registrationStatus); $viewer->view('Detail.tpl', $qualifiedModuleName); } else { $viewer->assign('EXTENSION_LABEL', $extension->get('label')); @@ -242,6 +258,7 @@ class Settings_ExtensionStore_ExtensionStore_View extends Settings_Vtiger_Index_ $package = new Vtiger_Package(); } + $viewer->assign('EXTENSION_NAME', $targetModuleName); $viewer->assign('MODULE_ACTION', $moduleAction); $viewer->assign('MODULE_PACKAGE', $package); $viewer->assign('TARGET_MODULE_INSTANCE', Vtiger_Module_Model::getInstance($targetModuleName)); @@ -281,8 +298,6 @@ class Settings_ExtensionStore_ExtensionStore_View extends Settings_Vtiger_Index_ } if (!$upgradeError) { if (!$isLanguagePackage) { - $moduleModel = Vtiger_Module_Model::getInstance($importedModuleName); - if (!$extensionModel->isUpgradable()) { $viewer->assign('SAME_VERSION', true); } @@ -313,6 +328,7 @@ class Settings_ExtensionStore_ExtensionStore_View extends Settings_Vtiger_Index_ $package = new Vtiger_Package(); } + $viewer->assign('EXTENSION_NAME', $request->get('extensionName')); $viewer->assign('MODULE_ACTION', $moduleAction); $viewer->assign('MODULE_PACKAGE', $package); $viewer->assign('TARGET_MODULE_INSTANCE', Vtiger_Module_Model::getInstance($targetModuleName)); diff --git a/pkg/vtiger/modules/Google/languages/en_us/Google.php b/pkg/vtiger/modules/Google/languages/en_us/Google.php index ec2e76db46b05543a5649d09ffd616c4e9303773..3f3f77d9057fbb720a67ec357c5660864a7ae307 100644 --- a/pkg/vtiger/modules/Google/languages/en_us/Google.php +++ b/pkg/vtiger/modules/Google/languages/en_us/Google.php @@ -76,7 +76,8 @@ 'LBL_CHANGE_USER' => 'Change User', 'LBL_SAVE_AND_IMPORT' => 'Save and Import', 'LBL_IMPORT_RESULTS_GOOGLE' => 'Google Import results', - + 'LBL_REDIRECT_URL' => 'Redirect url', + 'LBL_REDIRECT_URL_MESSAGE' => 'Copy the following redirect url and paste in your google auth project as image shows', ); $jsLanguageStrings = array( 'LBL_SYNC_BUTTON' => 'Synchronize Now', diff --git a/pkg/vtiger/modules/Google/layouts/v7/modules/Google/ExtensionSettings.tpl b/pkg/vtiger/modules/Google/layouts/v7/modules/Google/ExtensionSettings.tpl index d852dc78c643fbe26d791780ea4a60f3798cc81a..80c98bb5cd6641d9b277b5684f7f9335dae58c5c 100644 --- a/pkg/vtiger/modules/Google/layouts/v7/modules/Google/ExtensionSettings.tpl +++ b/pkg/vtiger/modules/Google/layouts/v7/modules/Google/ExtensionSettings.tpl @@ -1,140 +1,152 @@ {*+********************************************************************************** - * 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. - ************************************************************************************} +* 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. +*************************************************************************************} + {assign var=RETURN_URL value={$MODULE_MODEL->getExtensionSettingsUrl($SOURCEMODULE)}} {if $PARENT eq 'Settings'} - {assign var=RETURN_URL value=$MODULE_MODEL->getExtensionSettingsUrl($SOURCEMODULE)|cat:"&parent=Settings"} + {assign var=RETURN_URL value=$MODULE_MODEL->getExtensionSettingsUrl($SOURCEMODULE)|cat:"&parent=Settings"} {/if} <input type="hidden" name="settingsPage" value="{$RETURN_URL}"> <div class="col-sm-12 col-xs-12 extensionContents"> - <div class="row"> - <div class="col-sm-12 col-xs-12"> - <h3 class="module-title pull-left"> {vtranslate('LBL_SELECT_MODULES_TO_SYNC', $MODULE)} </h3> - </div> - </div> - <br> - <form name="settingsForm" action="index.php" method="POST" > - <input type="hidden" name="module" value="{$MODULE}" /> - <input type="hidden" name="action" value="SaveSyncSettings" /> - <input type="hidden" name="sourceModule" value="{$SOURCEMODULE}" /> - <input type="hidden" name="parent" value="{$PARENT}"> - <div class="row"> - <div class="col-sm-12 col-xs-12"> - <table class="listview-table table-bordered" align="center"> - <thead> - <th> {vtranslate($MODULE, $MODULE)} {vtranslate('LBL_DATA', $MODULE)} </th> - <th> {vtranslate('APPTITLE', $MODULE)} {vtranslate('LBL_DATA', $MODULE)} </th> - <th> {vtranslate('LBL_FIELD_MAPPING', $MODULE)} </th> - <th> {vtranslate('LBL_ENABLE_SYNC', $MODULE)} </th> - <th> {vtranslate('LBL_SYNC_DIRECTION', $MODULE)} </th> - </thead> - <tbody> - <tr> - <td> - <select name="Contacts[google_group]" class="inputElement select2 row" style="min-width: 250px;"> - <option value="all">{vtranslate('LBL_ALL',$MODULENAME)}</option> - {assign var=IS_GROUP_DELETED value=1} - {foreach item=ENTRY from=$GOOGLE_CONTACTS_GROUPS['entry']} - <option value="{$ENTRY['id']}" {if $ENTRY['id'] eq $SELECTED_CONTACTS_GROUP} {assign var=IS_GROUP_DELETED value=0} selected {/if}>{$ENTRY['title']}</option> - {/foreach} - {if $IS_GROUP_DELETED && $SELECTED_CONTACTS_GROUP != 'all'} - {if $SELECTED_CONTACTS_GROUP != ''}<option value="none" selected>{vtranslate('LBL_NONE',$MODULENAME)}</option>{/if} - {/if} - </select> - </td> - <td>{vtranslate('Contacts', 'Contacts')}</td> - <td><a id="syncSetting" class="extensionLink" data-sync-module="Contacts">{vtranslate('LBL_CONFIGURE', $MODULE)}</a></td> - <td><input name="Contacts[enabled]" type="checkbox" {if $CONTACTS_ENABLED} checked {/if}></td> - <td> - <select name="Contacts[sync_direction]" class="inputElement select2 row" style="min-width: 250px;"> - <option value="11" {if $CONTACTS_SYNC_DIRECTION eq 11} selected {/if}> {vtranslate('LBL_SYNC_BOTH_WAYS', $MODULE)} </option> - <option value="10" {if $CONTACTS_SYNC_DIRECTION eq 10} selected {/if}> {vtranslate('LBL_SYNC_FROM_GOOGLE_TO_VTIGER', $MODULE)} </option> - <option value="01" {if $CONTACTS_SYNC_DIRECTION eq 01} selected {/if}> {vtranslate('LBL_SYNC_FROM_VTIGER_TO_GOOGLE', $MODULE)} </option> - </select> - </td> - </tr> - <tr> - <td> - <select name="Calendar[google_group]" class="inputElement select2 row" style="min-width: 250px;"> - {if count($GOOGLE_CALENDARS) eq 0} - <option value="primary">{vtranslate('LBL_PRIMARY',$MODULENAME)}</option> - {/if} - {foreach item=CALENDAR_ITEM from=$GOOGLE_CALENDARS} - <option value="{if $CALENDAR_ITEM['primary'] eq 1}primary{else}{$CALENDAR_ITEM['id']}{/if}" {if $SELECTED_GOOGLE_CALENDAR eq $CALENDAR_ITEM['id']}selected{/if} {if $SELECTED_GOOGLE_CALENDAR eq 'primary' && $CALENDAR_ITEM['primary'] eq 1} selected {/if}>{$CALENDAR_ITEM['summary']}</option> - {/foreach} - </select> - </td> - <td>{vtranslate('Calendar', 'Calendar')}</td> - <td><a id="syncSetting" class="extensionLink" data-sync-module="Calendar">{vtranslate('LBL_VIEW', $MODULE)}</a></td> - <td><input name="Calendar[enabled]" type="checkbox" {if $CALENDAR_ENABLED} checked {/if}></td> - <td> - <select name="Calendar[sync_direction]" class="inputElement select2 row" style="min-width: 250px;"> - <option value="11" {if $CALENDAR_SYNC_DIRECTION eq 11} selected {/if}> {vtranslate('LBL_SYNC_BOTH_WAYS', $MODULE)} </option> - <option value="10" {if $CALENDAR_SYNC_DIRECTION eq 10} selected {/if}> {vtranslate('LBL_SYNC_FROM_GOOGLE_TO_VTIGER', $MODULE)} </option> - <option value="01" {if $CALENDAR_SYNC_DIRECTION eq 01} selected {/if}> {vtranslate('LBL_SYNC_FROM_VTIGER_TO_GOOGLE', $MODULE)} </option> - </select> - </td> - </tr> - </tbody> - </table> - </div> - <div id="scroller_wrapper" class="bottom-fixed-scroll"> - <div id="scroller" class="scroller-div"></div> - </div> - <div class="col-sm-2 col-xs-2"> - </div> - </div> - <br> - {if !$IS_SYNC_READY} - <div class="row"> - <div class="col-sm-12 col-xs-12"> - <h3 class="module-title pull-left"> {vtranslate('LBL_GOOGLE_CONNECT_MSG', $MODULE)} </h3> - </div> - </div> - <br> - <div class="row"> - <div class="col-sm-3 col-xs-3"> - <a id="authorizeButton" class="btn btn-block btn-social btn-lg btn-google-plus" data-url='index.php?module={$MODULE}&view=List&operation=sync&sourcemodule={$SOURCEMODULE}'><i class="fa fa-google-plus"></i>{vtranslate('LBL_SIGN_IN_WITH_GOOGLE', $MODULE)}</a> - </div> - </div> - {else} - <div class="row"> - <div class="col-sm-12 col-xs-12"> - <h3 class="module-title pull-left"> {vtranslate('LBL_GOOGLE_ACCOUNT_DETAILS', $MODULE)} </h3> - </div> - </div> - <br> - {if $USER_EMAIL} - <div class="row"> - <div class="col-sm-3 col-xs-3"> - <h5 class="module-title pull-left fieldLabel"> {vtranslate('LBL_GOOGLE_ACCOUNT_SYNCED_WITH', $MODULE)} </h5> - </div> - <div class="col-sm-4 col-xs-4"> - <input class="listSearchContributor col-sm-12 col-xs-12" type="text" value="{$USER_EMAIL}" disabled="disabled" style="height: 30px;"> - </div> - </div> - {/if} - <div class="row" style="margin-top: 10px;"> - <div class="col-sm-3 col-xs-3"> - - </div> - <div class="col-sm-3 col-xs-3"> - <a id="authorizeButton" class="btn btn-block btn-social btn-lg btn-google-plus" data-url='index.php?module={$MODULE}&view=List&operation=changeUser&sourcemodule={$SOURCEMODULE}'><i class="fa fa-google-plus"></i> {vtranslate('LBL_CHANGE_USER', $MODULE)} </a> - </div> - </div> - {/if} - <div style="margin-top: 8%;"> - <div> - <button id="saveSettings" type="submit" class="btn btn-success saveButton">{vtranslate('LBL_SAVE_SETTINGS', $MODULENAME)}</button> - {if $PARENT neq 'Settings'} - <a type="reset" data-url="{$MODULE_MODEL->getBaseExtensionUrl($SOURCEMODULE)}" class="cancelLink navigationLink">{vtranslate('LBL_CANCEL', $MODULENAME)}</a> - {/if} - </div> - </div> - </form> + <div class="row"> + <div class="col-sm-12 col-xs-12"> + <h3 class="module-title pull-left"> {vtranslate('LBL_SELECT_MODULES_TO_SYNC', $MODULE)} </h3> + </div> + </div> + <br> + <form name="settingsForm" action="index.php" method="POST" > + <input type="hidden" name="module" value="{$MODULE}" /> + <input type="hidden" name="action" value="SaveSyncSettings" /> + <input type="hidden" name="sourceModule" value="{$SOURCEMODULE}" /> + <input type="hidden" name="parent" value="{$PARENT}"> + <div class="row"> + <div class="col-sm-12 col-xs-12"> + <table class="listview-table table-bordered" align="center"> + <thead> + <th> {vtranslate($MODULE, $MODULE)} {vtranslate('LBL_DATA', $MODULE)} </th> + <th> {vtranslate('APPTITLE', $MODULE)} {vtranslate('LBL_DATA', $MODULE)} </th> + <th> {vtranslate('LBL_FIELD_MAPPING', $MODULE)} </th> + <th> {vtranslate('LBL_ENABLE_SYNC', $MODULE)} </th> + <th> {vtranslate('LBL_SYNC_DIRECTION', $MODULE)} </th> + </thead> + <tbody> + <tr> + <td> + <select name="Contacts[google_group]" class="inputElement select2 row" style="min-width: 250px;"> + <option value="all">{vtranslate('LBL_ALL',$MODULENAME)}</option> + {assign var=IS_GROUP_DELETED value=1} + {foreach item=ENTRY from=$GOOGLE_CONTACTS_GROUPS['entry']} + <option value="{$ENTRY['id']}" {if $ENTRY['id'] eq $SELECTED_CONTACTS_GROUP} {assign var=IS_GROUP_DELETED value=0} selected {/if}>{$ENTRY['title']}</option> + {/foreach} + {if $IS_GROUP_DELETED && $SELECTED_CONTACTS_GROUP != 'all'} + {if $SELECTED_CONTACTS_GROUP != ''}<option value="none" selected>{vtranslate('LBL_NONE',$MODULENAME)}</option>{/if} + {/if} + </select> + </td> + <td>{vtranslate('Contacts', 'Contacts')}</td> + <td><a id="syncSetting" class="extensionLink" data-sync-module="Contacts">{vtranslate('LBL_CONFIGURE', $MODULE)}</a></td> + <td><input name="Contacts[enabled]" type="checkbox" {if $CONTACTS_ENABLED} checked {/if}></td> + <td> + <select name="Contacts[sync_direction]" class="inputElement select2 row" style="min-width: 250px;"> + <option value="11" {if $CONTACTS_SYNC_DIRECTION eq 11} selected {/if}> {vtranslate('LBL_SYNC_BOTH_WAYS', $MODULE)} </option> + <option value="10" {if $CONTACTS_SYNC_DIRECTION eq 10} selected {/if}> {vtranslate('LBL_SYNC_FROM_GOOGLE_TO_VTIGER', $MODULE)} </option> + <option value="01" {if $CONTACTS_SYNC_DIRECTION eq 01} selected {/if}> {vtranslate('LBL_SYNC_FROM_VTIGER_TO_GOOGLE', $MODULE)} </option> + </select> + </td> + </tr> + <tr> + <td> + <select name="Calendar[google_group]" class="inputElement select2 row" style="min-width: 250px;"> + {if count($GOOGLE_CALENDARS) eq 0} + <option value="primary">{vtranslate('LBL_PRIMARY',$MODULENAME)}</option> + {/if} + {foreach item=CALENDAR_ITEM from=$GOOGLE_CALENDARS} + <option value="{if $CALENDAR_ITEM['primary'] eq 1}primary{else}{$CALENDAR_ITEM['id']}{/if}" {if $SELECTED_GOOGLE_CALENDAR eq $CALENDAR_ITEM['id']}selected{/if} {if $SELECTED_GOOGLE_CALENDAR eq 'primary' && $CALENDAR_ITEM['primary'] eq 1} selected {/if}>{$CALENDAR_ITEM['summary']}</option> + {/foreach} + </select> + </td> + <td>{vtranslate('Calendar', 'Calendar')}</td> + <td><a id="syncSetting" class="extensionLink" data-sync-module="Calendar">{vtranslate('LBL_VIEW', $MODULE)}</a></td> + <td><input name="Calendar[enabled]" type="checkbox" {if $CALENDAR_ENABLED} checked {/if}></td> + <td> + <select name="Calendar[sync_direction]" class="inputElement select2 row" style="min-width: 250px;"> + <option value="11" {if $CALENDAR_SYNC_DIRECTION eq 11} selected {/if}> {vtranslate('LBL_SYNC_BOTH_WAYS', $MODULE)} </option> + <option value="10" {if $CALENDAR_SYNC_DIRECTION eq 10} selected {/if}> {vtranslate('LBL_SYNC_FROM_GOOGLE_TO_VTIGER', $MODULE)} </option> + <option value="01" {if $CALENDAR_SYNC_DIRECTION eq 01} selected {/if}> {vtranslate('LBL_SYNC_FROM_VTIGER_TO_GOOGLE', $MODULE)} </option> + </select> + </td> + </tr> + </tbody> + </table> + </div> + <div id="scroller_wrapper" class="bottom-fixed-scroll"> + <div id="scroller" class="scroller-div"></div> + </div> + <div class="col-sm-2 col-xs-2"> + </div> + </div> + <br> + {if !$IS_SYNC_READY} + <div class="row"> + <div class="col-sm-12 col-xs-12"> + <h3 class="module-title pull-left"> {vtranslate('LBL_GOOGLE_CONNECT_MSG', $MODULE)} </h3> + </div> + </div> + <br> + <div class="row"> + <div class="col-sm-3 col-xs-3"> + <a id="authorizeButton" class="btn btn-block btn-social btn-lg btn-google-plus" data-url='index.php?module={$MODULE}&view=List&operation=sync&sourcemodule={$SOURCEMODULE}'><i class="fa fa-google-plus"></i>{vtranslate('LBL_SIGN_IN_WITH_GOOGLE', $MODULE)}</a> + </div> + </div> + {else} + <div class="row"> + <div class="col-sm-12 col-xs-12"> + <h3 class="module-title pull-left"> {vtranslate('LBL_GOOGLE_ACCOUNT_DETAILS', $MODULE)} </h3> + </div> + </div> + <br> + {if $USER_EMAIL} + <div class="row"> + <div class="col-sm-3 col-xs-3"> + <h5 class="module-title pull-left fieldLabel"> {vtranslate('LBL_GOOGLE_ACCOUNT_SYNCED_WITH', $MODULE)} </h5> + </div> + <div class="col-sm-4 col-xs-4"> + <input class="listSearchContributor col-sm-12 col-xs-12" type="text" value="{$USER_EMAIL}" disabled="disabled" style="height: 30px;"> + </div> + </div> + {/if} + <div class="row"> + <div class="col-sm-3 col-xs-3"> + <a id="authorizeButton" class="btn btn-block btn-social btn-lg btn-google-plus" data-url='index.php?module={$MODULE}&view=List&operation=changeUser&sourcemodule={$SOURCEMODULE}'><i class="fa fa-google-plus"></i> {vtranslate('LBL_CHANGE_USER', $MODULE)} </a> + </div> + </div> + {/if} + <br> + <div class="row"> + <div class="col-sm-12 col-xs-12"> + <div class="vt-default-callout vt-info-callout"> + <h4 class="vt-callout-header"><span class="fa fa-info-circle"></span> Info </h4><br> + <div> + {vtranslate('LBL_REDIRECT_URL_MESSAGE', $MODULE)}<br><br> + {vtranslate('LBL_REDIRECT_URL', $MODULE)} : <span style="color: #15c !important">{Google_Config_Connector::getRedirectUrl()}</span> + </div> + <br> + <img src="modules/Google/images/redirect_uri.png" /> + </div> + </div> + </div> + <div style="margin-top: 8%;"> + <div> + <button id="saveSettings" type="submit" class="btn btn-success saveButton">{vtranslate('LBL_SAVE_SETTINGS', $MODULENAME)}</button> + {if $PARENT neq 'Settings'} + <a type="reset" data-url="{$MODULE_MODEL->getBaseExtensionUrl($SOURCEMODULE)}" class="cancelLink navigationLink">{vtranslate('LBL_CANCEL', $MODULENAME)}</a> + {/if} + </div> + </div> + </form> </div> \ No newline at end of file diff --git a/pkg/vtiger/modules/Google/modules/Google/connectors/Config.php b/pkg/vtiger/modules/Google/modules/Google/connectors/Config.php index 07b226a6b6c694ecfbb3381941ccffe77a5b54c9..b709cc231c42fe217a42c94712fb734315229c9d 100644 --- a/pkg/vtiger/modules/Google/modules/Google/connectors/Config.php +++ b/pkg/vtiger/modules/Google/modules/Google/connectors/Config.php @@ -1,12 +1,19 @@ <?php - -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ +/* +********************************************************************************** + * 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 Google_Config_Connector { - static $clientId = ''; - static $clientSecret = ''; + static $clientId = ''; + static $clientSecret = ''; + + static function getRedirectUrl() { + global $site_URL; + return $site_URL.'index.php?module=Google&view=Authenticate&service=Google'; + } } diff --git a/pkg/vtiger/modules/Google/modules/Google/connectors/Oauth2.php b/pkg/vtiger/modules/Google/modules/Google/connectors/Oauth2.php index efdabda7349aaf4f7c5cfdc90b39bc4645ca9c4a..2c951e778e77f436805b8e3f6f8cdfd7997ad14d 100644 --- a/pkg/vtiger/modules/Google/modules/Google/connectors/Oauth2.php +++ b/pkg/vtiger/modules/Google/modules/Google/connectors/Oauth2.php @@ -54,14 +54,14 @@ class Google_Oauth2_Connector { const OAUTH2_REVOKE_URI = 'https://accounts.google.com/o/oauth2/revoke'; public function __construct($module,$userId=false) { - global $site_URL; - $this->source_module = $module; - if($userId) $this->user_id = $userId; - $this->service_name = $this->service_provider . $module; - $this->client_id = Google_Config_Connector::$clientId; - $this->client_secret = Google_Config_Connector::$clientSecret; - $this->redirect_uri = rtrim($site_URL, '/').'/index.php?module=Google&view=List&operation=sync&sourcemodule='.$this->source_module.'&service='.$this->service_name; - $this->scope = $this->scopes[$this->source_module]; + global $site_URL; + $this->source_module = $module; + if($userId) $this->user_id = $userId; + $this->service_name = $this->service_provider . $module; + $this->client_id = Google_Config_Connector::$clientId; + $this->client_secret = Google_Config_Connector::$clientSecret; + $this->redirect_uri = Google_Config_Connector::getRedirectUrl(); + $this->scope = implode(' ', array_values($this->scopes)); } public function getClientId() { @@ -117,8 +117,7 @@ class Google_Oauth2_Connector { public function getState($source) { global $site_URL; - $callbackUri = rtrim($site_URL, '/') . '/index.php?module=Google&view=List&operation=sync&sourcemodule=' . - $this->source_module . '&service=' . $source; + $callbackUri = rtrim($site_URL, '/') . '/index.php?module=Google&view=List&operation=sync&sourcemodule='.$this->source_module . '&service=' . $source; $stateDetails['url'] = $callbackUri; $parse = parse_url($site_URL); $ipAddr = getHostByName($parse['host']); @@ -252,4 +251,4 @@ class Google_Oauth2_Connector { } -?> \ No newline at end of file +?> diff --git a/pkg/vtiger/modules/Google/modules/Google/handlers/Vtiger.php b/pkg/vtiger/modules/Google/modules/Google/handlers/Vtiger.php index b48f230ae1cee5c2119638c4741b4c3bd110c65f..8e018df161f4046f31705c57fe508687f427158b 100644 --- a/pkg/vtiger/modules/Google/modules/Google/handlers/Vtiger.php +++ b/pkg/vtiger/modules/Google/modules/Google/handlers/Vtiger.php @@ -82,6 +82,7 @@ class Google_Vtiger_Handler extends vtigerCRMHandler { $updatedRecords = $recordDetails['updated']; $deletedRecords = $recordDetails['deleted']; $recordDetails['skipped'] = array(); + $updateDuplicateRecords = array(); if (count($createdRecords) > 0) { $createdRecords = $this->translateReferenceFieldNamesToIds($createdRecords, $user); @@ -96,11 +97,28 @@ class Google_Vtiger_Handler extends vtigerCRMHandler { try { $createdRecords[$index] = vtws_create($record['module'], $record, $this->user); - } catch (Exception $ex) { - $recordDetails['skipped'][] = array('record' => $createdRecords[$index], - 'messageidentifier' => '', - 'message' => $ex->getMessage()); - continue; + } catch (DuplicateException $e) { + $skipped = true; + $duplicateRecordIds = $e->getDuplicateRecordIds(); + $duplicatesResult = $this->triggerSyncActionForDuplicate($record, $duplicateRecordIds); + + if ($duplicatesResult) { + $updateDuplicateRecords[$index] = $duplicatesResult; + $skipped = false; + } + if ($skipped) { + $recordDetails['skipped'][] = array('record' => $createdRecords[$index], + 'messageidentifier' => '', + 'message' => $e->getMessage()); + } + unset($createdRecords[$index]); + continue; + } catch (Exception $e) { + $recordDetails['skipped'][] = array('record' => $createdRecords[$index], + 'messageidentifier' => '', + 'message' => $e->getMessage()); + unset($createdRecords[$index]); + continue; } } @@ -148,13 +166,34 @@ class Google_Vtiger_Handler extends vtigerCRMHandler { } else { $this->assignToChangedRecords[$index] = $record; } + } catch (DuplicateException $e) { + $skipped = true; + $duplicateRecordIds = $e->getDuplicateRecordIds(); + $duplicatesResult = $this->triggerSyncActionForDuplicate($record, $duplicateRecordIds); + + if ($duplicatesResult) { + $updateDuplicateRecords[$index] = $duplicatesResult; + $skipped = false; + } + if ($skipped) { + $recordDetails['skipped'][] = array('record' => $updatedRecords[$index], + 'messageidentifier' => '', + 'message' => $e->getMessage()); + } + unset($updatedRecords[$index]); + continue; } catch (Exception $e) { $recordDetails['skipped'][] = array('record' => $updatedRecords[$index], 'messageidentifier' => '', 'message' => $e->getMessage()); + unset($updatedRecords[$index]); continue; } } + foreach ($updateDuplicateRecords as $index => $record) { + $updatedRecords[$index] = $record; + } + $hasDeleteAccess = null; $deletedCrmIds = array(); foreach ($deletedRecords as $index => $record) { @@ -187,7 +226,7 @@ class Google_Vtiger_Handler extends vtigerCRMHandler { } catch (Exception $e) { $recordDetails['skipped'][] = array('record' => $deletedRecords[$index], 'messageidentifier' => '', - 'message' => $ex->getMessage()); + 'message' => $e->getMessage()); continue; } } diff --git a/pkg/vtiger/modules/Google/modules/Google/images/redirect_uri.png b/pkg/vtiger/modules/Google/modules/Google/images/redirect_uri.png new file mode 100644 index 0000000000000000000000000000000000000000..f1039b233597e493bb07d31d4c54cee00523c3bd Binary files /dev/null and b/pkg/vtiger/modules/Google/modules/Google/images/redirect_uri.png differ diff --git a/pkg/vtiger/modules/Google/modules/Google/models/Contacts.php b/pkg/vtiger/modules/Google/modules/Google/models/Contacts.php index 559f4e0dde023fe780508604f89a10910c4e74d8..fba79a4aeded700e37e45f5dcf7660cc2861e0fe 100644 --- a/pkg/vtiger/modules/Google/modules/Google/models/Contacts.php +++ b/pkg/vtiger/modules/Google/modules/Google/models/Contacts.php @@ -168,38 +168,42 @@ class Google_Contacts_Model extends WSAPP_SyncRecordModel { $db = PearDatabase::getInstance(); $result = $db->pquery("SELECT crmid FROM vtiger_crmentity WHERE label = ? AND deleted = ? AND setype = ?", array($orgName, 0, 'Accounts')); if($db->num_rows($result) < 1) { - $accountModel = Vtiger_Module_Model::getInstance('Accounts'); - $recordModel = Vtiger_Record_Model::getCleanInstance('Accounts'); - - $fieldInstances = Vtiger_Field_Model::getAllForModule($accountModel); - foreach($fieldInstances as $blockInstance) { - foreach($blockInstance as $fieldInstance) { - $fieldName = $fieldInstance->getName(); - $fieldValue = $recordModel->get($fieldName); - if(empty($fieldValue)) { - $defaultValue = $fieldInstance->getDefaultFieldValue(); - if($defaultValue) { - $recordModel->set($fieldName, decode_html($defaultValue)); - } - if($fieldInstance->isMandatory() && !$defaultValue) { - $randomValue = Vtiger_Util_Helper::getDefaultMandatoryValue($fieldInstance->getFieldDataType()); - if($fieldInstance->getFieldDataType() == 'picklist' || $fieldInstance->getFieldDataType() == 'multipicklist') { - $picklistValues = $fieldInstance->getPicklistValues(); - $randomValue = reset($picklistValues); - } - $recordModel->set($fieldName, $randomValue); - } - } - } - } - $recordModel->set('mode', ''); - $recordModel->set('accountname', $orgName); - $recordModel->set('assigned_user_id', $userId); - $recordModel->set('source', 'GOOGLE'); - if($description) { - $recordModel->set('description', $description); - } - $recordModel->save(); + try { + $accountModel = Vtiger_Module_Model::getInstance('Accounts'); + $recordModel = Vtiger_Record_Model::getCleanInstance('Accounts'); + + $fieldInstances = Vtiger_Field_Model::getAllForModule($accountModel); + foreach($fieldInstances as $blockInstance) { + foreach($blockInstance as $fieldInstance) { + $fieldName = $fieldInstance->getName(); + $fieldValue = $recordModel->get($fieldName); + if(empty($fieldValue)) { + $defaultValue = $fieldInstance->getDefaultFieldValue(); + if($defaultValue) { + $recordModel->set($fieldName, decode_html($defaultValue)); + } + if($fieldInstance->isMandatory() && !$defaultValue) { + $randomValue = Vtiger_Util_Helper::getDefaultMandatoryValue($fieldInstance->getFieldDataType()); + if($fieldInstance->getFieldDataType() == 'picklist' || $fieldInstance->getFieldDataType() == 'multipicklist') { + $picklistValues = $fieldInstance->getPicklistValues(); + $randomValue = reset($picklistValues); + } + $recordModel->set($fieldName, $randomValue); + } + } + } + } + $recordModel->set('mode', ''); + $recordModel->set('accountname', $orgName); + $recordModel->set('assigned_user_id', $userId); + $recordModel->set('source', 'GOOGLE'); + if($description) { + $recordModel->set('description', $description); + } + $recordModel->save(); + } catch (Exception $e) { + //TODO - Review + } } return $orgName; } diff --git a/pkg/vtiger/modules/Google/modules/Google/views/Authenticate.php b/pkg/vtiger/modules/Google/modules/Google/views/Authenticate.php new file mode 100644 index 0000000000000000000000000000000000000000..208af4745b858d48a1a7c7add164aa69b1b1bf3a --- /dev/null +++ b/pkg/vtiger/modules/Google/modules/Google/views/Authenticate.php @@ -0,0 +1,29 @@ +<?php +/* +*********************************************************************************** + * The contents of this file are subject to the vtiger CRM Public License Version 1.0 + * ("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 Google_Authenticate_View extends Vtiger_Index_View { + + public function checkPermission(Vtiger_Request $request) { + $moduleName = $request->getModule(); + + $recordPermission = Users_Privileges_Model::isPermitted($moduleName, 'index'); + if(!$recordPermission) { + throw new AppException(vtranslate('LBL_PERMISSION_DENIED')); + } + + return true; + } + + public function process(Vtiger_Request $request) { + $moduleName = $request->getModule(); + $oauth2Connector = new Google_Oauth2_Connector($moduleName); + $oauth2Connector->authorize(); + } +} diff --git a/pkg/vtiger/modules/Google/modules/Google/views/List.php b/pkg/vtiger/modules/Google/modules/Google/views/List.php index 16a245f2a38b1d58ad3f16b8dc1d34215967c7e2..3570e508fd0562dd7289f9744a3b579ffb71d00a 100644 --- a/pkg/vtiger/modules/Google/modules/Google/views/List.php +++ b/pkg/vtiger/modules/Google/modules/Google/views/List.php @@ -60,7 +60,7 @@ class Google_List_View extends Vtiger_PopupAjax_View { $oauth2 = new Google_Oauth2_Connector($sourceModule); if ($request->has('oauth_verifier')) { try { - $oauth->getHttpClient($sourceModule); + $oauth2->getHttpClient($sourceModule); } catch (Exception $e) { $viewer->assign('DENY', true); } @@ -168,7 +168,8 @@ class Google_List_View extends Vtiger_PopupAjax_View { * @return array */ public function getSyncRecordsCount($syncRecords) { - $countRecords = array('vtiger' => array('update' => 0, 'create' => 0, 'delete' => 0), 'google' => array('update' => 0, 'create' => 0, 'delete' => 0)); + $countRecords = array( 'vtiger' => array('update' => 0, 'create' => 0, 'delete' => 0), + 'google' => array('update' => 0, 'create' => 0, 'delete' => 0)); foreach ($syncRecords as $key => $records) { if ($key == 'push') { $pushRecord = false; diff --git a/pkg/vtiger/modules/Import/languages/en_us/Import.php b/pkg/vtiger/modules/Import/languages/en_us/Import.php index 769d9c5c0657befad5d88e39180d16d77fde5b9a..bb960fd09fffaa4b62fb2a3a1344f7e5523ac618 100644 --- a/pkg/vtiger/modules/Import/languages/en_us/Import.php +++ b/pkg/vtiger/modules/Import/languages/en_us/Import.php @@ -53,6 +53,7 @@ $languageStrings = array( 'LBL_CANCEL_IMPORT' => 'Cancel Import', 'LBL_ERROR' => 'Error', 'LBL_CLEAR_DATA' => 'Clear Data', + 'ERR_LOCAL_INFILE_NOT_ON' => 'local_infile variable is turned off on the database server.', 'ERR_UNIMPORTED_RECORDS_EXIST' => 'Unable to import more data in this batch. Please start a new import.', 'ERR_IMPORT_INTERRUPTED' => 'Current Import has been interrupted. Please try again later', 'ERR_FAILED_TO_LOCK_MODULE' => 'Failed to lock the module for import. Re-try again later', diff --git a/pkg/vtiger/modules/Import/layouts/v7/modules/Import/ImportStepOne.tpl b/pkg/vtiger/modules/Import/layouts/v7/modules/Import/ImportStepOne.tpl index 63cf61aa5b63447d044fe84a2e5d0fb3a947e3f0..72d070aad7f72b8a52622de17a3eb6d86e37c77e 100644 --- a/pkg/vtiger/modules/Import/layouts/v7/modules/Import/ImportStepOne.tpl +++ b/pkg/vtiger/modules/Import/layouts/v7/modules/Import/ImportStepOne.tpl @@ -42,7 +42,7 @@ </div> </td> </tr> - {if $FORMAT eq ''} + {if $FORMAT eq 'csv'} <tr id="has_header_container" style="height:50px"> <td>{'LBL_HAS_HEADER'|@vtranslate:$MODULE}</td> <td> @@ -62,7 +62,7 @@ </td> </tr> {/if} - {if $FORMAT eq ''} + {if $FORMAT eq 'csv'} <tr id="delimiter_container" style="height:50px"> <td>{'LBL_DELIMITER'|@vtranslate:$MODULE}</td> <td> diff --git a/pkg/vtiger/modules/Import/layouts/v7/modules/Import/ImportStepThree.tpl b/pkg/vtiger/modules/Import/layouts/v7/modules/Import/ImportStepThree.tpl index 7222dd15878268a9f8fd829fbc78014c44cd9bbf..e27a7527d69134eec5ba3370bb94cd7d8593847f 100644 --- a/pkg/vtiger/modules/Import/layouts/v7/modules/Import/ImportStepThree.tpl +++ b/pkg/vtiger/modules/Import/layouts/v7/modules/Import/ImportStepThree.tpl @@ -19,4 +19,7 @@ <input type="checkbox" name="save_map" id="save_map"> <label for="save_map">{'LBL_SAVE_AS_CUSTOM_MAPPING'|@vtranslate:$MODULE}</label> <input type="text" name="save_map_as" id="save_map_as" class = "form-control"> </div> -{include file="Import_Default_Values_Widget.tpl"|@vtemplate_path:'Import'} \ No newline at end of file +{if !$IMPORTABLE_FIELDS} + {assign var=IMPORTABLE_FIELDS value=$AVAILABLE_FIELDS} +{/if} +{include file="Import_Default_Values_Widget.tpl"|@vtemplate_path:'Import' IMPORTABLE_FIELDS=$IMPORTABLE_FIELDS} \ No newline at end of file diff --git a/pkg/vtiger/modules/Import/layouts/v7/modules/Import/Import_Default_Values_Widget.tpl b/pkg/vtiger/modules/Import/layouts/v7/modules/Import/Import_Default_Values_Widget.tpl index 683ebeb79d4d5bd85f9ae0fc5bffbec1f1724474..5968da1eb6259b207a037ca4cc2ce24f3ceb42b3 100644 --- a/pkg/vtiger/modules/Import/layouts/v7/modules/Import/Import_Default_Values_Widget.tpl +++ b/pkg/vtiger/modules/Import/layouts/v7/modules/Import/Import_Default_Values_Widget.tpl @@ -11,10 +11,10 @@ -->*} <div style="visibility: hidden; height: 0px;" id="defaultValuesElementsContainer"> - {foreach key=_FIELD_NAME item=_FIELD_INFO from=$AVAILABLE_FIELDS} + {foreach key=_FIELD_NAME item=_FIELD_INFO from=$IMPORTABLE_FIELDS} <span id="{$_FIELD_NAME}_defaultvalue_container" name="{$_FIELD_NAME}_defaultvalue"> {assign var="_FIELD_TYPE" value=$_FIELD_INFO->getFieldDataType()} - {if $_FIELD_TYPE eq 'picklist' || $_FIELD_TYPE eq 'multipicklist'} + {if $_FIELD_TYPE eq 'picklist' || $_FIELD_TYPE eq 'multipicklist' || ($FOR_MODULE eq 'Users' && $_FIELD_TYPE eq 'userRole')} <select id="{$_FIELD_NAME}_defaultvalue" name="{$_FIELD_NAME}_defaultvalue" class="select2 inputElement width75per"> {if $_FIELD_NAME neq 'hdnTaxType'} <option value="">{vtranslate('LBL_SELECT_OPTION','Vtiger')}</option> {/if} {foreach item=_PICKLIST_DETAILS from=$_FIELD_INFO->getPicklistDetails()} diff --git a/pkg/vtiger/modules/Import/layouts/v7/modules/Import/resources/Import.js b/pkg/vtiger/modules/Import/layouts/v7/modules/Import/resources/Import.js index 3eb57b9dae97c00ae12d62f603722eb574551651..904d745a8c2e28f07382abd772ddb10aef742db6 100644 --- a/pkg/vtiger/modules/Import/layouts/v7/modules/Import/resources/Import.js +++ b/pkg/vtiger/modules/Import/layouts/v7/modules/Import/resources/Import.js @@ -90,7 +90,16 @@ if (typeof (Vtiger_Import_Js) == 'undefined') { app.helper.loadPageContentOverlay(response); app.helper.hideProgress(); if(!err){ - app.helper.showSuccessNotification({message:'Import Completed.'}); + if (jQuery('#scheduleImportStatus').length > 0) { + app.event.one('post.overlayPageContent.hide', function(container) { + clearTimeout(Vtiger_Import_Js.timer); + Vtiger_Import_Js.isReloadStatusPageStopped = true; + }); + Vtiger_Import_Js.isReloadStatusPageStopped = false; + Vtiger_Import_Js.timer = setTimeout(Vtiger_Import_Js.scheduledImportRunning, 5000); + } else { + app.helper.showSuccessNotification({message:'Import Completed.'}); + } } }); } @@ -210,7 +219,8 @@ if (typeof (Vtiger_Import_Js) == 'undefined') { var header = mappingPair[0]; header = header.replace(/\/eq\//g, '='); header = header.replace(/\/amp\//g, '&'); - mapping["'" + header + "'"] = mappingPair[1]; + mapping[header] = mappingPair[1]; + mapping[i] = mappingPair[1]; /* To make Row based match when there is no header */ } fieldsList.each(function(i, element) { var fieldElement = jQuery(element); @@ -218,11 +228,11 @@ if (typeof (Vtiger_Import_Js) == 'undefined') { var rowId = jQuery('[name=row_counter]', fieldElement).get(0).value; var headerNameElement = jQuery('[name=header_name]', fieldElement).get(0); var headerName = jQuery(headerNameElement).html(); - if ("'" + headerName + "'" in mapping) { - mappedFields.select2("val", mapping["'" + headerName + "'"]); - } else if (rowId in mapping) { - mappedFields.val($rowId); - } + if (headerName in mapping) { + mappedFields.select2("val", mapping[headerName]); + } else if (rowId-1 in mapping) { /* Row based match when there is no header - but saved map is loaded. */ + mappedFields.select2("val", mapping[rowId-1]); + } Vtiger_Import_Js.loadDefaultValueWidget(fieldElement.attr('id')); }); }, @@ -458,7 +468,7 @@ if (typeof (Vtiger_Import_Js) == 'undefined') { app.helper.loadPageContentOverlay(response); if (jQuery('#scheduleImportStatus').length > 0) { if (!Vtiger_Import_Js.isReloadStatusPageStopped) { - Vtiger_Import_Js.timer = setTimeout(Vtiger_Import_Js.scheduledImportRunning(), 50000); + Vtiger_Import_Js.timer = setTimeout(Vtiger_Import_Js.scheduledImportRunning, 50000); } } } @@ -618,7 +628,7 @@ if (typeof (Vtiger_Import_Js) == 'undefined') { }); Vtiger_Import_Js.isReloadStatusPageStopped = false; - Vtiger_Import_Js.timer = setTimeout(Vtiger_Import_Js.scheduledImportRunning(), 5000); + Vtiger_Import_Js.timer = setTimeout(Vtiger_Import_Js.scheduledImportRunning, 5000); } }); }, diff --git a/pkg/vtiger/modules/Import/modules/Import/actions/Data.php b/pkg/vtiger/modules/Import/modules/Import/actions/Data.php index 088f1de875c9a70887b29658e90f5c4e5b922539..3a639a561873a2c163283c73b9c2e172a8a99001 100644 --- a/pkg/vtiger/modules/Import/modules/Import/actions/Data.php +++ b/pkg/vtiger/modules/Import/modules/Import/actions/Data.php @@ -637,9 +637,17 @@ class Import_Data_Action extends Vtiger_Action_Controller { if (!in_array($picklistValueInLowerCase, $allPicklistValuesInLowerCase) && !empty($picklistValueInLowerCase)) { if ($moduleName != 'Calendar') { + // Required to update runtime cache. + $wsFieldDetails = $fieldInstance->getPicklistDetails(); + $moduleObject = Vtiger_Module::getInstance($moduleName); $fieldObject = Vtiger_Field::getInstance($fieldName, $moduleObject); $fieldObject->setPicklistValues(array($fieldValue)); + + // Update cache state with new value added. + $wsFieldDetails[] = array('label' => $fieldValue, 'value' => $fieldValue); + Vtiger_Cache::getInstance()->setPicklistDetails($moduleObject->getId(), $fieldName, $wsFieldDetails); + unset($this->allPicklistValues[$fieldName]); } } else { @@ -1160,4 +1168,4 @@ class Import_Data_Action extends Vtiger_Action_Controller { return $entityIdsList; } } -?> \ No newline at end of file +?> diff --git a/pkg/vtiger/modules/Import/modules/Import/readers/CSVReader.php b/pkg/vtiger/modules/Import/modules/Import/readers/CSVReader.php index 593063ed21513eb74526beba608e44b079af7cda..c843965bc86ec7b9ad62b7504b278632d21617b1 100644 --- a/pkg/vtiger/modules/Import/modules/Import/readers/CSVReader.php +++ b/pkg/vtiger/modules/Import/modules/Import/readers/CSVReader.php @@ -68,54 +68,39 @@ class Import_CSVReader_Reader extends Import_FileReader_Reader { public function read() { global $default_charset; - $filePath = $this->getFilePath(); - // if file encoded type is other than over default database charset we need to convert - if($this->request->get('file_encoding') != $default_charset) { - $data = file_get_contents($filePath); - $result = mb_convert_encoding($data,$default_charset,$this->request->get('file_encoding')); - file_put_contents($filePath, $result); - } - // to add escape slashes - $filePath = addslashes($this->getFilePath()); + $fileHandler = $this->getFileHandler(); $status = $this->createTable(); if(!$status) { return false; } $fieldMapping = $this->request->get('field_mapping'); - $fieldNames = array(); - foreach($fieldMapping as $fieldName => $index) { - $fieldNames[$index] = $fieldName; - } - $this->addRecordsToDB($filePath,$fieldNames); - } - - public function addRecordsToDB($filePath,$columnNames) { - $db = PearDatabase::getInstance(); - $tableName = Import_Utils_Helper::getDbTableName($this->user); - $delimiter = $this->request->get('delimiter'); - $query = 'LOAD DATA LOCAL INFILE "'.$filePath.'" INTO TABLE '.$tableName.' FIELDS TERMINATED BY "'.$delimiter.'" OPTIONALLY ENCLOSED BY "\"" LINES TERMINATED BY "\n"'; - if($this->hasHeader()){ - $query .= " IGNORE 1 LINES "; - } - - // to ignore values from file which are not mapped - $keys = array_keys($columnNames); - $maxValue = max($keys); - for($i=0;$i<$maxValue;$i++){ - if(!$columnNames[$i]){ - $columnNames[$i] = "@ignore"; + $delimiter = $this->request->get('delimiter'); + $hasHeader = $this->request->get('has_header'); + $fileEncoding = $this->request->get('file_encoding'); + + // NOTE: Retaining row-read and insert as LOAD DATA command is being disabled by default. + $i = -1; + while($data = fgetcsv($fileHandler, 0, $delimiter)) { + $i++; + if($hasHeader && $i == 0) continue; + $mappedData = array(); + $allValuesEmpty = true; + foreach($fieldMapping as $fieldName => $index) { + $fieldValue = $data[$index]; + $mappedData[$fieldName] = $fieldValue; + if($fileEncoding != $default_charset) { + $mappedData[$fieldName] = $this->convertCharacterEncoding($fieldValue, $fileEncoding, $default_charset); + } + if(!empty($fieldValue)) $allValuesEmpty = false; } + if($allValuesEmpty) continue; + $fieldNames = array_keys($mappedData); + $fieldValues = array_values($mappedData); + $this->addRecordToDB($fieldNames, $fieldValues); } - ksort($columnNames); - $query .= '('.implode(',',$columnNames).')'; - - global $dbconfigoption; - $db->database = null; // we shouldn't use existing connection with client flag = 0 - $dbconfigoption['clientFlags'] = 128; // To enable LOAD DATA INFILE... query for database - $db->pquery($query,array()); - $this->setNumberOfRecordsRead($tableName,$db); + unset($fileHandler); } } ?> diff --git a/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/MailOpen.tpl b/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/MailOpen.tpl index ba0e4faec75fe71caed0d5c3ed3c3ffd9318847d..11a69d5c8eddcdebbc810f1d42f7f1a13adedefc 100644 --- a/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/MailOpen.tpl +++ b/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/MailOpen.tpl @@ -119,13 +119,14 @@ {assign var=ATTACHNAME value=$ATTACHVALUE['filename']} {if $INLINE_ATT[$ATTACHNAME] eq null} {assign var=DOWNLOAD_LINK value=$ATTACHNAME|@escape:'url'} + {assign var=ATTACHID value=$ATTACHVALUE['attachid']} <span> <i class="fa {$MAIL->getAttachmentIcon($ATTACHVALUE['path'])}"></i> - <a href="index.php?module={$MODULE}&view=Index&_operation=mail&_operationarg=attachment_dld&_muid={$MAIL->muid()}&_atname={$DOWNLOAD_LINK|@escape:'htmlall':'UTF-8'}"> + <a href="index.php?module={$MODULE}&view=Index&_operation=mail&_operationarg=attachment_dld&_muid={$MAIL->muid()}&_atid={$ATTACHID}&_atname={$DOWNLOAD_LINK|@escape:'htmlall':'UTF-8'}"> {$ATTACHNAME} </a> <span> ({$ATTACHVALUE['size']})</span> - <a href="index.php?module={$MODULE}&view=Index&_operation=mail&_operationarg=attachment_dld&_muid={$MAIL->muid()}&_atname={$DOWNLOAD_LINK|@escape:'htmlall':'UTF-8'}"> + <a href="index.php?module={$MODULE}&view=Index&_operation=mail&_operationarg=attachment_dld&_muid={$MAIL->muid()}&_atid={$ATTACHID}&_atname={$DOWNLOAD_LINK|@escape:'htmlall':'UTF-8'}"> <i class="fa fa-download"></i> </a> </span> @@ -135,4 +136,4 @@ </div> {/if} </div> -{/strip} \ No newline at end of file +{/strip} diff --git a/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/partials/SidebarHeader.tpl b/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/partials/SidebarHeader.tpl index 44750af37b8315d2aa2a7c63ec901e602b2c254c..7e9ccb5ed240f0ce7ffa922c5ed57be945c14c78 100644 --- a/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/partials/SidebarHeader.tpl +++ b/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/partials/SidebarHeader.tpl @@ -6,13 +6,8 @@ * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. ************************************************************************************} -{assign var="APP_IMAGE_MAP" value=[ - 'MARKETING' => 'fa-users', - 'SALES' => 'fa-dot-circle-o', - 'SUPPORT' => 'fa-life-ring', - 'INVENTORY' => 'vicon-inventory', - 'PROJECT' => 'fa-briefcase' -]} + +{assign var=APP_IMAGE_MAP value=Vtiger_MenuStructure_Model::getAppIcons()} <div class="col-sm-12 col-xs-12 app-indicator-icon-container app-{$SELECTED_MENU_CATEGORY}"> <div class="row" title="{strtoupper(vtranslate($MODULE, $MODULE))}"> <span class="app-indicator-icon fa vicon-mailmanager"></span> diff --git a/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/resources/List.js b/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/resources/List.js index b4db3b16eba124ed7dca00ed38fa385387d545eb..a14977684d69a9c4d22674b295947fc7020c1ec1 100644 --- a/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/resources/List.js +++ b/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/resources/List.js @@ -156,17 +156,17 @@ Vtiger_List_Js("MailManager_List_Js", {}, { settingContainer.find('.selectFolderDesc').removeClass('hide'); if(useProtocol != '') { settingContainer.find('#_mbox_server').val(useServer); - settingContainer.find('.mbox_protocol').each(function(node) { + settingContainer.find('.mbox_protocol').each(function(i, node) { if(jQuery(node).val() == useProtocol) { jQuery(node).attr('checked', true); } }); - settingContainer.find('.mbox_ssltype').each(function(node) { + settingContainer.find('.mbox_ssltype').each(function(i, node) { if(jQuery(node).val() == useSSLType) { jQuery(node).attr('checked', true); } }); - settingContainer.find('.mbox_certvalidate').each(function(node) { + settingContainer.find('.mbox_certvalidate').each(function(i, node) { if(jQuery(node).val() == useCert) { jQuery(node).attr('checked', true); } @@ -308,21 +308,23 @@ Vtiger_List_Js("MailManager_List_Js", {}, { */ loadMailContents : function(folderName){ var mailids = jQuery('input[name="folderMailIds"]').val(); - mailids = mailids.split(","); - var params = { - 'module' : 'MailManager', - 'action' : 'Folder', - 'mode' : 'showMailContent', - 'mailids' : mailids, - 'folderName':folderName - }; - app.request.post({"data" : params}).then(function(error, responseData) { - for(var k in responseData){ - var messageContent = responseData[k]; - var messageEle = jQuery('#mmMailEntry_'+k); - messageEle.find('.mmMailDesc').html(messageContent); - } - }); + if (typeof mailids !== 'undefined') { + mailids = mailids.split(","); + var params = { + 'module' : 'MailManager', + 'action' : 'Folder', + 'mode' : 'showMailContent', + 'mailids' : mailids, + 'folderName':folderName + }; + app.request.post({"data" : params}).then(function(error, responseData) { + for(var k in responseData){ + var messageContent = responseData[k]; + var messageEle = jQuery('#mmMailEntry_'+k); + messageEle.find('.mmMailDesc').html(messageContent); + } + }); + } }, registerFolderMailDeleteEvent : function() { @@ -1348,15 +1350,22 @@ Vtiger_List_Js("MailManager_List_Js", {}, { } app.request.post({data:formData}).then(function(err,data){ - app.event.trigger("post.QuickCreateForm.save",data,jQuery(form).serializeFormData()); - if(err === null) { - app.helper.hideModal(); - app.helper.showSuccessNotification({"message":''}); - invokeParams.callbackFunction(data, err); - }else{ - app.helper.showErrorNotification({"message":err}); - } - }); + if(err === null) { + if (!data.error) { + jQuery('.vt-notification').remove(); + app.event.trigger("post.QuickCreateForm.save",data,jQuery(form).serializeFormData()); + app.helper.hideModal(); + app.helper.showSuccessNotification({"message":app.vtranslate('JS_RECORD_CREATED')}); + invokeParams.callbackFunction(data, err); + } else { + jQuery("button[name='saveButton']").removeAttr('disabled'); + app.event.trigger('post.save.failed', data); + } + }else{ + app.event.trigger("post.QuickCreateForm.save",data,jQuery(form).serializeFormData()); + app.helper.showErrorNotification({"message":err}); + } + }); } }; form.vtValidate(params); @@ -1520,4 +1529,4 @@ Vtiger_List_Js("MailManager_List_Js", {}, { self.registerSearchTypeChangeEvent(); self.registerPostMailSentEvent(); } -}); \ No newline at end of file +}); diff --git a/pkg/vtiger/modules/MailManager/modules/MailManager/models/Message.php b/pkg/vtiger/modules/MailManager/modules/MailManager/models/Message.php index 095a55de8396178d876b98a8b9bb902f56142ba9..cc10a52e91a44166649437b06a3a63050d8931f6 100644 --- a/pkg/vtiger/modules/MailManager/modules/MailManager/models/Message.php +++ b/pkg/vtiger/modules/MailManager/modules/MailManager/models/Message.php @@ -247,8 +247,9 @@ class MailManager_Message_Model extends Vtiger_MailRecord { * @global Array $upload_badext - List of bad extensions * @param Boolean $withContent - Used to load the Attachments with/withoud content * @param String $aName - Attachment Name + * @param Integer $aId - Attachment Id (to eliminate friction with same Attachment Name) */ - protected function loadAttachmentsFromDB($withContent, $aName=false) { + protected function loadAttachmentsFromDB($withContent, $aName=false, $aId=false) { $db = PearDatabase::getInstance(); $currentUserModel = Users_Record_Model::getCurrentUserModel(); @@ -260,7 +261,8 @@ class MailManager_Message_Model extends Vtiger_MailRecord { $filteredColumns = "aname, attachid, path, cid"; $whereClause = ""; - if ($aName) { $whereClause = " AND aname=?"; $params[] = $aName; } + if ($aName) { $whereClause .= " AND aname=?"; $params[] = $aName; } + if ($aId) { $whereClause .= " AND aid=?"; $params[] = $aId; } $atResult = $db->pquery("SELECT {$filteredColumns} FROM vtiger_mailmanager_mailattachments WHERE userid=? AND muid=? $whereClause", $params); @@ -279,7 +281,7 @@ class MailManager_Message_Model extends Vtiger_MailRecord { $filePath = $atResultRow['path'].$atResultRow['attachid'].'_'.sanitizeUploadFileName($atResultRow['aname'], vglobal('upload_badext')); $fileSize = $this->convertFileSize(filesize($filePath)); $data = ($withContent? $fileContent: false); - $this->_attachments[] = array('filename'=>$atResultRow['aname'], 'data' => $data, 'size' => $fileSize, 'path' => $filePath); + $this->_attachments[] = array('filename'=>$atResultRow['aname'], 'data' => $data, 'size' => $fileSize, 'path' => $filePath, 'attachid' => $atResultRow['attachid']); unset($fileContent); // Clear immediately } @@ -404,10 +406,11 @@ class MailManager_Message_Model extends Vtiger_MailRecord { * Gets the Mail Attachments * @param Boolean $withContent * @param String $aName + * @param Integer $aId * @return List of Attachments */ - public function attachments($withContent=true, $aName=false) { - $this->loadAttachmentsFromDB($withContent, $aName); + public function attachments($withContent=true, $aName=false, $aId=false) { + $this->loadAttachmentsFromDB($withContent, $aName, $aId); return $this->_attachments; } @@ -700,4 +703,4 @@ class MailManager_Message_Model extends Vtiger_MailRecord { return $icon; } } -?> \ No newline at end of file +?> diff --git a/pkg/vtiger/modules/MailManager/modules/MailManager/third-party/XML/HTMLSax3.php b/pkg/vtiger/modules/MailManager/modules/MailManager/third-party/XML/HTMLSax3.php index 7cdc4c6abdec4c425c9dc971ceea7d846c1dbf3f..5314404f3f1714e26d38ee6aca448895a467b3da 100644 --- a/pkg/vtiger/modules/MailManager/modules/MailManager/third-party/XML/HTMLSax3.php +++ b/pkg/vtiger/modules/MailManager/modules/MailManager/third-party/XML/HTMLSax3.php @@ -21,6 +21,16 @@ // // $Id: HTMLSax3.php,v 1.2 2007/10/29 21:41:34 hfuecks Exp $ // + +/** +* 2017 02 01 - 1st February 2017 +* Author: Steven B Clarke +* replace all occurances of function CLASSNAME(...) +* with __construct(...) + +replace all occurances of "=& new CLASSNAME" with "= new CLASSNAME" +*/ + /** * Main parser components * @package XML_HTMLSax3 @@ -156,17 +166,17 @@ class XML_HTMLSax3_StateParser { * @var XML_HTMLSax3 instance of user front end class * @access protected */ - function XML_HTMLSax3_StateParser (& $htmlsax) { - $this->htmlsax = & $htmlsax; - $this->State[XML_HTMLSAX3_STATE_START] =& new XML_HTMLSax3_StartingState(); + function __construct(& $htmlsax) { + $this->htmlsax =& $htmlsax; + $this->State[XML_HTMLSAX3_STATE_START] = new XML_HTMLSax3_StartingState(); - $this->State[XML_HTMLSAX3_STATE_CLOSING_TAG] =& new XML_HTMLSax3_ClosingTagState(); - $this->State[XML_HTMLSAX3_STATE_TAG] =& new XML_HTMLSax3_TagState(); - $this->State[XML_HTMLSAX3_STATE_OPENING_TAG] =& new XML_HTMLSax3_OpeningTagState(); + $this->State[XML_HTMLSAX3_STATE_CLOSING_TAG] = new XML_HTMLSax3_ClosingTagState(); + $this->State[XML_HTMLSAX3_STATE_TAG] = new XML_HTMLSax3_TagState(); + $this->State[XML_HTMLSAX3_STATE_OPENING_TAG] = new XML_HTMLSax3_OpeningTagState(); - $this->State[XML_HTMLSAX3_STATE_PI] =& new XML_HTMLSax3_PiState(); - $this->State[XML_HTMLSAX3_STATE_JASP] =& new XML_HTMLSax3_JaspState(); - $this->State[XML_HTMLSAX3_STATE_ESCAPE] =& new XML_HTMLSax3_EscapeState(); + $this->State[XML_HTMLSAX3_STATE_PI] = new XML_HTMLSax3_PiState(); + $this->State[XML_HTMLSAX3_STATE_JASP] = new XML_HTMLSax3_JaspState(); + $this->State[XML_HTMLSAX3_STATE_ESCAPE] = new XML_HTMLSax3_EscapeState(); } /** @@ -241,14 +251,14 @@ class XML_HTMLSax3_StateParser { */ function parse($data) { if ($this->parser_options['XML_OPTION_TRIM_DATA_NODES']==1) { - $decorator =& new XML_HTMLSax3_Trim( + $decorator = new XML_HTMLSax3_Trim( $this->handler_object_data, $this->handler_method_data); $this->handler_object_data =& $decorator; $this->handler_method_data = 'trimData'; } if ($this->parser_options['XML_OPTION_CASE_FOLDING']==1) { - $open_decor =& new XML_HTMLSax3_CaseFolding( + $open_decor = new XML_HTMLSax3_CaseFolding( $this->handler_object_element, $this->handler_method_opening, $this->handler_method_closing); @@ -257,28 +267,28 @@ class XML_HTMLSax3_StateParser { $this->handler_method_closing ='foldClose'; } if ($this->parser_options['XML_OPTION_LINEFEED_BREAK']==1) { - $decorator =& new XML_HTMLSax3_Linefeed( + $decorator = new XML_HTMLSax3_Linefeed( $this->handler_object_data, $this->handler_method_data); $this->handler_object_data =& $decorator; $this->handler_method_data = 'breakData'; } if ($this->parser_options['XML_OPTION_TAB_BREAK']==1) { - $decorator =& new XML_HTMLSax3_Tab( + $decorator = new XML_HTMLSax3_Tab( $this->handler_object_data, $this->handler_method_data); $this->handler_object_data =& $decorator; $this->handler_method_data = 'breakData'; } if ($this->parser_options['XML_OPTION_ENTITIES_UNPARSED']==1) { - $decorator =& new XML_HTMLSax3_Entities_Unparsed( + $decorator = new XML_HTMLSax3_Entities_Unparsed( $this->handler_object_data, $this->handler_method_data); $this->handler_object_data =& $decorator; $this->handler_method_data = 'breakData'; } if ($this->parser_options['XML_OPTION_ENTITIES_PARSED']==1) { - $decorator =& new XML_HTMLSax3_Entities_Parsed( + $decorator = new XML_HTMLSax3_Entities_Parsed( $this->handler_object_data, $this->handler_method_data); $this->handler_object_data =& $decorator; @@ -286,7 +296,7 @@ class XML_HTMLSax3_StateParser { } // Note switched on by default if ($this->parser_options['XML_OPTION_STRIP_ESCAPES']==1) { - $decorator =& new XML_HTMLSax3_Escape_Stripper( + $decorator = new XML_HTMLSax3_Escape_Stripper( $this->handler_object_escape, $this->handler_method_escape); $this->handler_object_escape =& $decorator; @@ -327,8 +337,8 @@ class XML_HTMLSax3_StateParser_Lt430 extends XML_HTMLSax3_StateParser { * @var XML_HTMLSax3 instance of user front end class * @access protected */ - function XML_HTMLSax3_StateParser_Lt430(& $htmlsax) { - parent::XML_HTMLSax3_StateParser($htmlsax); + function __construct(& $htmlsax) { + parent::__construct($htmlsax); $this->parser_options['XML_OPTION_TRIM_DATA_NODES'] = 0; $this->parser_options['XML_OPTION_CASE_FOLDING'] = 0; $this->parser_options['XML_OPTION_LINEFEED_BREAK'] = 0; @@ -359,7 +369,7 @@ class XML_HTMLSax3_StateParser_Lt430 extends XML_HTMLSax3_StateParser { * @return void */ function ignoreWhitespace() { - while ($this->position < $this->length && + while ($this->position < $this->length && strpos(" \n\r\t", $this->rawtext{$this->position}) !== FALSE) { $this->position++; } @@ -391,8 +401,8 @@ class XML_HTMLSax3_StateParser_Gtet430 extends XML_HTMLSax3_StateParser { * @var XML_HTMLSax3 instance of user front end class * @access protected */ - function XML_HTMLSax3_StateParser_Gtet430(& $htmlsax) { - parent::XML_HTMLSax3_StateParser($htmlsax); + function __construct(& $htmlsax) { + parent::__construct($htmlsax); $this->parser_options['XML_OPTION_TRIM_DATA_NODES'] = 0; $this->parser_options['XML_OPTION_CASE_FOLDING'] = 0; $this->parser_options['XML_OPTION_LINEFEED_BREAK'] = 0; @@ -481,13 +491,13 @@ class XML_HTMLSax3 { * </pre> * @access public */ - function XML_HTMLSax3() { + function __construct() { if (version_compare(phpversion(), '4.3', 'ge')) { - $this->state_parser =& new XML_HTMLSax3_StateParser_Gtet430($this); + $this->state_parser = new XML_HTMLSax3_StateParser_Gtet430($this); } else { - $this->state_parser =& new XML_HTMLSax3_StateParser_Lt430($this); + $this->state_parser = new XML_HTMLSax3_StateParser_Lt430($this); } - $nullhandler =& new XML_HTMLSax3_NullHandler(); + $nullhandler = new XML_HTMLSax3_NullHandler(); $this->set_object($nullhandler); $this->set_element_handler('DoNothing', 'DoNothing'); $this->set_data_handler('DoNothing'); @@ -528,7 +538,7 @@ class XML_HTMLSax3 { * <li>XML_OPTION_ENTITIES_UNPARSED: XML entities are returned as * seperate data handler calls in unparsed form</li> * <li>XML_OPTION_ENTITIES_PARSED: (PHP 4.3.0+ only) XML entities are - * returned as seperate data handler calls and are parsed with + * returned as seperate data handler calls and are parsed with * PHP's html_entity_decode() function</li> * <li>XML_OPTION_STRIP_ESCAPES: strips out the -- -- comment markers * or CDATA markup inside an XML escape, if found.</li> @@ -684,4 +694,4 @@ class XML_HTMLSax3 { $this->state_parser->parse($data); } } -?> \ No newline at end of file +?> diff --git a/pkg/vtiger/modules/MailManager/modules/MailManager/third-party/XML/HTMLSax3/Decorators.php b/pkg/vtiger/modules/MailManager/modules/MailManager/third-party/XML/HTMLSax3/Decorators.php index 156d709b48ad545a32862f8eb335811bc857f412..8a79c7b137e34103cdc727eeab4fb968babdf5d5 100644 --- a/pkg/vtiger/modules/MailManager/modules/MailManager/third-party/XML/HTMLSax3/Decorators.php +++ b/pkg/vtiger/modules/MailManager/modules/MailManager/third-party/XML/HTMLSax3/Decorators.php @@ -21,6 +21,15 @@ // // $Id: Decorators.php,v 1.2 2007/10/29 21:41:35 hfuecks Exp $ // + +/* + * 2017 02 01 - 1st February 2017 + * Author: Steven B Clarke + * replace all occurances of function CLASSNAME(...) + * with __construct(...) +*/ + + /** * Decorators for dealing with parser options * @package XML_HTMLSax3 @@ -45,13 +54,14 @@ class XML_HTMLSax3_Trim { * @access private */ var $orig_method; + /** * Constructs XML_HTMLSax3_Trim * @param object handler object being decorated * @param string original handler method * @access protected */ - function XML_HTMLSax3_Trim(&$orig_obj, $orig_method) { + function __construct(&$orig_obj, $orig_method) { $this->orig_obj =& $orig_obj; $this->orig_method = $orig_method; } @@ -99,7 +109,7 @@ class XML_HTMLSax3_CaseFolding { * @param string original close handler method * @access protected */ - function XML_HTMLSax3_CaseFolding(&$orig_obj, $orig_open_method, $orig_close_method) { + function __construct(&$orig_obj, $orig_open_method, $orig_close_method) { $this->orig_obj =& $orig_obj; $this->orig_open_method = $orig_open_method; $this->orig_close_method = $orig_close_method; @@ -149,7 +159,7 @@ class XML_HTMLSax3_Linefeed { * @param string original handler method * @access protected */ - function XML_HTMLSax3_LineFeed(&$orig_obj, $orig_method) { + function __construct(&$orig_obj, $orig_method) { $this->orig_obj =& $orig_obj; $this->orig_method = $orig_method; } @@ -191,7 +201,7 @@ class XML_HTMLSax3_Tab { * @param string original handler method * @access protected */ - function XML_HTMLSax3_Tab(&$orig_obj, $orig_method) { + function __construct(&$orig_obj, $orig_method) { $this->orig_obj =& $orig_obj; $this->orig_method = $orig_method; } @@ -234,7 +244,7 @@ class XML_HTMLSax3_Entities_Parsed { * @param string original handler method * @access protected */ - function XML_HTMLSax3_Entities_Parsed(&$orig_obj, $orig_method) { + function __construct(&$orig_obj, $orig_method) { $this->orig_obj =& $orig_obj; $this->orig_method = $orig_method; } @@ -286,7 +296,7 @@ class XML_HTMLSax3_Entities_Unparsed { * @param string original handler method * @access protected */ - function XML_HTMLSax3_Entities_Unparsed(&$orig_obj, $orig_method) { + function __construct(&$orig_obj, $orig_method) { $this->orig_obj =& $orig_obj; $this->orig_method = $orig_method; } @@ -329,7 +339,7 @@ class XML_HTMLSax3_Escape_Stripper { * @param string original handler method * @access protected */ - function XML_HTMLSax3_Escape_Stripper(&$orig_obj, $orig_method) { + function __construct(&$orig_obj, $orig_method) { $this->orig_obj =& $orig_obj; $this->orig_method = $orig_method; } @@ -360,4 +370,4 @@ class XML_HTMLSax3_Escape_Stripper { $this->orig_obj->{$this->orig_method}($this, $data); } } -?> \ No newline at end of file +?> diff --git a/pkg/vtiger/modules/MailManager/modules/MailManager/third-party/XML/HTMLSax3/States.php b/pkg/vtiger/modules/MailManager/modules/MailManager/third-party/XML/HTMLSax3/States.php index b92b7b27174f9970c121867dcd6a75390f93503c..c9ef28e97053f63966e2dcb18fbbcad806346abc 100644 --- a/pkg/vtiger/modules/MailManager/modules/MailManager/third-party/XML/HTMLSax3/States.php +++ b/pkg/vtiger/modules/MailManager/modules/MailManager/third-party/XML/HTMLSax3/States.php @@ -132,7 +132,7 @@ class XML_HTMLSax3_OpeningTagState { */ function parseAttributes(&$context) { $Attributes = array(); - + $context->ignoreWhitespace(); $attributename = $context->scanUntilCharacters("=/> \n\r\t"); while ($attributename != '') { @@ -158,7 +158,7 @@ class XML_HTMLSax3_OpeningTagState { $context->unscanCharacter(); } $Attributes[$attributename] = $attributevalue; - + $context->ignoreWhitespace(); $attributename = $context->scanUntilCharacters("=/> \n\r\t"); } @@ -182,14 +182,14 @@ class XML_HTMLSax3_OpeningTagState { $context->unscanCharacter(); } $context->handler_object_element-> - {$context->handler_method_opening}($context->htmlsax, $tag, + {$context->handler_method_opening}($context->htmlsax, $tag, $Attributes, TRUE); $context->handler_object_element-> - {$context->handler_method_closing}($context->htmlsax, $tag, + {$context->handler_method_closing}($context->htmlsax, $tag, TRUE); } else { $context->handler_object_element-> - {$context->handler_method_opening}($context->htmlsax, $tag, + {$context->handler_method_opening}($context->htmlsax, $tag, $Attributes, FALSE); } } diff --git a/pkg/vtiger/modules/MailManager/modules/MailManager/third-party/XML/Util.php b/pkg/vtiger/modules/MailManager/modules/MailManager/third-party/XML/Util.php new file mode 100644 index 0000000000000000000000000000000000000000..69caf24caf8f8ce08899b19ed56d977c64f0707a --- /dev/null +++ b/pkg/vtiger/modules/MailManager/modules/MailManager/third-party/XML/Util.php @@ -0,0 +1,927 @@ +<?php +/** + * XML_Util + * + * XML Utilities package + * + * PHP versions 4 and 5 + * + ********************************* + * 2017 02 01 - 1st February 2017 + * author: Steven B Clarke + * check for compatibility with + * PHP version 7.0.6 + ********************************* + * LICENSE: + * + * Copyright (c) 2003-2008 Stephan Schmidt <schst@php.net> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * @category XML + * @package XML_Util + * @author Stephan Schmidt <schst@php.net> + * @copyright 2003-2008 Stephan Schmidt <schst@php.net> + * @license http://opensource.org/licenses/bsd-license New BSD License + * @version CVS: $Id$ + * @link http://pear.php.net/package/XML_Util + */ + +/** + * Error code for invalid chars in XML name + */ +define('XML_UTIL_ERROR_INVALID_CHARS', 51); + +/** + * Error code for invalid chars in XML name + */ +define('XML_UTIL_ERROR_INVALID_START', 52); + +/** + * Error code for non-scalar tag content + */ +define('XML_UTIL_ERROR_NON_SCALAR_CONTENT', 60); + +/** + * Error code for missing tag name + */ +define('XML_UTIL_ERROR_NO_TAG_NAME', 61); + +/** + * Replace XML entities + */ +define('XML_UTIL_REPLACE_ENTITIES', 1); + +/** + * Embedd content in a CData Section + */ +define('XML_UTIL_CDATA_SECTION', 5); + +/** + * Do not replace entitites + */ +define('XML_UTIL_ENTITIES_NONE', 0); + +/** + * Replace all XML entitites + * This setting will replace <, >, ", ' and & + */ +define('XML_UTIL_ENTITIES_XML', 1); + +/** + * Replace only required XML entitites + * This setting will replace <, " and & + */ +define('XML_UTIL_ENTITIES_XML_REQUIRED', 2); + +/** + * Replace HTML entitites + * @link http://www.php.net/htmlentities + */ +define('XML_UTIL_ENTITIES_HTML', 3); + +/** + * Collapse all empty tags. + */ +define('XML_UTIL_COLLAPSE_ALL', 1); + +/** + * Collapse only empty XHTML tags that have no end tag. + */ +define('XML_UTIL_COLLAPSE_XHTML_ONLY', 2); + +/** + * Utility class for working with XML documents + * + * @category XML + * @package XML_Util + * @author Stephan Schmidt <schst@php.net> + * @copyright 2003-2008 Stephan Schmidt <schst@php.net> + * @license http://opensource.org/licenses/bsd-license New BSD License + * @version Release: 1.3.0 + * @link http://pear.php.net/package/XML_Util + */ +class XML_Util +{ + /** + * Return API version + * + * @return string $version API version + */ + public static function apiVersion() + { + return '1.1'; + } + + /** + * Replace XML entities + * + * With the optional second parameter, you may select, which + * entities should be replaced. + * + * <code> + * require_once 'XML/Util.php'; + * + * // replace XML entites: + * $string = XML_Util::replaceEntities('This string contains < & >.'); + * </code> + * + * With the optional third parameter, you may pass the character encoding + * <code> + * require_once 'XML/Util.php'; + * + * // replace XML entites in UTF-8: + * $string = XML_Util::replaceEntities( + * 'This string contains < & > as well as ä, ö, ß, à and ê', + * XML_UTIL_ENTITIES_HTML, + * 'UTF-8' + * ); + * </code> + * + * @param string $string string where XML special chars + * should be replaced + * @param int $replaceEntities setting for entities in attribute values + * (one of XML_UTIL_ENTITIES_XML, + * XML_UTIL_ENTITIES_XML_REQUIRED, + * XML_UTIL_ENTITIES_HTML) + * @param string $encoding encoding value (if any)... + * must be a valid encoding as determined + * by the htmlentities() function + * + * @return string string with replaced chars + * @see reverseEntities() + */ + public static function replaceEntities( + $string, $replaceEntities = XML_UTIL_ENTITIES_XML, $encoding = 'ISO-8859-1' + ) { + switch ($replaceEntities) { + case XML_UTIL_ENTITIES_XML: + return strtr( + $string, + array( + '&' => '&', + '>' => '>', + '<' => '<', + '"' => '"', + '\'' => ''' + ) + ); + break; + case XML_UTIL_ENTITIES_XML_REQUIRED: + return strtr( + $string, + array( + '&' => '&', + '<' => '<', + '"' => '"' + ) + ); + break; + case XML_UTIL_ENTITIES_HTML: + return htmlentities($string, ENT_COMPAT, $encoding); + break; + } + return $string; + } + + /** + * Reverse XML entities + * + * With the optional second parameter, you may select, which + * entities should be reversed. + * + * <code> + * require_once 'XML/Util.php'; + * + * // reverse XML entites: + * $string = XML_Util::reverseEntities('This string contains < & >.'); + * </code> + * + * With the optional third parameter, you may pass the character encoding + * <code> + * require_once 'XML/Util.php'; + * + * // reverse XML entites in UTF-8: + * $string = XML_Util::reverseEntities( + * 'This string contains < & > as well as' + * . ' ä, ö, ß, à and ê', + * XML_UTIL_ENTITIES_HTML, + * 'UTF-8' + * ); + * </code> + * + * @param string $string string where XML special chars + * should be replaced + * @param int $replaceEntities setting for entities in attribute values + * (one of XML_UTIL_ENTITIES_XML, + * XML_UTIL_ENTITIES_XML_REQUIRED, + * XML_UTIL_ENTITIES_HTML) + * @param string $encoding encoding value (if any)... + * must be a valid encoding as determined + * by the html_entity_decode() function + * + * @return string string with replaced chars + * @see replaceEntities() + */ + public static function reverseEntities( + $string, $replaceEntities = XML_UTIL_ENTITIES_XML, $encoding = 'ISO-8859-1' + ) { + switch ($replaceEntities) { + case XML_UTIL_ENTITIES_XML: + return strtr( + $string, + array( + '&' => '&', + '>' => '>', + '<' => '<', + '"' => '"', + ''' => '\'' + ) + ); + break; + case XML_UTIL_ENTITIES_XML_REQUIRED: + return strtr( + $string, + array( + '&' => '&', + '<' => '<', + '"' => '"' + ) + ); + break; + case XML_UTIL_ENTITIES_HTML: + return html_entity_decode($string, ENT_COMPAT, $encoding); + break; + } + return $string; + } + + /** + * Build an xml declaration + * + * <code> + * require_once 'XML/Util.php'; + * + * // get an XML declaration: + * $xmlDecl = XML_Util::getXMLDeclaration('1.0', 'UTF-8', true); + * </code> + * + * @param string $version xml version + * @param string $encoding character encoding + * @param bool $standalone document is standalone (or not) + * + * @return string xml declaration + * @uses attributesToString() to serialize the attributes of the + * XML declaration + */ + public static function getXMLDeclaration( + $version = '1.0', $encoding = null, $standalone = null + ) { + $attributes = array( + 'version' => $version, + ); + // add encoding + if ($encoding !== null) { + $attributes['encoding'] = $encoding; + } + // add standalone, if specified + if ($standalone !== null) { + $attributes['standalone'] = $standalone ? 'yes' : 'no'; + } + + return sprintf( + '<?xml%s?>', + XML_Util::attributesToString($attributes, false) + ); + } + + /** + * Build a document type declaration + * + * <code> + * require_once 'XML/Util.php'; + * + * // get a doctype declaration: + * $xmlDecl = XML_Util::getDocTypeDeclaration('rootTag','myDocType.dtd'); + * </code> + * + * @param string $root name of the root tag + * @param string $uri uri of the doctype definition + * (or array with uri and public id) + * @param string $internalDtd internal dtd entries + * + * @return string doctype declaration + * @since 0.2 + */ + public static function getDocTypeDeclaration( + $root, $uri = null, $internalDtd = null + ) { + if (is_array($uri)) { + $ref = sprintf(' PUBLIC "%s" "%s"', $uri['id'], $uri['uri']); + } elseif (!empty($uri)) { + $ref = sprintf(' SYSTEM "%s"', $uri); + } else { + $ref = ''; + } + + if (empty($internalDtd)) { + return sprintf('<!DOCTYPE %s%s>', $root, $ref); + } else { + return sprintf("<!DOCTYPE %s%s [\n%s\n]>", $root, $ref, $internalDtd); + } + } + + /** + * Create string representation of an attribute list + * + * <code> + * require_once 'XML/Util.php'; + * + * // build an attribute string + * $att = array( + * 'foo' => 'bar', + * 'argh' => 'tomato' + * ); + * + * $attList = XML_Util::attributesToString($att); + * </code> + * + * @param array $attributes attribute array + * @param bool|array $sort sort attribute list alphabetically, + * may also be an assoc array containing + * the keys 'sort', 'multiline', 'indent', + * 'linebreak' and 'entities' + * @param bool $multiline use linebreaks, if more than + * one attribute is given + * @param string $indent string used for indentation of + * multiline attributes + * @param string $linebreak string used for linebreaks of + * multiline attributes + * @param int $entities setting for entities in attribute values + * (one of XML_UTIL_ENTITIES_NONE, + * XML_UTIL_ENTITIES_XML, + * XML_UTIL_ENTITIES_XML_REQUIRED, + * XML_UTIL_ENTITIES_HTML) + * + * @return string string representation of the attributes + * @uses replaceEntities() to replace XML entities in attribute values + * @todo allow sort also to be an options array + */ + public static function attributesToString( + $attributes, $sort = true, $multiline = false, + $indent = ' ', $linebreak = "\n", $entities = XML_UTIL_ENTITIES_XML + ) { + /* + * second parameter may be an array + */ + if (is_array($sort)) { + if (isset($sort['multiline'])) { + $multiline = $sort['multiline']; + } + if (isset($sort['indent'])) { + $indent = $sort['indent']; + } + if (isset($sort['linebreak'])) { + $multiline = $sort['linebreak']; + } + if (isset($sort['entities'])) { + $entities = $sort['entities']; + } + if (isset($sort['sort'])) { + $sort = $sort['sort']; + } else { + $sort = true; + } + } + $string = ''; + if (is_array($attributes) && !empty($attributes)) { + if ($sort) { + ksort($attributes); + } + if (!$multiline || count($attributes) == 1) { + foreach ($attributes as $key => $value) { + if ($entities != XML_UTIL_ENTITIES_NONE) { + if ($entities === XML_UTIL_CDATA_SECTION) { + $entities = XML_UTIL_ENTITIES_XML; + } + $value = XML_Util::replaceEntities($value, $entities); + } + $string .= ' ' . $key . '="' . $value . '"'; + } + } else { + $first = true; + foreach ($attributes as $key => $value) { + if ($entities != XML_UTIL_ENTITIES_NONE) { + $value = XML_Util::replaceEntities($value, $entities); + } + if ($first) { + $string .= ' ' . $key . '="' . $value . '"'; + $first = false; + } else { + $string .= $linebreak . $indent . $key . '="' . $value . '"'; + } + } + } + } + return $string; + } + + /** + * Collapses empty tags. + * + * @param string $xml XML + * @param int $mode Whether to collapse all empty tags (XML_UTIL_COLLAPSE_ALL) + * or only XHTML (XML_UTIL_COLLAPSE_XHTML_ONLY) ones. + * + * @return string XML + */ + public static function collapseEmptyTags($xml, $mode = XML_UTIL_COLLAPSE_ALL) + { + if ($mode == XML_UTIL_COLLAPSE_XHTML_ONLY) { + return preg_replace( + '/<(area|base(?:font)?|br|col|frame|hr|img|input|isindex|link|meta|' + . 'param)([^>]*)><\/\\1>/s', + '<\\1\\2 />', + $xml + ); + } else { + return preg_replace('/<(\w+)([^>]*)><\/\\1>/s', '<\\1\\2 />', $xml); + } + } + + /** + * Create a tag + * + * This method will call XML_Util::createTagFromArray(), which + * is more flexible. + * + * <code> + * require_once 'XML/Util.php'; + * + * // create an XML tag: + * $tag = XML_Util::createTag('myNs:myTag', + * array('foo' => 'bar'), + * 'This is inside the tag', + * 'http://www.w3c.org/myNs#'); + * </code> + * + * @param string $qname qualified tagname (including namespace) + * @param array $attributes array containg attributes + * @param mixed $content the content + * @param string $namespaceUri URI of the namespace + * @param int $replaceEntities whether to replace XML special chars in + * content, embedd it in a CData section + * or none of both + * @param bool $multiline whether to create a multiline tag where + * each attribute gets written to a single line + * @param string $indent string used to indent attributes + * (_auto indents attributes so they start + * at the same column) + * @param string $linebreak string used for linebreaks + * @param bool $sortAttributes Whether to sort the attributes or not + * + * @return string XML tag + * @see createTagFromArray() + * @uses createTagFromArray() to create the tag + */ + public static function createTag( + $qname, $attributes = array(), $content = null, + $namespaceUri = null, $replaceEntities = XML_UTIL_REPLACE_ENTITIES, + $multiline = false, $indent = '_auto', $linebreak = "\n", + $sortAttributes = true + ) { + $tag = array( + 'qname' => $qname, + 'attributes' => $attributes + ); + + // add tag content + if ($content !== null) { + $tag['content'] = $content; + } + + // add namespace Uri + if ($namespaceUri !== null) { + $tag['namespaceUri'] = $namespaceUri; + } + + return XML_Util::createTagFromArray( + $tag, $replaceEntities, $multiline, + $indent, $linebreak, $sortAttributes + ); + } + + /** + * Create a tag from an array. + * This method awaits an array in the following format + * <pre> + * array( + * // qualified name of the tag + * 'qname' => $qname + * + * // namespace prefix (optional, if qname is specified or no namespace) + * 'namespace' => $namespace + * + * // local part of the tagname (optional, if qname is specified) + * 'localpart' => $localpart, + * + * // array containing all attributes (optional) + * 'attributes' => array(), + * + * // tag content (optional) + * 'content' => $content, + * + * // namespaceUri for the given namespace (optional) + * 'namespaceUri' => $namespaceUri + * ) + * </pre> + * + * <code> + * require_once 'XML/Util.php'; + * + * $tag = array( + * 'qname' => 'foo:bar', + * 'namespaceUri' => 'http://foo.com', + * 'attributes' => array('key' => 'value', 'argh' => 'fruit&vegetable'), + * 'content' => 'I\'m inside the tag', + * ); + * // creating a tag with qualified name and namespaceUri + * $string = XML_Util::createTagFromArray($tag); + * </code> + * + * @param array $tag tag definition + * @param int $replaceEntities whether to replace XML special chars in + * content, embedd it in a CData section + * or none of both + * @param bool $multiline whether to create a multiline tag where each + * attribute gets written to a single line + * @param string $indent string used to indent attributes + * (_auto indents attributes so they start + * at the same column) + * @param string $linebreak string used for linebreaks + * @param bool $sortAttributes Whether to sort the attributes or not + * + * @return string XML tag + * + * @see createTag() + * @uses attributesToString() to serialize the attributes of the tag + * @uses splitQualifiedName() to get local part and namespace of a qualified name + * @uses createCDataSection() + * @uses raiseError() + */ + public static function createTagFromArray( + $tag, $replaceEntities = XML_UTIL_REPLACE_ENTITIES, + $multiline = false, $indent = '_auto', $linebreak = "\n", + $sortAttributes = true + ) { + if (isset($tag['content']) && !is_scalar($tag['content'])) { + return XML_Util::raiseError( + 'Supplied non-scalar value as tag content', + XML_UTIL_ERROR_NON_SCALAR_CONTENT + ); + } + + if (!isset($tag['qname']) && !isset($tag['localPart'])) { + return XML_Util::raiseError( + 'You must either supply a qualified name ' + . '(qname) or local tag name (localPart).', + XML_UTIL_ERROR_NO_TAG_NAME + ); + } + + // if no attributes hav been set, use empty attributes + if (!isset($tag['attributes']) || !is_array($tag['attributes'])) { + $tag['attributes'] = array(); + } + + if (isset($tag['namespaces'])) { + foreach ($tag['namespaces'] as $ns => $uri) { + $tag['attributes']['xmlns:' . $ns] = $uri; + } + } + + if (!isset($tag['qname'])) { + // qualified name is not given + + // check for namespace + if (isset($tag['namespace']) && !empty($tag['namespace'])) { + $tag['qname'] = $tag['namespace'] . ':' . $tag['localPart']; + } else { + $tag['qname'] = $tag['localPart']; + } + } elseif (isset($tag['namespaceUri']) && !isset($tag['namespace'])) { + // namespace URI is set, but no namespace + + $parts = XML_Util::splitQualifiedName($tag['qname']); + + $tag['localPart'] = $parts['localPart']; + if (isset($parts['namespace'])) { + $tag['namespace'] = $parts['namespace']; + } + } + + if (isset($tag['namespaceUri']) && !empty($tag['namespaceUri'])) { + // is a namespace given + if (isset($tag['namespace']) && !empty($tag['namespace'])) { + $tag['attributes']['xmlns:' . $tag['namespace']] + = $tag['namespaceUri']; + } else { + // define this Uri as the default namespace + $tag['attributes']['xmlns'] = $tag['namespaceUri']; + } + } + + // check for multiline attributes + if ($multiline === true) { + if ($indent === '_auto') { + $indent = str_repeat(' ', (strlen($tag['qname'])+2)); + } + } + + // create attribute list + $attList = XML_Util::attributesToString( + $tag['attributes'], + $sortAttributes, $multiline, $indent, $linebreak + ); + if (!isset($tag['content']) || (string)$tag['content'] == '') { + $tag = sprintf('<%s%s />', $tag['qname'], $attList); + } else { + switch ($replaceEntities) { + case XML_UTIL_ENTITIES_NONE: + break; + case XML_UTIL_CDATA_SECTION: + $tag['content'] = XML_Util::createCDataSection($tag['content']); + break; + default: + $tag['content'] = XML_Util::replaceEntities( + $tag['content'], $replaceEntities + ); + break; + } + $tag = sprintf( + '<%s%s>%s</%s>', $tag['qname'], $attList, $tag['content'], + $tag['qname'] + ); + } + return $tag; + } + + /** + * Create a start element + * + * <code> + * require_once 'XML/Util.php'; + * + * // create an XML start element: + * $tag = XML_Util::createStartElement('myNs:myTag', + * array('foo' => 'bar') ,'http://www.w3c.org/myNs#'); + * </code> + * + * @param string $qname qualified tagname (including namespace) + * @param array $attributes array containg attributes + * @param string $namespaceUri URI of the namespace + * @param bool $multiline whether to create a multiline tag where each + * attribute gets written to a single line + * @param string $indent string used to indent attributes (_auto indents + * attributes so they start at the same column) + * @param string $linebreak string used for linebreaks + * @param bool $sortAttributes Whether to sort the attributes or not + * + * @return string XML start element + * @see createEndElement(), createTag() + */ + public static function createStartElement( + $qname, $attributes = array(), $namespaceUri = null, + $multiline = false, $indent = '_auto', $linebreak = "\n", + $sortAttributes = true + ) { + // if no attributes hav been set, use empty attributes + if (!isset($attributes) || !is_array($attributes)) { + $attributes = array(); + } + + if ($namespaceUri != null) { + $parts = XML_Util::splitQualifiedName($qname); + } + + // check for multiline attributes + if ($multiline === true) { + if ($indent === '_auto') { + $indent = str_repeat(' ', (strlen($qname)+2)); + } + } + + if ($namespaceUri != null) { + // is a namespace given + if (isset($parts['namespace']) && !empty($parts['namespace'])) { + $attributes['xmlns:' . $parts['namespace']] = $namespaceUri; + } else { + // define this Uri as the default namespace + $attributes['xmlns'] = $namespaceUri; + } + } + + // create attribute list + $attList = XML_Util::attributesToString( + $attributes, $sortAttributes, + $multiline, $indent, $linebreak + ); + $element = sprintf('<%s%s>', $qname, $attList); + return $element; + } + + /** + * Create an end element + * + * <code> + * require_once 'XML/Util.php'; + * + * // create an XML start element: + * $tag = XML_Util::createEndElement('myNs:myTag'); + * </code> + * + * @param string $qname qualified tagname (including namespace) + * + * @return string XML end element + * @see createStartElement(), createTag() + */ + public static function createEndElement($qname) + { + $element = sprintf('</%s>', $qname); + return $element; + } + + /** + * Create an XML comment + * + * <code> + * require_once 'XML/Util.php'; + * + * // create an XML start element: + * $tag = XML_Util::createComment('I am a comment'); + * </code> + * + * @param string $content content of the comment + * + * @return string XML comment + */ + public static function createComment($content) + { + $comment = sprintf('<!-- %s -->', $content); + return $comment; + } + + /** + * Create a CData section + * + * <code> + * require_once 'XML/Util.php'; + * + * // create a CData section + * $tag = XML_Util::createCDataSection('I am content.'); + * </code> + * + * @param string $data data of the CData section + * + * @return string CData section with content + */ + public static function createCDataSection($data) + { + return sprintf( + '<![CDATA[%s]]>', + preg_replace('/\]\]>/', ']]]]><![CDATA[>', strval($data)) + ); + } + + /** + * Split qualified name and return namespace and local part + * + * <code> + * require_once 'XML/Util.php'; + * + * // split qualified tag + * $parts = XML_Util::splitQualifiedName('xslt:stylesheet'); + * </code> + * the returned array will contain two elements: + * <pre> + * array( + * 'namespace' => 'xslt', + * 'localPart' => 'stylesheet' + * ); + * </pre> + * + * @param string $qname qualified tag name + * @param string $defaultNs default namespace (optional) + * + * @return array array containing namespace and local part + */ + public static function splitQualifiedName($qname, $defaultNs = null) + { + if (strstr($qname, ':')) { + $tmp = explode(':', $qname); + return array( + 'namespace' => $tmp[0], + 'localPart' => $tmp[1] + ); + } + return array( + 'namespace' => $defaultNs, + 'localPart' => $qname + ); + } + + /** + * Check, whether string is valid XML name + * + * <p>XML names are used for tagname, attribute names and various + * other, lesser known entities.</p> + * <p>An XML name may only consist of alphanumeric characters, + * dashes, undescores and periods, and has to start with a letter + * or an underscore.</p> + * + * <code> + * require_once 'XML/Util.php'; + * + * // verify tag name + * $result = XML_Util::isValidName('invalidTag?'); + * if (is_a($result, 'PEAR_Error')) { + * print 'Invalid XML name: ' . $result->getMessage(); + * } + * </code> + * + * @param string $string string that should be checked + * + * @return mixed true, if string is a valid XML name, PEAR error otherwise + * + * @todo support for other charsets + * @todo PEAR CS - unable to avoid 85-char limit on second preg_match + */ + public static function isValidName($string) + { + // check for invalid chars + if (!preg_match('/^[[:alpha:]_]\\z/', $string{0})) { + return XML_Util::raiseError( + 'XML names may only start with letter or underscore', + XML_UTIL_ERROR_INVALID_START + ); + } + + // check for invalid chars + $match = preg_match( + '/^([[:alpha:]_]([[:alnum:]\-\.]*)?:)?' + . '[[:alpha:]_]([[:alnum:]\_\-\.]+)?\\z/', + $string + ); + if (!$match) { + return XML_Util::raiseError( + 'XML names may only contain alphanumeric ' + . 'chars, period, hyphen, colon and underscores', + XML_UTIL_ERROR_INVALID_CHARS + ); + } + // XML name is valid + return true; + } + + /** + * Replacement for XML_Util::raiseError + * + * Avoids the necessity to always require + * PEAR.php + * + * @param string $msg error message + * @param int $code error code + * + * @return PEAR_Error + * @todo PEAR CS - should this use include_once instead? + */ + public static function raiseError($msg, $code) + { + include_once 'PEAR.php'; + return PEAR::raiseError($msg, $code); + } +} +?> diff --git a/pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php b/pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php index 34d07c68b98e66ceb8211fbd6a3d11e309a667d1..7d03ebff4cc62ac61393f14a575f7c473c66ece4 100755 --- a/pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php +++ b/pkg/vtiger/modules/MailManager/modules/MailManager/views/Mail.php @@ -245,6 +245,7 @@ class MailManager_Mail_View extends MailManager_Abstract_View { } else if ('attachment_dld' == $this->getOperationArg($request)) { $attachmentName = $request->getRaw('_atname'); $attachmentName= str_replace(' ', '_', $attachmentName); + $attachmentId = $request->get('_atid'); if (MailManager_Utils_Helper::allowedFileExtension($attachmentName)) { // This is to handle larger uploads @@ -253,7 +254,7 @@ class MailManager_Mail_View extends MailManager_Abstract_View { $mail = new MailManager_Message_Model(false, false); $mail->readFromDB($request->get('_muid')); - $attachment = $mail->attachments(true, $attachmentName); + $attachment = $mail->attachments(true, $attachmentName, $attachmentId); //As we are sending attachment name, it will return only that attachment details if($attachment[0]['data']) { header("Content-type: application/octet-stream"); @@ -361,4 +362,4 @@ class MailManager_Mail_View extends MailManager_Abstract_View { return $request->validateReadAccess(); } } -?> \ No newline at end of file +?> diff --git a/pkg/vtiger/modules/MailManager/modules/MailManager/views/Relation.php b/pkg/vtiger/modules/MailManager/modules/MailManager/views/Relation.php index 8253d412ccf1f28543519b472d64457e4545dcdc..b2c7a6166b7d91de56b71f6ad5f7ec7c24086541 100755 --- a/pkg/vtiger/modules/MailManager/modules/MailManager/views/Relation.php +++ b/pkg/vtiger/modules/MailManager/modules/MailManager/views/Relation.php @@ -349,6 +349,8 @@ class MailManager_Relation_View extends MailManager_Abstract_View { $viewer->assign('FOLDER', $foldername); $response->setResult( array( 'ui' => $viewer->view( 'Relationship.tpl', 'MailManager', true ) ) ); + } catch (DuplicateException $e) { + $response->setResult(array('ui' => '', 'error' => $e, 'title' => $e->getMessage(), 'message' => $e->getDuplicationMessage())); } catch(Exception $e) { $response->setResult( array( 'ui' => '', 'error' => $e )); } diff --git a/pkg/vtiger/modules/MailManager/templates/resources/MailManager.js b/pkg/vtiger/modules/MailManager/templates/resources/MailManager.js index 91c87a09e7580bb3b71d38300ffb2bf97b6a46fb..e59ff0616a61e44556f7740f6d5d1404c6936f49 100755 --- a/pkg/vtiger/modules/MailManager/templates/resources/MailManager.js +++ b/pkg/vtiger/modules/MailManager/templates/resources/MailManager.js @@ -800,7 +800,8 @@ if (typeof(MailManager) == 'undefined') { 'enabled' : true } }); - AppConnector.request(MailManager._baseurl() + "_operation=relation&_operationarg=link&" + frmparams).then(function(responseJSON) { + AppConnector.request(MailManager._baseurl() + "_operation=relation&_operationarg=link&" + frmparams).then(function(responseJSON) { + responseJSON = JSON.parse(responseJSON); progressIndicatorElement.progressIndicator({ 'mode' : 'hide' }) @@ -901,7 +902,7 @@ if (typeof(MailManager) == 'undefined') { 'mode' : 'hide' }) //var response = MailManager.removeHidElement(transport.responseText); - responseJSON = JSON.parse(response); + responseJSON = JSON.parse(responseJSON); var resultJSON = responseJSON['result']; if (resultJSON['ui']) { MailManager.mail_associate_create_cancel(); diff --git a/pkg/vtiger/modules/Mobile/modules/Mobile/api.v1.php b/pkg/vtiger/modules/Mobile/modules/Mobile/api.v1.php index 543da0e3e4fbef4733b4b2e887c2fff93c710692..c1003c66d342080fcc69eff6fdf91132796ae0aa 100644 --- a/pkg/vtiger/modules/Mobile/modules/Mobile/api.v1.php +++ b/pkg/vtiger/modules/Mobile/modules/Mobile/api.v1.php @@ -21,6 +21,7 @@ class Mobile_APIV1_Controller { 'fetchRecord' => array('file' => '/api/ws/FetchRecord.php', 'class' => 'Mobile_WS_FetchRecord'), 'fetchRecordWithGrouping' => array('file' => '/api/ws/FetchRecordWithGrouping.php', 'class' => 'Mobile_WS_FetchRecordWithGrouping'), 'fetchRecordsWithGrouping' => array('file' => '/api/ws/FetchRecordsWithGrouping.php', 'class' => 'Mobile_WS_FetchRecordsWithGrouping'), + 'fetchReferenceRecords' => array('file' => '/api/ws/FetchReferenceRecords.php', 'class' => 'Mobile_WS_FetchReferenceRecords'), 'describe' => array('file' => '/api/ws/Describe.php', 'class' => 'Mobile_WS_Describe'), 'saveRecord' => array('file' => '/api/ws/SaveRecord.php', 'class' => 'Mobile_WS_SaveRecord'), 'syncModuleRecords' => array('file' => '/api/ws/SyncModuleRecords.php', 'class' => 'Mobile_WS_SyncModuleRecords'), diff --git a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/Describe.php b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/Describe.php index 77ba32205d375fc0ce9e6374ced3e1726a07b5a7..5fee0d5dc9f9e6b1835dcc842cef02f9100fbe65 100644 --- a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/Describe.php +++ b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/Describe.php @@ -42,7 +42,20 @@ class Mobile_WS_Describe extends Mobile_WS_Controller { $groups[$groupsWSId.'x'.$id] = $name; } $field['type']['picklistValues']['users'] = $users; - $field['type']['picklistValues']['groups'] = $groups; + $field['type']['picklistValues']['groups'] = $groups; + + //Special treatment to set default mandatory owner field + if (!$field['default']) { + $field['default'] = $usersWSId.'x'.$current_user->id; + } + } + if($fieldModel && $fieldModel->get('name') == 'salutationtype') { + $values = $fieldModel->getPicklistValues(); + $picklistValues = array(); + foreach($values as $value => $label) { + $picklistValues[] = array('value'=>$value, 'label'=>$label); + } + $field['type']['picklistValues'] = $picklistValues; } $newFields[] = $field; } diff --git a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/FetchModuleFilters.php b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/FetchModuleFilters.php index c064c180916e5e94114beccd334a9c3afb3a6b40..89990180548b8a6cadc264ed2df8b364aa34d9d4 100644 --- a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/FetchModuleFilters.php +++ b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/FetchModuleFilters.php @@ -25,7 +25,7 @@ class Mobile_WS_FetchModuleFilters extends Mobile_WS_Controller { } } $response = new Mobile_API_Response(); - $response->setResult(array('filters'=>$result)); + $response->setResult(array('filters'=>$result, 'moduleLabel' => vtranslate($module, $module))); return $response; } diff --git a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/FetchRecord.php b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/FetchRecord.php index b3cff51e21d3e63daf348eebc1bcbe2ba314addd..3695504a9cab4a1b8dda2e734157bb1397694eae 100644 --- a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/FetchRecord.php +++ b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/FetchRecord.php @@ -107,10 +107,11 @@ class Mobile_WS_FetchRecord extends Mobile_WS_Controller { } $relationId = $relation->getId(); $relationListView = Vtiger_RelationListView_Model::getInstance($parentRecordModel, $relatedModuleName, $relation->get('label'),$relationId); - $count = $relationListView->getRelatedEntriesCount(); - $relatedRecordsCount[$relation->get('label')] = array('count'=>$count,'relatedModule'=>$relatedModuleName); + $count = $relationListView->getRelatedEntriesCount(); + $relatedLabel = vtranslate($relation->get('label'), $relatedModuleName); + $relatedRecordsCount[$relatedLabel] = array('count'=>$count,'relatedModule'=>$relatedModuleName); } return $relatedRecordsCount; } -} \ No newline at end of file +} diff --git a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/FetchReferenceRecords.php b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/FetchReferenceRecords.php new file mode 100644 index 0000000000000000000000000000000000000000..d877c526ea25659724361eb737c4f2f3284455b6 --- /dev/null +++ b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/FetchReferenceRecords.php @@ -0,0 +1,62 @@ +<?php +/*+********************************************************************************** + * The contents of this file are subject to the vtiger CRM Public License Version 1.0 + * ("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. + ************************************************************************************/ + +include_once 'include/Webservices/DescribeObject.php'; +include_once 'include/Webservices/Query.php'; + +class Mobile_WS_FetchReferenceRecords extends Mobile_WS_Controller { + + function process(Mobile_API_Request $request) { + + $response = new Mobile_API_Response(); + $current_user = $this->getActiveUser(); + + //fetch reference records request params + $referenceModule = $request->get('module'); + $searchKey = $request->get('searchValue'); + + if($referenceModule=='Documents') { + $labelFields = 'notes_title'; + } else if($referenceModule=='HelpDesk') { + $labelFields = 'ticket_title'; + } else { + $describe = vtws_describe($referenceModule, $current_user); + $labelFields = $describe['labelFields']; + } + + $labelFieldsArray = explode(',', $labelFields); + + $sql = sprintf("SELECT %s FROM %s WHERE ",$labelFields,$referenceModule); + + foreach($labelFieldsArray as $labelField) { + + $sql .= $labelField . " LIKE '%" . $searchKey . "%' OR "; + } + $sql = rtrim($sql,' OR ') . ';'; + + $wsresult = vtws_query($sql,$current_user); + + $referenceRecords = array(); + foreach($wsresult as $result) { + $record = array(); + foreach($labelFieldsArray as $labelField) { + $record['label'] .= $result[$labelField] . ' '; + } + $record['label'] = trim($record['label']); + $record['value'] = decode_html($result['id']); + $referenceRecords[] = $record; + } + + $response->setResult($referenceRecords); + return $response; + } + +} +?> \ No newline at end of file diff --git a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/ListModuleRecords.php b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/ListModuleRecords.php index afb585f291d22545c258d0acc797e9cf848a35f3..f047348549eec8d341077e830fa45b6b1a35ba6a 100644 --- a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/ListModuleRecords.php +++ b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/ListModuleRecords.php @@ -39,7 +39,8 @@ class Mobile_WS_ListModuleRecords extends Mobile_WS_Controller { $headerFields = array(); $fields = array(); - + $headerFieldColsMap = array(); + $nameFields = $moduleModel->getNameFields(); if(is_string($nameFields)) { $nameFieldModel = $moduleModel->getField($nameFields); @@ -56,8 +57,12 @@ class Mobile_WS_ListModuleRecords extends Mobile_WS_Controller { foreach($headerFieldModels as $fieldName => $fieldModel) { $headerFields[] = $fieldName; $fields[] = array('name'=>$fieldName, 'label'=>$fieldModel->get('label'), 'fieldType'=>$fieldModel->getFieldDataType()); + $headerFieldColsMap[$fieldModel->get('column')] = $fieldName; } - + + if ($module == 'HelpDesk') $headerFieldColsMap['title'] = 'ticket_title'; + if ($module == 'Documents') $headerFieldColsMap['title'] = 'notes_title'; + $listViewModel = Vtiger_ListView_Model::getInstance($module, $filterId, $headerFields); if(!empty($sortOrder)) { @@ -83,6 +88,10 @@ class Mobile_WS_ListModuleRecords extends Mobile_WS_Controller { $record = array('id'=>$listViewEntryModel->getId()); foreach($data as $i => $value) { if(is_string($i)) { + // Transform header-field (column to fieldname) in response. + if (isset($headerFieldColsMap[$i])) { + $i = $headerFieldColsMap[$i]; + } $record[$i]= decode_html($value); } } diff --git a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/SaveRecord.php b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/SaveRecord.php index 1ef7ad42c4646b2bb6cad8dfa7f74b0608a74e02..3124d1c0801a227d983c8a0fb6a0e6af7c47eb72 100644 --- a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/SaveRecord.php +++ b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/SaveRecord.php @@ -34,59 +34,51 @@ class Mobile_WS_SaveRecord extends Mobile_WS_FetchRecordWithGrouping { } else { $values = $valuesJSONString; // Either empty or already decoded. } - $response = new Mobile_API_Response(); - if (empty($values)) { $response->setError(1501, "Values cannot be empty!"); return $response; } - try { if (vtws_recordExists($recordid)) { // Retrieve or Initalize - if (!empty($recordid)) { - $recordModel = Vtiger_Record_Model::getInstanceById($recordid, $module); - } else { - $recordModel = Vtiger_Record_Model::getCleanInstance($module); + if (!empty($recordid) && !$this->isTemplateRecordRequest($request)) { + $this->recordValues = vtws_retrieve($recordid, $current_user); + } else { + $this->recordValues = array(); } - // Set the modified values foreach($values as $name => $value) { - $recordModel->set($name, $value); + $this->recordValues[$name] = $value; } - - $moduleModel = Vtiger_Module_Model::getInstance($module); - $fieldModelList = $moduleModel->getFields(); - foreach ($fieldModelList as $fieldName => $fieldModel) { - $fieldValue = $values[$fieldName]; - $fieldDataType = $fieldModel->getFieldDataType(); - if($fieldDataType == 'time'){ - $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue); - } - if($fieldValue !== null) { - if(!is_array($fieldValue) && $fieldDataType != 'currency') { - $fieldValue = trim($fieldValue); - } - $recordModel->set($fieldName, $fieldValue); - } - } - // Update or Create - if (!empty($recordid)) { - $recordModel->set('id', $recordid); - $recordModel->set('mode', 'edit'); - $recordModel->save(); - } else { - $recordModel->save(); - } - $response->setResult($recordModel->getData()); - } else { - $response->setError("RECORD_NOT_FOUND", "Record does not exist"); + // Update or Create + if (isset($this->recordValues['id'])) { + $this->recordValues = vtws_update($this->recordValues, $current_user); + } else { + // Set right target module name for Calendar/Event record + if ($module == 'Calendar') { + if (!empty($this->recordValues['eventstatus']) && $this->recordValues['activitytype'] != 'Task') { + $module = 'Events'; + } + } + // to save Source of Record while Creating + $this->recordValues['source'] = 'MOBILE'; + $this->recordValues = vtws_create($module, $this->recordValues, $current_user); + } + // Update the record id + $request->set('record', $this->recordValues['id']); + // Gather response with full details + $response = parent::process($request); return $response; + } else { + $response->setError("RECORD_NOT_FOUND", "Record does not exist"); + return $response; } - } catch(Exception $e) { + } catch (DuplicateException $e) { $response->setError($e->getCode(), $e->getMessage()); - } + } catch(Exception $e) { + $response->setError($e->getCode(), $e->getMessage()); + } return $response; } diff --git a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/UserInfo.php b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/UserInfo.php index 09f5c77c400d793963927c70db7d099ea9d71105..463247494119b5d5e53c05f06bd3759755d0cfd1 100644 --- a/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/UserInfo.php +++ b/pkg/vtiger/modules/Mobile/modules/Mobile/api/ws/UserInfo.php @@ -19,7 +19,13 @@ class Mobile_WS_UserInfo extends Mobile_WS_Controller { 'id' => $current_user->id, 'first_name' => $current_user->first_name, 'last_name' => $current_user->last_name, - 'email' => $current_user->email1 + 'email' => $current_user->email1, + 'time_zone' => $current_user->time_zone, + 'hour_format' => $current_user->hour_format, + 'date_format' => $current_user->date_format, + 'is_admin' => $current_user->is_admin, + 'call_duration' => $current_user->callduration, + 'other_event_duration' => $current_user->othereventduration, ); $allVisibleModules = Settings_MenuEditor_Module_Model::getAllVisibleModules(); diff --git a/pkg/vtiger/modules/ModComments/manifest.xml b/pkg/vtiger/modules/ModComments/manifest.xml index 785146a75e8df0ec4b059a2c219346dbe974a88f..aa91ead3bf854e68b8f7ca1762eb2e82f6e0e153 100644 --- a/pkg/vtiger/modules/ModComments/manifest.xml +++ b/pkg/vtiger/modules/ModComments/manifest.xml @@ -3,7 +3,7 @@ <exporttime>2010-04-27 15:17:37</exporttime> <name>ModComments</name> <label>Comments</label> - <parent>Tools</parent> + <parent></parent> <version>2.1</version> <dependencies> <vtiger_version>6.0.0rc</vtiger_version> diff --git a/pkg/vtiger/modules/ModComments/modules/ModComments/ModComments.php b/pkg/vtiger/modules/ModComments/modules/ModComments/ModComments.php index cac136052dc48b8cc63f39147539feb5dde6df68..1d2832e3b4c7b3101bf8e2c9262b3a4ab23cd97b 100644 --- a/pkg/vtiger/modules/ModComments/modules/ModComments/ModComments.php +++ b/pkg/vtiger/modules/ModComments/modules/ModComments/ModComments.php @@ -66,16 +66,18 @@ class ModComments extends ModCommentsCore { if (is_string($moduleNames)) $moduleNames = array($moduleNames); + $modCommentsModule = Vtiger_Module::getInstance('ModComments'); + $commentWidgetModules = array(); foreach($moduleNames as $moduleName) { $module = Vtiger_Module::getInstance($moduleName); if($module) { $module->addLink($widgetType, $widgetName, "block://ModComments:modules/ModComments/ModComments.php"); + $module->setRelatedList($modCommentsModule, 'ModComments', array(''), 'get_comments'); $commentWidgetModules[] = $moduleName; } } if (count($commentWidgetModules) > 0) { - $modCommentsModule = Vtiger_Module::getInstance('ModComments'); $modCommentsModule->addLink('HEADERSCRIPT', 'ModCommentsCommonHeaderScript', 'modules/ModComments/ModCommentsCommon.js'); $modCommentsRelatedToField = Vtiger_Field::getInstance('related_to', $modCommentsModule); $modCommentsRelatedToField->setRelatedModules($commentWidgetModules); @@ -95,17 +97,19 @@ class ModComments extends ModCommentsCore { include_once 'vtlib/Vtiger/Module.php'; if (is_string($moduleNames)) $moduleNames = array($moduleNames); + + $modCommentsModule = Vtiger_Module::getInstance('ModComments'); $commentWidgetModules = array(); foreach($moduleNames as $moduleName) { $module = Vtiger_Module::getInstance($moduleName); if($module) { $module->deleteLink($widgetType, $widgetName, "block://ModComments:modules/ModComments/ModComments.php"); + $module->unsetRelatedList($modCommentsModule, 'ModComments', 'get_comments'); $commentWidgetModules[] = $moduleName; } } if (count($commentWidgetModules) > 0) { - $modCommentsModule = Vtiger_Module::getInstance('ModComments'); $modCommentsRelatedToField = Vtiger_Field::getInstance('related_to', $modCommentsModule); $modCommentsRelatedToField->unsetRelatedModules($commentWidgetModules); } diff --git a/pkg/vtiger/modules/ModTracker/modules/ModTracker/models/Record.php b/pkg/vtiger/modules/ModTracker/modules/ModTracker/models/Record.php index 652ccb5ecea497923ed93b4f6e6078f648c675ee..0c7b5c2295e044c12bf7e27575b0dad0988937c7 100644 --- a/pkg/vtiger/modules/ModTracker/modules/ModTracker/models/Record.php +++ b/pkg/vtiger/modules/ModTracker/modules/ModTracker/models/Record.php @@ -7,7 +7,6 @@ * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. * *********************************************************************************** */ -vimport('~~/modules/ModTracker/core/ModTracker_Basic.php'); class ModTracker_Record_Model extends Vtiger_Record_Model { diff --git a/pkg/vtiger/modules/PBXManager/modules/PBXManager/PBXManager.php b/pkg/vtiger/modules/PBXManager/modules/PBXManager/PBXManager.php index d59955d2f90f1dada8a39a54cffcddb1daa6bbee..d185fac97ba495b040632e721c960d343ca4f0d6 100644 --- a/pkg/vtiger/modules/PBXManager/modules/PBXManager/PBXManager.php +++ b/pkg/vtiger/modules/PBXManager/modules/PBXManager/PBXManager.php @@ -113,6 +113,7 @@ class PBXManager extends CRMEntity { } else if ($event_type == 'module.preupdate') { // TODO Handle actions before this module is updated. } else if ($event_type == 'module.postupdate') { + $this->registerLookupEvents(); // TODO Handle actions before this module is updated. } } @@ -156,6 +157,7 @@ class PBXManager extends CRMEntity { $restoreEvent = 'vtiger.entity.afterrestore'; $batchSaveEvent = 'vtiger.batchevent.save'; $batchDeleteEvent = 'vtiger.batchevent.delete'; + $convertLeadEvent = 'vtiger.lead.convertlead'; $handler_path = 'modules/PBXManager/PBXManagerHandler.php'; $className = 'PBXManagerHandler'; $batchEventClassName = 'PBXManagerBatchHandler'; @@ -164,6 +166,7 @@ class PBXManager extends CRMEntity { $EventManager->registerHandler($restoreEvent, $handler_path, $className); $EventManager->registerHandler($batchSaveEvent, $handler_path, $batchEventClassName); $EventManager->registerHandler($batchDeleteEvent, $handler_path, $batchEventClassName); + $EventManager->registerHandler($convertLeadEvent, $handler_path, $className); $log->fatal('Lookup Events Registered'); } diff --git a/pkg/vtiger/modules/PBXManager/modules/PBXManager/PBXManagerHandler.php b/pkg/vtiger/modules/PBXManager/modules/PBXManager/PBXManagerHandler.php index f52dfe9caa282a8ef6ac80e2b0749f56da5368ff..0b38a262fded35ab31bda4de03d8fae845965bc5 100644 --- a/pkg/vtiger/modules/PBXManager/modules/PBXManager/PBXManagerHandler.php +++ b/pkg/vtiger/modules/PBXManager/modules/PBXManager/PBXManagerHandler.php @@ -20,8 +20,12 @@ class PBXManagerHandler extends VTEventHandler { if ($eventName == 'vtiger.entity.aftersave') { PBXManagerHandler::handlePhoneLookUpSaveEvent($entityData, $moduleName); } - - if($eventName == 'vtiger.entity.afterdelete'){ + + if ($eventName == 'vtiger.lead.convertlead' && $moduleName == 'Leads') { + PBXManagerHandler::handlePhoneLookupDeleteEvent($entityData); + } + + if($eventName == 'vtiger.entity.afterdelete'){ PBXManagerHandler::handlePhoneLookupDeleteEvent($entityData); } diff --git a/pkg/vtiger/modules/Projects/Project/layouts/v7/modules/Project/ShowChart.tpl b/pkg/vtiger/modules/Projects/Project/layouts/v7/modules/Project/ShowChart.tpl index 0aad47ce08fb5fde95c6e20f420563701dbacd16..c485a4ac5c7c2c9b3adee9effdaf87418ead30fc 100644 --- a/pkg/vtiger/modules/Projects/Project/layouts/v7/modules/Project/ShowChart.tpl +++ b/pkg/vtiger/modules/Projects/Project/layouts/v7/modules/Project/ShowChart.tpl @@ -17,7 +17,6 @@ {/foreach} </style> {if !empty($PROJECT_TASKS['tasks'])} - <h3> {vtranslate('LBL_PROGRESS_CHART',$MODULE)} </h3> <div class="pull-right" style="margin-right: 5px;"> <span style="margin: 2px;"> <button class="btn textual zoomOut" title="zoom out"> diff --git a/pkg/vtiger/modules/Projects/Project/layouts/v7/modules/Project/resources/Detail.js b/pkg/vtiger/modules/Projects/Project/layouts/v7/modules/Project/resources/Detail.js index 44fc0a9337b525787664051ec1d1bdd4c9972bd4..f4cb45167391cbe164ac67335e0d18268eede29f 100644 --- a/pkg/vtiger/modules/Projects/Project/layouts/v7/modules/Project/resources/Detail.js +++ b/pkg/vtiger/modules/Projects/Project/layouts/v7/modules/Project/resources/Detail.js @@ -385,11 +385,16 @@ Vtiger_Detail_Js("Project_Detail_Js",{ form = jQuery(form); if(form.attr('id') == 'projectTaskQuickEditForm') { app.helper.showProgress(); - thisInstance.saveTask(form).then(function() { + thisInstance.saveTask(form).then(function(err, data) { app.helper.hideProgress(); - app.helper.hideModal(); - // to reload chart - jQuery('[data-label-key=Chart]').click(); + if (err === null) { + jQuery('.vt-notification').remove(); + app.helper.hideModal(); + // to reload chart + jQuery('[data-label-key=Chart]').click(); + } else { + app.event.trigger('post.save.failed', err); + } }); } }, @@ -421,8 +426,13 @@ Vtiger_Detail_Js("Project_Detail_Js",{ } app.helper.showProgress(); app.request.post({data: params}).then( - function(error, data) { + function(error, data) { app.helper.hideProgress(); + if (error === null) { + jQuery('.vt-notification').remove(); + } else { + app.event.trigger('post.save.failed', error); + } } ); } @@ -515,7 +525,7 @@ Vtiger_Detail_Js("Project_Detail_Js",{ app.request.post({data: formData}).then( function(error, data) { //TODO: App Message should be shown - aDeferred.resolve(data); + aDeferred.resolve(error, data); }, function(textStatus, errorThrown) { aDeferred.reject(textStatus, errorThrown); diff --git a/pkg/vtiger/modules/Projects/ProjectTask/modules/ProjectTask/actions/SaveTask.php b/pkg/vtiger/modules/Projects/ProjectTask/modules/ProjectTask/actions/SaveTask.php index bb71a866178f8a899757780f4a8035d168e079c5..e4a9dc27a6481eff85e439ed7b0564bcb81ea20f 100644 --- a/pkg/vtiger/modules/Projects/ProjectTask/modules/ProjectTask/actions/SaveTask.php +++ b/pkg/vtiger/modules/Projects/ProjectTask/modules/ProjectTask/actions/SaveTask.php @@ -11,10 +11,15 @@ class ProjectTask_SaveTask_Action extends Vtiger_Save_Action { public function process(Vtiger_Request $request) { - $recordModel = $this->saveRecord($request); - $response = new Vtiger_Response(); - $response->setResult(array('record'=>$recordModel->getId(), 'module'=>$recordModel->getModuleName())); + try { + $recordModel = $this->saveRecord($request); + $response->setResult(array('record' => $recordModel->getId(), 'module' => $recordModel->getModuleName())); + } catch (DuplicateException $e) { + $response->setError($e->getMessage(), $e->getDuplicationMessage(), $e->getMessage()); + } catch (Exception $e) { + $response->setError($e->getMessage()); + } $response->emit(); } diff --git a/pkg/vtiger/modules/RecycleBin/layouts/v7/modules/RecycleBin/ModuleHeader.tpl b/pkg/vtiger/modules/RecycleBin/layouts/v7/modules/RecycleBin/ModuleHeader.tpl index 34876d2512bcdcda6ebe8be7158f1e3f2a3714c9..2da851d1f7542cc4050e89d8c34e5e6831ba78ff 100644 --- a/pkg/vtiger/modules/RecycleBin/layouts/v7/modules/RecycleBin/ModuleHeader.tpl +++ b/pkg/vtiger/modules/RecycleBin/layouts/v7/modules/RecycleBin/ModuleHeader.tpl @@ -12,13 +12,13 @@ <div class="module-action-content clearfix"> <span class="col-lg-7 col-md-7 module-breadcrumb module-breadcrumb-{$smarty.request.view}"> <span> - <h4 title="{vtranslate($MODULE, $MODULE)}" class="module-title pull-left text-uppercase"> {vtranslate($MODULE, $MODULE)} </h4> + <h4 title="{vtranslate($MODULE, $MODULE)}" class="module-title pull-left text-uppercase"> {vtranslate($MODULE, $MODULE)} </h4> </span> <span> - <p class="current-filter-name pull-left"> <span class="fa fa-angle-right" aria-hidden="true"></span> {$VIEW} </p> + <p class="current-filter-name pull-left"><span class="fa fa-angle-right" aria-hidden="true"></span> {$VIEW} </p> </span> <span> - <p class="current-filter-name pull-left textOverflowEllipsis" style="width:250px;"> <span class="fa fa-angle-right" aria-hidden="true"></span> {vtranslate($SOURCE_MODULE,$SOURCE_MODULE)} </p> + <p class="current-filter-name pull-left textOverflowEllipsis" style="width:250px;"><span class="fa fa-angle-right" aria-hidden="true"></span> {vtranslate($SOURCE_MODULE,$SOURCE_MODULE)} </p> </span> </span> </div> diff --git a/pkg/vtiger/modules/RecycleBin/layouts/v7/modules/RecycleBin/partials/SidebarHeader.tpl b/pkg/vtiger/modules/RecycleBin/layouts/v7/modules/RecycleBin/partials/SidebarHeader.tpl index 4b1d669c990e74bbc7bb623b2d43619de7e2f720..6fe9cbc3b4615b82e9218320114cc1219e9342bf 100644 --- a/pkg/vtiger/modules/RecycleBin/layouts/v7/modules/RecycleBin/partials/SidebarHeader.tpl +++ b/pkg/vtiger/modules/RecycleBin/layouts/v7/modules/RecycleBin/partials/SidebarHeader.tpl @@ -6,13 +6,8 @@ * Portions created by vtiger are Copyright (C) vtiger. * All Rights Reserved. ************************************************************************************} -{assign var="APP_IMAGE_MAP" value=[ - 'MARKETING' => 'fa-users', - 'SALES' => 'fa-dot-circle-o', - 'SUPPORT' => 'fa-life-ring', - 'INVENTORY' => 'vicon-inventory', - 'PROJECT' => 'fa-briefcase' -]} + +{assign var=APP_IMAGE_MAP value=Vtiger_MenuStructure_Model::getAppIcons()} <div class="col-sm-12 col-xs-12 app-indicator-icon-container app-{$SELECTED_MENU_CATEGORY}"> <div class="row" title="{strtoupper(vtranslate($MODULE, $MODULE))}"> <span class="app-indicator-icon fa fa-trash"></span> diff --git a/pkg/vtiger/modules/RecycleBin/layouts/v7/modules/RecycleBin/resources/List.js b/pkg/vtiger/modules/RecycleBin/layouts/v7/modules/RecycleBin/resources/List.js index 44632d0c1bd85a20dd2a167f5c51ac404d796183..c846201f6acb9d1f2048fbebabb55673701e2429 100644 --- a/pkg/vtiger/modules/RecycleBin/layouts/v7/modules/RecycleBin/resources/List.js +++ b/pkg/vtiger/modules/RecycleBin/layouts/v7/modules/RecycleBin/resources/List.js @@ -69,17 +69,24 @@ Vtiger_List_Js("RecycleBin_List_Js", { app.helper.showConfirmationBox({'message': message}).then( function (e) { var sourceModule = jQuery('#sourceModule').val(); - var restoreURL = url + '&viewname=' + cvId + '&selected_ids=' + selectedIds + '&excluded_ids=' + excludedIds + '&mode=restoreRecords&sourceModule=' + sourceModule; + var restoreURL = url + '&viewname=' + cvId + '&selected_ids=' + selectedIds + '&excluded_ids=' + excludedIds + '&mode=restoreRecords&sourceModule=' + sourceModule+"&search_params="+JSON.stringify(listInstance.getListSearchParams()); app.helper.showProgress(); - app.request.post({url: restoreURL}).then( - function (error, data) { - if (data) { - app.helper.hideProgress(); - var instance = new RecycleBin_List_Js(); - instance.recycleBinActionPostOperations(data); - } + app.request.post({url: restoreURL}).then(function (error, data) { + app.helper.hideProgress(); + if (error === null) { + jQuery('.vt-notification').remove(); + var moduleLabel = data.modulelabel; + if (!moduleLabel) { + moduleLabel = app.vtranslate('SINGLE_' + sourceModule); } - ); + var instance = new RecycleBin_List_Js(); + instance.recycleBinActionPostOperations(data); + var successNote = app.vtranslate('JS_RECORDS_RESTORED', selectedIdsArray.length, moduleLabel); + app.helper.showSuccessNotification({'message': successNote}); + } else { + app.event.trigger('post.save.failed', error); + } + }); }, function (error, err) { }) @@ -119,19 +126,20 @@ Vtiger_List_Js("RecycleBin_List_Js", { } app.helper.showProgress(); app.request.post({data: postData}).then( - function (error, data) { - if (data) { - app.helper.hideProgress(); - var instance = new RecycleBin_List_Js(); - instance.recycleBinActionPostOperations(data); - } + function (error, data) { + if (data) { + app.helper.hideProgress(); + var instance = new RecycleBin_List_Js(); + instance.recycleBinActionPostOperations(data); } + } ); }, function (error, err) { }); }, restoreAction: function (recordId, restoreExternalFile) { + var aDeferred = jQuery.Deferred(); var recordId = RecycleBin_List_Js.convertToJsonString(recordId); var listInstance = Vtiger_List_Js.getInstance(); var sourceModule = jQuery('#sourceModule').val(); @@ -152,13 +160,19 @@ Vtiger_List_Js("RecycleBin_List_Js", { app.helper.showProgress(); app.request.post({data: postData}).then( function (error, data) { - if (data) { - app.helper.hideProgress(); + app.helper.hideProgress(); + if (error === null) { + jQuery('.vt-notification').remove(); var instance = new RecycleBin_List_Js(); instance.recycleBinActionPostOperations(data); + aDeferred.resolve(data); + } else { + app.event.trigger('post.save.failed', error); + aDeferred.resolve(data); } } ); + return aDeferred.promise(); }, /** * Function to restore a record diff --git a/pkg/vtiger/modules/RecycleBin/modules/RecycleBin/actions/RecycleBinAjax.php b/pkg/vtiger/modules/RecycleBin/modules/RecycleBin/actions/RecycleBinAjax.php index 5dc5ae5691ed8c106a7acf8a8ec8b40164f756e6..0d8b141f3d770279e786e63ff180dc202d269624 100644 --- a/pkg/vtiger/modules/RecycleBin/modules/RecycleBin/actions/RecycleBinAjax.php +++ b/pkg/vtiger/modules/RecycleBin/modules/RecycleBin/actions/RecycleBinAjax.php @@ -60,10 +60,18 @@ class RecycleBin_RecycleBinAjax_Action extends Vtiger_Mass_Action { $response = new Vtiger_Response(); if ($recordIds) { - $recycleBinModule->restore($sourceModule, $recordIds); + try { + $recycleBinModule->restore($sourceModule, $recordIds); + $response->setResult(array(true)); + } catch (DuplicateException $e) { + $response->setError($e->getMessage(), $e->getDuplicationMessage(), $e->getMessage()); + } catch (Exception $e) { + $response->setError($e->getMessage()); + } + } else { $response->setResult(array(true)); } - + $response->emit(); } diff --git a/pkg/vtiger/modules/WSAPP/modules/WSAPP/Handlers/OutlookVtigerCRMHandler.php b/pkg/vtiger/modules/WSAPP/modules/WSAPP/Handlers/OutlookVtigerCRMHandler.php index d87a08051b3f93d0be3df721bc5a6b776746dfa5..3798bb7e8ffc64a8a6b3061ea81474c592f66749 100644 --- a/pkg/vtiger/modules/WSAPP/modules/WSAPP/Handlers/OutlookVtigerCRMHandler.php +++ b/pkg/vtiger/modules/WSAPP/modules/WSAPP/Handlers/OutlookVtigerCRMHandler.php @@ -52,8 +52,13 @@ class OutlookVtigerCRMHandler extends vtigerCRMHandler{ * array of records */ foreach ($createRecord as $key => $record) { - $result = vtws_create($record['module'], $record, $user); - $entityNameIds[$refFieldValue] = $result['id']; + try { + $result = vtws_create($record['module'], $record, $user); + $entityNameIds[$refFieldValue] = $result['id']; + } catch (Exception $e) { + unset($entityNameIds[$refFieldValue]); + continue; + } } $recordInfo[$referenceFieldName] = $entityNameIds[$refFieldValue]; } @@ -183,7 +188,12 @@ class OutlookVtigerCRMHandler extends vtigerCRMHandler{ if($record['module'] == "Events" && isset($record['attendees'])){ $record = $this->relateEventandContacts($record); } - $createdRecords[$index] = vtws_create($record['module'], $record, $this->user); + try { + $createdRecords[$index] = vtws_create($record['module'], $record, $this->user); + } catch (Exception $e) { + unset($createdRecords[$index]); + continue; + } } if (count($updatedRecords) > 0) { diff --git a/pkg/vtiger/modules/WSAPP/modules/WSAPP/Handlers/vtigerCRMHandler.php b/pkg/vtiger/modules/WSAPP/modules/WSAPP/Handlers/vtigerCRMHandler.php index 88283528f1082eabd9dd6c389e6bde4c693d5422..e2c00c4075536225a26b6b76b49b639950171ec0 100644 --- a/pkg/vtiger/modules/WSAPP/modules/WSAPP/Handlers/vtigerCRMHandler.php +++ b/pkg/vtiger/modules/WSAPP/modules/WSAPP/Handlers/vtigerCRMHandler.php @@ -53,8 +53,7 @@ class vtigerCRMHandler extends SyncHandler { $createdRecords = $recordDetails['created']; $updatedRecords = $recordDetails['updated']; $deletedRecords = $recordDetails['deleted']; - $recordDetails['skipped'] = array(); - + $updateDuplicateRecords = array(); if (count($createdRecords) > 0) { $createdRecords = $this->translateReferenceFieldNamesToIds($createdRecords, $user); @@ -63,13 +62,30 @@ class vtigerCRMHandler extends SyncHandler { } foreach ($createdRecords as $index => $record) { try { - $createdRecords[$index] = vtws_create($record['module'], $record, $this->user); - } catch (Exception $ex) { - $recordDetails['skipped'][] = array('record' => $createdRecords[$index], - 'messageidentifier' => '', - 'message' => $ex->getMessage()); - continue; - } + $createdRecords[$index] = vtws_create($record['module'], $record, $this->user); + } catch (DuplicateException $e) { + $skipped = true; + $duplicateRecordIds = $e->getDuplicateRecordIds(); + $duplicatesResult = $this->triggerSyncActionForDuplicate($record, $duplicateRecordIds); + + if ($duplicatesResult) { + $updateDuplicateRecords[$index] = $duplicatesResult; + $skipped = false; + } + if ($skipped) { + $recordDetails['skipped'][] = array('record' => $createdRecords[$index], + 'messageidentifier' => '', + 'message' => $e->getMessage()); + } + unset($createdRecords[$index]); + continue; + } catch (Exception $e) { + $recordDetails['skipped'][] = array('record' => $createdRecords[$index], + 'messageidentifier' => '', + 'message' => $e->getMessage()); + unset($createdRecords[$index]); + continue; + } } if (count($updatedRecords) > 0) { @@ -107,13 +123,35 @@ class vtigerCRMHandler extends SyncHandler { } else { $this->assignToChangedRecords[$index] = $record; } + } catch (DuplicateException $e) { + $skipped = true; + $duplicateRecordIds = $e->getDuplicateRecordIds(); + $duplicatesResult = $this->triggerSyncActionForDuplicate($record, $duplicateRecordIds); + + if ($duplicatesResult) { + $updateDuplicateRecords[$index] = $duplicatesResult; + $skipped = false; + } + if ($skipped) { + $recordDetails['skipped'][] = array('record' => $updatedRecords[$index], + 'messageidentifier' => '', + 'message' => $e->getMessage()); + } + unset($updatedRecords[$index]); + continue; } catch (Exception $e) { $recordDetails['skipped'][] = array('record' => $updatedRecords[$index], 'messageidentifier' => '', - 'message' => $ex->getMessage()); + 'message' => $e->getMessage()); + unset($updatedRecords[$index]); continue; } } + + foreach ($updateDuplicateRecords as $index => $record) { + $updatedRecords[$index] = $record; + } + $hasDeleteAccess = null; $deletedCrmIds = array(); foreach ($deletedRecords as $index => $record) { @@ -146,7 +184,8 @@ class vtigerCRMHandler extends SyncHandler { } catch (Exception $e) { $recordDetails['skipped'][] = array('record' => $deletedRecords[$index], 'messageidentifier' => '', - 'message' => $ex->getMessage()); + 'message' => $e->getMessage()); + unset($deletedRecords[$index]); continue; } } @@ -429,6 +468,63 @@ class vtigerCRMHandler extends SyncHandler { public function isClientUserAndGroupSyncType() { return ($this->clientSyncType == 'userandgroup') ? true : false; } + + public function triggerSyncActionForDuplicate($recordData, $duplicateRecordIds) { + $db = PearDatabase::getInstance(); + $result = array(); + $user = $this->user; + $moduleName = $recordData['module']; + $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + + if ($moduleModel && $moduleModel->isSyncable) { + $webSeviceModuleModel = VtigerWebserviceObject::fromName($db, $moduleName); + $moduleId = $webSeviceModuleModel->getEntityId(); + + $recordId = $recordData['id']; + $recordIdComponents = vtws_getIdComponents($recordId); + if (count($recordIdComponents) == 2 && in_array($moduleId, $recordIdComponents)) { + return array(); } + $elemId = reset($duplicateRecordIds); + $recordId = vtws_getId($moduleId, $elemId); + try { + $vtigerRecordData = vtws_retrieve($recordId, $user); + } catch (Exception $e) { + return $result; + } + global $skipDuplicateCheck; + $skipDuplicateCheck = true; + switch ($moduleModel->syncActionForDuplicate) { + case 1 : //Prefer latest record + $finalRecordData = $vtigerRecordData; + if ($recordData['modifiedtime'] > $vtigerRecordData['modifiedtime']) { + $finalRecordData = $recordData; + $finalRecordData['id'] = $recordId; + $finalRecordData = vtws_revise($finalRecordData, $user); + } + $result = $finalRecordData; + break; +// case 3 : //Prefer Vtiger Record +// $result = $vtigerRecordData; +// break; + case 4 : //Prefer external record + $recordData['id'] = $recordId; + foreach ($recordData as $fieldName => $fieldValue) { + if (!$fieldValue) { + unset($recordData[$fieldName]); + } + } + $result = vtws_revise($recordData, $user); + break; + case 2 : //Prefer internal record + default : $result = array(); + break; + } + $skipDuplicateCheck = false; + } + return $result; + } + +} ?> diff --git a/pkg/vtiger/modules/WSAPP/modules/WSAPP/SyncServer.php b/pkg/vtiger/modules/WSAPP/modules/WSAPP/SyncServer.php index 7fabd50ccaa29cefc5f033768333aea868e29d15..7a7ddbc32de0904dab306f4576c88d80d191c2d1 100644 --- a/pkg/vtiger/modules/WSAPP/modules/WSAPP/SyncServer.php +++ b/pkg/vtiger/modules/WSAPP/modules/WSAPP/SyncServer.php @@ -141,7 +141,7 @@ class SyncServer { else if ($mode == $this->update) $this->idmap_update($appid, $serverid, $clientid, $clientModifiedTime,$serverModifiedTime,$serverAppId); else if($mode==$this->save){ - $result = $db->pquery("SELECT * FROM vtiger_wsapp_recordmapping WHERE appid=? and serverid=? and clientid=?",array($appid,$serverid,$clientid)); + $result = $db->pquery("SELECT 1 FROM vtiger_wsapp_recordmapping WHERE appid=? and serverid=? and clientid=?",array($appid,$serverid,$clientid)); if($db->num_rows($result)<=0) $this->idmap_create($appid, $serverid, $clientid, $clientModifiedTime,$serverModifiedTime,$serverAppId); else @@ -319,7 +319,7 @@ class SyncServer { $nextSyncDeleteRecords = $this->destHandler->getAssignToChangedRecords(); foreach($result['created'] as $clientRecordId=>$record){ - $this->idmap_put($appid, $record['id'], $clientRecordId,$clientModifiedTimeList[$clientRecordId],$record['modifiedtime'],$serverAppId,$this->create); + $this->idmap_put($appid, $record['id'], $clientRecordId,$clientModifiedTimeList[$clientRecordId],$record['modifiedtime'],$serverAppId); $responseRecord = $record; $responseRecord['_id'] = $record['id']; $responseRecord['id'] = $clientRecordId; @@ -328,7 +328,7 @@ class SyncServer { $response['created'][] = $responseRecord; } foreach($result['updated'] as $clientRecordId=>$record){ - $this->idmap_put($appid, $record['id'], $clientRecordId,$clientModifiedTimeList[$clientRecordId],$record['modifiedtime'],$serverAppId,$this->update); + $this->idmap_put($appid, $record['id'], $clientRecordId,$clientModifiedTimeList[$clientRecordId],$record['modifiedtime'],$serverAppId); $responseRecord = $record; $responseRecord['_id'] = $record['id']; $responseRecord['id'] = $clientRecordId; @@ -452,7 +452,7 @@ class SyncServer { $serverAppId = $this->appid_with_key($serverKey); //$lookups = $this->idmap_get_clientmap($appid, array_values($createDetails)); foreach ($createDetails as $clientid => $serverDetails) { - $this->idmap_put( $appid, $serverDetails['serverid'], $clientid,$serverDetails['modifiedtime'],$serverDetails['_modifiedtime'],$serverAppId,$this->create); + $this->idmap_put( $appid, $serverDetails['serverid'], $clientid,$serverDetails['modifiedtime'],$serverDetails['_modifiedtime'],$serverAppId); } foreach($updatedDetails as $clientid=>$serverDetails){ $this->idmap_updateMapDetails( $appid, $clientid,$serverDetails['modifiedtime'],$serverDetails['_modifiedtime'],$this->update); diff --git a/pkg/vtiger/modules/WSAPP/modules/WSAPP/WorkFlowHandlers/WSAPPAssignToTracker.php b/pkg/vtiger/modules/WSAPP/modules/WSAPP/WorkFlowHandlers/WSAPPAssignToTracker.php index 82bf44e9f41e11a1d006d7145bb4743442b1ee23..5dd586ac627a0f219951456803771d4a780d3e70 100644 --- a/pkg/vtiger/modules/WSAPP/modules/WSAPP/WorkFlowHandlers/WSAPPAssignToTracker.php +++ b/pkg/vtiger/modules/WSAPP/modules/WSAPP/WorkFlowHandlers/WSAPPAssignToTracker.php @@ -19,15 +19,15 @@ class WSAPPAssignToTracker extends VTEventHandler{ } function handleEvent($eventName, $entityData) { + $user = Users::getActiveAdminUser(); global $current_user; + $current_user = $user; $db = PearDatabase::getInstance(); $moduleName = $entityData->getModuleName(); - //Specific to VAS if ($moduleName == 'Users') { return; } - //END $recordId = $entityData->getId(); $vtEntityDelta = new VTEntityDelta (); diff --git a/pkg/vtiger/modules/Webforms/languages/en_us/Settings/Webforms.php b/pkg/vtiger/modules/Webforms/languages/en_us/Settings/Webforms.php index 39b0fc7c5623b2f0f834c3a376d64bf92926aa61..72c65b48c53fd99bdc63cb6de3ae55367a7f6ebf 100644 --- a/pkg/vtiger/modules/Webforms/languages/en_us/Settings/Webforms.php +++ b/pkg/vtiger/modules/Webforms/languages/en_us/Settings/Webforms.php @@ -43,6 +43,12 @@ $languageStrings = array( 'LBL_ASSIGN_ROUND_ROBIN' => 'Assign Users In Round Robin', 'LBL_ROUNDROBIN_USERS_LIST' => 'Round Robin Users List', 'LBL_ADD_RECORD' => 'Add Webform', + 'LBL_UPLOAD_DOCUMENTS' => 'Upload Documents', + 'LBL_ADD_FILE_FIELD' => 'File Upload Field', + 'LBL_FIELD_LABEL' => 'Document Title', + 'LBL_FILE_FIELD_INFO' => 'For each file uploaded from web form, a new Document is created with the attached file. Document is also linked to this newly created %s.', + 'LBL_NO_FILE_FIELD' => 'No file fields added.', + 'LBL_COPY_TO_CLIPBOARD' => 'Copy to clipboard', ); $jsLanguageStrings = array( 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'Webform deleted successfully', @@ -53,4 +59,7 @@ $jsLanguageStrings = array( 'JS_REFERENCE_FIELDS_CANT_BE_MANDATORY_WITHOUT_OVERRIDE_VALUE' => 'Reference fields cant be mandatory without override value', 'JS_TYPE_TO_SEARCH' => 'Type to search', "JS_WEBFORM_WITH_THIS_NAME_ALREADY_EXISTS" => 'Webform with this name already exists', + 'JS_MAX_FILE_FIELDS_LIMIT' => 'Maximum you can add %s file fields.', + 'JS_COPIED_SUCCESSFULLY' => 'Copied successfully.', + 'JS_COPY_FAILED' => 'Copy failed. Please copy manually.', ); \ No newline at end of file diff --git a/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/FieldsDetailView.tpl b/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/FieldsDetailView.tpl index b7bfcbcdbf9af4f33dfabba337a07ecb8223a6fd..382b31c6fe313273e5f021e0a1ebb417bc2dd3d4 100644 --- a/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/FieldsDetailView.tpl +++ b/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/FieldsDetailView.tpl @@ -1,86 +1,121 @@ -{*<!-- -/********************************************************************************* -** The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. -* - ********************************************************************************/ --->*} +{*+********************************************************************************** +* 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. +*************************************************************************************} + {strip} -<div class="contents-topscroll"> -<div class="topscroll-div"> - -</div> -</div> -<div class="listViewEntriesDiv contents-bottomscroll"> - <div class="bottomscroll-div"> - <div class="fieldBlockContainer"> - <div class="fieldBlockHeader"> - <h4>{vtranslate($SOURCE_MODULE, {$SOURCE_MODULE})} {vtranslate('LBL_FIELD_INFORMATION', {$MODULE_NAME})}</h4> - </div> - <hr> - <table class="table table-bordered"> - <tr> - <td class="paddingLeft20"><b>{vtranslate('LBL_MANDATORY', {$MODULE_NAME})}</b></td> - <td><b>{vtranslate('LBL_HIDDEN', {$MODULE_NAME})}</b></td> - <td><b>{vtranslate('LBL_FIELD_NAME', {$MODULE_NAME})}</b></td> - <td><b>{vtranslate('LBL_OVERRIDE_VALUE', {$MODULE_NAME})}</b></td> - <td><b>{vtranslate('LBL_WEBFORM_REFERENCE_FIELD', {$MODULE_NAME})}</b></td> - </tr> - {foreach item=FIELD_MODEL key=FIELD_NAME from=$SELECTED_FIELD_MODELS_LIST} - {assign var=FIELD_STATUS value="{$FIELD_MODEL->get('required')}"} - {assign var=FIELD_HIDDEN_STATUS value="{$FIELD_MODEL->get('hidden')}"} - <tr> - <td class="paddingLeft20"> - {if ($FIELD_STATUS eq 1) or ($FIELD_MODEL->isMandatory(true))} - {assign var=FIELD_VALUE value="LBL_YES"} - {else} - {assign var=FIELD_VALUE value="LBL_NO"} - {/if} - {vtranslate({$FIELD_VALUE}, {$SOURCE_MODULE})} - </td> - <td> - {if $FIELD_HIDDEN_STATUS eq 1} - {assign var=FIELD_VALUE value="LBL_YES"} - {else} - {assign var=FIELD_VALUE value="LBL_NO"} - {/if} - {vtranslate({$FIELD_VALUE}, {$SOURCE_MODULE})} - </td> - <td> - {vtranslate($FIELD_MODEL->get('label'), {$SOURCE_MODULE})} - {if $FIELD_MODEL->isMandatory()} - <span class="redColor">*</span> - {/if} - </td> - <td> - {if $FIELD_MODEL->getFieldDataType() eq 'reference'} - {assign var=EXPLODED_FIELD_VALUE value = 'x'|explode:$FIELD_MODEL->get('defaultvalue')} - {assign var=FIELD_VALUE value=$EXPLODED_FIELD_VALUE[1]} - {if !isRecordExists($FIELD_VALUE)} - {assign var=FIELD_VALUE value=0} - {/if} - {else} - {assign var=FIELD_VALUE value=$FIELD_MODEL->get('defaultvalue')} - {/if} - {$FIELD_MODEL->getDisplayValue($FIELD_VALUE, $RECORD->getId(), $RECORD)} - </td> - <td> - {if Settings_Webforms_Record_Model::isCustomField($FIELD_MODEL->get('name'))} - {vtranslate('LBL_LABEL', $MODULE_NAME)} : {vtranslate($FIELD_MODEL->get('label'), $MODULE_NAME)} - {else} - {vtranslate({$FIELD_MODEL->get('neutralizedfield')}, $SOURCE_MODULE)} - {/if} - </td> - </tr> - {/foreach} - </tbody> - </table> + <div class="contents-topscroll"> + <div class="topscroll-div"> + + </div> + </div> + <div class="listViewEntriesDiv contents-bottomscroll"> + <div class="bottomscroll-div"> + <div class="fieldBlockContainer"> + <div class="fieldBlockHeader"> + <h4>{vtranslate($SOURCE_MODULE, {$SOURCE_MODULE})} {vtranslate('LBL_FIELD_INFORMATION', {$MODULE_NAME})}</h4> + </div> + <hr> + <table class="table table-bordered"> + <tr> + <td class="paddingLeft20"><b>{vtranslate('LBL_MANDATORY', {$MODULE_NAME})}</b></td> + <td><b>{vtranslate('LBL_HIDDEN', {$MODULE_NAME})}</b></td> + <td><b>{vtranslate('LBL_FIELD_NAME', {$MODULE_NAME})}</b></td> + <td><b>{vtranslate('LBL_OVERRIDE_VALUE', {$MODULE_NAME})}</b></td> + <td><b>{vtranslate('LBL_WEBFORM_REFERENCE_FIELD', {$MODULE_NAME})}</b></td> + </tr> + {foreach item=FIELD_MODEL key=FIELD_NAME from=$SELECTED_FIELD_MODELS_LIST} + {assign var=FIELD_STATUS value="{$FIELD_MODEL->get('required')}"} + {assign var=FIELD_HIDDEN_STATUS value="{$FIELD_MODEL->get('hidden')}"} + <tr> + <td class="paddingLeft20"> + {if ($FIELD_STATUS eq 1) or ($FIELD_MODEL->isMandatory(true))} + {assign var=FIELD_VALUE value="LBL_YES"} + {else} + {assign var=FIELD_VALUE value="LBL_NO"} + {/if} + {vtranslate({$FIELD_VALUE}, {$SOURCE_MODULE})} + </td> + <td> + {if $FIELD_HIDDEN_STATUS eq 1} + {assign var=FIELD_VALUE value="LBL_YES"} + {else} + {assign var=FIELD_VALUE value="LBL_NO"} + {/if} + {vtranslate({$FIELD_VALUE}, {$SOURCE_MODULE})} + </td> + <td> + {vtranslate($FIELD_MODEL->get('label'), {$SOURCE_MODULE})} + {if $FIELD_MODEL->isMandatory()} + <span class="redColor">*</span> + {/if} + </td> + <td> + {if $FIELD_MODEL->getFieldDataType() eq 'reference'} + {assign var=EXPLODED_FIELD_VALUE value = 'x'|explode:$FIELD_MODEL->get('defaultvalue')} + {assign var=FIELD_VALUE value=$EXPLODED_FIELD_VALUE[1]} + {if !isRecordExists($FIELD_VALUE)} + {assign var=FIELD_VALUE value=0} + {/if} + {else} + {assign var=FIELD_VALUE value=$FIELD_MODEL->get('defaultvalue')} + {/if} + {$FIELD_MODEL->getDisplayValue($FIELD_VALUE, $RECORD->getId(), $RECORD)} + </td> + <td> + {if Settings_Webforms_Record_Model::isCustomField($FIELD_MODEL->get('name'))} + {vtranslate('LBL_LABEL', $MODULE_NAME)} : {vtranslate($FIELD_MODEL->get('label'), $MODULE_NAME)} + {else} + {vtranslate({$FIELD_MODEL->get('neutralizedfield')}, $SOURCE_MODULE)} + {/if} + </td> + </tr> + {/foreach} + </tbody> + </table> + </div> + </div> </div> - </div> + {if Vtiger_Functions::isDocumentsRelated($SOURCE_MODULE) && count($DOCUMENT_FILE_FIELDS)} + <div class="listViewEntriesDiv contents-bottomscroll"> + <div class="bottomscroll-div"> + <div class="fieldBlockContainer"> + <div class="fieldBlockHeader"> + <h4>{vtranslate('LBL_UPLOAD_DOCUMENTS', $MODULE_NAME)}</h4> + </div> + <div> + <div class="col-lg-7 padding0"> + <table class="table table-bordered"> + <tr> + <td><b>{vtranslate('LBL_FIELD_LABEL', $MODULE_NAME)}</b></td> + <td><b>{vtranslate('LBL_MANDATORY', $MODULE_NAME)}</b></td> + </tr> + {foreach from=$DOCUMENT_FILE_FIELDS item=DOCUMENT_FILE_FIELD} + <tr> + <td>{$DOCUMENT_FILE_FIELD['fieldlabel']}</td> + <td>{if $DOCUMENT_FILE_FIELD['required']}{vtranslate('LBL_YES')}{else}{vtranslate('LBL_NO')}{/if}</td> + </tr> + {/foreach} + </table> + </div> + <div class="col-lg-5"> + <div class="vt-default-callout vt-info-callout" style="margin: 0;"> + <h4 class="vt-callout-header"> + <span class="fa fa-info-circle"></span> {vtranslate('LBL_INFO')} + </h4> + <div> + {vtranslate('LBL_FILE_FIELD_INFO', $QUALIFIED_MODULE, vtranslate("SINGLE_$SOURCE_MODULE", $SOURCE_MODULE))} + </div> + </div> + </div> + </div> + </div> + </div> + </div> + {/if} </div> - </div> {/strip} \ No newline at end of file diff --git a/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/FieldsEditView.tpl b/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/FieldsEditView.tpl index 7e11501586772784b84bb3d4875dba5d7282b6bf..ba640c9fd209bafa9e47544491cad2c92fb6922e 100644 --- a/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/FieldsEditView.tpl +++ b/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/FieldsEditView.tpl @@ -115,7 +115,7 @@ {/if} {if !$FIELD_MODEL->isMandatory(true)} <div class="pull-right actions"> - <span class="actionImages"><a class="removeTargetModuleField"><i class="icon-remove-sign"></i></a></span> + <span class="actionImages"><a class="removeTargetModuleField" href="javascript:void(0);"><i class="icon-remove-sign"></i></a></span> </div> {/if} </td> @@ -126,4 +126,62 @@ </tbody> </table> </div> + {if Vtiger_Functions::isDocumentsRelated($SOURCE_MODULE)} + <div class="fieldBlockContainer"> + <div class="fieldBlockHeader"> + <h4>{vtranslate('LBL_UPLOAD_DOCUMENTS', $QUALIFIED_MODULE)}</h4> + </div> + <hr> + <div> + <div> + <button class="btn btn-default" id="addFileFieldBtn"> + <span class="fa fa-plus"></span> {vtranslate('LBL_ADD_FILE_FIELD', $QUALIFIED_MODULE)} + </button> + </div> + </div> + <div class="row" style="margin-top: 10px;"> + <div class="col-lg-7"> + <table class="table table-bordered" id='fileFieldsTable'> + <tbody> + <tr> + <td><b>{vtranslate('LBL_FIELD_LABEL', $QUALIFIED_MODULE)}</b></td> + <td class="textAlignCenter"><b>{vtranslate('LBL_MANDATORY', $QUALIFIED_MODULE)}</b></td> + <td class="textAlignCenter"><b>{vtranslate('LBL_ACTIONS', $QUALIFIED_MODULE)}</b></td> + </tr> + {foreach from=$DOCUMENT_FILE_FIELDS key=FILE_INDEX item=DOCUMENT_FILE_FIELD} + <tr> + <td style="vertical-align: middle;"> + <input type="text" class="inputElement nameField" name="file_field[{$FILE_INDEX}][fieldlabel]" value="{$DOCUMENT_FILE_FIELD['fieldlabel']}" data-rule-required="true"> + </td> + <td class="textAlignCenter" style="vertical-align: middle;"> + <input type="checkbox" name="file_field[{$FILE_INDEX}][required]" {if $DOCUMENT_FILE_FIELD['required']}checked='checked'{/if} value='1'> + </td> + <td class="textAlignCenter" style="vertical-align: middle;"> + <a class="removeFileField" style="color: black;"><i class="fa fa-trash icon-trash"></i></a> + </td> + </tr> + {/foreach} + <tr class="noFileField {if count($DOCUMENT_FILE_FIELDS) gt 0}hide{/if}"> + <td colspan="3" style="height: 100px; vertical-align: middle;"> + <center>{vtranslate('LBL_NO_FILE_FIELD', $QUALIFIED_MODULE)}</center> + </td> + </tr> + </tbody> + </table> + </div> + <div class="col-lg-5"> + <div class="vt-default-callout vt-info-callout" style="margin: 0;"> + <h4 class="vt-callout-header"> + <span class="fa fa-info-circle"></span> {vtranslate('LBL_INFO')} + </h4> + <div> + {vtranslate('LBL_FILE_FIELD_INFO', $QUALIFIED_MODULE, vtranslate("SINGLE_$SOURCE_MODULE", $SOURCE_MODULE))} + </div> + </div> + </div> + </div> + <input type="hidden" id='fileFieldNextIndex' value='{count($DOCUMENT_FILE_FIELDS) + 1}'> + <input type="hidden" id="fileFieldsCount" value="{count($DOCUMENT_FILE_FIELDS)}"> + </div> + {/if} {/strip} diff --git a/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/ShowForm.tpl b/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/ShowForm.tpl index dd1e90a4b36e7bff707f6b36a5088874eec9c08f..ce8b18076dfd6063f7f8a9614c4c9c2c9080641e 100644 --- a/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/ShowForm.tpl +++ b/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/ShowForm.tpl @@ -1,125 +1,137 @@ -{*<!-- -/********************************************************************************* -** The contents of this file are subject to the vtiger CRM Public License Version 1.0 +{*+********************************************************************************** +* 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 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. -* -********************************************************************************/ --->*} -<div class="modal-dialog modelContainer modal-content"> - {assign var=HEADER_TITLE value={vtranslate('SINGLE_'|cat:$MODULE, $QUALIFIED_MODULE)}|cat:" - "|cat:{$RECORD_MODEL->get('name')}} - {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} +*************************************************************************************} - <div class='modal-body'> - <div class="marginBottom10px">{vtranslate('LBL_EMBED_THE_FOLLOWING_FORM_IN_YOUR_WEBSITE', $QUALIFIED_MODULE)}</div> +{strip} + <div class="modal-dialog modelContainer modal-content"> + {assign var=HEADER_TITLE value={vtranslate('SINGLE_'|cat:$MODULE, $QUALIFIED_MODULE)}|cat:" - "|cat:{$RECORD_MODEL->get('name')}} + {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} - <textarea id="showFormContent" class="input-xxlarge" style="min-height:400px;width: 100%" readonly></textarea> + <div class="modal-body"> + <div class="marginBottom10px"> + <span>{vtranslate('LBL_EMBED_THE_FOLLOWING_FORM_IN_YOUR_WEBSITE', $QUALIFIED_MODULE)}</span> + <span class="pull-right"> + <a href="" id="webformCopyClipboard"> + <i class="fa fa-clipboard" aria-hidden="true"></i> + {vtranslate('LBL_COPY_TO_CLIPBOARD', $QUALIFIED_MODULE)} + </a> + </span> + </div> + <input type="hidden" class="allowedAllFilesSize" value="{$ALLOWED_ALL_FILES_SIZE}"> + <textarea id="showFormContent" class="input-xxlarge" style="min-height:400px;width: 100%" readonly></textarea> -<code> -<pre> - <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> - <form id="__vtigerWebForm" name="{$RECORD_MODEL->getName()}" action="{$ACTION_PATH}" - method="post" accept-charset="utf-8" enctype="multipart/form-data"> - <input type="hidden" name="publicid" value="{$RECORD_MODEL->get('publicid')}" /> - <input type="hidden" name="urlencodeenable" value="1" /> - <input type="hidden" name="name" value="{$RECORD_MODEL->getName()}" /> - {assign var=IS_CAPTCHA_ENABLED value=$RECORD_MODEL->isCaptchaEnabled()} - <table> - {foreach item=FIELD_MODEL key=FIELD_NAME from=$SELECTED_FIELD_MODELS_LIST} - {assign var=SOURCE_MODULE value=$FIELD_MODEL->getModuleName()} - {assign var=DATA_TYPE value=$FIELD_MODEL->getFieldDataType()} - {assign var=HIDDEN_STATUS value=$FIELD_MODEL->get('hidden')} - {assign var=TYPE value=""} - <tr> + <code> + <pre> + <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> + <form id="__vtigerWebForm" name="{$RECORD_MODEL->getName()}" action="{$ACTION_PATH}" method="post" accept-charset="utf-8" enctype="multipart/form-data"> + <input type="hidden" name="publicid" value="{$RECORD_MODEL->get('publicid')}" /> + <input type="hidden" name="urlencodeenable" value="1" /> + <input type="hidden" name="name" value="{$RECORD_MODEL->getName()}" /> + {assign var=IS_CAPTCHA_ENABLED value=$RECORD_MODEL->isCaptchaEnabled()} + <table> + {foreach item=FIELD_MODEL key=FIELD_NAME from=$SELECTED_FIELD_MODELS_LIST} + {assign var=SOURCE_MODULE value=$FIELD_MODEL->getModuleName()} + {assign var=DATA_TYPE value=$FIELD_MODEL->getFieldDataType()} + {assign var=HIDDEN_STATUS value=$FIELD_MODEL->get('hidden')} + {assign var=TYPE value=""} + <tr> - {if $FIELD_MODEL->get('hidden') neq 1}<td><label>{vtranslate(decode_html($FIELD_MODEL->get('label')), {$SOURCE_MODULE})}{if $FIELD_MODEL->get('required') eq 1}*{/if}</label></td>{/if} - <td> - {if ($DATA_TYPE eq 'picklist' || $DATA_TYPE eq 'multipicklist')} - {assign var=FIELD_INFO value=$FIELD_MODEL->getFieldInfo()} - {assign var=PICKLIST_VALUES value=$FIELD_INFO['picklistvalues']} - {assign var=FIELD_INFO value=Vtiger_Util_Helper::toSafeHTML(Zend_Json::encode($FIELD_INFO))} - {assign var="SPECIAL_VALIDATOR" value=$FIELD_MODEL->getValidator()} - {assign var=PICKLIST_NAME value=$FIELD_MODEL->get('name')} - {if Settings_Webforms_Record_Model::isCustomField($FIELD_NAME)} - {assign var=FIELD_LABEL value="{urlencode($FIELD_MODEL->get('label'))}"} - {assign var=PICKLIST_DATA_LABEL value="label:{$FIELD_LABEL|replace:' ':'_'}"} - {else} - {assign var=PICKLIST_DATA_LABEL value=$FIELD_MODEL->get('name')} - {/if} - {else if ($DATA_TYPE eq "salutation") or ($DATA_TYPE eq "string") or ($DATA_TYPE eq "time") or ($DATA_TYPE eq "currency") or ($DATA_TYPE eq "url") or ($DATA_TYPE eq "phone")} - {assign var=TYPE value="text"} - {else if ($DATA_TYPE eq "text")} - {assign var=TYPE value="text"} - <textarea name="{urlencode($FIELD_MODEL->getFieldName())}" {if $FIELD_MODEL->get('required') eq 1} required{/if} - {if $FIELD_MODEL->get('hidden') eq 1} hidden{/if} >{$FIELD_MODEL->get('fieldvalue')}</textarea> - {else if ($DATA_TYPE eq "email")} - {assign var=TYPE value="email"} - {else if ($DATA_TYPE eq "image")} - {assign var=TYPE value="image"} - {else if (($DATA_TYPE eq "integer") or ($DATA_TYPE eq "double"))} - {assign var=TYPE value="number"} - {else if ($DATA_TYPE eq "boolean")} - {assign var=TYPE value="checkbox"} - {else if ($DATA_TYPE eq "date")} - {assign var=TYPE value="date"} - {/if} - {if $HIDDEN_STATUS eq 1} - {assign var=TYPE value=hidden} - {/if} - {if $DATA_TYPE eq 'picklist'} - <select name="{$PICKLIST_NAME}" data-label="{$PICKLIST_DATA_LABEL}" {if $FIELD_MODEL->get('required') eq 1} required{/if} - {if $FIELD_MODEL->get('hidden') eq 1} hidden{/if}> - <option value>{vtranslate('LBL_SELECT_VALUE',$QUALIFIED_MODULE)}</option> - {foreach item=PICKLIST_VALUE key=PICKLIST_NAME from=$PICKLIST_VALUES} - <option value="{$PICKLIST_NAME}" {if trim(decode_html($FIELD_MODEL->get('fieldvalue'))) eq trim($PICKLIST_NAME)} selected {/if}>{$PICKLIST_VALUE}</option> - {/foreach} - </select> + {if $FIELD_MODEL->get('hidden') neq 1}<td><label>{vtranslate(decode_html($FIELD_MODEL->get('label')), {$SOURCE_MODULE})}{if $FIELD_MODEL->get('required') eq 1}*{/if}</label></td>{/if} + <td> + {if ($DATA_TYPE eq 'picklist' || $DATA_TYPE eq 'multipicklist')} + {assign var=FIELD_INFO value=$FIELD_MODEL->getFieldInfo()} + {assign var=PICKLIST_VALUES value=$FIELD_INFO['picklistvalues']} + {assign var=FIELD_INFO value=Vtiger_Util_Helper::toSafeHTML(Zend_Json::encode($FIELD_INFO))} + {assign var="SPECIAL_VALIDATOR" value=$FIELD_MODEL->getValidator()} + {assign var=PICKLIST_NAME value=$FIELD_MODEL->get('name')} + {if Settings_Webforms_Record_Model::isCustomField($FIELD_NAME)} + {assign var=FIELD_LABEL value="{urlencode($FIELD_MODEL->get('label'))}"} + {assign var=PICKLIST_DATA_LABEL value="label:{$FIELD_LABEL|replace:' ':'_'}"} + {else} + {assign var=PICKLIST_DATA_LABEL value=$FIELD_MODEL->get('name')} + {/if} + {else if ($DATA_TYPE eq "salutation") or ($DATA_TYPE eq "string") or ($DATA_TYPE eq "time") or ($DATA_TYPE eq "currency") or ($DATA_TYPE eq "url") or ($DATA_TYPE eq "phone")} + {assign var=TYPE value="text"} + {else if ($DATA_TYPE eq "text")} + {assign var=TYPE value="text"} + <textarea name="{urlencode($FIELD_MODEL->getFieldName())}" {if $FIELD_MODEL->get('required') eq 1} required{/if} + {if $FIELD_MODEL->get('hidden') eq 1} hidden{/if} >{$FIELD_MODEL->get('fieldvalue')}</textarea> + {else if ($DATA_TYPE eq "email")} + {assign var=TYPE value="email"} + {else if ($DATA_TYPE eq "image")} + {assign var=TYPE value="image"} + {else if (($DATA_TYPE eq "integer") or ($DATA_TYPE eq "double"))} + {assign var=TYPE value="number"} + {else if ($DATA_TYPE eq "boolean")} + {assign var=TYPE value="checkbox"} + {else if ($DATA_TYPE eq "date")} + {assign var=TYPE value="date"} + {/if} + {if $HIDDEN_STATUS eq 1} + {assign var=TYPE value=hidden} + {/if} + {if $DATA_TYPE eq 'picklist'} + <select name="{$PICKLIST_NAME}" data-label="{$PICKLIST_DATA_LABEL}" {if $FIELD_MODEL->get('required') eq 1} required{/if} {if $FIELD_MODEL->get('hidden') eq 1} hidden{/if}> + <option value>{vtranslate('LBL_SELECT_VALUE',$QUALIFIED_MODULE)}</option> + {foreach item=PICKLIST_VALUE key=PICKLIST_NAME from=$PICKLIST_VALUES} + <option value="{$PICKLIST_NAME}" {if trim(decode_html($FIELD_MODEL->get('fieldvalue'))) eq trim($PICKLIST_NAME)} selected {/if}>{$PICKLIST_VALUE}</option> + {/foreach} + </select> - {else if $DATA_TYPE eq 'multipicklist'} - {assign var="FIELD_VALUE_LIST" value=explode(' |##| ',$FIELD_MODEL->get('fieldvalue'))} - <select name="{$PICKLIST_NAME}[]" data-label="{$PICKLIST_DATA_LABEL}" {if $FIELD_MODEL->get('required') eq 1} required{/if} multiple style="width: 60%;" - {if $FIELD_MODEL->get('hidden') eq 1} hidden{/if}> - {foreach item=PICKLIST_VALUE from=$PICKLIST_VALUES} - <option value="{$PICKLIST_VALUE}" {if in_array(Vtiger_Util_Helper::toSafeHTML($PICKLIST_VALUE), $FIELD_VALUE_LIST)} selected {/if}>{vtranslate($PICKLIST_VALUE, $MODULE)}</option> - {/foreach} - </select> - {elseif $DATA_TYPE eq "reference"} - <input type="hidden" name="{urlencode($FIELD_MODEL->getFieldName())}" data-label="{$FIELD_MODEL->get('neutralizedFieldName')}" value="{$FIELD_MODEL->get('fieldvalue')}" /> - {assign var=EXPLODED_FIELD_VALUES value='x'|explode:$FIELD_MODEL->get('fieldvalue')} - <input type="{$TYPE}" value="{$FIELD_MODEL->getEditViewDisplayValue($EXPLODED_FIELD_VALUES[1])}" readonly= /> - {elseif $DATA_TYPE eq "image"} - <input type="file" name="{urlencode($FIELD_MODEL->getFieldName())}[]" data-label="{$FIELD_MODEL->get('neutralizedFieldName')}" {if $FIELD_MODEL->get('hidden') eq 1} hidden{/if} {if $FIELD_MODEL->get('required') eq 1} required{/if}/> - {else if $DATA_TYPE eq "boolean"} - <input type="hidden" name="{urlencode($FIELD_MODEL->getFieldName())}" data-label="{$FIELD_MODEL->get('neutralizedFieldName')}" value=0 /> - {if ($HIDDEN_STATUS eq 1) and ($FIELD_MODEL->get('fieldvalue') eq "on")} - <input type="hidden" name="{urlencode($FIELD_MODEL->getFieldName())}" data-label="{$FIELD_MODEL->get('neutralizedFieldName')}" value=1 checked /> - {elseif ($HIDDEN_STATUS neq 1)} - <input type="{$TYPE}" name="{urlencode($FIELD_MODEL->getFieldName())}" data-label="{$FIELD_MODEL->get('neutralizedFieldName')}" value=1 {if $FIELD_MODEL->get('fieldvalue') eq "on"} checked {/if} {if ($FIELD_MODEL->get('required') eq 1) || ($FIELD_MODEL->isMandatory(true))} required{/if}/> - {/if} - {elseif ($DATA_TYPE neq "text") and ($DATA_TYPE neq "boolean")} - <input type="{$TYPE}" name="{urlencode($FIELD_MODEL->getFieldName())}" data-label="{$FIELD_MODEL->get('neutralizedFieldName')}" value="{$FIELD_MODEL->get('fieldvalue')}" {if ($FIELD_MODEL->get('required') eq 1) || ($FIELD_MODEL->isMandatory(true))} required{/if} {if ($DATA_TYPE eq "double")} datatype="{$DATA_TYPE}" step="any" {/if} - />{if ($DATA_TYPE eq "date") and ($FIELD_MODEL->get('hidden') neq 1)}(yyyy-mm-dd){/if} - {/if} - </td></tr> - {/foreach} - </table> - {if $IS_CAPTCHA_ENABLED} - <div id="captchaField"></div> - <input type="hidden" id="captchaUrl" value="{$CAPTCHA_PATH}"> - <input type="hidden" id="recaptcha_validation_value" > - {/if} - <input type="submit" value="Submit" ></input> - </form> - </pre> - </code> - <input type="hidden" name="isCaptchaEnabled" value="{$IS_CAPTCHA_ENABLED}"> - </div> - <div class="modal-footer"> - <center> - <a href="#" class="cancelLink" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> - </center> - </div> - </div> + {else if $DATA_TYPE eq 'multipicklist'} + {assign var="FIELD_VALUE_LIST" value=explode(' |##| ',$FIELD_MODEL->get('fieldvalue'))} + <select name="{$PICKLIST_NAME}[]" data-label="{$PICKLIST_DATA_LABEL}" {if $FIELD_MODEL->get('required') eq 1} required{/if} multiple style="width: 60%;" {if $FIELD_MODEL->get('hidden') eq 1} hidden{/if}> + {foreach item=PICKLIST_VALUE from=$PICKLIST_VALUES} + <option value="{$PICKLIST_VALUE}" {if in_array(Vtiger_Util_Helper::toSafeHTML($PICKLIST_VALUE), $FIELD_VALUE_LIST)} selected {/if}>{vtranslate($PICKLIST_VALUE, $MODULE)}</option> + {/foreach} + </select> + {elseif $DATA_TYPE eq "reference"} + <input type="hidden" name="{urlencode($FIELD_MODEL->getFieldName())}" data-label="{$FIELD_MODEL->get('neutralizedFieldName')}" value="{$FIELD_MODEL->get('fieldvalue')}" /> + {assign var=EXPLODED_FIELD_VALUES value='x'|explode:$FIELD_MODEL->get('fieldvalue')} + <input type="{$TYPE}" value="{$FIELD_MODEL->getEditViewDisplayValue($EXPLODED_FIELD_VALUES[1])}" readonly= /> + {elseif $DATA_TYPE eq "image"} + <input type="file" name="{urlencode($FIELD_MODEL->getFieldName())}[]" data-label="{$FIELD_MODEL->get('neutralizedFieldName')}" {if $FIELD_MODEL->get('hidden') eq 1} hidden{/if} {if $FIELD_MODEL->get('required') eq 1} required{/if}/> + {else if $DATA_TYPE eq "boolean"} + <input type="hidden" name="{urlencode($FIELD_MODEL->getFieldName())}" data-label="{$FIELD_MODEL->get('neutralizedFieldName')}" value=0 /> + {if ($HIDDEN_STATUS eq 1) and ($FIELD_MODEL->get('fieldvalue') eq "on")} + <input type="hidden" name="{urlencode($FIELD_MODEL->getFieldName())}" data-label="{$FIELD_MODEL->get('neutralizedFieldName')}" value=1 checked /> + {elseif ($HIDDEN_STATUS neq 1)} + <input type="{$TYPE}" name="{urlencode($FIELD_MODEL->getFieldName())}" data-label="{$FIELD_MODEL->get('neutralizedFieldName')}" value=1 {if $FIELD_MODEL->get('fieldvalue') eq "on"} checked {/if} {if ($FIELD_MODEL->get('required') eq 1) || ($FIELD_MODEL->isMandatory(true))} required{/if}/> + {/if} + {elseif ($DATA_TYPE neq "text") and ($DATA_TYPE neq "boolean")} + <input type="{$TYPE}" name="{urlencode($FIELD_MODEL->getFieldName())}" data-label="{$FIELD_MODEL->get('neutralizedFieldName')}" value="{$FIELD_MODEL->get('fieldvalue')}" {if ($FIELD_MODEL->get('required') eq 1) || ($FIELD_MODEL->isMandatory(true))} required{/if} {if ($DATA_TYPE eq "double")} datatype="{$DATA_TYPE}" step="any" {/if}/> + {if ($DATA_TYPE eq "date") and ($FIELD_MODEL->get('hidden') neq 1)}(yyyy-mm-dd){/if} + {/if} + </td> + </tr> + {/foreach} + {foreach from=$DOCUMENT_FILE_FIELDS item=DOCUMENT_FILE_FIELD} + <tr> + <td><label>{$DOCUMENT_FILE_FIELD['fieldlabel']} {if $DOCUMENT_FILE_FIELD['required']}*{/if}</label></td> + <td><input type="file" name="{$DOCUMENT_FILE_FIELD['fieldname']}" {if $DOCUMENT_FILE_FIELD['required']}required='required'{/if}></td> + </tr> + {/foreach} + </table> + {if $IS_CAPTCHA_ENABLED} + <div id="captchaField"></div> + <input type="hidden" id="captchaUrl" value="{$CAPTCHA_PATH}"> + <input type="hidden" id="recaptcha_validation_value" > + {/if} + <input type="submit" value="Submit" ></input> + </form> + </pre> + </code> + <input type="hidden" name="isCaptchaEnabled" value="{$IS_CAPTCHA_ENABLED}"> + </div> + <div class="modal-footer"> + <center> + <a href="#" class="cancelLink" type="reset" data-dismiss="modal">{vtranslate('LBL_CANCEL', $MODULE)}</a> + </center> + </div> + </div> +{/strip} diff --git a/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/resources/Detail.js b/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/resources/Detail.js index e1b73aab374a54615feb7c1e193a61584f756262..775a49b2b9d0e2ec6a74efaa1a0356027df284e6 100644 --- a/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/resources/Detail.js +++ b/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/resources/Detail.js @@ -35,16 +35,18 @@ Settings_Vtiger_Detail_Js('Settings_Webforms_Detail_Js', { * @params: show webform record url */ showForm : function(record){ - var params = { - 'module' : 'Webforms', - 'record' : record, - 'view' : 'ShowForm', - 'parent' : 'Settings' - } + var self = this; + var params = { + 'module' : 'Webforms', + 'record' : record, + 'view' : 'ShowForm', + 'parent' : 'Settings' + } app.request.get({data:params}).then( function(error, data){ var callback = function(container){ //show html without rendering + var allowedAllFilesSize = container.find('.allowedAllFilesSize').val(); var showFormContents = container.find('pre').html(); showFormContents = showFormContents + '<script type="text/javascript">'+ 'window.onload = function() { '+ @@ -108,7 +110,21 @@ Settings_Vtiger_Detail_Js('Settings_Webforms_Detail_Js', { 'var dateRegex = /^[1-9][0-9]{3}-(0[1-9]|1[0-2]|[1-9]{1})-(0[1-9]|[1-2][0-9]|3[0-1]|[1-9]{1})$/;' + 'if(!dateRegex.test(dateVal)) {' + 'alert("For "+ elemLabel +" field please enter valid date in required format"); return false;' + - '}}}'; + '}}}'+ + 'var inputElems = document.getElementsByTagName("input");'+ + 'var totalFileSize = 0;'+ + 'for(var i = 0; i < inputElems.length; i++) {'+ + 'if(inputElems[i].type.toLowerCase() === "file") {'+ + 'var file = inputElems[i].files[0];'+ + 'if(typeof file !== "undefined") {'+ + 'var totalFileSize = totalFileSize + file.size;'+ + '}'+ + '}'+ + '}'+ + 'if(totalFileSize > '+allowedAllFilesSize+') {'+ + 'alert("Maximum allowed file size including all files is 50MB.");'+ + 'return false;'+ + '}'; if(container.find('[name=isCaptchaEnabled]').val() == true) { showFormContents = Settings_Webforms_Detail_Js.getCaptchaCode(showFormContents); } else { @@ -122,6 +138,7 @@ Settings_Vtiger_Detail_Js('Settings_Webforms_Detail_Js', { //Rendering content has been removed from container container.find('pre').remove(); container.find('code').remove(); + self.registerCopyToClipboard(); }; app.helper.showModal(data, { @@ -130,6 +147,32 @@ Settings_Vtiger_Detail_Js('Settings_Webforms_Detail_Js', { } ) }, + + registerCopyToClipboard: function () { + jQuery('#webformCopyClipboard').click(function (e) { + e.preventDefault(); + try { + document.getElementById('showFormContent').select(); + var success = document.execCommand("copy"); + if (success) { + app.helper.showSuccessNotification({message: app.vtranslate('JS_COPIED_SUCCESSFULLY')}); + } else { + app.helper.showErrorNotification({message: app.vtranslate('JS_COPY_FAILED')}); + } + if (window.getSelection) { + if (window.getSelection().empty) { + window.getSelection().empty(); + } else if (window.getSelection().removeAllRanges) { + window.getSelection().removeAllRanges(); + } + } else if (document.selection) { + document.selection.empty(); + } + } catch (err) { + app.helper.showErrorNotification({message: app.vtranslate('JS_COPY_FAILED')}); + } + }); + }, /** * Function get Captcha Code diff --git a/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/resources/Edit.js b/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/resources/Edit.js index 31f461b927b9e30d4b39fe5d31e2c1a33eaaf182..ffc2e9b20c5ef66224ab8cdd0ee920b9d0b7251f 100644 --- a/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/resources/Edit.js +++ b/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/resources/Edit.js @@ -208,8 +208,9 @@ Settings_Vtiger_Edit_Js('Settings_Webforms_Edit_Js', {}, { var containerRow = element.closest('tr'); var removedFieldLabel = containerRow.find('td.fieldLabel').text(); var selectElement = sourceModuleContainer.find('#fieldsList'); - var select2Element = vtUtils.showSelect2ElementView(selectElement); - select2Element.find('li.select2-search-choice').find('div:contains('+removedFieldLabel+')').closest('li').remove(); + //x click removes element in select2 automatically (2 actions below is not required) + //var select2Element = vtUtils.showSelect2ElementView(selectElement); + //select2Element.find('li.select2-search-choice').find('div:contains('+removedFieldLabel+')').closest('li').remove(); selectElement.find('option:contains('+removedFieldLabel+')').removeAttr('selected'); if(selectElement.val().length == 1){ jQuery('#saveFieldsOrder').attr('disabled',true); @@ -315,6 +316,61 @@ Settings_Vtiger_Edit_Js('Settings_Webforms_Edit_Js', {}, { this.arrangeSelectedChoicesInOrder(); this.registerEventToHandleOnChangeOfOverrideValue(); this.registerAutoCompleteFields(editViewForm); + //Document file fields handling + this.registerAddFileFieldEvent(editViewForm); + this.registerFileFieldRemoveEvent(editViewForm); + }, + + fileFieldsLimit: 5, + /** + * Function to handle add file field click event + * @param form - Edit view form. + */ + registerAddFileFieldEvent: function (form) { + var self = this; + var container = jQuery(form); + container.find('#addFileFieldBtn').click(function (e) { + e.preventDefault(); + var fileFieldsCount = parseInt(jQuery('#fileFieldsCount').val()); + if (fileFieldsCount >= self.fileFieldsLimit) { + app.helper.showAlertNotification({message: app.vtranslate('JS_MAX_FILE_FIELDS_LIMIT', self.fileFieldsLimit)}); + return false; + } + var fieldIndex = jQuery('#fileFieldNextIndex').val(); + var html = '<tr>\n\ + <td style="vertical-align: middle;">\n\ + <input type="text" class="inputElement nameField" name="file_field['+fieldIndex+'][fieldlabel]" data-rule-required="true">\n\ + </td>\n\ + <td class="textAlignCenter" style="vertical-align: middle;">\n\ + <input type="checkbox" name="file_field['+fieldIndex+'][required]" value="1">\n\ + </td>\n\ + <td class="textAlignCenter" style="vertical-align: middle;">\n\ + <a class="removeFileField" style="color: black;"><i class="fa fa-trash icon-trash"></i></a>\n\ + </td>\n\ + </tr>'; + container.find('table#fileFieldsTable').find('tbody').append(html); + jQuery('#fileFieldNextIndex').val(parseInt(fieldIndex)+1); + jQuery('#fileFieldsCount').val(fileFieldsCount+1); + container.find('.noFileField').addClass('hide'); + self.registerFileFieldRemoveEvent(form); + }); + }, + /** + * Function to handle remove file field click event + * @param container - Edit view form. + */ + registerFileFieldRemoveEvent: function (container) { + container = jQuery(container); + container.find('.removeFileField').off('click'); + container.find('.removeFileField').on('click', function (e) { + e.preventDefault(); + var fileFieldsCount = parseInt(jQuery('#fileFieldsCount').val()); + jQuery(e.currentTarget).closest('tr').remove(); + jQuery('#fileFieldsCount').val(fileFieldsCount-1); + if (container.find('#fileFieldsTable').find('tr:visible').length == 1) { + container.find('.noFileField').removeClass('hide'); + } + }); }, /** @@ -747,4 +803,4 @@ Settings_Vtiger_Edit_Js('Settings_Webforms_Edit_Js', {}, { //this.registerSubmitEvent(); } -}) \ No newline at end of file +}) diff --git a/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/resources/List.js b/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/resources/List.js index 4655227604b4975bb6d91454e2f8d84fe4617b25..f9e306e44d463ad3b44c3f6c4e99905a550a66f3 100644 --- a/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/resources/List.js +++ b/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/resources/List.js @@ -14,6 +14,7 @@ Settings_Vtiger_List_Js("Settings_Webforms_List_Js",{ * @params: show form url */ showForm : function(event,record){ + var self = this; event.stopPropagation(); var params = { 'module' : 'Webforms', @@ -24,6 +25,7 @@ Settings_Vtiger_List_Js("Settings_Webforms_List_Js",{ app.request.post({'data':params}).then( function(e,data){ var callback = function(container){ + var allowedAllFilesSize = container.find('.allowedAllFilesSize').val(); var showFormContents = container.find('pre').html(); showFormContents = showFormContents + '<script type="text/javascript">'+ 'window.onload = function() { '+ @@ -82,7 +84,21 @@ Settings_Vtiger_List_Js("Settings_Webforms_List_Js",{ 'var dateRegex = /^[1-9][0-9]{3}-(0[1-9]|1[0-2]|[1-9]{1})-(0[1-9]|[1-2][0-9]|3[0-1]|[1-9]{1})$/;' + 'if(!dateRegex.test(dateVal)) {' + 'alert("For "+ elemLabel +" field please enter valid date in required format"); return false;' + - '}}}'; + '}}}'+ + 'var inputElems = document.getElementsByTagName("input");'+ + 'var totalFileSize = 0;'+ + 'for(var i = 0; i < inputElems.length; i++) {'+ + 'if(inputElems[i].type.toLowerCase() === "file") {'+ + 'var file = inputElems[i].files[0];'+ + 'if(typeof file !== "undefined") {'+ + 'var totalFileSize = totalFileSize + file.size;'+ + '}'+ + '}'+ + '}'+ + 'if(totalFileSize > '+allowedAllFilesSize+') {'+ + 'alert("Maximum allowed file size including all files is 50MB.");'+ + 'return false;'+ + '}'; if(container.find('[name=isCaptchaEnabled]').val() == true) { showFormContents = Settings_Webforms_List_Js.getCaptchaCode(showFormContents); } else { @@ -94,6 +110,7 @@ Settings_Vtiger_List_Js("Settings_Webforms_List_Js",{ container.find('#showFormContent').text(showFormContents); container.find('pre').remove(); container.find('code').remove(); + self.registerCopyToClipboard(); } app.helper.showModal(data,{'cb':callback}); }, @@ -101,7 +118,33 @@ Settings_Vtiger_List_Js("Settings_Webforms_List_Js",{ } ) }, - + + registerCopyToClipboard: function () { + jQuery('#webformCopyClipboard').click(function (e) { + e.preventDefault(); + try { + document.getElementById('showFormContent').select(); + var success = document.execCommand("copy"); + if (success) { + app.helper.showSuccessNotification({message: app.vtranslate('JS_COPIED_SUCCESSFULLY')}); + } else { + app.helper.showErrorNotification({message: app.vtranslate('JS_COPY_FAILED')}); + } + if (window.getSelection) { + if (window.getSelection().empty) { + window.getSelection().empty(); + } else if (window.getSelection().removeAllRanges) { + window.getSelection().removeAllRanges(); + } + } else if (document.selection) { + document.selection.empty(); + } + } catch (err) { + app.helper.showErrorNotification({message: app.vtranslate('JS_COPY_FAILED')}); + } + }); + }, + /** * Function get Captcha Code * @param <string> showFormContents diff --git a/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/uitypes/Picklist.tpl b/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/uitypes/Picklist.tpl new file mode 100644 index 0000000000000000000000000000000000000000..49e30db3171220a91ab704dc1fd83f54ed8dc565 --- /dev/null +++ b/pkg/vtiger/modules/Webforms/layouts/v7/modules/Settings/Webforms/uitypes/Picklist.tpl @@ -0,0 +1,41 @@ +{*+********************************************************************************** +* 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. +*************************************************************************************} + +{strip} + {assign var="FIELD_INFO" value=$FIELD_MODEL->getFieldInfo()} + {assign var="PICKLIST_VALUES" value=$FIELD_INFO['picklistvalues']} + {assign var=PICKLIST_COLORS value=$FIELD_INFO['picklistColors']} + {assign var="SPECIAL_VALIDATOR" value=$FIELD_MODEL->getValidator()} + <select data-fieldname="{$FIELD_MODEL->getFieldName()}" data-fieldtype="picklist" class="inputElement select2 {if $OCCUPY_COMPLETE_WIDTH} row {/if}" type="picklist" data-field-id= '{$FIELD_MODEL->get('id')}' name="{$FIELD_MODEL->getFieldName()}" {if !empty($SPECIAL_VALIDATOR)}data-validator='{Zend_Json::encode($SPECIAL_VALIDATOR)}'{/if} data-selected-value='{$FIELD_MODEL->get('fieldvalue')}' + {if $FIELD_INFO["mandatory"] eq true} data-rule-required="true" {/if} + {if count($FIELD_INFO['validator'])} + data-specific-rules='{ZEND_JSON::encode($FIELD_INFO["validator"])}' + {/if} + {if $FIELD_MODEL->getFieldName() eq 'targetmodule' and $MODE eq 'edit'}disabled='disabled'{/if} + > + {if $FIELD_MODEL->isEmptyPicklistOptionAllowed()}<option value="">{vtranslate('LBL_SELECT_OPTION','Vtiger')}</option>{/if} + {foreach item=PICKLIST_VALUE key=PICKLIST_NAME from=$PICKLIST_VALUES} + {assign var=CLASS_NAME value="picklistColor_{$FIELD_MODEL->getFieldName()}_{$PICKLIST_NAME|replace:' ':'_'}"} + <option value="{Vtiger_Util_Helper::toSafeHTML($PICKLIST_NAME)}" {if $PICKLIST_COLORS[$PICKLIST_NAME]}class="{$CLASS_NAME}"{/if} {if trim(decode_html($FIELD_MODEL->get('fieldvalue'))) eq trim($PICKLIST_NAME)} selected {/if}>{$PICKLIST_VALUE}</option> + {/foreach} + </select> + {if $FIELD_MODEL->getFieldName() eq 'targetmodule' and $MODE eq 'edit'} + <input type="hidden" name="targetmodule" value="{$FIELD_MODEL->get('fieldvalue')}" /> + {/if} + {if $PICKLIST_COLORS} + <style type="text/css"> + {foreach item=PICKLIST_VALUE key=PICKLIST_NAME from=$PICKLIST_VALUES} + {assign var=CLASS_NAME value="{$FIELD_MODEL->getFieldName()}_{$PICKLIST_NAME|replace:' ':'_'}"} + .picklistColor_{$CLASS_NAME} { + background-color: {$PICKLIST_COLORS[$PICKLIST_NAME]} !important; + } + {/foreach} + </style> + {/if} +{/strip} diff --git a/pkg/vtiger/modules/Webforms/modules/Webforms/capture.php b/pkg/vtiger/modules/Webforms/modules/Webforms/capture.php index d63fde131a84b7b6674ec138609843f24be462fb..1057ce381e0fcc202f8cfbf00179066befe9d03f 100644 --- a/pkg/vtiger/modules/Webforms/modules/Webforms/capture.php +++ b/pkg/vtiger/modules/Webforms/modules/Webforms/capture.php @@ -20,6 +20,7 @@ include_once 'modules/Webforms/model/WebformsFieldModel.php'; include_once 'include/QueryGenerator/QueryGenerator.php'; include_once 'includes/runtime/EntryPoint.php'; include_once 'includes/main/WebUI.php'; +include_once 'include/Webservices/AddRelated.php'; class Webform_Capture { @@ -112,9 +113,19 @@ class Webform_Capture { // Create the record $record = vtws_create($webform->getTargetModule(), $parameters, $user); + $webform->createDocuments($record); $this->sendResponse($returnURL, 'ok'); return; + } catch (DuplicateException $e) { + $sourceModule = $webform->getTargetModule(); + $mailBody = vtranslate('LBL_DUPLICATION_FAILURE_FROM_WEBFORMS', $sourceModule, vtranslate('SINGLE_'.$sourceModule, $sourceModule), $webform->getName(), vtranslate('SINGLE_'.$sourceModule, $sourceModule)); + + $userModel = Users_Record_Model::getInstanceFromPreferenceFile($user->id); + sendMailToUserOnDuplicationPrevention($sourceModule, $parameters, $mailBody, $userModel); + + $this->sendResponse($returnURL, false, $e->getMessage()); + return; } catch (Exception $e) { $this->sendResponse($returnURL, false, $e->getMessage()); return; diff --git a/pkg/vtiger/modules/Webforms/modules/Webforms/model/WebformsModel.php b/pkg/vtiger/modules/Webforms/modules/Webforms/model/WebformsModel.php index a6e6b275e98923379144f5e4c633514ab1e6c311..4942ba6bd181857b1067e46ce13217b25c94b7fe 100644 --- a/pkg/vtiger/modules/Webforms/modules/Webforms/model/WebformsModel.php +++ b/pkg/vtiger/modules/Webforms/modules/Webforms/model/WebformsModel.php @@ -324,9 +324,63 @@ class Webforms_Model { $rows = $adb->num_rows($res); if ($rows > 0) { return true; - }else + } else { return false; + } + } + + /** + * Function to create document records for each submitted files in webform and relate to created target module record. + * @global $current_user + * @param <array> $wsRecord - Webservice record array of created target module record returned by vtws_create(). + * @throws Exception - Throws exception if size of all uploaded files exceeds 50MB. + */ + function createDocuments($wsRecord) { + global $current_user; + $createdDocumentRecords = array(); + $sourceModule = $this->getTargetModule(); + if (Vtiger_Functions::isDocumentsRelated($sourceModule)) { + $allFileSize = 0; + foreach ($_FILES as $file) { + $allFileSize += $file['size']; + } + + $recordModel = Settings_Webforms_Record_Model::getInstanceById($this->getId(), 'Settings:Webforms'); + $allowedFilesSize = $recordModel->getModule()->allowedAllFilesSize(); + if ($allFileSize > $allowedFilesSize) { + throw new Exception('Allowed files size exceeded. Allowed file size including all files is 50MB.'); + } + + $fileFields = $recordModel->getFileFields(); + $fileFieldsArray = array(); + $fileFieldsNameArray = array(); + foreach ($fileFields as $fileField) { + $fileFieldsArray[$fileField['fieldname']] = $fileField['fieldlabel']; + $fileFieldsNameArray[] = $fileField['fieldname']; + } + + $uploadedFiles = $_FILES; + foreach ($uploadedFiles as $fileFieldName => $uploadedFile) { + if (in_array($fileFieldName, $fileFieldsNameArray) && $uploadedFile['error'] == 0 && $uploadedFile['name']) { + $data['notes_title'] = $fileFieldsArray[$fileFieldName]; + $data['document_source'] = 'Vtiger'; + $data['filename'] = $uploadedFile['name']; + $data['filelocationtype'] = 'I'; + $data['source'] = 'WEBFORM'; + $data['assigned_user_id'] = $wsRecord['assigned_user_id']; + $data['filestatus'] = 1; + unset($_FILES); + $_FILES['filename'] = $uploadedFile; + $record = vtws_create('Documents', $data, $current_user); + array_push($createdDocumentRecords, $record['id']); + } + } + + if (!empty($createdDocumentRecords)) { + vtws_add_related($wsRecord['id'], $createdDocumentRecords); + } + } } } -?> +?> \ No newline at end of file diff --git a/pkg/vtiger/modules/Webforms/settings/actions/Save.php b/pkg/vtiger/modules/Webforms/settings/actions/Save.php index 328b3cffcab7fc54b3086ce8e3c5933ac9e1ea64..d7631e83e49af47da66af901da3eb218dd037b71 100644 --- a/pkg/vtiger/modules/Webforms/settings/actions/Save.php +++ b/pkg/vtiger/modules/Webforms/settings/actions/Save.php @@ -42,6 +42,12 @@ class Settings_Webforms_Save_Action extends Settings_Vtiger_Index_Action { $recordModel->set($fieldName, $fieldValue); } + $fileFields = array(); + if (is_array($request->get('file_field'))) { + $fileFields = $request->get('file_field'); + } + $recordModel->set('file_fields', $fileFields); + $returnUrl = $recordModel->getModule()->getListViewUrl(); $recordModel->set('selectedFieldsData', $request->get('selectedFieldsData')); if (!$recordModel->checkDuplicate()) { diff --git a/pkg/vtiger/modules/Webforms/settings/models/Module.php b/pkg/vtiger/modules/Webforms/settings/models/Module.php index 6f4c613625a1b1af89130a0d6e8166f56cb3cce8..5b438d58157b78f59f54ea4b418ecaaa904eb928 100644 --- a/pkg/vtiger/modules/Webforms/settings/models/Module.php +++ b/pkg/vtiger/modules/Webforms/settings/models/Module.php @@ -15,6 +15,7 @@ class Settings_Webforms_Module_Model extends Settings_Vtiger_Module_Model { var $nameFields = array('name'); var $listFields = array('name'=>'WebForm Name', 'targetmodule' => 'Module', 'publicid'=>'Public Id', 'returnurl' => 'Return Url', 'enabled' => 'Status'); var $name = 'Webforms'; + var $allowedAllFilesSize = 52428800; //50MB public static function getSupportedModulesList() { $webformModules = array('Contacts', 'Accounts', 'Leads', 'Potentials', 'HelpDesk', 'Vendors'); @@ -118,4 +119,8 @@ class Settings_Webforms_Module_Model extends Settings_Vtiger_Module_Model { function isStarredEnabled(){ return false; } + + public function allowedAllFilesSize() { + return $this->allowedAllFilesSize; + } } diff --git a/pkg/vtiger/modules/Webforms/settings/models/Record.php b/pkg/vtiger/modules/Webforms/settings/models/Record.php index 55a192eec28968142f6d47a0a4b9c7759ff0eb04..92594d4caed418ea76b894fdad6721b52450ada3 100644 --- a/pkg/vtiger/modules/Webforms/settings/models/Record.php +++ b/pkg/vtiger/modules/Webforms/settings/models/Record.php @@ -121,6 +121,7 @@ class Settings_Webforms_Record_Model extends Settings_Vtiger_Record_Model { $linkTypes = array('DETAILVIEWBASIC'); $moduleModel = $this->getModule(); $recordId = $this->getId(); + $linkModelList = array(); $detailViewLinks = array( array( @@ -338,7 +339,42 @@ class Settings_Webforms_Record_Model extends Settings_Vtiger_Record_Model { } array_push($params, $fieldName, $neutralizedField, $fieldDefaultValue, $fieldDetails['required'], $fieldDetails['sequence'], $fieldDetails['hidden']); $db->pquery($fieldInsertQuery, $params); + } + + //Handling document file fields save + $fileFields = $this->get('file_fields'); + $db->pquery('DELETE FROM vtiger_webform_file_fields WHERE webformid = ?', array($this->getId())); + $fileFieldQuery = 'INSERT INTO vtiger_webform_file_fields (webformid, fieldname, fieldlabel, required) VALUES (?, ?, ?, ?)'; + $i = 1; + foreach ($fileFields as $fileField) { + $fileFieldName = 'file_'.$this->getId().'_'.$i++; + $required = $fileField['required']; + if ($required != 1) { + $required = 0; + } + $params = array($this->getId(), $fileFieldName, $fileField['fieldlabel'], $required); + $db->pquery($fileFieldQuery, $params); + } } + + /** + * Function to get document file fields added in webform + * @return <Array> Array of added file fields information. + */ + function getFileFields() { + $fileFields = $this->get('file_fields'); + if (!$fileFields) { + $fileFields = array(); + $db = PearDatabase::getInstance(); + + $result = $db->pquery('SELECT * FROM vtiger_webform_file_fields WHERE webformid = ?', array($this->getId())); + $count = $db->num_rows($result); + for ($i = 0; $i < $count; $i++) { + $fileFields[$i] = $db->query_result_rowdata($result, $i); + } + $this->set('file_fields', $fileFields); + } + return $fileFields; } /** diff --git a/pkg/vtiger/modules/Webforms/settings/views/Detail.php b/pkg/vtiger/modules/Webforms/settings/views/Detail.php index bf9e017e76d8d9570d72b5c50252d8c5de5dc019..88c2879b81f0408fda206c15745c937da0c2f7ee 100644 --- a/pkg/vtiger/modules/Webforms/settings/views/Detail.php +++ b/pkg/vtiger/modules/Webforms/settings/views/Detail.php @@ -47,6 +47,7 @@ class Settings_Webforms_Detail_View extends Settings_Vtiger_Index_View { $viewer->assign('SOURCE_MODULE', $recordModel->get('targetmodule')); $viewer->assign('DETAILVIEW_LINKS', $recordModel->getDetailViewLinks()); $viewer->assign('SELECTED_FIELD_MODELS_LIST', $recordModel->getSelectedFieldsList()); + $viewer->assign('DOCUMENT_FILE_FIELDS', $recordModel->getFileFields()); $viewer->assign('NO_PAGINATION',true); $currentUserModel = Users_Record_Model::getCurrentUserModel(); diff --git a/pkg/vtiger/modules/Webforms/settings/views/Edit.php b/pkg/vtiger/modules/Webforms/settings/views/Edit.php index ad44fd78859a7a520da382067bb2c94250f6ee63..221fd21dde14a21e645e4934ecb30219376139b3 100644 --- a/pkg/vtiger/modules/Webforms/settings/views/Edit.php +++ b/pkg/vtiger/modules/Webforms/settings/views/Edit.php @@ -25,13 +25,14 @@ Class Settings_Webforms_Edit_View extends Settings_Vtiger_Index_View { $recordId = $request->get('record'); $qualifiedModuleName = $request->getModule(false); $mode = ''; - $selectedFieldsList = $allFieldsList = array(); + $selectedFieldsList = $allFieldsList = $fileFields = array(); $viewer = $this->getViewer($request); $supportedModules = Settings_Webforms_Module_Model::getSupportedModulesList(); if ($recordId) { $recordModel = Settings_Webforms_Record_Model::getInstanceById($recordId, $qualifiedModuleName); $selectedFieldsList = $recordModel->getSelectedFieldsList(); + $fileFields = $recordModel->getFileFields(); $sourceModule = $recordModel->get('targetmodule'); $mode = 'edit'; @@ -65,6 +66,7 @@ Class Settings_Webforms_Edit_View extends Settings_Vtiger_Index_View { $viewer->assign('RECORD_STRUCTURE_MODEL', $recordStructure); $viewer->assign('RECORD_STRUCTURE', $recordStructure->getStructure()); $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); + $viewer->assign('DOCUMENT_FILE_FIELDS', $fileFields); $viewer->view('EditView.tpl', $qualifiedModuleName); } diff --git a/pkg/vtiger/modules/Webforms/settings/views/GetSourceModuleFields.php b/pkg/vtiger/modules/Webforms/settings/views/GetSourceModuleFields.php index 83fde05f1bdaf3d193cd4062fac40c0ac48dc18e..0cdbafe69b5894734a632a7e5233f92d8bee0b4d 100644 --- a/pkg/vtiger/modules/Webforms/settings/views/GetSourceModuleFields.php +++ b/pkg/vtiger/modules/Webforms/settings/views/GetSourceModuleFields.php @@ -28,6 +28,7 @@ class Settings_Webforms_GetSourceModuleFields_View extends Settings_Vtiger_Index $viewer = $this->getViewer($request); $mode = ''; $selectedFieldsList = array(); + $fileFields = array(); if ($recordId) { $recordModel = Settings_Webforms_Record_Model::getInstanceById($recordId, $qualifiedModuleName); @@ -35,6 +36,7 @@ class Settings_Webforms_GetSourceModuleFields_View extends Settings_Vtiger_Index if ($sourceModule === $recordModel->get('targetmodule')) { $selectedFieldsList = $recordModel->getSelectedFieldsList(); } + $fileFields = $recordModel->getFileFields(); } else { $recordModel = Settings_Webforms_Record_Model::getCleanInstance($qualifiedModuleName); } @@ -42,6 +44,8 @@ class Settings_Webforms_GetSourceModuleFields_View extends Settings_Vtiger_Index $viewer->assign('MODE', $mode); $viewer->assign('SOURCE_MODULE', $sourceModule); $viewer->assign('MODULE', $qualifiedModuleName); + $viewer->assign('DOCUMENT_FILE_FIELDS', $fileFields); + $viewer->assign('QUALIFIED_MODULE', $qualifiedModuleName); $viewer->assign('SELECTED_FIELD_MODELS_LIST', $selectedFieldsList); $viewer->assign('ALL_FIELD_MODELS_LIST', $recordModel->getAllFieldsList($sourceModule)); $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); diff --git a/pkg/vtiger/modules/Webforms/settings/views/ShowForm.php b/pkg/vtiger/modules/Webforms/settings/views/ShowForm.php index a295979b2a40902f67c022bf0cc491d8f5dd04dc..91cffb4778925bcc8642de46bd6ae7aa7022ffb5 100644 --- a/pkg/vtiger/modules/Webforms/settings/views/ShowForm.php +++ b/pkg/vtiger/modules/Webforms/settings/views/ShowForm.php @@ -41,6 +41,8 @@ Class Settings_Webforms_ShowForm_View extends Settings_Vtiger_IndexAjax_View { $viewer->assign('ACTION_PATH', $siteUrl.'modules/Webforms/capture.php'); $viewer->assign('CAPTCHA_PATH', $siteUrl.'modules/Settings/Webforms/actions/CheckCaptcha.php'); $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel()); + $viewer->assign('DOCUMENT_FILE_FIELDS', $recordModel->getFileFields()); + $viewer->assign('ALLOWED_ALL_FILES_SIZE', $recordModel->getModule()->allowedAllFilesSize()); echo $viewer->view('ShowForm.tpl', $qualifiedModuleName); } diff --git a/pkg/vtiger/translations/Arabic_ar_ae/modules/Calendar.php b/pkg/vtiger/translations/Arabic_ar_ae/modules/Calendar.php index 878697d7484facf8302d1574d5a4faf7527a95d8..fa0e7035ceaf4d9daaad5927c720a1e92f45266c 100644 --- a/pkg/vtiger/translations/Arabic_ar_ae/modules/Calendar.php +++ b/pkg/vtiger/translations/Arabic_ar_ae/modules/Calendar.php @@ -175,6 +175,9 @@ $languageStrings = array( 'LBL_NOVEMBER' => 'تشرين الثاني / نوÙمبر', 'LBL_DECEMBER' => 'كانون الأول / ديسمبر', 'LBL_CLICK_HERE_TO_VIEW' => 'انقر هنا لعرض', + + 'LBL_TOTAL_EVENTS_DUPLICATED' => 'عدد Ø§Ù„Ø£ØØ¯Ø§Ø« المكررة تخطي', + 'LBL_TOTAL_TASKS_DUPLICATED' => 'عدد المهام المكررة تخطي', ); $jsLanguageStrings = array( 'LBL_ADD_EVENT_TASK' => 'Ø¥Ø¶Ø§ÙØ© ØØ¯Ø« / القيام', diff --git a/pkg/vtiger/translations/Arabic_ar_ae/modules/Google.php b/pkg/vtiger/translations/Arabic_ar_ae/modules/Google.php index 84be1c74eff3a86f496876a602fd46d8b47b79a3..8097364d680392370529378af2bf26670265c224 100644 --- a/pkg/vtiger/translations/Arabic_ar_ae/modules/Google.php +++ b/pkg/vtiger/translations/Arabic_ar_ae/modules/Google.php @@ -77,8 +77,9 @@ $languageStrings = array( 'LBL_SAVE_AND_IMPORT' => 'ØÙظ Ùˆ استيراد', 'LBL_IMPORT_RESULTS_GOOGLE' => 'جوجل استيراد النتائج', + 'LBL_REDIRECT_URL' => 'إعادة توجيه URL', + 'LBL_REDIRECT_URL_MESSAGE' => 'انسخ الرابط توجيه التالية ولصقها ÙÙŠ مشروع المصادقة جوجل الخاص بك كما يظهر صورة', ); - $jsLanguageStrings = array( 'LBL_SYNC_BUTTON' => "مزامنة الآن", 'LBL_SYNCRONIZING' => "مزامنة ....", diff --git a/pkg/vtiger/translations/Arabic_ar_ae/modules/Settings/LayoutEditor.php b/pkg/vtiger/translations/Arabic_ar_ae/modules/Settings/LayoutEditor.php index a085e4197ac35aa1a32a811d4f9a064dd127910d..6dde519212fadaf86d6d2a30a68e6bf7bacd353d 100644 --- a/pkg/vtiger/translations/Arabic_ar_ae/modules/Settings/LayoutEditor.php +++ b/pkg/vtiger/translations/Arabic_ar_ae/modules/Settings/LayoutEditor.php @@ -136,6 +136,20 @@ $languageStrings = array( 'LBL_DETAIL_HEADER' => 'سجل رأس', 'LBL_HEADER_FIELD' => 'رأس رأي', + 'LBL_DUPLICATE_HANDLING' => 'منع مكررة', + 'LBL_DUPLICATE_CHECK' => 'تمكين الاختيار مكررة', + 'LBL_DUPLICATION_INFO_MESSAGE' => 'تكرار ميزة منع يمنع Ùقط السجلات المكررة الجديدة من Ø§Ù„ØØµÙˆÙ„ على إنشاؤها من قبل المستخدمين والتطبيقات الخارجية. السجلات التي تم إنشاؤها من استيراد', + 'LBL_SELECT_FIELDS_FOR_DUPLICATION' => 'ØØ¯Ø¯ الØÙ‚ول ÙØ±ÙŠØ¯Ø© من نوعها التي يتم إلى يتم ÙØØµ سجلات مكررة', + 'LBL_SELECT_FIELDS' => 'الØÙ‚ول ØØ¯Ø¯', + 'LBL_MAX_3_FIELDS' => 'ماكس 3 الØÙ‚ول', + 'LBL_SELECT_RULE' => 'ØØ¯Ø¯ قاعدة لمعالجة التكرارات', + 'LBL_ALLOW_DUPLICATES' => 'Ø§Ù„Ø³Ù…Ø§Ø Ø§Ù„ØªÙƒØ±Ø§Ø±Ø§Øª', + 'LBL_DO_NOT_ALLOW_DUPLICATES' => 'لا ØªØ³Ù…Ø Ø§Ù„Ù…ÙƒØ±Ø±Ø§Øª', + 'LBL_DUPLICATES_IN_SYNC_MESSAGE' => 'العمل على اتخاذ إذا تم العثور على سجل مكررة بينما المزامنة مع تطبيق خارجي', + 'LBL_PREFER_LATEST_RECORD' => 'ØªÙØ¶Ù„ Ø£ØØ¯Ø« سجل', + 'LBL_PREFER_INTERNAL_RECORD' => 'ØªÙØ¶Ù„ السجل الداخلي', + 'LBL_PREFER_EXTERNAL_RECORD' => 'ØªÙØ¶Ù„ سجل خارجية', + 'LBL_SYNC_TOOLTIP_MESSAGE' => 'ØªÙØ¶Ù„ Ø£ØØ¯Ø« سجل - سيتم Ø§Ù„Ø§ØØªÙاظ بيانات السجل المعدلة مؤخرا <BR> ØªÙØ¶Ù„ السجل الداخلي - القائمة سجل سيتم Ø§Ù„Ø§ØØªÙاظ كما هو <BR> ØªÙØ¶Ù„ سجل خارجية - بيانات من تطبيق خارجي سيتم نسخ', ); $jsLanguageStrings = array( 'JS_BLOCK_VISIBILITY_SHOW' => 'إظهار كتلة تمكين', @@ -196,4 +210,7 @@ $jsLanguageStrings = array( 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'اسم الØÙ‚ول تظهر ÙÙŠ رأس Ø§ÙØªØ±Ø§Ø¶ÙŠØ§', 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'هذا المجال هو رأس تمكين Vtiger7 سو٠يظهر ÙÙŠ عرض موجز', + 'JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE' => 'ØªØØ¯ÙŠØ« Ø¨Ù†Ø¬Ø§Ø Ù„Ù„Ù†Ø¸Ø± ÙÙŠ الØÙ‚ول Ø§Ù„Ù…ØØ¯Ø¯Ø© ÙÙŠ الوقاية من التكرارات', + 'JS_DUPLICATE_HANDLING_FAILURE_MESSAGE' => 'لم تنظر الØÙ‚ول Ø§Ù„Ù…ØØ¯Ø¯Ø© ÙÙŠ الوقاية من التكرارات', + 'JS_DUPLICATE_CHECK_DISABLED' => 'تم تعطيل الاختيار مكررة', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Arabic_ar_ae/modules/Settings/Webforms.php b/pkg/vtiger/translations/Arabic_ar_ae/modules/Settings/Webforms.php index 16cb07ea5db8f570026609aaabb18a028c1eb136..8615cfe7ac022d120e4c082d3a2a7762e825bf25 100644 --- a/pkg/vtiger/translations/Arabic_ar_ae/modules/Settings/Webforms.php +++ b/pkg/vtiger/translations/Arabic_ar_ae/modules/Settings/Webforms.php @@ -45,6 +45,12 @@ $languageStrings = array( 'LBL_ADD_RECORD' => 'Ø¥Ø¶Ø§ÙØ© Webform', + 'LBL_UPLOAD_DOCUMENTS' => 'وثائق للتØÙ…يل', + 'LBL_ADD_FILE_FIELD' => 'Ø±ÙØ¹ مل٠الميدان', + 'LBL_FIELD_LABEL' => 'عنوان الوثيقة', + 'LBL_FILE_FIELD_INFO' => 'لكل مل٠مرÙوع من على شبكة الإنترنت تشكل يتم إنشاء وثيقة جديدة مع المل٠المرÙÙ‚. يرتبط الوثيقة أيضا إلى هذه المنشأة ØØ¯ÙŠØ«Ø§Ùª الصورة.', + 'LBL_NO_FILE_FIELD' => 'ÙˆØ£Ø¶Ø§ÙØª أية ØÙ‚ول الملÙ.', + 'LBL_COPY_TO_CLIPBOARD' => 'نسخ إلى Ø§Ù„ØØ§Ùظة', ); $jsLanguageStrings = array( 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'Webform deleted successfully', @@ -55,4 +61,8 @@ $jsLanguageStrings = array( 'JS_REFERENCE_FIELDS_CANT_BE_MANDATORY_WITHOUT_OVERRIDE_VALUE' => 'الØÙ‚ول المرجعية غير قادر على أن يكون إلزاميا دون تجاوز القيمة', 'JS_TYPE_TO_SEARCH' => 'اكتب Ù„Ù„Ø¨ØØ«', "JS_WEBFORM_WITH_THIS_NAME_ALREADY_EXISTS" => 'يبÙورم مع هذا الاسم موجود Ø¨Ø§Ù„ÙØ¹Ù„', + + 'JS_MAX_FILE_FIELDS_LIMIT' => 'Ø§Ù„ØØ¯ الأقصى الذي يمكن أن تضيÙÙª الصورة ØÙ‚ول الملÙ.', + 'JS_COPIED_SUCCESSFULLY' => 'نسخ بنجاØ.', + 'JS_COPY_FAILED' => 'ÙØ´Ù„ نسخة. يرجى نسخ يدويا.', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Arabic_ar_ae/modules/Users.php b/pkg/vtiger/translations/Arabic_ar_ae/modules/Users.php index aee43fa5427dd9859ceeeeab88831ef6786edbc1..3c47d7341285353a63c18401090dcf1d9a26a14e 100644 --- a/pkg/vtiger/translations/Arabic_ar_ae/modules/Users.php +++ b/pkg/vtiger/translations/Arabic_ar_ae/modules/Users.php @@ -141,7 +141,7 @@ $languageStrings = array( 'Africa/Nairobi' => '(UTC+03:00) Nairobi', 'Asia/Tehran' => '(UTC+03:30) Tehran', 'Asia/Tbilisi' => '(UTC+04:00) Tbilisi', - 'Europe/Moscow' => '(UTC+04:00) Moscow, Volgograd', + 'Europe/Moscow' => '(UTC+03:00) Moscow, Volgograd', 'Asia/Muscat' => '(UTC+04:00) Abu Dhabi, Muscat', 'Asia/Baku' => '(UTC+04:00) Baku', 'Asia/Yerevan' => '(UTC+04:00) Yerevan', diff --git a/pkg/vtiger/translations/Arabic_ar_ae/modules/Vtiger.php b/pkg/vtiger/translations/Arabic_ar_ae/modules/Vtiger.php index 7a0f7080938608489423b2c2425089ee62717ce2..d10ef6f1a800b8b9971241686ac1d8455aa22b8b 100644 --- a/pkg/vtiger/translations/Arabic_ar_ae/modules/Vtiger.php +++ b/pkg/vtiger/translations/Arabic_ar_ae/modules/Vtiger.php @@ -972,6 +972,9 @@ $languageStrings = array( 'LBL_NOT_STARRED' => 'اتبع', 'LBL_QUICK_VIEW' => 'عرض سريع', 'LBL_NOTIFICATION_CENTER' => 'مركز إعلام', + 'LBL_NOTIFICATION' => 'إعلام', + 'LBL_STARRED_RECORD_TO' => 'Ùª s إلى٪ s', + 'LBL_STARRED_RECORD_UPDATED' => 'Ùª الصورة Ø§Ù„Ù…ØØ¯Ø«Ø©Ùª الصورة', 'LBL_CONTACT' => 'إدارة الاتصال', 'LBL_NO_ATTACHMENTS' => 'لا المرÙقات', 'LBL_REARRANGE_DASHBOARD_TABS' => 'إعادة ترتيب علامات التبويب', @@ -1137,6 +1140,7 @@ Vtiger الاتصالات جوجل اتصالات(مجموعة مختارة Ù…Ø 'LBL_MARKETING' => 'التسويق', 'LBL_SALES' => 'المبيعات', 'LBL_PROJECT' => 'المشاريع', + 'LBL_TOOLS' => 'أدوات', 'LBL_TAGS' => 'Tags', 'LBL_SHARE_TAGS' => 'الجمهور العلامات', 'LBL_SHARE_TAG' => 'ØØµØ© العلامة', @@ -1215,6 +1219,16 @@ Vtiger الاتصالات جوجل اتصالات(مجموعة مختارة Ù…Ø 'LBL_SLA_INFORMATION' => 'جيش ØªØØ±ÙŠØ± السودان من المعلومات', 'LBL_DELETE_USER_CONFIRMATION' => 'عندما يتم ØØ°Ù العضو لذلك، سيتم وضع علامة المستخدم بأنه "غير ÙØ¹Ø§Ù„"ØŒ ويمكن تعيين أي سجلات جديدة إلى المستخدم، والمستخدم لن يكون قادرا على تسجيل الدخول. هل أنت متأكد أنك تريد ØØ°ÙØŸ', + + 'LBL_DUPLICATES' => 'التكرارات', + 'LBL_DUPLICATES_DETECTED' => 'تكرار (Ù‚) الكش٠عن!', + 'LBL_DUPLICATES_FOUND_MESSAGE' => 'لا يمكن ØÙظ هذه الصورة٪ منذ مكررة٪ s موجودة ÙÙŠ vtiger إدارة مع مطابقة القيم ل٪ s.', + 'LBL_VTIGER_NOTIFICATION' => 'رسالة من: نظام vtiger إدارة الإخطارات', + 'LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS' => 'لا يمكن ØÙظ التالية٪ s من "Ùª الصورة" سير العمل', + 'LBL_DUPLICATION_FAILURE_FROM_WEBFORMS' => 'لا يمكن ØÙظ التالية٪ s من "Ùª ليالي" نموذج ويب', + 'LBL_DUPLICATION_FAILURE_FOR_ADMIN' => 'يمكنك٪ s إلى تعديل قواعد الوقاية مكررة.', + 'LBL_DUPLICATION_FAILURE_FOR_NON_ADMIN' => 'اتصل بالمسؤول لتعديل قواعد مكررة', + 'LBL_DUPLICATE_RECORD_LISTS' => 'مكررة٪ Ù‚ (Ù‚):', ); $jsLanguageStrings = array( 'JS_EMAIL_SERVER_CONFIGURATION' => 'يرجى تكوين إعدادات ملقم البريد الصادر الخاص بك من ØµÙØØ© الاعدادات', @@ -1676,4 +1690,7 @@ $jsLanguageStrings = array( 'JS_UPLOAD_SUCCESSFUL' => 'المل٠الذي تم تØÙ…يله بنجاØ', 'JS_UPLOAD_FAILED' => 'تØÙ…يل Ù…Ù„Ù ÙØ´Ù„', + 'JS_DUPLICATES_DETECTED' => 'تكرار (Ù‚) الكش٠عن!', + 'JS_PASSWORD_MISMATCH_ERROR' => 'يرجى إعادة إدخال كلمة السر. "كلمة السر الجديدة" Ùˆ "كلمة السر تأكيد" عدم تطابق القيم.', + 'JS_LIST_DELETE_CONFIRMATION' => 'هل أنت متأكد أنك تريد ØØ°ÙØŸ', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Accounts.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Accounts.php index 28a9b9bcbbe377db5ed7109648051fcd74cf2de4..7a3d31faeeb77854afd23f7a90ae4033b009db50 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Accounts.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Accounts.php @@ -2,55 +2,63 @@ /*+********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source + * 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. + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br ************************************************************************************/ $languageStrings = array( - 'Accounts' => 'Organizações' , - 'SINGLE_Accounts' => 'Organização' , - 'LBL_ADD_RECORD' => 'Add Organization' , - 'LBL_RECORDS_LIST' => 'Listar Organizações' , - 'LBL_ACCOUNT_INFORMATION' => 'Informação Organização' , - 'LBL_SHOW_ACCOUNT_HIERARCHY' => 'Mostrar Hierarquia da Organização', - 'industry' => 'Atividade' , - 'Account Name' => 'Nome Organização' , - 'Account No' => 'Cód. Organização' , - 'Website' => 'Website' , - 'Ticker Symbol' => 'Cod. Bolsa' , - 'Member Of' => 'Membro de' , - 'Employees' => 'Empregados' , - 'Ownership' => 'Propriedade' , - 'SIC Code' => 'Cod CNAE' , - 'Other Email' => 'Email Alternativo' , - 'Analyst' => 'Analista' , - 'Competitor' => 'Concorrente' , - 'Customer' => 'Cliente' , - 'Integrator' => 'Integrador' , - 'Investor' => 'Investidor' , - 'Press' => 'Imprensa' , - 'Prospect' => 'Prospect' , - 'Reseller' => 'Revendedor' , - 'Type' => 'Tipo' , - 'LBL_START_DATE' => 'Data Inicial' , - 'LBL_END_DATE' => 'Data Final' , - 'LBL_DUPLICATES_EXIST' => 'Organization Name already exists', - 'LBL_COPY_SHIPPING_ADDRESS' => 'Copiar endereço da Expedição' , // TODO: Review - 'LBL_COPY_BILLING_ADDRESS' => 'Copiar Endereço de Cobrança' , // TODO: Review - 'LBL_IMAGE_INFORMATION' => 'Imagem do perfil', - 'Organization Image' => 'Organização Imagem', + // Basic Strings + 'Accounts' => 'Organizações', + 'SINGLE_Accounts' => 'Organização' , + 'LBL_ADD_RECORD' => 'Adicionar Organização', + 'LBL_RECORDS_LIST' => 'Lista Organizações' , - 'Other Phone' => 'Telefone Secundário', - 'Phone' => 'Telefone Principal', - 'Email' => 'E-Mail Principal', + // Blocks + 'LBL_ACCOUNT_INFORMATION' => 'Detalhes da Organização', -); -$jsLanguageStrings = array( - 'LBL_RELATED_RECORD_DELETE_CONFIRMATION' => 'Are you sure you want to Delete?', - 'LBL_DELETE_CONFIRMATION' => 'Deleting this Organization will remove its related Opportunities & Quotes. Are you sure you want to delete this Organization?', - 'LBL_MASS_DELETE_CONFIRMATION' => 'Deleting this Organization will remove its related Opportunities & Quotes. Are you sure you want to delete this Organization?', + // Mass Action + 'LBL_SHOW_ACCOUNT_HIERARCHY' => 'Exibir Hierarquia Organização', - 'JS_DUPLICATE_CREATION_CONFIRMATION' => 'Nome da organização já Existe.Você deseja criar um registro duplicado?', + //Field Labels + 'industry' => 'Atividade' , + 'Account Name' => 'Nome Organização', + 'Account No' => 'Cód. Organização', + 'Website'=> 'Website', + 'Ticker Symbol'=> 'Cod. Bolsa', + 'Member Of'=> 'Membro de', + 'Employees'=> 'Empregados', + 'Ownership'=> 'Propriedade', + 'SIC Code' => 'Cod CNAE', + 'Other Email'=> 'Email Alternativo' , + 'Other Phone' => 'Telefone Alternativo', + 'Phone' => 'Telefone', + 'Email' => 'Email', + 'Type' => 'Tipo', -); \ No newline at end of file + //Added for existing picklist entries + 'Analyst'=> 'Analista', + 'Competitor' => 'Concorrente' , + 'Customer' => 'Cliente' , + 'Integrator' => 'Integrador', + 'Investor' => 'Investidor', + 'Press'=> 'Imprensa', + 'Prospect' => 'Prospect', + 'Reseller' => 'Revendedor', + 'LBL_START_DATE' => 'Data Inicial', + 'LBL_END_DATE' => 'Data Final', + + //Duplication error message + 'LBL_DUPLICATES_EXIST' => 'O Nome da Organização já existe', + 'LBL_COPY_BILLING_ADDRESS' => 'Copiar Endereço Faturamento', + 'LBL_COPY_SHIPPING_ADDRESS' => 'Copiar Endereço Entrega', + 'LBL_IMAGE_INFORMATION' => 'Imagem Perfil', + 'Organization Image' => 'Imagem Organização', +); + +$jsLanguageStrings = array( + 'LBL_RELATED_RECORD_DELETE_CONFIRMATION' => 'Tem certeza que deseja apagar?', + 'LBL_DELETE_CONFIRMATION'=> 'Ao apagar esta Organização serão removidas as Oportunidades e Cotações relacionadas. Tem certeza que certeza que deseja apagar esta Organização?', + 'LBL_MASS_DELETE_CONFIRMATION' => 'Ao apagar esta(s) Organização(ões) serão removidas as Oportunidades e Cotações relacionadas. Tem certeza que deseja apagar o(s) registro(s) selecionado(s)?', + 'JS_DUPLICATE_CREATION_CONFIRMATION' => 'O nome da Organização já existe. Deseja criar um registro duplicado?', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Assets.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Assets.php index 8eb7fb016419939b44535b12e5db939f3bb16f55..55890a84f2786bc647ca0a2423eaeb0033dd4df9 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Assets.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Assets.php @@ -2,30 +2,35 @@ /*+********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source + * 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. + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br ************************************************************************************/ $languageStrings = array( - 'SINGLE_Assets' => 'Ativo' , - 'LBL_ADD_RECORD' => 'Add Assets' , - 'LBL_RECORDS_LIST' => 'Assets List' , - 'LBL_ASSET_INFORMATION' => 'Informação Ativo' , - 'Asset No' => 'No. Ativo' , - 'Serial Number' => 'Número Série' , - 'Date Sold' => 'Data Venda' , - 'Date in Service' => 'Data em Serviço' , - 'Tag Number' => 'Número Etiqueta' , - 'Invoice Name' => 'Nome Fatura' , - 'Shipping Method' => 'Método Entrega' , - 'Shipping Tracking Number' => 'Número Rastreamento Entrega', - 'Asset Name' => 'Nome Ativo' , - 'Customer Name' => 'Nome Cliente' , - 'Notes' => 'Notas' , - 'In Service' => 'Em Serviço' , - 'Out-of-service' => 'Fora Serviço' , + // Basic Strings + 'Assets' => 'Ativos', + 'SINGLE_Assets'=> 'Ativo', + 'LBL_ADD_RECORD'=> 'Adicionar Ativos', + 'LBL_RECORDS_LIST' => 'Lista Ativos', - 'Assets' => 'Ativos', + // Blocks + 'LBL_ASSET_INFORMATION'=> 'Informação Ativo', -); \ No newline at end of file + //Field Labels + 'Asset No' => 'No. Ativo', + 'Serial Number'=> 'Número Série', + 'Date Sold' => 'Data Venda', + 'Date in Service' => 'Data em Serviço', + 'Tag Number' => 'Número Etiqueta', + 'Invoice Name'=> 'Nome Fatura' , + 'Shipping Method'=> 'Método Entrega' , + 'Shipping Tracking Number' => 'Número Rastreamento Entrega', + 'Asset Name' => 'Nome Ativo', + 'Customer Name' => 'Nome Cliente', + 'Notes' => 'Notas' , + + /*picklist values*/ + 'In Service'=> 'Em Serviço', + 'Out-of-service' => 'Fora Serviço' , +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Calendar.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Calendar.php index 0aa1e4d6aee30a9669179d3b65f7068eec3f6efb..0c733cb2c374d66d01e35711537611fa72327fc3 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Calendar.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Calendar.php @@ -2,231 +2,267 @@ /*+********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source + * 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. + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br ************************************************************************************/ $languageStrings = array( - 'Calendar' => 'Calendar' , - 'SINGLE_Calendar' => 'Tarefa' , - 'LBL_ADD_TASK' => 'Add Tarefa' , - 'LBL_ADD_EVENT' => 'Evento' , - 'LBL_RECORDS_LIST' => 'Lista' , - 'LBL_EVENTS' => 'Eventos' , - 'LBL_TODOS' => 'Tarefa' , - 'LBL_CALENDAR_SETTINGS' => 'Calendar Settings' , // TODO: Review - 'LBL_CALENDAR_SHARING' => 'Calendar Sharing' , // TODO: Review - 'LBL_DEFAULT_EVENT_DURATION' => 'Default Event Duration' , // TODO: Review - 'LBL_CALL' => 'Call' , // TODO: Review - 'LBL_OTHER_EVENTS' => 'Other Events' , // TODO: Review - 'LBL_MINUTES' => 'Minutes' , // TODO: Review - 'LBL_SELECT_USERS' => 'Select Users' , // TODO: Review - 'LBL_EVENT_OR_TASK' => 'Evento / Tarefa' , - 'LBL_TASK_INFORMATION' => 'Informação Tarefa' , - 'LBL_EVENT_INFORMATION' => 'Detalhes do Evento' , - 'Subject' => 'Assunto' , - 'Start Date & Time' => 'Data & Hora InÃcio' , - 'Activity Type' => 'Tipo Atividade' , - 'Send Notification' => 'Enviar Notificação' , - 'Location' => 'Local' , - 'End Date & Time' => 'Data & Hora Final' , - 'Visibility' => 'Visibilidade', - 'Recurrence' => 'Repetição', - 'Private' => 'Particular', - 'Public' => 'Público', - 'LBL_ACTIVITY_TYPES' => 'Activity Types' , - 'LBL_CONTACTS_SUPPORT_END_DATE' => 'Término Suporte' , - 'LBL_CONTACTS_BIRTH_DAY' => 'Date of Birth' , - 'LBL_ADDED_CALENDARS' => 'Added Calendars' , // TODO: Review - 'Call' => 'Chamada' , - 'Meeting' => 'Reunião' , - 'Task' => 'Tarefa' , // TODO: Review - 'Planned' => 'Planejado' , - 'Completed' => 'ConcluÃdo' , - 'Pending Input' => 'Pendente' , - 'Not Started' => 'Não Iniciado' , - 'Deferred' => 'Adiado' , - 'Held' => 'Confirmado', - 'Not Held' => 'Não Confirmado', - 'Medium' => 'Média' , - 'LBL_CHANGE_OWNER' => 'Mudar Proprietário' , - 'LBL_EVENT' => 'Evento' , - 'LBL_TASK' => 'Tarefa' , - 'LBL_TASKS' => 'Tarefa', - 'LBL_CALENDAR_VIEW' => 'Calendar View' , - 'LBL_SHARED_CALENDAR' => 'Shared Calendar' , // TODO: Review - 'LBL_DAY0' => 'Sunday' , // TODO: Review - 'LBL_DAY1' => 'Monday' , // TODO: Review - 'LBL_DAY2' => 'Tuesday' , // TODO: Review - 'LBL_DAY3' => 'Wednesday' , // TODO: Review - 'LBL_DAY4' => 'Thursday' , // TODO: Review - 'LBL_DAY5' => 'Friday' , // TODO: Review - 'LBL_DAY6' => 'Saturday' , // TODO: Review - 'first' => 'First' , // TODO: Review - 'last' => 'Last' , // TODO: Review - 'LBL_DAY_OF_THE_MONTH' => 'day of the month' , // TODO: Review - 'LBL_ON' => 'on' , // TODO: Review - 'Daily' => 'Day(s)' , // TODO: Review - 'Weekly' => 'Week(s)' , // TODO: Review - 'Monthly' => 'Month(s)' , // TODO: Review - 'Yearly' => 'Year' , // TODO: Review - 'LBL_DEFAULT_STATUS_TYPE' => 'Padrão Estado e Tipo' , - 'LBL_STATUS' => 'Estado' , - 'LBL_TYPE' => 'Tipo' , + // Basic Strings + 'Calendar'=>'Agenda', + 'SINGLE_Calendar'=> 'Tarefa' , + 'SINGLE_Events' => 'Evento', + 'LBL_ADD_TASK' => 'Adicionar Tarefa', + 'LBL_ADD_EVENT'=> 'Evento', + 'LBL_RECORDS_LIST' => 'Lista Agenda', + 'LBL_EVENTS' => 'Eventos' , + 'LBL_TODOS'=> 'Tarefas', + 'LBL_CALENDAR_SETTINGS' => 'Configurações Agenda', + 'LBL_CALENDAR_SHARING' => 'Compartilhar Agenda', + 'LBL_DEFAULT_EVENT_DURATION' => 'Duração Padrão Evento', + 'LBL_CALL' => 'Chamada', + 'LBL_OTHER_EVENTS' => 'Outros Eventos', + 'LBL_MINUTES' => 'Minutos', + 'LBL_SELECT_USERS' => 'Selecionar Usuários', + 'LBL_EVENT_OR_TASK' => 'Evento / Tarefa', + 'LBL_DEFAULT_STATUS_TYPE' => 'Status e Tipo Padrão', + 'LBL_STATUS' => 'Status', + 'LBL_TYPE' => 'Tipo', + // Blocks + 'LBL_TASK_INFORMATION' => 'Detalhes da Tarefa', + 'LBL_EVENT_INFORMATION'=> 'Detalhes do Evento', + + //Fields + 'Subject'=> 'Assunto' , + 'Start Date & Time'=> 'Data/Hora InÃcio', + 'Activity Type'=> 'Tipo Atividade', + 'Send Notification'=> 'Enviar Notificação', + 'Location' => 'Local' , + 'End Date & Time'=> 'Data/Hora Final' , + 'Visibility' => 'Visibilidade', + 'Recurrence' => 'Repete', + + //Visibility picklist values + 'Private' => 'Particular', + 'Public' => 'Público', + + //Side Bar Names + 'LBL_ACTIVITY_TYPES' => 'Tipos Atividade', + 'LBL_CONTACTS_SUPPORT_END_DATE' => 'Término Suporte', + 'LBL_CONTACTS_BIRTH_DAY' => 'Data Nascimento' , + 'LBL_ADDED_CALENDARS' => 'Agendas Adicionadas', + + + //Activity Type picklist values + 'Call' => 'Chamada' , + 'Meeting'=> 'Reunião', + 'Task' => 'Tarefa', + + //Status picklist values + 'Planned'=> 'Planejado', + 'Completed'=> 'Tarefa ConcluÃda', + 'Pending Input'=> 'Pendente', + 'Not Started'=> 'Não Iniciada', + 'Deferred' => 'Adiada', + 'Held'=>'Realizada', + 'Not Held'=>'Não Realizada', + + //Priority picklist values + 'Medium' => 'Média', + + 'LBL_CHANGE_OWNER' => 'Mudar Proprietário' , + + 'LBL_EVENT'=> 'Evento', + 'LBL_TASKS' => 'Tarefas', + 'LBL_TASK' => 'Tarefa', + + 'LBL_RECORDS_LIST' => 'Lista de Registros', + 'LBL_CALENDAR_VIEW'=> 'Minha Agenda' , + 'LBL_SHARED_CALENDAR' => 'Agenda Compartilhada', + + //Repeat Lables - used by getTranslatedString + 'LBL_DAY0' => 'Domingo', + 'LBL_DAY1' => 'Segunda', + 'LBL_DAY2' => 'Terça', + 'LBL_DAY3' => 'Quarta', + 'LBL_DAY4' => 'Quinta', + 'LBL_DAY5' => 'Sexta', + 'LBL_DAY6' => 'Sábado', + + 'first' => 'Primeiro', + 'last' => 'Último', + 'LBL_DAY_OF_THE_MONTH' => 'dia do mês', + 'LBL_ON' => 'em', + + 'Daily'=>'Dia(s)', + 'Weekly'=>'Semana(s)', + 'Monthly'=>'Mês(es)', + 'Yearly'=>'Ano', + + //Import and Export Labels + 'LBL_IMPORT_RECORDS' => 'Importar Registros', + 'LBL_RESULT' => 'Resultado', + 'LBL_FINISH' => 'Finalizar', + 'LBL_TOTAL_TASKS_IMPORTED' => 'No. de Tarefas Importadas com Sucesso ', + 'LBL_TOTAL_TASKS_SKIPPED' => 'No. de Tarefas Ignoradas em função de um ou mais campos obrigatórios ausentes', + 'LBL_TOTAL_EVENTS_IMPORTED' => 'No. Eventos Importados com Sucesso ', + 'LBL_TOTAL_EVENTS_SKIPPED' => 'No. de Eventos Ignorados em função de um ou mais campos obrigatórios ausentes ', + 'LBL_TOTAL_EVENTS_DUPLICATED' => 'No. de Eventos duplicados ignorados', + 'LBL_TOTAL_TASKS_DUPLICATED' => 'No. de Tarefas duplicadas ignoradas', + + 'ICAL_FORMAT' => 'Formato iCal', + 'LBL_LAST_IMPORT_UNDONE'=>'Sua Última Importação foi desfeita', + 'LBL_UNDO_LAST_IMPORT' => 'Desfazer Última Importação', + //Fixing colors for Shared Calendar and My Calendar - 'LBL_EDIT_COLOR' => 'Editar cores', - 'LBL_ADD_CALENDAR_VIEW' => 'Adicionar Calendar View', - 'LBL_SELECT_USER_CALENDAR' => 'Selecione Calendar Usuário', - 'LBL_SELECT_CALENDAR_COLOR' => 'Selecione Calendar Cor', - 'LBL_EDITING_CALENDAR_VIEW' => 'Edição Calendar View', - 'LBL_DELETE_CALENDAR' => 'Excluir Calendar', - 'LBL_SELECT_ACTIVITY_TYPE' => 'Selecionar Tipo de Atividade', - 'Tasks' => 'Tarefa', - 'LBL_SELECT_FIELDS_FOR_RANGE' => 'Selecione Campos para Gama', - 'LBL_DUPLICATE_VIEW_EXIST' => 'Calendar View já existe', - - // For Event Invitation - 'LBL_ACTIVITY_NOTIFICATION' => 'Esta é uma notificação de que uma atividade é atribuÃda a você que tem sido', - 'LBL_ACTIVITY_INVITATION' => 'Você foi convidado para uma atividade', - 'LBL_DETAILS_STRING' => 'Os detalhes são', - 'LBL_CREATED' => 'criado', - 'LBL_UPDATED' => 'atualizado', - 'Due Date' => 'Due Date', - 'Priority' => 'Prioridade', - 'Related To' => 'Relacionado a', - 'LBL_CONTACT_LIST' => 'Lista de Contatos', - 'LBL_APP_DESCRIPTION' => 'Descrição', - 'LBL_REGARDS_STRING' => 'Obrigado e cumprimentos', - 'LBL_EVENT_INFORMATION' => 'Detalhes do Evento', + 'LBL_EDIT_COLOR' => 'Editar Cor', + 'LBL_ADD_CALENDAR_VIEW' => 'Adicionar Visualização Agenda', + 'LBL_SELECT_USER_CALENDAR' => 'Selecionar Usuário Agenda', + 'LBL_SELECT_CALENDAR_COLOR' => 'Selecionar Cor Agenda', + 'LBL_EDITING_CALENDAR_VIEW' => 'Editar Visualização Agenda', + 'LBL_DELETE_CALENDAR' => 'Apagar Agenda', + 'LBL_SELECT_ACTIVITY_TYPE' => 'Seleciona Tipo Atividade', + 'Tasks' => 'Tarefas', + 'LBL_SELECT_FIELDS_FOR_RANGE' => 'Selecionar Campos por Intervalo', + 'LBL_DUPLICATE_VIEW_EXIST' => 'Visualização Agenda já existe', + + // For Event Invitation + 'LBL_ACTIVITY_NOTIFICATION' => 'Uma atividade foi designada para você', + 'LBL_ACTIVITY_INVITATION' => 'Você foi convidado para uma atividade', + 'LBL_DETAILS_STRING' => 'Detalhes são', + 'LBL_CREATED' => 'criado', + 'LBL_UPDATED' => 'atualizado', + 'Due Date' => 'Data Vencimento', + 'Priority' => 'Prioridade', + 'Related To' => 'Relacionado à ', + 'LBL_CONTACT_LIST' => 'Lista Contato', + 'LBL_APP_DESCRIPTION' => 'Descrição', + 'LBL_REGARDS_STRING' => 'Obrigado & Saudações', + 'LBL_EVENT_INFORMATION' => 'Detalhes Evento', 'LBL_UPDATED_INVITATION' => 'Convite Atualizado', 'LBL_INVITATION' => 'Convite', + //Recurring Events - 'LBL_EDIT_RECURRING_EVENT' => 'Edite evento recorrente', - 'LBL_ALL_EVENTS_EDIT_INFO' => 'Todos os eventos da série será alterado.</br> As alterações feitas a outros eventos serão mantidos.', - 'LBL_FUTURE_EVENTS_EDIT_INFO' => 'Este e todos os seguintes eventos serão alterados.</br> Quaisquer alterações a eventos futuros serão perdidos.', - 'LBL_ONLY_THIS_EVENT_EDIT_INFO' => 'Todos os outros eventos da série continuará a ser o mesmo.', - 'LBL_EDIT_RECURRING_EVENTS_INFO' => 'Você gostaria de salvar as alterações para', - - 'LBL_DELETE_RECURRING_EVENT' => 'Excluir evento recorrente', - 'LBL_ALL_EVENTS_DELETE_INFO' => 'Todos os eventos da série serão excluÃdos.', - 'LBL_FUTURE_EVENTS_DELETE_INFO' => 'Este e todos os seguintes eventos serão excluÃdos.', - 'LBL_ONLY_THIS_EVENT_DELETE_INFO' => 'Todos os outros eventos da série continuará a ser o mesmo.', - 'LBL_DELETE_RECURRING_EVENTS_INFO' => 'Gostaria de excluir somente este evento, todos os eventos da série ou este e todos os acontecimentos futuros na série?', - 'LBL_ONLY_THIS_EVENT' => 'Apenas Este Evento', - 'LBL_FUTURE_EVENTS' => 'Seguintes eventos', + 'LBL_EDIT_RECURRING_EVENT' => 'Editar Evento Recorrente', + 'LBL_ALL_EVENTS_EDIT_INFO' => 'Todos os Eventos da série serão alterados.</br> Quaisquer alterações realizadas em outros Eventos serão mantidas.', + 'LBL_FUTURE_EVENTS_EDIT_INFO' => 'Este e todos os seguintes Eventos serão alterados.</br> Quaisquer alterações nos Eventos futuros serão perdidas.', + 'LBL_ONLY_THIS_EVENT_EDIT_INFO' => 'Todos os outros Eventos da série permanecerão os mesmos.', + 'LBL_EDIT_RECURRING_EVENTS_INFO' => 'Deseja salvar as alterações para', + + 'LBL_DELETE_RECURRING_EVENT' => 'Apagar Evento Recorrente', + 'LBL_ALL_EVENTS_DELETE_INFO' => 'Todos os Eventos da série serão apagados.', + 'LBL_FUTURE_EVENTS_DELETE_INFO' => 'Este e todos os seguintes Eventos serão apagados.', + 'LBL_ONLY_THIS_EVENT_DELETE_INFO' => 'Todos os outros Eventos da série permanecerão os mesmos.', + 'LBL_DELETE_RECURRING_EVENTS_INFO' => 'Deseja apagar somente este Evento, todos os Eventos das série ou este e todos os Eventos futuros da série?', + 'LBL_ONLY_THIS_EVENT' => 'Somente este Evento', + 'LBL_FUTURE_EVENTS' => 'Os seguintes Eventos', 'LBL_ALL_EVENTS' => 'Todos os Eventos', - 'SINGLE_Events' => 'Eventos', - 'LBL_IMPORT_RECORDS' => 'Importação De Registros', - 'LBL_RESULT' => 'Resultado', - 'LBL_FINISH' => 'Acabamento', - 'LBL_TOTAL_TASKS_IMPORTED' => 'Não. de Tarefas com Êxito Importado ', - 'LBL_TOTAL_TASKS_SKIPPED' => 'Não. de Tarefas Ignoradas como eles estavam ausentes um ou mais campo obrigatório ', - 'LBL_TOTAL_EVENTS_IMPORTED' => 'Não. de Eventos Importados com Êxito ', - 'LBL_TOTAL_EVENTS_SKIPPED' => 'Não. de Eventos Ignorados enquanto eles estavam ausentes um ou mais campo obrigatório ', - 'ICAL_FORMAT' => 'Formato iCal', - 'LBL_LAST_IMPORT_UNDONE' => 'Sua Última Importação Foi Revertida', - 'LBL_UNDO_LAST_IMPORT' => 'Desfazer A Última Importação', - 'LBL_REMINDER_NOTIFICATION' => 'Este é um lembrete de notificação para a Atividade', - 'LBL_SELECT_EVENT_TYPE' => 'Tipo De Atividade', - 'LBL_THIS_WEEK' => 'Esta Semana', - 'LBL_ADD_TASK_AND_PRESS_ENTER' => 'Adicionar Tarefa e pressione Enter', - - - 'LBL_JANUARY' => 'Janeiro', - 'LBL_FEBRUARY' => 'Fevereiro', - 'LBL_MARCH' => 'Março', - 'LBL_APRIL' => 'Abril', - 'LBL_MAY' => 'Pode', - 'LBL_JUNE' => 'Junho', - 'LBL_JULY' => 'Julho', - 'LBL_AUGUST' => 'Agosto', - 'LBL_SEPTEMBER' => 'Setembro', - 'LBL_OCTOBER' => 'Outubro', - 'LBL_NOVEMBER' => 'Novembro', - 'LBL_DECEMBER' => 'Dezembro', - 'LBL_CLICK_HERE_TO_VIEW' => 'Clique aqui para ver', + //Reminder Email + 'LBL_REMINDER_NOTIFICATION' => 'Esta é uma notificação de lembrete para a Atividade', + 'LBL_SELECT_EVENT_TYPE' => 'Tipo de Atividade', + 'LBL_THIS_WEEK' => 'Esta Semana', + 'LBL_ADD_TASK_AND_PRESS_ENTER' => 'Adicione Tarefa e pressione Enter', + + //Months + 'LBL_JANUARY' => 'Janeiro', + 'LBL_FEBRUARY' => 'Fevereiro', + 'LBL_MARCH' => 'Março', + 'LBL_APRIL' => 'Abril', + 'LBL_MAY' => 'Maio', + 'LBL_JUNE' => 'Junho', + 'LBL_JULY' => 'Julho', + 'LBL_AUGUST' => 'Agosto', + 'LBL_SEPTEMBER' => 'Setembro', + 'LBL_OCTOBER' => 'Outubro', + 'LBL_NOVEMBER' => 'Novembro', + 'LBL_DECEMBER' => 'Dezembro', + 'LBL_CLICK_HERE_TO_VIEW' => 'Clique aqui para visualizar', ); + $jsLanguageStrings = array( - 'LBL_ADD_EVENT_TASK' => 'Add Event / Tarefa' , - 'JS_TASK_IS_SUCCESSFULLY_ADDED_TO_YOUR_CALENDAR' => 'Tarefa is successfully added to your Calendar', // TODO: Review - 'LBL_CANT_SELECT_CONTACT_FROM_LEADS' => 'Não é possÃvel selecionar contatos relacionados para Leads', // TODO: Review - 'JS_FUTURE_EVENT_CANNOT_BE_HELD' => 'Não pode ser detida para futuro', + 'LBL_ADD_EVENT_TASK' => 'Adicionar Evento / Tarefa', + 'JS_TASK_IS_SUCCESSFULLY_ADDED_TO_YOUR_CALENDAR' => 'A Tarefa foi adicionada com sucesso em sua Agenda', + 'LBL_CANT_SELECT_CONTACT_FROM_LEADS' => 'Não é possÃvel selecionar Contatos relacionados para Leads', + 'JS_FUTURE_EVENT_CANNOT_BE_HELD' => 'Não é possÃvel ser realizado no futuro', //Calendar view label translation - 'LBL_MONTH' => 'Month', - 'LBL_TODAY' => 'Today', - 'LBL_DAY' => 'Day', - 'LBL_WEEK' => 'Week', - - 'LBL_SUNDAY' => 'Sunday', - 'LBL_MONDAY' => 'Monday', - 'LBL_TUESDAY' => 'Tuesday', - 'LBL_WEDNESDAY' => 'Wednesday', - 'LBL_THURSDAY' => 'Thursday', - 'LBL_FRIDAY' => 'Friday', - 'LBL_SATURDAY' => 'Saturday', + 'LBL_MONTH' => 'Mês', + 'LBL_TODAY' => 'Hoje', + 'LBL_TOMORROW' => 'Amanhã', + 'LBL_DAY' => 'Dia', + 'LBL_WEEK' => 'Semana', - 'LBL_SUN' => 'Sun', - 'LBL_MON' => 'Mon', - 'LBL_TUE' => 'Tue', - 'LBL_WED' => 'Wed', - 'LBL_THU' => 'Thu', - 'LBL_FRI' => 'Fri', - 'LBL_SAT' => 'Sat', - - 'LBL_JANUARY' => 'January', - 'LBL_FEBRUARY' => 'February', - 'LBL_MARCH' => 'March', - 'LBL_APRIL' => 'April', - 'LBL_MAY' => 'May', - 'LBL_JUNE' => 'June', - 'LBL_JULY' => 'July', - 'LBL_AUGUST' => 'August', - 'LBL_SEPTEMBER' => 'September', - 'LBL_OCTOBER' => 'October', - 'LBL_NOVEMBER' => 'November', - 'LBL_DECEMBER' => 'December', + 'LBL_SUNDAY' => 'Domingo', + 'LBL_MONDAY' => 'Segunda-feira', + 'LBL_TUESDAY' => 'Terça-feira', + 'LBL_WEDNESDAY' => 'Quarta-feira', + 'LBL_THURSDAY' => 'Quinta-feira', + 'LBL_FRIDAY' => 'Sexta-feira', + 'LBL_SATURDAY' => 'Sábado', + 'LBL_SUN' => 'Dom', + 'LBL_MON' => 'Seg', + 'LBL_TUE' => 'Ter', + 'LBL_WED' => 'Qua', + 'LBL_THU' => 'Qui', + 'LBL_FRI' => 'Sex', + 'LBL_SAT' => 'Sab', + + 'LBL_JANUARY' => 'Janeiro', + 'LBL_FEBRUARY' => 'Fevereiro', + 'LBL_MARCH' => 'Março', + 'LBL_APRIL' => 'Abril', + 'LBL_MAY' => 'Maio', + 'LBL_JUNE' => 'Junho', + 'LBL_JULY' => 'Julho', + 'LBL_AUGUST' => 'Agosto', + 'LBL_SEPTEMBER' => 'Setembro', + 'LBL_OCTOBER' => 'Outubro', + 'LBL_NOVEMBER' => 'Novembro', + 'LBL_DECEMBER' => 'Dezembro', + 'LBL_JAN' => 'Jan', - 'LBL_FEB' => 'Feb', + 'LBL_FEB' => 'Fev', 'LBL_MAR' => 'Mar', - 'LBL_APR' => 'Apr', - 'LBL_MAY' => 'May', + 'LBL_APR' => 'Abr', + 'LBL_MAY' => 'Mai', 'LBL_JUN' => 'Jun', 'LBL_JUL' => 'Jul', - 'LBL_AUG' => 'Aug', - 'LBL_SEP' => 'Sep', - 'LBL_OCT' => 'Oct', - 'LBL_NOV' => 'Nov', - 'LBL_DEC' => 'Dec', - - 'LBL_ALL_DAY' => 'All-Day', + 'LBL_AUG' => 'Ago', + 'LBL_SEP' => 'Set', + 'LBL_OCT' => 'Out', + 'LBL_NOV' => 'Nov', + 'LBL_DEC' => 'Dez', + 'LBL_ALL_DAY' => 'Todos os Dias', //End - + //Fixing colors for Shared Calendar and My Calendar - 'JS_CALENDAR_VIEW_COLOR_UPDATED_SUCCESSFULLY' => 'Calendar View cor atualizado com sucesso', - 'JS_CALENDAR_VIEW_DELETE_CONFIRMATION' => 'Tem certeza de que deseja excluir este ponto de vista do calendário?', - 'JS_CALENDAR_VIEW_ADDED_SUCCESSFULLY' => 'Calendar View adicionado com sucesso', - 'JS_CALENDAR_VIEW_DELETED_SUCCESSFULLY' => 'Calendar View excluÃdo com sucesso', - 'JS_NO_CALENDAR_VIEWS_TO_ADD' => 'No Calendar View para adicionar', - 'JS_EDIT_CALENDAR' => 'Editar Calendar', - - 'LBL_TOMORROW' => 'Amanhã', - 'JS_EVENT_UPDATED' => 'Evento Atualizado', - 'JS_NO_EVENTS_F0R_THE_DAY' => 'Nenhum evento para o dia', - 'LBL_AGENDA' => 'Agenda', - 'JS_CALENDAR_VIEW_YOU_ARE_EDITING_NOT_FOUND' => 'Vista de calendário não encontrado', - 'JS_DELETE' => 'Apagar', - 'JS_EDIT' => 'Editar', - 'JS_MARK_AS_HELD' => 'Marcar como realizada', - 'JS_CREATE_FOLLOW_UP' => 'Crie o acompanhamento', - 'JS_RECURRING_EVENT' => 'Evento recorrente', - 'JS_DETAILS' => 'Mais Detalhes', - - - 'JS_CHECK_START_AND_END_DATE' => 'Final de Data E Hora deve ser maior que ou igual a Data de InÃcio E Hora', - 'JS_CHECK_START_AND_END_DATE_SHOULD_BE_GREATER' => 'Final de Data E Hora deve ser maior que a Data de InÃcio E Hora', - -); \ No newline at end of file + 'JS_CALENDAR_VIEW_COLOR_UPDATED_SUCCESSFULLY' => 'A cor da Agenda foi atualizada com sucesso', + 'JS_CALENDAR_VIEW_DELETE_CONFIRMATION' => 'Você tem certeza que deseja apagar esta visualização da Agenda?', + 'JS_CALENDAR_VIEW_ADDED_SUCCESSFULLY' => 'A visualização da Agenda foi adicionada com sucesso', + 'JS_CALENDAR_VIEW_DELETED_SUCCESSFULLY' => 'A visualização da Agenda foi apagada com sucesso', + 'JS_NO_CALENDAR_VIEWS_TO_ADD' => 'Nenhuma visualização da Agenda para adicionar', + 'JS_EDIT_CALENDAR' => 'Editar Agenda', + + //v7 + 'JS_EVENT_UPDATED' => 'Evento Atualizado', + 'JS_NO_EVENTS_F0R_THE_DAY' => 'Nenhum Evento no dia', + 'LBL_AGENDA' => 'Agenda', + 'JS_CALENDAR_VIEW_YOU_ARE_EDITING_NOT_FOUND' => 'Visualização da Agenda não encontrada', + + 'JS_DELETE' => 'Apagar', + 'JS_EDIT' => 'Editar', + 'JS_MARK_AS_HELD' => 'Marcar como realizado', + 'JS_CREATE_FOLLOW_UP' => 'Criar follow up', + 'JS_RECURRING_EVENT' => 'Evento recorrente', + 'JS_DETAILS' => 'Mais Detalhes', + 'JS_CHECK_START_AND_END_DATE'=>'Data e Hora Final devem ser maiores ou iguais a Data e Hora Inicial', + 'JS_CHECK_START_AND_END_DATE_SHOULD_BE_GREATER'=> 'Data e Hora Final devem ser maiores que a Data e Hora Inicial', + + //Missing Fields + 'LBL_NOT_SYNCRONIZED'=>'Não sincronizado', + 'FIELD_MAPPING'=>'Mapeamento Campo', + 'JS_EVENT_MARKED_AS_HELD'=>'O Evento foi marcado como Realizado', + 'Mobile Call' => 'Ligar para Celular', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Campaigns.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Campaigns.php index 67de9944da8bd5fdc81784512d376f9d9706b265..79607f3f3818690b219021c8072f7965dcc9185e 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Campaigns.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Campaigns.php @@ -2,58 +2,70 @@ /*+********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source + * 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. + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br ************************************************************************************/ $languageStrings = array( - 'Campaigns' => 'Campanhas' , - 'SINGLE_Campaigns' => 'Campanha' , - 'LBL_ADD_RECORD' => 'Add Campaign' , - 'LBL_RECORDS_LIST' => 'Campaigns List' , - 'LBL_CAMPAIGN_INFORMATION' => 'Informação da Campanha' , - 'LBL_EXPECTATIONS_AND_ACTUALS' => 'Expectativas & Atualidades' , - 'Campaign Name' => 'Nome Campanha' , - 'Campaign No' => 'No. Campanha' , - 'Campaign Type' => 'Tipo Campanha' , - 'Product' => 'Produto' , - 'Campaign Status' => 'Status Campanha' , - 'Num Sent' => 'No. Envio' , - 'Sponsor' => 'Patrocinador' , - 'Target Audience' => 'Público Alvo' , - 'TargetSize' => 'Tamanho Alvo' , - 'Expected Response' => 'Expectativa Resposta' , - 'Expected Revenue' => 'Previsão Receita' , - 'Budget Cost' => 'Custo Orçado' , - 'Actual Cost' => 'Custo Atual' , - 'Expected Response Count' => 'Quantidade Resposta Esperada', - 'Expected Sales Count' => 'Montante Esperado Vendas' , - 'Expected ROI' => 'Expectativa ROI' , - 'Actual Response Count' => 'Quantidade Resposta Atual' , - 'Actual Sales Count' => 'Montante Vendas Atual' , - 'Actual ROI' => 'ROI Atual' , - 'Webinar' => 'Seminário via Web' , - 'Referral Program' => 'Programa Referência' , - 'Advertisement' => 'Propaganda' , - 'Banner Ads' => 'Banners' , - 'Direct Mail' => 'Mala Direta' , - 'Telemarketing' => 'Telemarketing' , - 'Others' => 'Outros' , - 'Planning' => 'Planejamento' , - 'Inactive' => 'Inativa' , - 'Complete' => 'Completa' , - 'Cancelled' => 'Cancelada' , - 'Excellent' => 'Excelente' , - 'Good' => 'Boa' , - 'Average' => 'Média' , - 'Poor' => 'Ruim' , - '--None--' => '--Nada--' , - 'Contacted - Successful' => 'Contactado - Sucesso' , - 'Contacted - Unsuccessful' => 'Contactado - Insucesso' , - 'Contacted - Never Contact Again' => 'Contactado - Nunca Contactar Novamente', + // Basic Strings + 'Campaigns'=> 'Campanhas' , + 'SINGLE_Campaigns' => 'Campanha', + 'LBL_ADD_RECORD'=> 'Adicionar Campanha', + 'LBL_RECORDS_LIST' => 'Lista Campanhas', + + // Blocks + 'LBL_CAMPAIGN_INFORMATION'=> 'Informação da Campanha', + 'LBL_EXPECTATIONS_AND_ACTUALS' => 'Previsto & Realizado', + + //Field Labels + 'Campaign Name' => 'Nome Campanha', + 'Campaign No'=> 'No. Campanha', + 'Campaign Type' => 'Tipo Campanha', + 'Product' => 'Produto', + 'Campaign Status'=> 'Status Campanha', + 'Num Sent'=> 'No. Envio', + 'Sponsor' => 'Patrocinador', + 'Target Audience'=> 'Público Alvo', + 'TargetSize' => 'Tamanho Alvo', + 'Expected Response'=> 'Expectativa Resposta', + 'Expected Revenue' => 'Previsão Receita', + 'Budget Cost'=> 'Custo Orçado', + 'Actual Cost'=> 'Custo Atual', + 'Expected Response Count'=> 'Quantidade Resposta Esperada', + 'Expected Sales Count'=> 'Montante Esperado Vendas', + 'Expected ROI'=> 'Expectativa ROI', + 'Actual Response Count'=> 'Quantidade Resposta Atual', + 'Actual Sales Count'=> 'Montante Vendas Atual', + 'Actual ROI' => 'ROI Atual', + + //Added for existing Picklist Entries + + 'Webinar'=>'Webinar', + 'Referral Program' => 'Programa Referência', + 'Advertisement' => 'Propaganda', + 'Banner Ads' => 'Banners', + 'Direct Mail'=> 'Mala Direta', + 'Telemarketing'=>'Telemarketing', + 'Others'=> 'Outros', + + 'Planning'=> 'Planejamento', + 'Inactive'=> 'Inativa', + 'Completed'=> 'ConcluÃda', + 'Cancelled'=> 'Cancelada', + + 'Excellent'=> 'Excelente', + 'Good' => 'Boa', + 'Average' => 'Média', + 'Poor' => 'Ruim', + + // status fields + '--None--'=> '--Nada--', + 'Contacted - Successful' => 'Contactado - Sucesso', + 'Contacted - Unsuccessful'=> 'Contactado - Insucesso', + 'Contacted - Never Contact Again' => 'Contactado - Nunca Contactar Novamente', ); $jsLanguageStrings = array( - 'JS_APPENDED_TO_EXISTING_LIST' => '%s da lista selecionado será anexado com a lista existente.', -); \ No newline at end of file + 'JS_APPENDED_TO_EXISTING_LIST' => '%s da lista selecionada será anexada a lista existente.', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Contacts.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Contacts.php index b433d23a2caeb6867b63129f1b37828d340e5a14..bcbe05dd999e40935e2a9b9ab2bba5dd66a241e1 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Contacts.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Contacts.php @@ -2,60 +2,67 @@ /*+********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source + * 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. + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br ************************************************************************************/ $languageStrings = array( - 'Contacts' => 'Contatos' , - 'SINGLE_Contacts' => 'Contato' , - 'LBL_ADD_RECORD' => 'Add Contact' , - 'LBL_RECORDS_LIST' => 'Contacts List' , - 'LBL_CONTACT_INFORMATION' => 'Informação do Contato' , + // Basic Strings + 'Contacts' => 'Contatos', + 'SINGLE_Contacts' => 'Contato', + 'LBL_ADD_RECORD' => 'Adicionar Contato' , + 'LBL_RECORDS_LIST' => 'Lista Contatos' , + + // Blocks + 'LBL_CONTACT_INFORMATION'=> 'Informação do Contato' , 'LBL_CUSTOMER_PORTAL_INFORMATION' => 'Informação Portal Cliente' , - 'LBL_IMAGE_INFORMATION' => 'Informação Imagem Contato:', - 'LBL_COPY_OTHER_ADDRESS' => 'Copiar Outro Endereço' , // TODO: Review - 'LBL_COPY_MAILING_ADDRESS' => 'Copiar Endereço para correspondência' , // TODO: Review - 'Office Phone' => 'Telefone Escritório' , - 'Home Phone' => 'Telefone Residencial' , - 'Title' => 'Cargo' , - 'Department' => 'Departamento' , - 'Birthdate' => 'Aniversário' , - 'Reports To' => 'Reporta-se à ' , - 'Assistant' => 'Assistente' , - 'Assistant Phone' => 'Telefone Assistente' , - 'Do Not Call' => 'Recusa Chamada' , - 'Reference' => 'Referência' , - 'Portal User' => 'Portal Usuário' , - 'Mailing Street' => 'Endereço Correspondência' , - 'Mailing City' => 'Cidade Correspondência' , - 'Mailing State' => 'Estado Correspondência' , - 'Mailing Zip' => 'CEP Correspondência' , - 'Mailing Country' => 'PaÃs Correspondência' , - 'Mailing Po Box' => 'Da Mailing Po Box' , - 'Other Street' => 'Endereço Alternativo' , - 'Other City' => 'Cidade Alternativo' , - 'Other State' => 'Estado Alternativo' , - 'Other Zip' => 'CEP Alternativo' , - 'Other Country' => 'PaÃs Alternativo' , - 'Other Po Box' => 'Other P.O. Box' , - 'Contact Image' => 'Imagem Contato' , - 'Mr.' => 'Sr.' , - 'Ms.' => 'Sra.' , - 'Mrs.' => 'Srta.' , - 'Dr.' => 'Dr.' , - 'Prof.' => 'Prof.' , - 'User List' => 'Lista Usuário' , - 'Contact Id' => 'Contato Id', - 'Support Start Date' => 'Suporte Data de InÃcio', - 'Support End Date' => 'Data de Apoio Fim', - 'LBL_TRANSACTIONS' => 'Transações', + 'LBL_IMAGE_INFORMATION'=> 'Informação Imagem Contato:', + 'LBL_COPY_OTHER_ADDRESS' => 'Copiar Endereço Alternativo', + 'LBL_COPY_MAILING_ADDRESS' => 'Copiar Endereço Correspondência', + + //Field Labels + 'Office Phone' => 'Telefone Escritório', + 'Home Phone' => 'Telefone Residencial', + 'Title'=> 'Cargo' , + 'Department' => 'Departamento', + 'Birthdate'=> 'Aniversário', + 'Reports To' => 'Reporta-se à ' , + 'Assistant'=> 'Assistente', + 'Assistant Phone'=> 'Telefone Assistente' , + 'Do Not Call'=> 'Recusa Chamada', + 'Reference'=> 'Referência' , + 'Portal User'=> 'Portal Usuário' , + 'Mailing Street' => 'Endereço Correspondência', + 'Mailing City' => 'Cidade Correspondência' , + 'Mailing State'=> 'Estado Correspondência' , + 'Mailing Zip'=> 'CEP Correspondência', + 'Mailing Country'=> 'PaÃs Correspondência', + 'Mailing Po Box' => 'Cx Postal Correspondência', + 'Other Street' => 'Endereço Alternativo' , + 'Other City' => 'Cidade Alternativo', + 'Other State'=> 'Estado Alternativo', + 'Other Zip'=> 'CEP Alternativo' , + 'Other Country'=> 'PaÃs Alternativo' , + 'Other Po Box' => 'Cx Postal Alternativo', + 'Contact Image'=> 'Imagem Contato', + 'Other Phone' => 'Telefone Alternativo', + 'Email' => 'Email', + 'Secondary Email' => 'Email Alternativo', + 'Contact Id' => 'No. Contato', + 'Support Start Date' => 'Data InÃcio Suporte', + 'Support End Date' => 'Data Término Suporte', - 'Other Phone' => 'Telefone Secundário', - 'Email' => 'E-Mail Principal', - 'Secondary Email' => 'E-Mail Secundário', + //Added for Picklist Values + 'Mr.'=> 'Sr.' , + 'Ms.'=> 'Sra.', + 'Mrs.' => 'Srta.' , + 'Dr.'=>'Dr.', + 'Prof.'=> 'Prof.' , + 'User List'=> 'Lista Usuário', + 'LBL_TRANSACTIONS' => 'Transações', ); + $jsLanguageStrings = array( -); \ No newline at end of file + ); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/CustomerPortal_Client.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/CustomerPortal_Client.php new file mode 100644 index 0000000000000000000000000000000000000000..d1e8409327a8c44ed5a67eed1425cfd8346b4fa7 --- /dev/null +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/CustomerPortal_Client.php @@ -0,0 +1,29 @@ +<?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. Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + * ***********************************************************************************/ + +$languageStrings = Array( + 'Home' => 'Principal', + 'More' => 'Mais', + 'Profile' => 'Perfil', + 'Change Password' => 'Mudar Senha', + 'Logout' => 'Desconectar', + 'Welcome to Portal' => 'Bem Vindo(a) ao Portal', + 'LBL_CREATE_TICKET' => 'Novo Chamado', + 'LBL_OPEN_TICKETS' => 'Visualizar Chamados Abertos', + 'LBL_ADD_DOCUMENT' => 'Transferir um Documento', + 'What would you like to do ?' => 'O que gostaria de fazer?', + '_start for notify' => 'chaves', + 'Your support ends on' => 'Seu Suporte acabou', + '_start for charts' => 'chaves', + 'OpenTicketsByPriority' => 'Chamados Abertos por Prioridade', + 'TicketsClosureTimeByPriority' => 'Tempo Fechamento Chamado por Prioridade', + '_start for widgets' => 'chaves', + 'Recent' => 'Recente' +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Documents.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Documents.php index f9e676b052b98e41fc74919e60e7a8068da61937..463f690080e11b9206f5bca6b599b53977a117ae 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Documents.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Documents.php @@ -1,97 +1,118 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'SINGLE_Documents' => 'Documento' , - 'Documents' => 'Documents' , // TODO: Review - 'LBL_ADD_RECORD' => 'Add Document' , - 'LBL_RECORDS_LIST' => 'Documents List' , - 'LBL_NOTE_INFORMATION' => 'Informação do Documento' , - 'LBL_FILE_INFORMATION' => 'Informação Arquivo' , - 'LBL_DESCRIPTION' => 'Descrição' , - 'Title' => 'TÃtulo' , - 'File Name' => 'Nome Arquivo' , - 'Note' => 'Notas' , - 'File Type' => 'Tipo Arquivo' , - 'File Size' => 'Tamanho' , - 'Download Type' => 'Tipo Download' , - 'Version' => 'Versão' , - 'Active' => 'Ativo' , - 'Download Count' => 'Contar Download' , - 'Folder Name' => 'Nome Pasta' , - 'Document No' => 'No. Documento' , - 'Last Modified By' => 'Last Modified By' , - 'LBL_FOLDER_HAS_DOCUMENTS' => 'Please move documents from folder before deleting', - 'LBL_DOWNLOAD_FILE' => 'Download Arquivo' , - 'LBL_CHECK_FILE_INTEGRITY' => 'Checar integridade arquivo' , - 'LBL_INTERNAL' => 'Interno' , - 'LBL_EXTERNAL' => 'Externo' , - 'LBL_MAX_UPLOAD_SIZE' => 'Maximum upload size' , - 'LBL_MOVE' => 'Mover' , - 'LBL_ADD_FOLDER' => 'Adicionar Pasta' , - 'LBL_FOLDERS_LIST' => 'Folders List' , - 'LBL_FOLDERS' => 'Folders' , - 'LBL_DOCUMENTS_MOVED_SUCCESSFULLY' => 'Documents Moved Successfully', - 'LBL_DENIED_DOCUMENTS' => 'Denied Documents' , - 'MB' => 'MB' , - 'LBL_ADD_NEW_FOLDER' => 'Adicionar Pasta' , - 'LBL_FOLDER_NAME' => 'Nome Pasta' , - 'LBL_FOLDER_DESCRIPTION' => 'Folder Description' , - 'LBL_FILE_AVAILABLE' => 'File is available for download', - 'LBL_FILE_NOT_AVAILABLE' => 'This Document is not available for Download', - 'LBL_VIEW_FILE' => 'Ver Arquivo', - 'LBL_PREVIEW_NOT_AVAILABLE' => 'Pré-visualização não disponÃvel', - 'LBL_VIEW_FILE' => 'Ver Arquivo', - 'LBL_PREVIEW_NOT_AVAILABLE' => 'Pré-visualização não disponÃvel', - 'LBL_INTERNAL_DOCUMENT_TYPE' =>'Documento interno', - 'LBL_EXTERNAL_DOCUMENT_TYPE' =>'URL externa', + // Basic Strings + 'SINGLE_Documents' => 'Documento', + 'Documents' => 'Documentos', + 'LBL_ADD_RECORD' => 'Adicionar Documento', + 'LBL_RECORDS_LIST' => 'Lista Documentos', + + // Blocks + 'LBL_NOTE_INFORMATION' => 'Informação Básica', + 'LBL_FILE_INFORMATION' => 'Detalhes Arquivo', + 'LBL_DESCRIPTION' => 'Descrição', + + //Field Labels + 'Title' => 'TÃtulo', + 'File Name' => 'Nome Arquivo', + 'Note' => 'Nota', + 'File Type' => 'Tipo Arquivo', + 'File Size' => 'Tamanho Arquivo', + 'Download Type' => 'Tipo Download', + 'Version' => 'Versão', + 'Active' => 'Ativo', + 'Download Count' => 'Quantidade Downloads', + 'Folder Name' => 'Nome Pasta', + 'Document No' => 'No. Documento', + 'Last Modified By' => 'Última Modificação por', + + //Folder + 'LBL_FOLDER_HAS_DOCUMENTS' => 'Por favor, mova os documentos da pasta antes de apagar', + + //DetailView Actions + 'LBL_DOWNLOAD_FILE' => 'Arquivo Download', + 'LBL_CHECK_FILE_INTEGRITY' => 'Verificar integridade do arquivo', + 'LBL_EMAIL_FILE_AS_ATTACHMENT' => 'Arquivo Email como anexo', + + //EditView + 'LBL_INTERNAL' => 'Interno', + 'LBL_EXTERNAL' => 'Externo', + 'LBL_MAX_UPLOAD_SIZE' => 'Tamanho máximo transferência', + + //ListView Actions + 'LBL_MOVE' => 'Mover', + 'LBL_ADD_FOLDER' => 'Adicionar Pasta', + 'LBL_FOLDERS_LIST' => 'Lista Pastas', + 'LBL_FOLDERS' => 'Pastas', + 'LBL_DOCUMENTS_MOVED_SUCCESSFULLY' => 'Documentos Movidos com Sucesso', + 'LBL_DENIED_DOCUMENTS' => 'Documentos negados', + 'MB' => 'MB', + + 'LBL_ADD_NEW_FOLDER' => 'Adicionar Nova Pasta', + 'LBL_FOLDER_NAME' => 'Nome Pasta', + 'LBL_FOLDER_DESCRIPTION' => 'Descrição Pasta', + + //Check file integrity messages + 'LBL_FILE_AVAILABLE' => 'O arquivo está disponÃvel para download', + 'LBL_FILE_NOT_AVAILABLE' => 'Este Documento não está mais disponÃvel para Download', + 'LBL_VIEW_FILE' => 'Visualizar Arquivo', + 'LBL_PREVIEW_NOT_AVAILABLE' => 'Visualização Não DiscponÃvel', + 'LBL_VIEW_FILE' => 'Visualizar Arquivo', + 'LBL_PREVIEW_NOT_AVAILABLE' => 'Visualização Não disponÃvel', + 'LBL_INTERNAL_DOCUMENT_TYPE' =>'Documento Interno', + 'LBL_EXTERNAL_DOCUMENT_TYPE' =>'URL Externa', 'LBL_WEBDOCUMENT_TYPE' =>'Documento Web', - 'LBL_DRAG_&_DROP_FILE_HERE' => 'Drag & Drop arquivo aqui', - 'LBL_WEB' => 'Teia', - 'LBL_UPLOAD_DOCUMENT_TO_VTIGER' => 'Carregar Documents To Vtiger', - 'LBL_ROOT' => 'Raiz', + 'LBL_DRAG_&_DROP_FILE_HERE' => 'Arraste e Solte Documento Aqui', + 'LBL_WEB' => 'Web', + 'LBL_UPLOAD_DOCUMENT_TO_VTIGER' => 'Transferir Documentos para Vtiger', + 'LBL_UPLOAD_TO_DRIVE' => 'Transferir para Drive', + 'LBL_SELECT_FROM_DRIVE' => 'Selecionar a partir do Drive', + 'LBL_GOOGLE_DRIVE_FOLDERS' => 'Pasta Google Drive', + 'LBL_ROOT' => 'Root', 'LBL_AUTHORIZE' => 'Autorizar', - 'LBL_DOCUMENT_SOURCE' => 'Documento de Origem', - 'LBL_FILE_URL' => 'Url do Arquivo', - - 'LBL_EMAIL_FILE_AS_ATTACHMENT' => 'Arquivo de e-mail como anexo', - 'LBL_UPLOAD_TO' => 'Upload', - 'LBL_NEW_DOCUMENT' => 'Novo Documento', - 'LBL_VTIGER' => 'Vtiger', - 'LBL_CREATE_YOUR_OWN' => 'Crie o seu próprio', - 'LBL_SHARE_DOCUMENT' => 'Compartilhar um Documento', - 'LBL_UPLOAD_TO_VTIGER' => 'Enviar o Documento para Vtiger', - 'LBL_UPLOAD' => 'Upload', - 'LBL_SELECT_FILE_FROM_COMPUTER' => 'Selecione o Arquivo a partir do meu Computador', - 'LBL_FILE_UPLOAD' => 'Upload De Arquivo', - 'LBL_LINK_EXTERNAL_DOCUMENT' => 'Link Externo Documento', - 'LBL_TO_SERVICE' => 'Para %s', - 'LBL_FROM_SERVICE' => 'De %s', - 'LBL_CREATE_NEW' => 'Criar Novos %s', - 'LBL_SELECT_A_FOLDER_TO_MOVE' => 'Por favor, selecione uma pasta para mover', + 'LBL_DOCUMENT_SOURCE' => 'Fonte Documento', + 'LBL_REVOKE_ACCESS_TO_DRIVE' => 'Revogar Acesso ao Drive', + 'LBL_FILE_URL' => 'URL do Arquivo', + 'LBL_UPLOAD_TO' => 'Transferir para', + 'LBL_NEW_DOCUMENT' => 'Novo Documento', + 'LBL_VTIGER' => 'Vtiger', + 'LBL_CREATE_YOUR_OWN' => 'Criar o seu', + 'LBL_SHARE_DOCUMENT' => 'Compartilhar Documento', + 'LBL_UPLOAD_TO_VTIGER' => 'Transferir Documento para Vtiger', + 'LBL_UPLOAD' => 'TRansferir', + 'LBL_SELECT_FILE_FROM_COMPUTER' => 'Selecionar Arquivo a partir do meu Computador', + 'LBL_FILE_UPLOAD' => 'Transferir Arquivo', + 'LBL_LINK_EXTERNAL_DOCUMENT' => 'Link Documento Externo', + 'LBL_TO_SERVICE' => 'Para %s', + 'LBL_FROM_SERVICE' => 'De %s', + 'LBL_CREATE_NEW' => 'Criar Novo %s', + 'LBL_SELECT_A_FOLDER_TO_MOVE' => 'Por favor, selecione a pasta para mover', ); + $jsLanguageStrings = array( - 'JS_NEW_FOLDER' => 'New Folder' , - 'JS_MOVE_DOCUMENTS' => 'Move Documents' , - 'JS_ARE_YOU_SURE_YOU_WANT_TO_MOVE_DOCUMENTS_TO' => 'Are you sure you want to move the file(s) to', - 'JS_FOLDER' => 'folder' , - 'JS_OPERATION_DENIED' => 'Operation Denied' , - 'JS_FOLDER_IS_NOT_EMPTY' => 'Por favor, Excluir / Mover todos os documentos na pasta atual antes de excluÃ-lo', - 'JS_SPECIAL_CHARACTERS' => 'Caracteres especiais, como', - 'JS_NOT_ALLOWED' => 'Não são permitidos', - 'JS_DELETE_AND_TRASH_FILE_IN_DRIVE' => 'Excluir arquivos e lixo na unidade', - 'JS_FAILED_TO_UPLOAD_FILE' => 'Falha ao fazer upload de arquivo', - 'JS_ARE_YOU_SURE_TO_REVOKE_ACCESS' => 'Tem certeza de que deseja revogar o acesso?', + 'JS_NEW_FOLDER' => 'Nova Pasta', + 'JS_MOVE_DOCUMENTS' => 'Mover Documentos', + //Move documents confirmation message + 'JS_ARE_YOU_SURE_YOU_WANT_TO_MOVE_DOCUMENTS_TO' => 'Tem certeza que deseja mover o(s) arquivo(s) para', + 'JS_FOLDER' => 'Pasta', + 'JS_OPERATION_DENIED' => 'Operação Negada', + 'JS_FOLDER_IS_NOT_EMPTY' => 'Por favor, Apague/Mova todos os documento da pasta atual antes de apaga-lo', + 'JS_SPECIAL_CHARACTERS' => 'Caracteres Especiais como', + 'JS_NOT_ALLOWED' => 'não são permitidos', + 'JS_DELETE_AND_TRASH_FILE_IN_DRIVE' => 'Arquivo apagado e lixo no Drive', + 'JS_FAILED_TO_UPLOAD_FILE' => 'Falha ao transferir o arquivo', + 'JS_ARE_YOU_SURE_TO_REVOKE_ACCESS' => 'Tem certeza que deseja revogar os acesso?', 'JS_ACCESS_REVOKED' => 'Acesso Revogado', - 'JS_DELETE_AND_TRASH_FILE_IN_DROPBOX' => 'Revogar Acesso à Dropbox', - 'JS_UPLOAD_SUCCESSFUL' => 'Arquivo enviado com sucesso', - 'JS_UPLOAD_FAILED' => 'Carregar arquivo falhou', + 'JS_DELETE_AND_TRASH_FILE_IN_DROPBOX' => 'Arquivo apagado e lido no Dropbox', + 'JS_UPLOAD_SUCCESSFUL' => 'Arquivo Transferido com Sucesso', + 'JS_UPLOAD_FAILED' => 'Transferência do Arquivo Falhou', 'JS_DOCUMENT_CREATED' => 'Documento criado', - 'JS_DOCUMENT_CREATION_FAILED' => 'A criação de documentos falhou', -); \ No newline at end of file + 'JS_DOCUMENT_CREATION_FAILED' => 'Criação do Documento falhou', + ); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/EmailTemplates.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/EmailTemplates.php index cab3f449b335fba712fbef84f903ddf23c394bed..f8da1032ba72749a7dbb4cfa5965770263c87dfc 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/EmailTemplates.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/EmailTemplates.php @@ -4,29 +4,29 @@ * ("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. + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br *************************************************************************************/ $languageStrings = array( - 'Email Templates' => 'Email Templates', - 'LBL_ADD_RECORD' => 'Add Email Template', - 'SINGLE_EmailTemplates' => 'Email Template', - 'LBL_EMAIL_TEMPLATES'=> 'Email Templates', - 'LBL_EMAIL_TEMPLATE' => 'Email Template', + 'Email Templates' => 'Modelos Email', + 'LBL_ADD_RECORD' => 'Adicionar Modelo Email', + 'SINGLE_EmailTemplates' => 'Modelo Email', + 'LBL_EMAIL_TEMPLATES'=> 'Modelos Emails', + 'LBL_EMAIL_TEMPLATE' => 'Modelo Email', - 'LBL_TEMPLATE_NAME' => 'Template name', - 'LBL_DESCRIPTION' => 'Description', - 'LBL_SUBJECT' => 'Subject', - 'LBL_GENERAL_FIELDS' => 'General Fields', - 'LBL_SELECT_FIELD_TYPE' => 'Selecione Módulo & Field', - 'LBL_MODULE_NAME' => 'Nome do Módulo', - 'LBL_EMAIL_TEMPLATE_DESCRIPTION'=>'Manage templates for E-Mail module', - 'LBL_NO_PERMISSIONS_TO_DELETE_SYSTEM_TEMPLATE' => 'Não há permissões para excluir Modelo de Sistema', - 'LBL_RECORD_ID' => 'ID de registro' , + 'LBL_TEMPLATE_NAME' => 'Nome Modelo', + 'LBL_DESCRIPTION' => 'Descrição', + 'LBL_SUBJECT' => 'Assunto', + 'LBL_SELECT_FIELD_TYPE' => 'Selecione Módulo e Campo', + 'LBL_MODULE_NAME' => 'Nome Módulo', + + 'LBL_EMAIL_TEMPLATE_DESCRIPTION'=>'Gerenciar modelos para módulo Email', + 'LBL_NO_PERMISSIONS_TO_DELETE_SYSTEM_TEMPLATE' => 'Você não tem mpermissão para apagar Modelos do Sistema', + 'LBL_RECORD_ID' => 'No. Registro', ); $jsLanguageStrings = array( - 'LBL_CUTOMER_LOGIN_DETAILS_TEMPLATE_DELETE_MESSAGE' => 'Você não será capaz de enviar os detalhes de login Portal do Cliente para o contato se você excluir "Cliente Acesso Detalhes" do modelo. Você deseja continuar?', - 'JS_REQUIRED_FIELD' => '* Mensagem é necessária', + 'LBL_CUTOMER_LOGIN_DETAILS_TEMPLATE_DELETE_MESSAGE' => 'Você não será capaz de enviar os detalhes de acesso ao Portal do Cliente para o Contato se apagar o modelo "Detalhes Acesso Cliente". Você deseja continuar?', + 'JS_REQUIRED_FIELD' => '* Conteúdo do Modelo de Email do Sistema é Obrigatório', ); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Emails.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Emails.php index 3afb7a6ecd04f68a8dd2cc0c9c4c0c775b996f9c..f149c53856e6c7b01dc92d8bbb9e245320ce7a89 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Emails.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Emails.php @@ -1,50 +1,52 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - ************************************************************************************/ -$languageStrings = array( - 'SINGLE_Emails' => 'Email' , // TODO: Review - 'Emails' => 'Emails' , // TODO: Review - 'LBL_SELECT_EMAIL_IDS' => 'Select Email Addresses' , - 'LBL_SUBJECT' => 'Assunto:' , - 'LBL_ATTACHMENT' => 'Anexos' , - 'LBL_BROWSE_CRM' => 'Browse CRM' , - 'LBL_SEND' => 'Enviar' , - 'LBL_SAVE_AS_DRAFT' => 'Save as Draft' , - 'LBL_GO_TO_PREVIEW' => 'Go to Preview' , // TODO: Review - 'LBL_SELECT_EMAIL_TEMPLATE' => 'Selecione Modelo Email' , - 'LBL_COMPOSE_EMAIL' => 'Novo E-Mail' , - 'LBL_TO' => 'To' , // TODO: Review - 'LBL_CC' => 'Cc :' , - 'LBL_BCC' => 'Bcc :' , - 'LBL_ADD_CC' => 'Add Cc' , - 'LBL_ADD_BCC' => 'Add Bcc' , - 'LBL_MAX_UPLOAD_SIZE' => 'O tamanho máximo de upload é', - 'LBL_EXCEEDED' => 'Exceeded' , - 'LBL_FORWARD' => 'Forward' , // TODO: Review - 'LBL_PRINT' => 'Print' , // TODO: Review - 'LBL_DESCRIPTION' => 'Description' , // TODO: Review - 'LBL_FROM' => 'From' , // TODO: Review - 'LBL_INFO' => 'Info' , // TODO: Review - 'LBL_DRAFTED_ON' => 'Drafted on' , // TODO: Review - 'LBL_SENT_ON' => 'Sent on' , // TODO: Review - 'LBL_OWNER' => 'Owner' , // TODO: Review - 'Date & Time Sent' => 'Date Sent' , // TODO: Review - 'Time Start' => 'tempo Sent' , - 'LBL_EMAIL_INFORMATION' => 'E-mail Informações', - 'LBL_EMAILTEMPLATE_WARNING' => 'São seus mesclagem-tags corrigir', - 'LBL_EMAILTEMPLATE_WARNING_CONTENT' => 'Por favor, certifique-se de que o modelo selecionado tem fundir-tags relevantes para o registro destinatário. -                                            Se você está enviando um e-mail para liderar, mas a junção-tags pertencem ao módulo de contato (ex: $contacts-lastname$), -                                            em seguida, os valores não serão mesclados.', - 'Draft' => 'Rascunho' , - 'Parent ID' => 'Registro pai', -); - -$jsLanguageStrings = array( - 'JS_WARNING' => 'aviso', -); \ No newline at end of file +<?php +/*+*********************************************************************************** + * The contents of this file are subject to the vtiger CRM Public License Version 1.0 + * ("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. Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ +$languageStrings = array( + 'SINGLE_Emails' => 'Email', + 'Emails' => 'Emails', + 'LBL_SELECT_EMAIL_IDS' => 'Selecionar Endereço Email', + 'LBL_SUBJECT' => 'Assunto', + 'LBL_ATTACHMENT' => 'Anexo', + 'LBL_BROWSE_CRM' => 'Buscar no CRM', + 'LBL_SEND' => 'Enviar', + 'LBL_SAVE_AS_DRAFT' => 'Salvar como Rascunho', + 'LBL_GO_TO_PREVIEW' => 'Ir para Visualização', + 'LBL_SELECT_EMAIL_TEMPLATE' => 'Selecionar Modelo Email', + 'LBL_COMPOSE_EMAIL' => 'Novo Email', + 'LBL_TO' => 'Para', + 'LBL_CC' => 'Cc', + 'LBL_BCC' => 'Bcc', + 'LBL_ADD_CC' => 'Adicionar Cc', + 'LBL_ADD_BCC' => 'Adicionar Bcc', + 'LBL_MAX_UPLOAD_SIZE' => 'Tamanho máximo transferência é', + 'LBL_EXCEEDED' => 'Excedido', + 'LBL_EMAILTEMPLATE_WARNING' => 'Suas tags de mesclagem estão corretas?', + 'LBL_EMAILTEMPLATE_WARNING_CONTENT' => 'Por favor, certifique-se de que o modelo selecionado foi mesclado corretamente ao registro do destinatário. + Se você estiver enviando um e-mail para Lead, mas as tags de mesclagem pertencem ao módulo de Contato (ex: $contacts-lastname$), os valores não serão mesclados.', + + //Button Names translation + 'LBL_FORWARD' => 'Encaminhar', + 'LBL_PRINT' => 'Imprimir', + 'LBL_DESCRIPTION' => 'Descrição', + 'LBL_FROM' => 'De', + 'LBL_INFO' => 'Info', + 'LBL_DRAFTED_ON' => 'Redigido em', + 'LBL_SENT_ON' => 'Enviar em', + 'LBL_OWNER' => 'Proprietário', + + 'Date & Time Sent' => 'Data Envio', + 'Time Start' => 'Hora Envio', + 'LBL_EMAIL_INFORMATION' => 'Informação Email', + 'Draft' => 'Rascunho', + 'Parent ID' => 'Registro Pai', +); + +$jsLanguageStrings = array( + 'JS_WARNING' => 'Atenção', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Events.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Events.php index ddf5d6c79423fc974100b9d2773d37f246802185..5630c18b6ff65a2f4ad72f42438e5761b1df329c 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Events.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Events.php @@ -1,78 +1,103 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ + +/* NOTE: Should be inline with Calendar language translation but few variations */ + $languageStrings = array( - 'Events' => 'Eventos' , - 'SINGLE_Events' => 'Evento' , - 'LBL_ADD_RECORD' => 'Add Event' , - 'LBL_RECORDS_LIST' => 'List View' , - 'LBL_EVENTS' => 'Eventos' , - 'LBL_TODOS' => 'Tarefa' , - 'LBL_HOLD_FOLLOWUP_ON' => 'Segure Acompanhamento On' , - 'LBL_CREATE_FOLLOWUP_EVENT' => 'Criar Follow Up Eventos' , - 'LBL_EVENT_INFORMATION' => 'Detalhes do Evento' , - 'LBL_RECURRENCE_INFORMATION' => 'Recurrence Details' , - 'LBL_RELATED_TO' => 'Related To' , // TODO: Review - 'Related To' => 'Relacionado a' , - 'Start Date & Time' => 'Data & Hora Inicial' , - 'Recurrence' => 'Repetição' , - 'Send Notification' => 'Send Notification' , - 'Location' => 'Location' , - 'Send Reminder' => 'Send Reminder' , - 'End Date & Time' => 'Data & Hora Final' , - 'End Date' => 'Data & Hora Final' , - 'Activity Type' => 'Tipo Atividade' , - 'Visibility' => 'Visibilidade' , - 'Private' => 'Particular' , - 'Public' => 'Público' , - 'Call' => 'Chamada' , - 'Meeting' => 'Reunião' , - 'Planned' => 'Planejado' , - 'Held' => 'Confirmado' , - 'Not Held' => 'Não Confirmado' , - 'LBL_DAYS' => 'Days' , - 'LBL_HOURS' => 'Hours' , - 'LBL_DAYS_TYPE' => 'Day(s)' , // TODO: Review - 'LBL_WEEKS_TYPE' => 'Week(s)' , // TODO: Review - 'LBL_MONTHS_TYPE' => 'Month(s)' , // TODO: Review - 'LBL_YEAR_TYPE' => 'Year' , // TODO: Review - 'LBL_FIRST' => 'First' , // TODO: Review - 'LBL_LAST' => 'Last' , // TODO: Review - 'LBL_SM_SUN' => 'Sun' , // TODO: Review - 'LBL_SM_MON' => 'Mon' , // TODO: Review - 'LBL_SM_TUE' => 'Tue' , // TODO: Review - 'LBL_SM_WED' => 'Wed' , // TODO: Review - 'LBL_SM_THU' => 'Thr' , // TODO: Review - 'LBL_SM_FRI' => 'Fri' , // TODO: Review - 'LBL_SM_SAT' => 'Sat' , // TODO: Review - 'LBL_DAY0' => 'Sunday' , // TODO: Review - 'LBL_DAY1' => 'Monday' , // TODO: Review - 'LBL_DAY2' => 'Tuesday' , // TODO: Review - 'LBL_DAY3' => 'Wednesday' , // TODO: Review - 'LBL_DAY4' => 'Thursday' , // TODO: Review - 'LBL_DAY5' => 'Friday' , // TODO: Review - 'LBL_DAY6' => 'Saturday' , // TODO: Review - 'Daily' => 'Day(s)' , // TODO: Review - 'Weekly' => 'Week(s)' , // TODO: Review - 'Monthly' => 'Month(s)' , // TODO: Review - 'Yearly' => 'Year' , // TODO: Review - 'LBL_REPEATEVENT' => 'Uma vez em cada' , // TODO: Review - 'LBL_UNTIL' => 'Until' , // TODO: Review - 'LBL_DAY_OF_THE_MONTH' => 'day of the month' , // TODO: Review - 'LBL_ON' => 'on' , // TODO: Review - 'LBL_CALENDAR_VIEW' => 'Calendar View' , - 'LBL_INVITE_USER_BLOCK' => 'Invite' , // TODO: Review - 'LBL_INVITE_USERS' => 'Invite Users' , // TODO: Review - 'LBL_INVITE_PEOPLE' => 'Convidar pessoas', + // Basic Strings + 'Events' => 'Eventos', + 'SINGLE_Events' => 'Evento', + 'LBL_ADD_RECORD' => 'Adicionar Evento', + 'LBL_RECORDS_LIST' => 'Lista Eventos', + 'LBL_EVENTS' => 'Eventos', + 'LBL_TODOS' => 'Tarefa', + 'LBL_HOLD_FOLLOWUP_ON' => 'Manter Follow up em', + 'LBL_CREATE_FOLLOWUP_EVENT' => 'Criar Evento Follow Up', + + // Blocks + 'LBL_EVENT_INFORMATION' => 'Detalhes Evento', + 'LBL_RECURRENCE_INFORMATION' => 'Detalhes Recorrência', + 'LBL_RELATED_TO' => 'Relacionado a', + + //Fields + 'Start Date & Time'=>'Data e Hora Inicial', + 'Recurrence' => 'Recorrência', + 'Send Notification' => 'Enviar Notificação', + 'Location'=>'Localização', + 'Send Reminder' => 'Envia Email de Lembrete antes', + 'End Date & Time' => 'Data e Hora Final', + 'End Date' => 'Data e Hora Final', + 'Activity Type'=>'Tipo Atividade', + 'Visibility' => 'Visibilidade', + 'Recurrence' => 'Repetir', + 'Related To' => 'Relacionado a', + + //Visibility picklist values + 'Private' => 'Particular', + 'Public' => 'Público', + + //Activity Type picklist values + 'Call' => 'Chamada', + 'Meeting' => 'Reunião', + + //Status picklist values + 'Planned' => 'Planejado', + 'Held' => 'Realizado', + 'Not Held' => 'Não Realizado', + + //Reminder Labels + 'LBL_DAYS' => 'Dias', + 'LBL_HOURS' => 'Horas', + + //Repeat Labels + 'LBL_DAYS_TYPE' => 'Dia(s)', + 'LBL_WEEKS_TYPE' => 'Semana(s)', + 'LBL_MONTHS_TYPE' => 'Mês(es)', + 'LBL_YEAR_TYPE' => 'Ano', + + 'LBL_FIRST' => 'Primeiro', + 'LBL_LAST' => 'Último', + 'LBL_SM_FRI' => 'Sex', + 'LBL_SM_MON' => 'Seg', + 'LBL_SM_SAT' => 'Sab', + 'LBL_SM_SUN' => 'Don', + 'LBL_SM_THU' => 'Qui', + 'LBL_SM_TUE' => 'Ter', + 'LBL_SM_WED' => 'Qua', + + 'LBL_DAY0' => 'Domingo', + 'LBL_DAY1' => 'Segunda', + 'LBL_DAY2' => 'Terça', + 'LBL_DAY3' => 'Quarta', + 'LBL_DAY4' => 'Quinta', + 'LBL_DAY5' => 'Sexta', + 'LBL_DAY6' => 'Sábado', + + 'Daily'=>'Dia(s)', + 'Weekly'=>'Semana(s)', + 'Monthly'=>'Mês(es)', + 'Yearly'=>'Ano', + + 'LBL_REPEATEVENT' => 'Uma vez', + 'LBL_UNTIL' => 'Até', + 'LBL_DAY_OF_THE_MONTH' => 'dia do mês', + 'LBL_ON' => 'em', + + 'LBL_RECORDS_LIST' => 'Lista Visualização', + 'LBL_CALENDAR_VIEW' => 'Visualizar Agenda', - 'INVITATION' => ' Convite ', - 'Busy' => 'Ocupado', + 'LBL_INVITE_USER_BLOCK' => 'Convite', + 'LBL_INVITE_USERS' => 'Convidar Usuários', + 'LBL_INVITE_PEOPLE' => 'Convidar Pessoas', + 'INVITATION'=>' Convite ', + 'Busy' => 'Ocupado', -); \ No newline at end of file +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Faq.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Faq.php index d55ed57ef0ecc5d01a8ab0bea4c6e673af5a06f6..e4885aee60b80d5331158f77fd1d50526d07815d 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Faq.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Faq.php @@ -1,26 +1,34 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'Faq' => 'FAQ' , - 'SINGLE_Faq' => 'Faq' , - 'LBL_RECORDS_LIST' => 'FAQs List' , - 'LBL_ADD_RECORD' => 'Add FAQ' , - 'LBL_FAQ_INFORMATION' => 'Informação FAQ' , - 'LBL_COMMENT_INFORMATION' => 'Dados do Comentário' , - 'Question' => 'Questão' , - 'Answer' => 'Resposta' , - 'Comments' => 'Comentários' , - 'Faq No' => 'No. Faq' , - 'General' => 'Geral' , - 'Draft' => 'Rascunho' , - 'Published' => 'Publicada' , - 'Obsolete' => 'Obsoleta' , - 'LBL_SOLUTION' => 'SOLUÇÃO' , -); \ No newline at end of file + 'Faq' => 'FAQ', + 'SINGLE_Faq' => 'FAQ', + 'LBL_RECORDS_LIST' => 'Lista FAQs', + 'LBL_ADD_RECORD' => 'Adicionar FAQ', + + //Blocks + 'LBL_FAQ_INFORMATION' => 'Informação FAQ', + 'LBL_COMMENT_INFORMATION' => 'Comentários', + + //Fields + 'Question'=>'Dúvida', + 'Answer'=>'Resposta', + 'Comments'=>'Comentários', + 'Faq No' => 'No. FAQ', + + //Added for existing Picklist Entries + 'General'=>'Geral', + 'Draft'=>'Rascunho', + 'Published'=>'Publicado', + 'Obsolete'=>'Obsoleta', + + //EditView + 'LBL_SOLUTION' => 'Solução', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Google.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Google.php index 33052ddc61049ec7b8122c2d02b4b745796fc2d3..080a3befa32d046494a857d93bb4619ba8522607 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Google.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Google.php @@ -1,86 +1,87 @@ <?php -/*+*********************************************************************************** -* The contents of this file are subject to the vtiger CRM Public License Version 1.0 -* ("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. -*************************************************************************************/ -$languageStrings = array( - 'Map' => "Mapa", - 'EXTENTIONNAME' => "Google", - 'LBL_UPDATES_CRM' => "Atualizações em CRM", - 'LBL_UPDATES_GOOGLE' => "Atualizações no Google", - 'LBL_UPDATED' => "Atualizado", - 'LBL_ADDED' => "Adicionado", - 'LBL_DELETED' => "ExcluÃdos", - 'LBL_SYNCRONIZED' => "Sincronizado", - 'LBL_NOT_SYNCRONIZED' => "Você ainda não sincronizado", - 'LBL_SYNC_BUTTON' => "Sincronizar Agora", - 'LBL_REMOVE_SYNC' => "Remover Sincronização", - 'LBL_MORE_VTIGER' => "Há mais registros a serem sincronizados em vtiger", - 'LBL_MORE_GOOGLE' => "Há mais registros a serem sincronizados no Google", - 'Contact Name' => "Nome do Contato", - 'Email' => "Email", - 'Mobile Phone' => "Celular", - 'Address' => "Endereço", - 'Event Title' => "TÃtulo Evento", - 'Start Date' => "Data de InÃcio", - 'Until Date' => "Até Data", - 'Description' => "Descrição", - 'Office Phone' => 'Telefone Escritório', - 'Work Phone' => 'Telefone comercial', - 'Home Phone' => 'Telefone Residencial', - 'SYNC_SETTINGS' => 'Contatos configurações de sincronização', - 'LBL_SELECT_GOOGLE_GROUP_TO_SYNC' => 'Selecione Grupo Google', - 'LBL_ADD_CUSTOM_FIELD_MAPPING' => 'Adicionar mapeamento personalizado', - 'LBL_EMAIL' => 'Email', - 'LBL_PHONE' => 'Telefone', - 'LBL_URL' => 'Url', - 'LBL_CUSTOM' => 'Personalizado', - 'LBL_SELECT_SYNC_DIRECTION' => 'Selecione Sincronizar Direction', - 'LBL_BI_DIRECTIONAL_SYNC' => 'Sincronizar os dois lados', - 'LBL_ONLY_SYNC_FROM_GOOGLE_TO_VTIGER' => 'Do Google para Vtiger apenas', - 'LBL_ONLY_SYNC_FROM_VTIGER_TO_GOOGLE' => 'De Vtiger a Google só', - 'Job Title' => 'TÃtulo', - 'Company' => 'Companhia', - 'Birthday' => 'Aniversário', - 'Phone' => 'Telefone', - 'URL' => 'Url', - 'phone' => 'Telefone', - 'email' => 'Email', - 'url' => 'Url', - 'home' => 'Casa', - 'work' => 'Trabalho', - 'custom' => 'Personalizado', - 'mobile' => 'Móvel', - 'main' => 'Principal', - 'work_fax' => 'Fax', - 'home_fax' => 'InÃcio Fax', - 'pager' => 'Pager', - 'profile' => 'Perfil', - 'blog' => 'Blog', - 'home-page' => 'Homepage', - 'CALENDAR_SYNC_SETTINGS' => 'Calendário configurações de sincronização', - 'LBL_SELECT_GOOGLE_CALENDAR_TO_SYNC' => 'Selecione Google Calendar', - 'LBL_SAVE_AND_START_SYNC' => 'Salve e inÃcio de sincronização', - 'LBL_PRIMARY' => 'Primário', - 'LBL_SYNC_FROM_GOOGLE_TO_VTIGER' => 'Sincronização do Google para vtiger', - 'LBL_SYNC_FROM_VTIGER_TO_GOOGLE' => 'Sincronizar a partir vtiger ao google', - 'LBL_GOOGLE_CONNECT_MSG' => 'Conectar-se a uma conta do Google para buscar', - 'LBL_SIGN_IN_WITH_GOOGLE' => 'Faça login no Google', - 'LBL_GOOGLE_ACCOUNT_DETAILS' => 'Google Detalhes da conta', - 'LBL_GOOGLE_ACCOUNT_SYNCED_WITH' => 'Conta Google sincronizados com', - 'LBL_CHANGE_USER' => 'Alterar Usuário', - 'LBL_SAVE_AND_IMPORT' => 'Salvar e Importar', - 'LBL_IMPORT_RESULTS_GOOGLE' => 'O Google Importação de resultados', +/*+*********************************************************************************** + * The contents of this file are subject to the vtiger CRM Public License Version 1.0 + * ("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. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ + $languageStrings = array( + 'Map' => 'Mapa', + 'EXTENTIONNAME' => 'Google', + 'LBL_UPDATES_CRM' => 'Atualização no CRM', + 'LBL_UPDATES_GOOGLE' => 'Atualização no Google', + 'LBL_UPDATED' => 'Atualizado', + 'LBL_ADDED' => 'Adicionado', + 'LBL_DELETED' => 'Apagado', + 'LBL_SYNCRONIZED' => 'Sincronizado', + 'LBL_NOT_SYNCRONIZED' => 'Você não sincronizou ainda', + 'LBL_SYNC_BUTTON' => 'Sincronizar Agora', + 'LBL_REMOVE_SYNC' => 'Remover Sincronização', + 'LBL_MORE_VTIGER' => 'Existem mais registos no Vtiger para serem sincronizados', + 'LBL_MORE_GOOGLE' => 'Existem mais registros no Google para serem sincronizados', + 'Contact Name'=>'Nome Contato', + 'Email'=>'Email', + 'Mobile Phone'=>'Celular', + 'Address' => 'Endereço', + 'Event Title'=>'TÃtulo Evento', + 'Start Date'=>'Data Inicial', + 'Until Date'=>'Até a Data', + 'Description'=>'Descrição', + 'Office Phone' => 'Telefone Escritório', + 'Work Phone' => 'Telefone Trabalho', + 'Home Phone' => 'Telefone Residencial', + 'SYNC_SETTINGS' => 'Configuraçoes Sincronização Contato', + 'LBL_SELECT_GOOGLE_GROUP_TO_SYNC' => 'Selecionar Grupo Google', + 'LBL_ADD_CUSTOM_FIELD_MAPPING' => 'Adicionar mapeamento customizado', + 'LBL_EMAIL' => 'Email', + 'LBL_PHONE' => 'Telefone', + 'LBL_URL' => 'URL', + 'LBL_CUSTOM' => 'Customizar', + 'LBL_SELECT_SYNC_DIRECTION' => 'Selecionar Direção da Sincronização', + 'LBL_BI_DIRECTIONAL_SYNC' => 'Sincronização Bidirecional', + 'LBL_ONLY_SYNC_FROM_GOOGLE_TO_VTIGER' => 'Somente do Google para Vtiger', + 'LBL_ONLY_SYNC_FROM_VTIGER_TO_GOOGLE' => 'Somente do Vtiger para Google', + 'Job Title' => 'Cargo', + 'Company' => 'Empresa', + 'Birthday' => 'Data Nascimento', + 'Phone' => 'Telefone', + 'URL' => 'URL', + 'phone' => 'Telefone', + 'email' => 'Email', + 'url' => 'URL', + 'home' => 'Casa', + 'work' => 'Trabalho', + 'custom' => 'Customizar', + 'mobile' => 'Celular', + 'main' => 'Principal', + 'work_fax' => 'Fax', + 'home_fax' => 'Fax residencial', + 'pager' => 'Pager', + 'profile' => 'Perfil', + 'blog' => 'Blog', + 'home-page' => 'Homepage', + 'CALENDAR_SYNC_SETTINGS' => 'Configurações Sincronização Agenda', + 'LBL_SELECT_GOOGLE_CALENDAR_TO_SYNC' => 'Selecionar Agenda Google', + 'LBL_SAVE_AND_START_SYNC' => 'Salvar e Iniciar Sincronização', + 'LBL_PRIMARY' => 'Principal', + 'LBL_SYNC_FROM_GOOGLE_TO_VTIGER' => 'Sincronizar do Google para Vtiger', + 'LBL_SYNC_FROM_VTIGER_TO_GOOGLE' => 'Sincronizar do Vtiger para Google', + 'LBL_GOOGLE_CONNECT_MSG' => 'Conectar a uma conta Google para buscar', + 'LBL_SIGN_IN_WITH_GOOGLE' => 'Acessar com Google', + 'LBL_GOOGLE_ACCOUNT_DETAILS' => 'Detalhes Conta Google', + 'LBL_GOOGLE_ACCOUNT_SYNCED_WITH' => 'Conta Google Sincronizada com', + 'LBL_CHANGE_USER' => 'Alterar Usuário', + 'LBL_SAVE_AND_IMPORT' => 'Salvar e Importar', + 'LBL_IMPORT_RESULTS_GOOGLE' => 'Resultado Importação Google', + 'LBL_REDIRECT_URL' => 'redirecionar url', + 'LBL_REDIRECT_URL_MESSAGE' => 'Copie o seguinte URL de redirecionamento e colar no seu projeto auth google como mostra a imagem', ); - -$jsLanguageStrings = array( - 'LBL_SYNC_BUTTON' => "Sincronizar Agora", - 'LBL_SYNCRONIZING' => "Sincronizando ....", - 'LBL_NOT_SYNCRONIZE' => "Você ainda não sincronizado", + $jsLanguageStrings = array( + 'LBL_SYNC_BUTTON' => 'Sincronizar Agora', + 'LBL_SYNCRONIZING' => 'Sincronizando....', + 'LBL_NOT_SYNCRONIZE' => 'Você ainda não sincronizou' ); \ No newline at end of file diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/HelpDesk.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/HelpDesk.php index 058113b35296728b5aa800a6a05e5184088afc76..3d48b62178b3c4dcb7e9e54dcc1d114d28f093e0 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/HelpDesk.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/HelpDesk.php @@ -1,94 +1,109 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * All Rights Reserved. Contributor(s): Valmir Carlos Trindade | Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'HelpDesk' => 'Tickets' , - 'SINGLE_HelpDesk' => 'Ticket' , - 'LBL_ADD_RECORD' => 'Add Ticket' , - 'LBL_RECORDS_LIST' => 'Ticket List' , - 'LBL_TICKET_INFORMATION' => 'Dados do Ticket' , - 'LBL_TICKET_RESOLUTION' => 'Dados da Solução' , - 'Ticket No' => 'No. Ticket' , - 'Severity' => 'Gravidade' , - 'Update History' => 'Histórico do Update' , - 'Hours' => 'Horas' , - 'Days' => 'Dias' , - 'Title' => 'TÃtulo' , - 'Solution' => 'Solução' , - 'From Portal' => 'Do Portal' , - 'Big Problem' => 'Problema Grande' , - 'Small Problem' => 'Problema Pequeno' , - 'Other Problem' => 'Outro Problema' , - 'Normal' => 'Normal' , - 'High' => 'Alta' , - 'Urgent' => 'Urgente' , - 'Minor' => 'Menor' , - 'Major' => 'Maior' , - 'Feature' => 'Normal' , - 'Critical' => 'CrÃtico' , - 'Open' => 'Aberto' , - 'Wait For Response' => 'Aguarda Resposta' , - 'Closed' => 'Fechado' , - 'LBL_STATUS' => 'Status' , - 'LBL_SEVERITY' => 'Gravidade' , - 'LBL_CONVERT_FAQ' => 'Convert to FAQ' , - 'LBL_RELATED_TO' => 'Relacionado à ' , - 'Related To' => 'Relacionado a' , + // Basic Strings + 'HelpDesk' => 'Chamados', + 'SINGLE_HelpDesk' => 'Chamado', + 'LBL_ADD_RECORD' => 'Adicionar Chamado', + 'LBL_RECORDS_LIST' => 'Lista Chamados', - //added to support i18n in ticket mails + // Blocks + 'LBL_TICKET_INFORMATION' => 'Informação Chamado', + 'LBL_TICKET_RESOLUTION' => 'Resolução Chamado', + + //Field Labels + 'Ticket No' => 'Número Chamado', + 'Severity' => 'Gravidade', + 'Update History' => 'Histórico Atualizações', + 'Hours' => 'Horas', + 'Days' => 'Dias', + 'Title' => 'TÃtulo', + 'Solution' => 'Solução', + 'From Portal' => 'Do Portal', + 'Related To' => 'Nome Organização', + 'Contact Name' => 'Nome Contato', + //Added for existing picklist entries + + 'Big Problem'=>'Problema Grande', + 'Small Problem'=>'Problema Pequeno', + 'Other Problem'=>'Outro Problema', + + 'Normal'=>'Normal', + 'High'=>'Alto', + 'Urgent'=>'Urgente', + + 'Minor'=>'Menor', + 'Major'=>'Maior', + 'Feature'=>'Normal', + 'Critical'=>'CrÃtico', + + 'Open'=>'Aberto', + 'Wait For Response'=>'Aguarda Resposta', + 'Closed'=>'Fechado', + 'LBL_STATUS' => 'Status', + 'LBL_SEVERITY' => 'Gravidade', + //DetailView Actions + 'LBL_CONVERT_FAQ' => 'Converte para FAQ', + 'LBL_RELATED_TO' => 'Relacionado a', + + //added to support i18n in Chamado mails + 'Ticket ID'=>'ID Chamado', 'Hi' => 'Olá', - 'Dear' => 'Prezado(a)', - 'LBL_PORTAL_BODY_MAILINFO' => 'O Ticket em referência foi', - 'LBL_DETAIL' => 'e os detalhes do mesmo são apresentados abaixo:', - 'LBL_REGARDS' => 'Cordialmente', - 'LBL_TEAM' => 'Equipe HelpDesk', - 'LBL_TICKET_DETAILS' => 'Detalhes Ticket', - 'LBL_SUBJECT' => 'Assunto : ', + 'Dear'=> 'Prezado(a)', + 'LBL_PORTAL_BODY_MAILINFO'=> 'O Chamado é', + 'LBL_DETAIL' => 'os detalhes são:', + 'LBL_REGARDS'=> 'Cordialmente', + 'LBL_TEAM'=> 'Equipe Suporte', + 'LBL_TICKET_DETAILS' => 'Detalhes Chamado', + 'LBL_SUBJECT' => 'Assunto: ', 'created' => 'criado', 'replied' => 'respondido', - 'reply' => 'Existe uma resposta para', - 'customer_portal' => ' no nosso "Portal do Cliente".', - 'link' => ' Você pode utilizar o seguinte link para visualizar a resposta:', + 'reply'=>'Existe uma resposta para', + 'customer_portal' => 'no "Portal do Cliente" do VTiger.', + 'link' => 'Você pode utilizar o seguinte link para visualizar as respostas:', 'Thanks' => 'Obrigado', - 'Support_team' => 'Equipe Suporte vtiger', - 'The comments are' => 'Os comentários são', - 'Ticket Title' => 'TÃtulo Ticket', - 'Re' => 'Re :', + 'Support_team' => 'Equipe Suporte Vtiger', + 'The comments are' => 'Os Comentários são', + 'Ticket Title' => 'Assunto Chamado', + 'Re' => 'Re:', - //this label for customerportal. - 'LBL_STATUS_CLOSED' => 'Closed',//Do not convert this label. This is used to check the status. If the status 'Closed' is changed in vtigerCRM server side then you have to change in customerportal language file also. - 'LBL_STATUS_UPDATE' => 'Status do Ticket foi atualizado como', - 'LBL_COULDNOT_CLOSED' => 'O Ticket não pode ser', - 'LBL_CUSTOMER_COMMENTS' => 'O Cliente forneceu a seguinte informação adicional para sua resposta:', - 'LBL_RESPOND' => 'Por gentileza, responda este ticket o mais rápido possÃvel.', - 'LBL_REGARDS' => 'Cordialmente', + //This label for customerportal. + 'LBL_STATUS_CLOSED' =>'Closed',//Do not convert this label. This is used to check the status. If the status 'Closed' is changed in vtigerCRM server side then you have to change in customerportal language file also. + 'LBL_STATUS_UPDATE' => 'O Status do Chamado foi atualizado como', + 'LBL_COULDNOT_CLOSED' => 'O Chamado não poderia ser', + 'LBL_CUSTOMER_COMMENTS' => 'O Cliente realizou o seguinte comentário em relação a sua resposta:', + 'LBL_RESPOND'=> 'Por favor, responda o Chamado acima o mais breve possÃvel.', 'LBL_SUPPORT_ADMIN' => 'Administrador Suporte', - 'LBL_RESPONDTO_TICKETID' => 'Responder Ticket No.', - 'LBL_CUSTOMER_PORTAL' => ' no Portal do Cliente - URGENTE', - 'LBL_LOGIN_DETAILS' => 'Estes são seus detalhes de login no Portal do Cliente :', - 'LBL_MAIL_COULDNOT_SENT' => 'A mensagem não pode ser enviada', - 'LBL_USERNAME' => 'Nome Usuário :', - 'LBL_PASSWORD' => 'Senha :', - 'LBL_SUBJECT_PORTAL_LOGIN_DETAILS' => 'Observar os detalhes de login no Portal do Cliente', - 'LBL_GIVE_MAILID' => 'Por gentileza, informe seu e-mail', - 'LBL_CHECK_MAILID' => 'Por favor, verifique seu e-mail para o Portal do Cliente', - 'LBL_LOGIN_REVOKED' => 'Seu login foi cancelado. Por favor, contacte o Administrador do Sistema.', - 'LBL_MAIL_SENT' => 'Mensagem enviada para seu e-mail com detalhes do login no Portal do Cliente.', - 'LBL_ALTBODY' => 'Este é o corpo da mensagem em texto simples para programas de e-mail que não suportam HTML', - 'HelpDesk ID' => 'ID Tickets', - 'Ticket ID' => 'No. Ticket', - 'LBL_RESPONSE_TO_TICKET_NUMBER' => 'Resposta ao bilhete número', - 'LBL_TICKET_NUMBER' => 'Número Ticket', - - 'Contact Name' => 'Nome Do Contato', - 'LBL_ADD_DOCUMENT' => 'Adicionar Documento', - 'LBL_OPEN_TICKETS' => 'Bilhetes Em Aberto', - 'LBL_CREATE_TICKET' => 'Criar Bilhete', + 'LBL_RESPONDTO_TICKETID' =>'Responder ao Chamado ID', + 'LBL_RESPONSE_TO_TICKET_NUMBER' =>'Responder ao Chamado Número', + 'LBL_TICKET_NUMBER' => 'Número Chamado', + 'LBL_CUSTOMER_PORTAL' => 'no Portal do Cliente - URGENTE', + 'LBL_LOGIN_DETAILS' => 'Seguem os detalhes para seu acesso ao Portal do Cliente:', + 'LBL_MAIL_COULDNOT_SENT' =>'A mensagem não pode ser enviada', + 'LBL_USERNAME' => 'Nome Usuário:', + 'LBL_PASSWORD' => 'Senha:', + 'LBL_SUBJECT_PORTAL_LOGIN_DETAILS' => 'Detalhes de seu acesso ao Portal do Cliente', + 'LBL_GIVE_MAILID' => 'Por favor, informe seu e-mail', + 'LBL_CHECK_MAILID' => 'Por favor, verifique seu email para o Portal do Cliente', + 'LBL_LOGIN_REVOKED' => 'Seu acesso foi revogado. Por favor, mantenha contato com seu admin.', + 'LBL_MAIL_SENT' => 'A mensagem foi enviada para seu email com os detalhes de acesso ao Portal do Clientes', + 'LBL_ALTBODY' => 'Este é o corpo em texto puro para clientes de email não-HTML', + 'HelpDesk ID' => 'ID Chamado', + //Portal shortcuts + 'LBL_ADD_DOCUMENT'=>"Adicionar Documento", + 'LBL_OPEN_TICKETS'=>"Abrir Chamado", + 'LBL_CREATE_TICKET'=>"Criar Chamado", +); -); \ No newline at end of file +$jsLanguageStrings=array( + 'LBL_ADD_DOCUMENT'=>'Adicionar Documento', + 'LBL_OPEN_TICKETS'=>'Abril Chamados', + 'LBL_CREATE_TICKET'=>'Criar Chamado' +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Home.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Home.php index 1cf15693c386050d7aba5cf5b2c1a340c09bfd0f..62edc0dde18292a9b5f20e88493a73069017547f 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Home.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Home.php @@ -1,29 +1,29 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * All Rights Reserved. Contributor(s): Valmir Carlos Trindade | Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'ALVT' => 'Principais Organizações' , - 'PLVT' => 'Principais Oportunidades' , - 'QLTQ' => 'Principais Cotações' , - 'CVLVT' => 'Métricas Chave' , - 'HLT' => 'Top Support Tickets' , - 'GRT' => 'Meus Grupos' , - 'OLTSO' => 'Principais Pedidos Vendas' , - 'ILTI' => 'Principais Faturas' , - 'HDB' => 'Página Painel' , - 'OLTPO' => 'Principais Pedidos Compras' , - 'LTFAQ' => 'Minhas FAQs Recentes' , - 'UA' => 'Eventos Programados' , - 'PA' => 'Eventos Pendentes' , - 'Home' => 'Painel de instrumentos' , - - 'LBL_SAVE_ORDER' => 'Salve Ordem', - 'LBL_ADD_NEW_DASHBOARD' => 'Adicionar novo painel de instrumentos', - 'LBL_MAX_CHARACTERS_ALLOWED_DASHBOARD' => 'São permitidos um máximo de 30 caracteres para o nome do painel.', -); \ No newline at end of file + // Home Page Components + 'ALVT' => 'Principais Organizações', + 'PLVT' => 'Principais Oportunidades', + 'QLTQ' => 'Principais Cotações', + 'CVLVT' => 'Métricas Chaves', + 'HLT' => 'Principais Chamados', + 'GRT' => 'Meus Grupos', + 'OLTSO' => 'Principais Pedidos Vendas', + 'ILTI' => 'Principais Faturas', + 'HDB' => 'Principal', + 'OLTPO' => 'Principais Pedidos Compras', + 'LTFAQ' => 'Minhas FAQs', + 'UA' => 'Atividades Agendadas', + 'PA' => 'Atividades Pedentes', + 'Home'=> 'Painel', + 'LBL_SAVE_ORDER'=>'Salvar Ordem', + 'LBL_ADD_NEW_DASHBOARD'=>'Adicionar novo Painel', + 'LBL_MAX_CHARACTERS_ALLOWED_DASHBOARD' => 'São permitidos no máximo 30 caracteres no nome do Painel.', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Import.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Import.php index 5890aa0699efc2cb08bc61e1f141525d3a38d734..eae152a2cc466589a75add059f3382bcba207773 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Import.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Import.php @@ -1,103 +1,101 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - ************************************************************************************/ -$languageStrings = array( - 'LBL_IMPORT_STEP_1' => 'Step 1' , - 'LBL_IMPORT_STEP_1_DESCRIPTION' => 'Select File' , - 'LBL_IMPORT_SUPPORTED_FILE_TYPES' => ' Supported File Type(s): .CSV, .VCF', - 'LBL_IMPORT_STEP_2' => 'Step 2' , - 'LBL_IMPORT_STEP_2_DESCRIPTION' => 'Specify Format' , - 'LBL_FILE_TYPE' => 'File Type' , - 'LBL_CHARACTER_ENCODING' => 'Character Encoding' , - 'LBL_DELIMITER' => 'Delimitador:' , - 'LBL_HAS_HEADER' => 'Tem Cabeçalho:' , - 'LBL_IMPORT_STEP_3' => 'Step 3' , - 'LBL_IMPORT_STEP_3_DESCRIPTION' => 'Duplicate Record Handling' , - 'LBL_IMPORT_STEP_3_DESCRIPTION_DETAILED' => 'Select this option to enable and set duplicate merge criteria', - 'LBL_SPECIFY_MERGE_TYPE' => 'Select how duplicate records should be handled', - 'LBL_SELECT_MERGE_FIELDS' => 'Select the matching fields to find duplicate records', - 'LBL_AVAILABLE_FIELDS' => 'Campos DisponÃveis' , - 'LBL_SELECTED_FIELDS' => ' Campos para serem combinados', - 'LBL_NEXT_BUTTON_LABEL' => 'Próximo' , - 'LBL_IMPORT_STEP_4' => 'Step 4' , - 'LBL_IMPORT_STEP_4_DESCRIPTION' => 'Map the Columns to Module Fields', - 'LBL_FILE_COLUMN_HEADER' => 'Header' , - 'LBL_ROW_1' => 'Row 1' , - 'LBL_CRM_FIELDS' => 'CRM Fields' , - 'LBL_DEFAULT_VALUE' => 'Default Value' , - 'LBL_SAVE_AS_CUSTOM_MAPPING' => 'Save as Custom Mapping ' , - 'LBL_IMPORT_BUTTON_LABEL' => 'Importar' , - 'LBL_RESULT' => 'Result' , - 'LBL_TOTAL_RECORDS_IMPORTED' => 'Records successfully imported', - 'LBL_NUMBER_OF_RECORDS_CREATED' => 'Records created' , - 'LBL_NUMBER_OF_RECORDS_UPDATED' => 'Records overwritten' , - 'LBL_NUMBER_OF_RECORDS_SKIPPED' => 'Records skipped' , - 'LBL_NUMBER_OF_RECORDS_MERGED' => 'Records merged' , - 'LBL_TOTAL_RECORDS_FAILED' => 'Records failed importing' , - 'LBL_IMPORT_MORE' => 'Importar Mais' , - 'LBL_VIEW_LAST_IMPORTED_RECORDS' => 'Last Imported Records' , - 'LBL_UNDO_LAST_IMPORT' => 'Desfazer Última Importação', - 'LBL_FINISH_BUTTON_LABEL' => 'Final' , - 'LBL_UNDO_RESULT' => 'Undo Import Result' , - 'LBL_TOTAL_RECORDS' => 'Total Number of Records' , - 'LBL_NUMBER_OF_RECORDS_DELETED' => 'Number of records deleted' , - 'LBL_OK_BUTTON_LABEL' => 'Ok' , - 'LBL_IMPORT_SCHEDULED' => 'Import Scheduled' , - 'LBL_RUNNING' => 'Executando' , - 'LBL_CANCEL_IMPORT' => 'Cancel Import' , - 'LBL_ERROR' => 'Erro:' , - 'LBL_CLEAR_DATA' => 'Clear Data' , - 'ERR_UNIMPORTED_RECORDS_EXIST' => 'Unable to import more data in this batch. Please start a new import.', - 'ERR_IMPORT_INTERRUPTED' => 'Current Import has been interrupted. Please try again later', - 'ERR_FAILED_TO_LOCK_MODULE' => 'Failed to lock the module for import. Re-try again later', - 'LBL_SELECT_SAVED_MAPPING' => 'Select Saved Mapping' , - 'LBL_IMPORT_ERROR_LARGE_FILE' => 'Import Error Large file ' , // TODO: Review - 'LBL_FILE_UPLOAD_FAILED' => 'File Upload Failed' , // TODO: Review - 'LBL_IMPORT_CHANGE_UPLOAD_SIZE' => 'Import Change Upload Size' , // TODO: Review - 'LBL_IMPORT_DIRECTORY_NOT_WRITABLE' => 'Import Directory is not writable', // TODO: Review - 'LBL_IMPORT_FILE_COPY_FAILED' => 'Import File copy failed' , // TODO: Review - 'LBL_INVALID_FILE' => 'Invalid File' , // TODO: Review - 'LBL_NO_ROWS_FOUND' => 'No rows found' , // TODO: Review - 'LBL_SCHEDULED_IMPORT_DETAILS' => 'Your import has been scheduled and will start within 15 minutes. You will receive an email after import is completed. <br> <br> - Please make sure that the Outgoing server and your email address is configured to receive email notification', // TODO: Review - 'LBL_DETAILS' => 'Details' , // TODO: Review - 'skipped' => 'Skipped Records' , // TODO: Review - 'failed' => 'Failed Records' , // TODO: Review - - 'LBL_IMPORT_LINEITEMS_CURRENCY'=> 'Moeda (Itens de linha)', - - 'LBL_SKIP_THIS_STEP' => 'Pular esta etapa', - 'LBL_UPLOAD_ICS' => 'Carregar arquivo ICS', - 'LBL_ICS_FILE' => 'ICS Arquivo', - 'LBL_IMPORT_FROM_ICS_FILE' => 'Importar do arquivo ICS', - 'LBL_SELECT_ICS_FILE' => 'Selecione o arquivo ICS', - - 'LBL_USE_SAVED_MAPS' => 'O Uso De Mapas Guardados', - 'LBL_IMPORT_MAP_FIELDS' => 'Mapa do coloumns para campos CRM', - 'LBL_UPLOAD_CSV' => 'Upload do Arquivo CSV', - 'LBL_UPLOAD_VCF' => 'Upload do Arquivo VCF', - 'LBL_DUPLICATE_HANDLING' => 'Duplicado De Manipulação', - 'LBL_FIELD_MAPPING' => 'Mapeamento Do Campo', - 'LBL_IMPORT_FROM_CSV_FILE' => 'Importação de arquivo CSV', - 'LBL_SELECT_IMPORT_FILE_FORMAT' => 'Onde você gostaria de importar ?', - 'LBL_CSV_FILE' => 'Arquivo CSV', - 'LBL_VCF_FILE' => 'Arquivo VCF', - 'LBL_GOOGLE' => 'O Google', - 'LBL_IMPORT_COMPLETED' => 'Importação ConcluÃda', - 'LBL_IMPORT_SUMMARY' => 'Importação resumo', - 'LBL_DELETION_COMPLETED' => 'Exclusão ConcluÃda', - 'LBL_TOTAL_RECORDS_SCANNED' => 'Total de registros digitalizados', - 'LBL_SKIP_BUTTON' => 'Pular', - 'LBL_DUPLICATE_RECORD_HANDLING' => 'Registro duplicado tratamento', - 'LBL_IMPORT_FROM_VCF_FILE' => 'Importação a partir de ficheiro VCF', - 'LBL_SELECT_VCF_FILE' => 'Selecione arquivo VCF', - 'LBL_DONE_BUTTON' => 'Feito', - 'LBL_DELETION_SUMMARY' => 'Excluir o resumo', - -); +<?php +/*+*********************************************************************************** + * The contents of this file are subject to the vtiger CRM Public License Version 1.0 + * ("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. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ +$languageStrings = array( + 'LBL_IMPORT_STEP_1' => 'Passo 1', + 'LBL_IMPORT_STEP_1_DESCRIPTION' => 'Selecionar Arquivo', + 'LBL_IMPORT_SUPPORTED_FILE_TYPES' => ' Tipos de Arquivos suportados: .CSV, .VCF', + 'LBL_IMPORT_STEP_2' => 'Passo 2', + 'LBL_IMPORT_STEP_2_DESCRIPTION' => 'Definir Formato', + 'LBL_FILE_TYPE' => 'Tipo Arquivo', + 'LBL_CHARACTER_ENCODING' => 'Codificação Carácter', + 'LBL_DELIMITER' => 'Delimitador', + 'LBL_HAS_HEADER' => 'Tem Cabeçalho', + 'LBL_IMPORT_STEP_3' => 'Passo 3', + 'LBL_IMPORT_STEP_3_DESCRIPTION' => 'Manipular Registros Duplicados', + 'LBL_IMPORT_STEP_3_DESCRIPTION_DETAILED' => 'Selecionar esta opção para habilitar e configurar critérios para mesclar duplicados', + 'LBL_SPECIFY_MERGE_TYPE' => 'Definir como os registros duplicados devem ser manipulados', + 'LBL_SELECT_MERGE_FIELDS' => 'Selecionar os campos correspondentes para localizar registros duplicados', + 'LBL_AVAILABLE_FIELDS' => 'Campos disponÃveis', + 'LBL_SELECTED_FIELDS' => 'Campos para serem combinados', + 'LBL_NEXT_BUTTON_LABEL' => 'Próximo', + 'LBL_IMPORT_STEP_4' => 'Passo 4', + 'LBL_IMPORT_STEP_4_DESCRIPTION' => 'Mapear as Colunas para o Campos do Módulo', + 'LBL_FILE_COLUMN_HEADER' => 'Cabeçalho', + 'LBL_ROW_1' => 'Linha 1', + 'LBL_CRM_FIELDS' => 'Campos CRM', + 'LBL_DEFAULT_VALUE' => 'Valor Padrão', + 'LBL_SAVE_AS_CUSTOM_MAPPING' => 'Salvar como Mapeamento Customizado', + 'LBL_IMPORT_BUTTON_LABEL' => 'Importar', + 'LBL_RESULT' => 'Resultado', + 'LBL_TOTAL_RECORDS_IMPORTED' => 'Registros importados com sucesso', + 'LBL_NUMBER_OF_RECORDS_CREATED' => 'Registros criados', + 'LBL_NUMBER_OF_RECORDS_UPDATED' => 'Registros sobrescritos', + 'LBL_NUMBER_OF_RECORDS_SKIPPED' => 'Registros ignorados', + 'LBL_NUMBER_OF_RECORDS_MERGED' => 'Registros mesclados', + 'LBL_TOTAL_RECORDS_FAILED' => 'Falha importação registros', + 'LBL_IMPORT_MORE' => 'Importar Mais', + 'LBL_VIEW_LAST_IMPORTED_RECORDS' => 'Últimos Registros Importados', + 'LBL_UNDO_LAST_IMPORT' => 'Desfazer Última Importação', + 'LBL_FINISH_BUTTON_LABEL' => 'Final', + 'LBL_UNDO_RESULT' => 'Undo Import Resultado', + 'LBL_TOTAL_RECORDS' => 'Número Total de Registros', + 'LBL_NUMBER_OF_RECORDS_DELETED' => 'Número de registros apagados', + 'LBL_OK_BUTTON_LABEL' => 'Ok', + 'LBL_IMPORT_SCHEDULED' => 'Importação Agendada', + 'LBL_RUNNING' => 'Executando', + 'LBL_CANCEL_IMPORT' => 'Cancelar Importação', + 'LBL_ERROR' => 'Erro', + 'LBL_CLEAR_DATA' => 'Limpar Dados', + 'ERR_UNIMPORTED_RECORDS_EXIST' => 'Não é possÃvel importar mais dados neste lote. Por favor, comece uma nova importação.', + 'ERR_IMPORT_INTERRUPTED' => 'A importação atual foi interrompida. Por favor, tente novamente mais tarde', + 'ERR_FAILED_TO_LOCK_MODULE' => 'Falha ao bloquear o módulo para importação. Tente novamente mais tarde', + 'LBL_SELECT_SAVED_MAPPING' => 'Selecionar Mapeamento Salvo', + 'LBL_IMPORT_ERROR_LARGE_FILE' => 'Erro ao Importar Arquivo Grande', + 'LBL_FILE_UPLOAD_FAILED' => 'Falha ao Transferir Arquivo', + 'LBL_IMPORT_CHANGE_UPLOAD_SIZE' => 'Alterar Tamanho Atualização Importação', + 'LBL_IMPORT_DIRECTORY_NOT_WRITABLE' => 'Diretório de Importação não tem permissão escrita', + 'LBL_IMPORT_FILE_COPY_FAILED' => 'Importação cópia Arquivo falhou', + 'LBL_INVALID_FILE' => 'Arquivo inválido', + 'LBL_NO_ROWS_FOUND' => 'Nenhuma linha encontrada', + 'LBL_SCHEDULED_IMPORT_DETAILS' => 'Sua importação está sendo agendada e iniciará dentro de 15 minutos. Você receberá um email assim que a importação estiver concluÃda. <br> <br> + Por gentileza, certifique-se de que o Servidor de Envio de Mensagens e seu endereço de email estão devidamente configurados para receber a notificação.', + 'LBL_DETAILS' => 'Detalhes', + 'skipped' => 'Registros Ignorados', + 'failed' => 'Registros Falhos', + + 'LBL_IMPORT_LINEITEMS_CURRENCY'=> 'Moeda (Para Campos de Itens da Linha)', + 'LBL_USE_SAVED_MAPS'=>'Utilizar Mapas Salvos', + 'L'=>'Mapear as colunas para os campos do CRM', + 'LBL_UPLOAD_CSV'=>'Transferir Arquivo CSV', + 'LBL_UPLOAD_VCF'=>'Transferir Arquivo VCF', + 'LBL_DUPLICATE_HANDLING'=>'Manipular Duplicados', + 'LBL_FIELD_MAPPING'=>'Mapeamento Campo', + 'LBL_IMPORT_FROM_CSV_FILE'=>'Importar a partir do arquivo CSV', + 'LBL_SELECT_IMPORT_FILE_FORMAT'=>'A partir de onde gostaria de importar?', + 'LBL_CSV_FILE'=>'Arquivo CSV', + 'LBL_VCF_FILE'=>'Arquivo VCF', + 'LBL_GOOGLE'=>'Google', + 'LBL_IMPORT_COMPLETED'=>'Importação ConcluÃda', + 'LBL_IMPORT_SUMMARY'=>'Resumo da Importação', + 'LBL_DELETION_COMPLETED'=>'Exclusão ConcluÃda', + 'LBL_TOTAL_RECORDS_SCANNED'=>'Total de registros escaneados', + 'LBL_SKIP_BUTTON'=>'Ingnorar', + 'LBL_DUPLICATE_RECORD_HANDLING' => 'Manipulação registros duplicados', + 'LBL_IMPORT_FROM_VCF_FILE' => 'Importa a partir de arquivo VCF', + 'LBL_SELECT_VCF_FILE' => 'Selecionar arquivo VCF', + 'LBL_DONE_BUTTON' => 'Pronto', + 'LBL_DELETION_SUMMARY' => 'Apagar resumo', + + 'LBL_SKIP_THIS_STEP' => 'Ignorar esta etapa', + 'LBL_ICS_FILE'=>'Arquivo ICS', + 'LBL_UPLOAD_ICS'=>'Transferir arquivos ICS', + 'LBL_IMPORT_FROM_ICS_FILE'=>'Importar a partir de arquivo ICS', + 'LBL_SELECT_ICS_FILE' => 'Selecionar arquivo ICS', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Install.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Install.php index 8c6f1410d6bd40ee702d24cd2b696b8384e9feb2..e3a8c4131a2e3b1d90a156b2eafc4edd0e08202b 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Install.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Install.php @@ -1,22 +1,22 @@ <?php - /* +*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - * Contributor(s): Valmir C. Trindade - Translate to Brazilian Portuguese - 22/08/2014 - www.ttcasolucoes.com.br + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br * *********************************************************************************** */ $languageStrings = array( 'ERR_DATABASE_CONNECTION_FAILED' => 'Não foi possÃvel conectar à Base de Dados', - 'ERR_DB_NOT_FOUND' => 'Esta Base de Dados não foi encontrada.Tente mudar as configurações da Base de Dados', + 'ERR_DB_NOT_FOUND' => 'Esta Base de Dados não foi encontrada. Tente mudar as configurações da Base de Dados', 'ERR_INVALID_MYSQL_PARAMETERS' => 'Os parâmetros especificados para a conexão com o MySQL são inválidos', 'ERR_INVALID_MYSQL_VERSION' => 'A versão do MySQL não é suportada, por favor, utilize MySQL 5.1.x ou acima', 'ERR_UNABLE_CREATE_DATABASE' => 'Não é possÃvel Criar a Base de Dados', 'LBL_ADMIN_INFORMATION'=>'Informação Usuário Admin', 'LBL_ADMIN_USER_INFORMATION' => 'Informação Usuário Admin', + 'LBL_CHOOSE_LANGUAGE' => 'Escolher o idioma padrão para esta instalação:', 'LBL_CONFIRM_CONFIGURATION_SETTINGS' => 'Confirmar as definições de Configuração', 'LBL_CREATE_NEW_DB'=>'Criar nova base de dados', 'LBL_CURRENCIES'=>'Moedas', @@ -57,14 +57,16 @@ $languageStrings = array( 'LBL_TRUE' => 'Verdadeiro', 'LBL_URL' => 'URL', 'LBL_USERNAME' => 'Nome Usuário', - 'LBL_VTIGER6_SETUP_WIZARD_DESCRIPTION' => 'Este assistente irá guia-lo através da instalação do Vtiger CRM 6', - 'LBL_WELCOME_TO_VTIGER6_SETUP_WIZARD' => 'Bem Vindo(a) ao Assitente de Configuração do Vtiger CRM 6', + 'LBL_VTIGER7_SETUP_WIZARD_DESCRIPTION' => 'Este assistente irá guiá-lo através da instalação do Vtiger CRM 7', + 'LBL_WELCOME_TO_VTIGER7_SETUP_WIZARD' => 'Bem Vindo(a) ao Assistente de Configuração do Vtiger CRM 7', 'LBL_WELCOME' => 'Bem Vindo(a)', - 'LBL_ZLIB_SUPPORT' => 'Suporte Zlib', + 'LBL_ZLIB_SUPPORT' => 'Suporte a Zlib', + 'LBL_SIMPLEXML' => 'Suporte a SimpleXML', 'MSG_DB_PARAMETERS_INVALID' => 'usuário da base de dados, senha, nome do host, tipo da base de dados ou porta inválida', 'MSG_DB_ROOT_USER_NOT_AUTHORIZED' => 'Mensagem: O Usuário Root da Base de Dados não tem permissão para Criar base de dados ou o nome da Base de Dados possui caracteres especiais. Tente mudar as configurações da Base de Dados', 'MSG_DB_USER_NOT_AUTHORIZED' => 'o usuário da base de dados não tem acesso para conectar à base de dados a partir do host', 'MSG_LIST_REASONS' => 'Isto pode ser devido à s seguintes razões', - 'LBL_MYSQLI_CONNECT_SUPPORT'=>'Suporte Mysqli', - 'LBL_OPEN_SSL'=>'Suporte Openssl', + 'LBL_MYSQLI_CONNECT_SUPPORT'=>'Suporte Mysqli', + 'LBL_OPEN_SSL'=>'Suporte Openssl', + 'LBL_CURL'=>'Suporte cURL', ); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Invoice.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Invoice.php index 0b3848a2a8551ade01f0d7aa7a443fa6889c1b03..ff3c0c3bf1e5f8b26478e2ce1640be216284e45f 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Invoice.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Invoice.php @@ -1,39 +1,53 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'Invoice' => 'Facturas' , - 'SINGLE_Invoice' => 'Factura' , - 'LBL_EXPORT_TO_PDF' => 'Exportar para PDF' , - 'LBL_SEND_MAIL_PDF' => 'Send Email with PDF' , // TODO: Review - 'LBL_ADD_RECORD' => 'Add Invoice' , - 'LBL_RECORDS_LIST' => 'Listar Fatura' , - 'LBL_INVOICE_INFORMATION' => 'Informação Fatura' , - 'Sales Order' => 'Pedido Vendas' , - 'Customer No' => 'Cod. Cliente' , - 'Invoice Date' => 'Data Fatura' , - 'Purchase Order' => 'Pedido Compra:' , - 'Sales Commission' => 'Comissão Vendas' , - 'Invoice No' => 'No. Fatura' , - 'LBL_RECEIVED' => 'Received' , // TODO: Review - 'LBL_BALANCE' => 'Balance' , // TODO: Review - 'Sent' => 'Enviada' , - 'Credit Invoice' => 'Creditar Fatura' , - 'Paid' => 'Paga' , - 'AutoCreated' => 'Auto Criado' , - 'Cancel' => 'Cancelar' , - 'LBL_NOT_A_BUNDLE' => 'Não é um Bundle', - 'LBL_SUB_PRODUCTS' => 'Subprodutos', - 'LBL_ACTION' => 'Ação', + + 'Invoice' => 'Faturas', + //DetailView Actions + 'SINGLE_Invoice' => 'Fatura', + 'LBL_EXPORT_TO_PDF' => 'Exportar para PDF', + 'LBL_SEND_MAIL_PDF' => 'Enviar Email com PDF', + + //Basic strings + 'LBL_ADD_RECORD' => 'Adicionar Fatura', + 'LBL_RECORDS_LIST' => 'Lista Fatura', + + // Blocks + 'LBL_INVOICE_INFORMATION' => 'Detalhes da Fatura', - 'LBL_THIS' => 'Este', - 'LBL_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_OR_REPLACE_THIS_ITEM' => 'é excluÃdo do sistema.por favor, remover ou substituir este item', - 'LBL_THIS_LINE_ITEM_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_THIS_LINE_ITEM' => 'Este item de linha é excluÃda do sistema,por favor, remova esta linha de itens', + //Field labels + 'Sales Order' => 'Pedido de Vendas', + 'Customer No' => 'Cód. Cliente', + 'Invoice Date' => 'Data Fatura', + 'Purchase Order' => 'Pedido de Compras', + 'Sales Commission' => 'Comissão de Vendas', + 'Invoice No' => 'No. Fatura', + 'LBL_RECEIVED' => 'Recebida', + 'LBL_BALANCE' => 'Saldo', + //Added for existing Picklist Entries + + 'Sent'=>'Enviada', + 'Credit Invoice'=>'Fatura Crédito', + 'Paid'=>'Pago', + 'AutoCreated'=>'Auto Criada', + 'Cancel' => 'Cancelala', + + //Translation for product not found + 'LBL_THIS' => 'This', + 'LBL_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_OR_REPLACE_THIS_ITEM' => 'é excluÃdo do Sistema. Por favor, remova ou substitua este item', + 'LBL_THIS_LINE_ITEM_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_THIS_LINE_ITEM' => 'Esta item foi excluÃdo do Sistema. Por favor, remova esta linha de itens', + 'LBL_NOT_A_BUNDLE' => 'Não é um Pacote', + 'LBL_SUB_PRODUCTS' => 'Sub Produtos', + 'LBL_ACTION' => 'Ação', +); -); \ No newline at end of file +$jsLanguageStrings = array( + 'JS_PLEASE_REMOVE_LINE_ITEM_THAT_IS_DELETED' => 'Por favor, remova da linha o item que foi excluÃda', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Leads.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Leads.php index 69c886d1a3d571f8dc1844b037e57b4e8d35e4be..466f9c48181e49be21746f6015f028be35981833 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Leads.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Leads.php @@ -2,58 +2,71 @@ /*+********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source + * 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. + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br ************************************************************************************/ $languageStrings = array( - 'Leads' => 'Leads' , - 'SINGLE_Leads' => 'Lead' , - 'LBL_RECORDS_LIST' => 'Leads List' , - 'LBL_ADD_RECORD' => 'Add Lead' , - 'LBL_LEAD_INFORMATION' => 'Informação Lead' , - 'Lead No' => 'Cod. Lead' , - 'Company' => 'Empresa' , - 'Designation' => 'TÃtulo' , - 'Website' => 'Website' , - 'Industry' => 'Atividade' , - 'Lead Status' => 'Status Lead' , - 'No Of Employees' => 'No. Empregados' , - '--None--' => '--Nada--' , - 'Mr.' => 'Sr.' , - 'Ms.' => 'Sra.' , - 'Mrs.' => 'Srta.' , - 'Dr.' => 'Dr' , - 'Prof.' => 'Prof.' , - 'Attempted to Contact' => 'Tentativa Contato' , - 'Cold' => 'Frio' , - 'Contact in Future' => 'Contactar no Futuro' , - 'Contacted' => 'Contactado' , - 'Hot' => 'Quente' , - 'Junk Lead' => 'Descartado' , - 'Lost Lead' => 'Perdido' , - 'Not Contacted' => 'Não Contactado' , - 'Pre Qualified' => 'Pré-Qualificado' , - 'Qualified' => 'Qualificado' , - 'Warm' => 'Morno' , - 'LBL_CONVERT_LEAD' => 'Converter Lead:' , - 'LBL_TRANSFER_RELATED_RECORD' => 'Transfer related record to' , - 'LBL_CONVERT_LEAD_ERROR' => 'You have to enable either Organization or Contact to convert the Lead', - 'LBL_LEADS_FIELD_MAPPING_INCOMPLETE' => 'Todos os campos obrigatórios não são mapeados', - 'LBL_LEADS_FIELD_MAPPING' => 'Mapeamento Campos Customizados do Lead', - 'LBL_CUSTOM_FIELD_MAPPING' => 'Mapeamento levar para conversão de dados' , - 'LBL_IMAGE_INFORMATION' => 'Imagem do perfil', - 'Lead Image' => 'Imagem de chumbo', - - - 'Phone' => 'Telefone Principal', - 'Secondary Email' => 'E-Mail Secundário', - 'Email' => 'E-Mail Principal', + // Basic Strings + 'Leads'=> 'Leads', + 'SINGLE_Leads' => 'Lead', + 'LBL_RECORDS_LIST' => 'Lista Leads', + 'LBL_ADD_RECORD' => 'Adicionar Lead', + // Blocks + 'LBL_LEAD_INFORMATION' => 'Detalhes Lead', + + //Field Labels + 'Lead No'=> 'Cod. Lead', + 'Company'=> 'Empresa', + 'Designation'=> 'TÃtulo', + 'Website'=> 'Website' , + 'Industry' => 'Atividade' , + 'Lead Status'=> 'Status Lead' , + 'No Of Employees'=> 'No. Empregados', + 'Phone' => 'Telefone', + 'Secondary Email' => 'E-mail Alternativo', + 'Email' => 'E-mail', + + //Added for Existing Picklist Entries + + '--None--' => '--Nada--', + 'Mr.'=> 'Sr.' , + 'Ms.'=> 'Sra.', + 'Mrs.' => 'Srta.' , + 'Dr.'=> 'Dr.', + 'Prof.'=> 'Prof.', + + //Lead Status Picklist values + 'Attempted to Contact' => 'Tentativa Contato' , + 'Cold' => 'Frio', + 'Contacted'=> 'Contactado', + 'Contact in Future'=> 'Contactar no Futuro' , + 'Hot'=> 'Quente', + 'Junk Lead'=> 'Descartado', + 'Lost Lead'=> 'Perdido' , + 'Not Contacted'=> 'Não Contactado' , + 'Pre Qualified'=> 'Pré Qualificado', + 'Qualified'=> 'Qualificado', + 'Warm' => 'Morno' , + + // Mass Action + 'LBL_CONVERT_LEAD' => 'Converter Lead', + + //Convert Lead + 'LBL_TRANSFER_RELATED_RECORD'=> 'Transferir registro relacionado para', + 'LBL_CONVERT_LEAD_ERROR' => 'Você tem que habilitar uma Organização ou Contato para converter o Lead', + 'LBL_LEADS_FIELD_MAPPING_INCOMPLETE' => 'O mapeamento dos campos do Lead está incompleto (Configurações > Gerenciador Módulo > Leads > Mapeamento Campo Leads)', + 'LBL_LEADS_FIELD_MAPPING' => 'Mapeamento Campos Leads', + + //Leads Custom Field Mapping + 'LBL_CUSTOM_FIELD_MAPPING'=> 'Mapeamento Dados Conversão Lead', + 'LBL_IMAGE_INFORMATION' => 'Imagem Perfil', + 'Lead Image' => 'Imagem do Lead', ); $jsLanguageStrings = array( - 'JS_SELECT_CONTACTS' => 'Select Contacts to proceed' , - 'JS_SELECT_ORGANIZATION' => 'Select Organization to proceed', - 'JS_SELECT_ORGANIZATION_OR_CONTACT_TO_CONVERT_LEAD' => 'Conversion requires selection of Contact or Organization', -); \ No newline at end of file + 'JS_SELECT_CONTACTS' => 'Selecionar Contatos para prosseguir', + 'JS_SELECT_ORGANIZATION' => 'Selecionar Organização para prosseguir', + 'JS_SELECT_ORGANIZATION_OR_CONTACT_TO_CONVERT_LEAD' => 'A conversão requer seleção do Contato ou Organização', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/MailManager.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/MailManager.php index ef63a1048a6a1b8c3318d83cc64ab47442d651a3..31f3d39fa25b5d5ec665db9c18afa761c4a33f69 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/MailManager.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/MailManager.php @@ -4,210 +4,203 @@ * ("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. + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br ************************************************************************************ */ -$languageStrings = array( - 'MailManager' => 'Mail Manager', - 'LBL_Folders' => 'Folders', - 'LBL_Newer' => 'Mais novo', - 'LBL_Older' => 'Mais velho', - 'LBL_No_Mails_Found' => 'Não mails encontrado.', - 'LBL_Go_Back' => 'De volta', - 'LBL_Reply_All' => 'Responder a todos', - 'LBL_Reply' => 'Responder', - 'LBL_Mark_As_Unread' => 'Marcar como não lida', - 'LBL_Previous' => 'anterior', - 'LBL_Next' => 'próximo', - 'LBL_RELATED_RECORDS' => 'Registros relacionados', - 'LBL_Mailbox' => 'Caixa de correio', - 'LBL_Outbox' => 'Caixa de saÃda CRM', - 'LBL_Like' => 'como', - 'LBL_Mail_Server' => 'Mail Server Nome ou IP', - 'LBL_Refresh' => 'Atualizar', - 'LBL_Cancel' => 'Cancelar', - 'LBL_Send' => 'Enviar', - 'LBL_Compose' => 'Compor', - 'LBL_Forward' => 'Para a frente', - 'LBL_Remove' => 'Remover', - 'LBL_Associate' => 'Associado', - 'LBL_Create_Contact' => 'Criar contato', - 'LBL_No_Matching_Record_Found' => 'Não há registros correspondentes encontrado.', - 'LBL_ACTIONS' => 'Ações', - 'LBL_Search' => 'Pesquisa', - 'LBL_Delete' => 'Excluir', - 'LBL_Username' => 'Nome de Usuário', - 'LBL_Your_Mailbox_Account' => 'sua conta de correio', - 'LBL_Password' => 'Senha', - 'LBL_Account_Password' => 'senha da conta', - 'LBL_Protocol' => 'Protocolo', - 'LBL_Imap2' => 'IMAP2', - 'LBL_Imap4' => 'IMAP4', - 'LBL_SSL_Options' => 'Opções SSL', - 'LBL_No_TLS' => 'Não TLS', - 'LBL_TLS' => 'TLS', - 'LBL_SSL' => 'SSL', - 'LBL_Certificate_Validations' => 'As validações de certificados', - 'LBL_Validate_Cert' => 'Validar cert', - 'LBL_Do_Not_Validate_Cert' => 'Não validar cert', - 'LBL_SELECT_ACCOUNT_TYPE' => 'Selecione Organização Tipo', - 'LBL_FROM' => 'A partir de', - 'LBL_TO' => 'a', - 'LBL_CC' => 'CC', - 'LBL_BCC' => 'BCC', - 'LBL_Date' => 'Data', - 'LBL_Attachments' => 'Anexos', - 'LBL_EMAIL_TEMPLATES_LIST' => 'Modelos de e-mail', - 'LBL_SELECT_EMAIL_TEMPLATE' => 'Selecione modelo de e-mail', - 'LBL_ATTACHMENTS' => 'Anexo:', - 'LBL_SELECT_DOCUMENTS' => 'Selecione Documentos', - 'LBL_IN' => 'em', - 'LBL_FIND' => 'Encontrar', - 'LBL_SAVE_NOW' => 'Salvar Agora', - 'LBL_Drafts' => 'Rascunhos', - 'LBL_NO_EMAILS_SELECTED' => 'Não há e-mails selecionados.', - 'LBL_SUBJECT' => 'Assunto', - 'LBL_WRITE_ACCESS_FOR' => 'O acesso de gravação para', - 'LBL_READ_ACCESS_FOR' => 'O acesso de leitura para', - 'LBL_MODULE_DENIED' => 'módulo negado!', - 'LBL_REFRESH_TIME' => 'Atualizar Tempo', - 'LBL_NONE' => 'Nenhum', - 'LBL_5_MIN' => '5 Minutos', - 'LBL_10_MIN' => '10 Minutos', - 'LBL_MOVE_TO' => 'Mover para ...', - 'LBL_MAILMANAGER_ADD_Contacts' => 'Adicionar contato', - 'LBL_MAILMANAGER_ADD_Accounts' => 'Adicionar Organização', - 'LBL_MAILMANAGER_ADD_Leads' => 'Adicionar chumbo', - 'LBL_MAILMANAGER_ADD_Calendar' => 'Adicionar Evento / fazer', - 'LBL_MAILMANAGER_ADD_HelpDesk' => 'Adicionar Ticket', - 'LBL_MAILMANAGER_ADD_Emails' => 'Conecte-mail', - 'LBL_MAILMANAGER_ADD_ModComments' => 'Adicionar comentário', - 'LBL_ADD' => 'Adicionar', - 'LBL_ALLMAILS' => 'Todos os e-mails', - 'LBL_TO_CONTACTS' => 'Para Contatos', - 'LBL_TO_ACCOUNTS' => 'Para Organizações', - 'LBL_TO_LEADS' => 'Para Leads', - 'LBL_TO_USERS' => 'Para Usuários', - 'LBL_SENT_MAILS' => 'Mails enviados', - 'LBL_Print' => 'Impressão', - 'LBL_SAVE_BUTTON_LABEL' => 'Salvar', - 'LBL_CANCEL_BUTTON_LABEL' => 'Cancelar', - 'LBL_CREATE_MAILBOX' => 'Criar caixa postal', - 'LBL_WRITE_YOUR_COMMENT_HERE' => 'Adicione seu comentário aqui ...', - 'LBL_MAILBOX_DETAILS' => 'Adicione seu comentário aqui ...', - 'LBL_DELETE_Mailbox' => 'Excluir Mailbox', - 'LBL_ACCOUNT_TYPE' => 'Tipo de Conta', - 'LBL_MODULE_DESCRIPTION' => 'Mail Manager é um cliente de e-mail integrada que permite aos usuários executar ações relacionadas CRM on-mails recebidos. Ele ajuda a criar ligações, contatos, Organizações, Trouble Tickets e tarefas dos e-mails que você recebe em sua caixa de entrada. Caso email jogo ID do remetente com um registro em vtiger CRM, você pode realizar mais ações como, email Anexando, Adicionando tarefas, Comentário e Ticket. Além disso, você pode gerenciar a compor, responder, encaminhar e-mails etc.', - 'LBL_CHOOSE_EXISTING_FOLDER' => 'Escolha uma pasta existente', - 'LBL_CHOOSE_FOLDER_DESC' => 'As cópias dos e-mails enviados para esta conta serão salvos no padrão <b>-mails enviados </ b> pasta. <br> Se você quiser mudar o padrão enviado pasta de correio, depois de criar a caixa de correio, clique em < b> Configurações </ b> Ãcone e <b> Editar </ b> na caixa de correio.', - 'LBL_CHOOSE_FOLDER' => 'As cópias dos e-mails enviados para esta conta serão salvas nesta pasta.', +$languageStrings = Array ( + 'MailManager' => 'Gestor Mensagens', + 'LBL_Folders' => 'Pastas', + 'LBL_Newer' => 'Recente', + 'LBL_Older' => 'Antigo', + 'LBL_No_Mails_Found' => 'Nenhum e-mail foi encontrado.', + 'LBL_Go_Back' => 'Retornar', + 'LBL_Reply_All' => 'Re: Todos', + 'LBL_Reply' => 'Responder', + 'LBL_Mark_As_Unread' => 'Marcar como não lida', + 'LBL_Previous' => 'anterior', + 'LBL_Next' => 'próximo', + 'LBL_RELATED_RECORDS' => 'Registros relacionados', + 'LBL_Mailbox' => 'Caixa Correio', + 'LBL_Outbox' => 'Caixa SaÃda CRM', + 'LBL_Like' => 'like', + 'LBL_Mail_Server' => 'Nome Servidor ou IP', + 'LBL_Refresh' => 'Atualizar', + 'LBL_Cancel' => 'Cancelar', + 'LBL_Send' => 'Enviar', + 'LBL_Compose' => 'Nova Mensagem', + 'LBL_Forward' => 'Encaminhar', + 'LBL_Remove' => 'Remover', + 'LBL_Associate' => 'Associado', + 'LBL_Create_Contact' => 'Criar Contato', + 'LBL_No_Matching_Record_Found' => 'Nenhum registro válido foi encontrado.', + 'LBL_ACTIONS' => 'Ações', + 'LBL_Search' => 'Pesquisar', + 'LBL_Delete' => 'Apagar', + 'LBL_Username' => 'Nome Usuário', + 'LBL_Your_Mailbox_Account' => 'sua conta de correio', + 'LBL_Password' => 'Senha', + 'LBL_Account_Password' => 'senha conta', + 'LBL_Protocol' => 'Protocolo', + 'LBL_Imap2' => 'IMAP2', + 'LBL_Imap4' => 'IMAP4', + 'LBL_SSL_Options' => 'Opções SSL', + 'LBL_No_TLS' => 'Sem TLS', + 'LBL_TLS' => 'TLS', + 'LBL_SSL' => 'SSL', + 'LBL_Certificate_Validations' => 'Validações Certificado', + 'LBL_Validate_Cert' => 'Validar Cert', + 'LBL_Do_Not_Validate_Cert' => 'Não validar Cert', + 'LBL_SELECT_ACCOUNT_TYPE' => 'Selecionar Tipo Organização', + 'LBL_FROM' => 'De', + 'LBL_TO' => 'Para', + 'LBL_CC' => 'CC', + 'LBL_BCC' => 'BCC', + 'LBL_Date' => 'Data', + 'LBL_Attachments' => 'Anexos', + 'LBL_EMAIL_TEMPLATES_LIST'=>'Modelos Email', + 'LBL_SELECT_EMAIL_TEMPLATE'=>'Selecionar Modelo Email', + 'LBL_ATTACHMENTS' =>'Anexo:', + 'LBL_SELECT_DOCUMENTS'=>'Selecionar Documentos', + 'LBL_IN' =>'en', + 'LBL_FIND'=>'Encontrar', + 'LBL_SAVE_NOW'=>'Salvar Agora', + 'LBL_Drafts'=>'Rascunhos', + 'LBL_NO_EMAILS_SELECTED' => 'Nenhum Email Selecionado.', + 'LBL_SUBJECT' => 'Assunto', + 'LBL_WRITE_ACCESS_FOR' =>'Acesso de escrita para', + 'LBL_READ_ACCESS_FOR' =>'Acesso de leitura para', + 'LBL_MODULE_DENIED' => 'módulo negado!', + 'LBL_REFRESH_TIME'=>'Hora atualização', + 'LBL_NONE' => 'Nada', + 'LBL_5_MIN' => '5 Minutos', + 'LBL_10_MIN' => '10 Minutos', + 'LBL_MOVE_TO'=>'Mover para...', + 'LBL_MAILMANAGER_ADD_Contacts' => 'Adicionar Contatos', + 'LBL_MAILMANAGER_ADD_Accounts' => 'Adicionar Organização', + 'LBL_MAILMANAGER_ADD_Leads' => 'Adicionar Lead', + 'LBL_MAILMANAGER_ADD_Calendar' => 'Adicionar Evento/Tarefa', + 'LBL_MAILMANAGER_ADD_HelpDesk' => 'Adicionar Chamado', + 'LBL_MAILMANAGER_ADD_Emails' => 'Anexar Email', + 'LBL_MAILMANAGER_ADD_ModComments' => 'Adicionar Comentário', + 'LBL_MAILMANAGER_ADD_Potentials' => 'Adicionar Oportunidade', + 'LBL_ADD' => 'Adicionar', + 'JSLBL_Body_Cannot_Be_Empty' => 'O Corpo não pode estar vazio', + 'LBL_ALLMAILS' => 'Todas as Mensagens', + 'LBL_TO_CONTACTS' => 'Para Contatos', + 'LBL_TO_ACCOUNTS' => 'Para Organizações', + 'LBL_TO_LEADS' => 'Para Leads', + 'LBL_TO_USERS' => 'Para Usuários', + 'LBL_SENT_MAILS' => 'Mensagens enviadas', + 'LBL_Print' => 'Imprimir', + 'LBL_SAVE_BUTTON_LABEL' => 'Salvar', + 'LBL_CANCEL_BUTTON_LABEL' => 'Cancelar', + 'LBL_CREATE_MAILBOX' => 'Criar Caixa Correio', + 'LBL_WRITE_YOUR_COMMENT_HERE' => 'Adicionar seu comentário aqui ...', + 'LBL_MAILBOX_DETAILS' => 'Detalhes Caixa Correio', + 'LBL_DELETE_Mailbox' => 'Apagar Caixa Correio', + 'LBL_ACCOUNT_TYPE' => 'Tipo Conta', + 'LBL_MODULE_DESCRIPTION' => "O Gestor de Mensagens é um cliente de e-mail integrado, que permite aos Usuários executar ações relacionadas com o CRM, quando uma mensagem é recebida. Através dele é possÃvel criar Leads, Contatos, Organizações, Chamados e Tarefas a partir dos e-mails recebidos em sua Caixa de Entrada. Quando o e-mail do remetente coincidir com o cadastrado no vtiger CRM, você poderá realizar outras ações, tais como: Anexar o E-mail, Adicionar uma Tarefa, Comentário e Chamado. Alem disso, você pode gerenciar a composição, respostas, encaminhamento de e-mails etc.", + 'LBL_CHOOSE_EXISTING_FOLDER' => 'Escolher uma pasta existente', + 'LBL_CHOOSE_FOLDER_DESC' => 'As cópias dos e-mails enviados por esta Conta serão salvas na pasta padrão <b>E-mails Enviados</b>.<br><br> + Se você deseja mudar a pasta padrão de e-mails enviados, após criar a caixa de correio, clique sobre Ãcone <b>Configurações</b> e <b>Editar</b> Caixa de Correio.', + 'LBL_CHOOSE_FOLDER' => 'As cópias dos e-mails enviados para esta Conta serão salvos nesta pasta.', 'LBL_SELECTED_FOLDER' => 'Pasta selecionada', - 'LBL_MAILMANAGER_ADD_Potentials' => 'Adicionar Opportunity', - - 'LBL_EDIT_MAILBOX' => 'Editar Caixa De Correio', - 'LBL_SELECT_ACCOUNT' => 'Seleccione Conta', - 'LBL_SAVE_SENT_MAILS_IN' => 'Salvar mails enviados em', - 'LBL_CONFIGURE_MAILBOX' => 'Configurar A Caixa De Correio', - 'LBL_INBOX' => 'Entrada', - 'LBL_SENT' => 'Enviado', - 'LBL_TRASH' => 'Lixo', - 'LBL_TYPE_TO_SEARCH' => 'Tipo de pesquisa...', - 'LBL_NO_MAIL_SELECTED_DESC' => 'Nenhum e-mail selecionado. Clique em email para pré-visualização.', - 'LBL_FILES' => 'arquivos', - 'LBL_CC_SMALL' => 'Cc', - 'LBL_BCC_SMALL' => 'Cco', - 'LBL_MARK_AS_READ' => 'Marcar como lido', - 'LBL_ADD_CALENDAR' => 'Adicionar Tarefa', - 'LBL_ADD_EVENTS' => 'Adicionar Eventos', - 'JSLBL_ENTER_VALID_EMAIL_ADDRESS' => 'Por favor introduza um endereço de email válido.', - 'JSLBL_MAILS_DELETED' => 'Email(s excluÃdo com êxito.', - 'JSLBL_MAILS_MARKED_UNREAD' => 'Email(s marcadas como não lidas.', - 'JSLBL_MAILS_MARKED_READ' => 'Email(s marcado como lido.', - - 'LBL_MAILMANAGER_ADD_Cases' => 'Adicionar Caixa', + 'LBL_EDIT_MAILBOX' => 'Editar Caixa Correio', + 'LBL_SELECT_ACCOUNT' => 'Selecionar Conta', + 'LBL_SAVE_SENT_MAILS_IN' => 'Salvar emails enviados em', + 'LBL_CONFIGURE_MAILBOX' => 'Configurar Caixa Correio', + 'LBL_INBOX' => 'Caixa Entrada', + 'LBL_SENT' => 'Enviado', + 'LBL_TRASH' => 'Lixo', + 'LBL_TYPE_TO_SEARCH' => 'Tipo de busca...', + 'LBL_NO_MAIL_SELECTED_DESC' => 'Nenhuma mensagem selecionado. Clicar sobre a mensagem para visualizar.', + 'LBL_FILES' => 'arquivos', + 'LBL_CC_SMALL' => 'Cc', + 'LBL_BCC_SMALL' => 'Bcc', + 'LBL_MARK_AS_READ' => 'Marcar como lida', + 'LBL_ADD_CALENDAR' => 'Adicionar Tarefa', + 'LBL_ADD_EVENTS' => 'Adiciona Evento', + 'LBL_MAILMANAGER_ADD_Cases' => 'Adicionar Caso', ); -$jsLanguageStrings = array( - 'JSLBL_Body_Cannot_Be_Empty' => 'O corpo não pode estar vazio', - 'JSLBL_Loading_Please_Wait' => 'Carregando Por favor, aguarde', - 'JSLBL_Loading' => 'Carregamento', - 'JSLBL_Settings' => 'Configurações', - 'JSLBL_Opening' => 'Abertura', - 'JSLBL_Deleting' => 'Excluindo', - 'JSLBL_Updating' => 'Atualização', - 'JSLBL_Associating' => 'Associar', - 'JSLBL_Saving_And_Verifying' => 'Saving & Verificação', - 'JSLBL_Failed_To_Open_Mail' => 'Falha ao abrir o e-mail', - 'JSLBL_Finding_Relation' => 'Encontrar relação', - 'JSLBL_Find_Relation_Now' => 'Encontre relação agora', - 'JSLBL_Searching' => 'Pesquisando', - 'JSLBL_Searching_Please_Wait' => 'Pesquisando Please Wait', - 'JSLBL_Sending' => 'Transmissão', - 'JSLBL_Replied' => 'Respondidos', - 'JSLBL_Failed_To_Send_Mail' => 'Não foi possÃvel enviar o e-mail', - 'JSLBL_Recepient_Cannot_Be_Empty' => '(To) Recepient não pode estar vazio', - 'JSLBL_Subject_Cannot_Be_Empty' => 'Assunto não pode estar vazio', - 'JSLBL_Removing' => 'Remoção', - 'JSLBL_Choose_Server_Type' => 'Escolha o tipo de servidor', - 'JSLBL_Other' => 'Outro', - 'JSLBL_Gmail' => 'Gmail', - 'JSLBL_Fastmail' => 'Fastmail', - 'JSLBL_Search_For_Email' => 'Pesquisar por email', - 'JSLBL_Nothing_Found' => 'Nada foi encontrado', - 'JSLBL_Delete_Confirm' => 'Você quer excluir os e-mails de forma permanente?', - 'JSLBL_Delete_Mails_Confirm' => 'Você quer excluir os e-mails?', - 'JSLBL_Receipents_Warning_Message' => 'Por favor seleccione recepients', - 'JSLBL_NO_MATCH' => 'Sem correspondência encontrada', - 'JSLBL_Saving' => 'Economia', - 'JSLBL_Failed_To_Save_Mail' => 'Falha ao salvar o e-mail', - 'JSLBL_ATTACHMENT_NOT_DELETED' => 'Anexo não pode ser excluÃdo', +$jsLanguageStrings = Array ( + 'MailManager' => 'Gestor Mensagens', + 'JSLBL_Loading_Please_Wait' => 'Carregando...por favor, aguarde', + 'JSLBL_Loading' => 'Carregando', + 'JSLBL_Settings' => 'Configurações', + 'JSLBL_Opening' => 'Abrindo', + 'JSLBL_Deleting' => 'Apagando', + 'JSLBL_Updating' => 'Atualizando', + 'JSLBL_Associating' => 'Associando', + 'JSLBL_Saving_And_Verifying' => 'Salvando e Verificando', + 'JSLBL_Failed_To_Open_Mail' => 'Falha ao abrir mensagem', + 'JSLBL_Finding_Relation' => 'Encontrando relação', + 'JSLBL_Find_Relation_Now' => 'Encontrar relação agora', + 'JSLBL_Searching' => 'Pesquisando', + 'JSLBL_Searching_Please_Wait'=> 'Pesquisando... por favor, aguarde', + 'JSLBL_Sending' => 'Enviando', + 'JSLBL_Replied' => 'Respondido', + 'JSLBL_Failed_To_Send_Mail' => 'Falha ao enviar a mensagem', + 'JSLBL_Recepient_Cannot_Be_Empty' => 'Destinatário (Para) não pode estar vazio', + 'JSLBL_Subject_Cannot_Be_Empty' => 'Assunto não pode estar vazio', + 'JSLBL_Removing' => 'Removendo', + 'JSLBL_Choose_Server_Type' => 'Escolha o tipo de servidor', + 'JSLBL_Other' => 'Outro', + 'JSLBL_Gmail' => 'Gmail', + 'JSLBL_Fastmail' => 'Fastmail', + 'JSLBL_Search_For_Email' => 'Pesquisar por email', + 'JSLBL_Nothing_Found' => 'Nada encontrado', + 'JSLBL_Delete_Confirm' =>'Você deseja apagar os Emails permanentemente?', + 'JSLBL_Delete_Mails_Confirm' =>'Você deseja apagar os Emails?', + 'JSLBL_Receipents_Warning_Message'=>'Por favor, selecione destinatários', + 'JSLBL_NO_MATCH' => 'Nada encontrado', + 'JSLBL_Saving' => 'Salvando', + 'JSLBL_Failed_To_Save_Mail' => 'Falha ao salvar a mensagem', + 'JSLBL_ATTACHMENT_NOT_DELETED' => 'O anexo não pode ser apagado', 'JSLBL_UPLOAD_CANCEL' => 'Cancelar', - 'JSLBL_UPLOAD_DROPFILES' => 'Solte os arquivos aqui para fazer o upload', - 'JSLBL_UPLOAD_FILE' => 'Carregar', - 'JSLBL_UPLOAD_DELETE' => '[X]', - 'JSLBL_UPLOAD_FAILED' => 'Fracassado', - 'JSLBL_FILEUPLOAD_LIMIT_EXCEEDED' => 'Upload de arquivo limite excedido!', - 'JSLBL_MAIL_SENT' => 'E-mails enviados', - 'JSLBL_EMAIL_FORMAT_INCORRECT' => 'Por favor, forneça o endereço de e-mail correcto', - 'JSLBL_Saving' => 'Economia', - 'JSLBL_SaveWith_EmptySubject' => 'Economize com assunto vazio?', - 'JSLBL_Delete' => 'Excluir', - 'JSLBL_Drafts' => 'Rascunhos', - 'JSLBL_PASSWORD_CANNOT_BE_EMPTY' => 'A senha não pode estar vazio', - 'JSLBL_SERVERNAME_CANNOT_BE_EMPTY' => 'Nome do servidor não pode ser vazio', - 'JSLBL_USERNAME_CANNOT_BE_EMPTY' => 'Nome de Usuário não pode estar vazio', - 'JSLBL_ACCOUNTNAME_CANNOT_EMPTY' => 'Nome da organização não pode estar vazio', - 'JSLBL_FROM' => 'De:', - 'JSLBL_DATE' => 'Data:', - 'JSLBL_SUBJECT' => 'Assunto:', - 'JSLBL_TO' => 'Para:', - 'JSLBL_CC' => 'Cc:', - 'JSLBL_FORWARD_MESSAGE_TEXT' => '---------- Mensagem encaminhada ----------', - 'JSLBL_PLEASE_SELECT_ATLEAST_ONE_MAIL' => 'Selecione pelo menos um correio', - 'JSLBL_PLEASE_SELECT_ATLEAST_ONE_RECORD' => 'Selecione pelo menos um registro', - 'JSLBL_MAIL_MOVED' => 'Mail (s) movida', - 'JSLBL_MOVING' => 'Correio Mover (s)', - 'JSLBL_LOADING_FOLDERS' => 'Carregando pastas ..', - 'JSLBL_ADD_COMMENT' => 'Adicionar comentário', - 'JSLBL_Yahoo' => 'Yahoo', - 'JSLBL_CANNOT_ADD_EMPTY_COMMENT' => 'Comentário não pode estar vazio', - 'JSLBL_NO_EMAILS_SELECTED' => 'Não há e-mails selecionados.', - 'JSLBL_ENTER_SOME_VALUE' => 'Digite uma string para busca', - 'JSLBL_DRAFT_MAIL_SAVED' => 'Correio é salvo sob Rascunhos', - 'JS_FUTURE_EVENT_CANNOT_BE_HELD' => 'Não pode ser detida para futuro', - 'LBL_DELETE_CONFIRMATION' => 'Tem certeza de que deseja excluir o e-mail (s) de forma permanente?', - 'JS_DELETE_MAILBOX_SETTINGS_CONFIRMATION' => 'Tem certeza de que deseja excluir?', - 'JSLBL_NO_MAIL_SELECTED_DESC' => 'Nenhum e-mail selecionado. Clique no correio para visualização.', - 'JSLBL_FAILED_ADDING_COMMENT' => 'Falha ao adicionar comentário', - - 'MailManager' => 'Mail Manager', - 'JSLBL_ENTER_VALID_EMAIL_ADDRESS' => 'Por favor introduza um endereço de email válido.', - 'JSLBL_MAILS_DELETED' => 'Email(s excluÃdo com êxito.', - 'JSLBL_MAILS_MARKED_UNREAD' => 'Email(s marcadas como não lidas.', - 'JSLBL_MAILS_MARKED_READ' => 'Email(s marcado como lido.', - + 'JSLBL_UPLOAD_DROPFILES'=>'Soltar arquivos aqui para transferir', + 'JSLBL_UPLOAD_FILE'=>'Transferir', + 'JSLBL_UPLOAD_DELETE'=>'[x]', + 'JSLBL_UPLOAD_FAILED'=>'Falhou', + 'JSLBL_FILEUPLOAD_LIMIT_EXCEEDED'=>'O limite de Arquivo para Transferência excedeu!!', + 'JSLBL_MAIL_SENT'=>'Mensagem Enviada', + 'JSLBL_EMAIL_FORMAT_INCORRECT'=>'Por favor, forneça um endereço de email adequado', + 'JSLBL_Saving'=>'Salvando', + 'JSLBL_SaveWith_EmptySubject'=>'Salvar com Assunto em branco?', + 'JSLBL_Delete' => 'Apagar', + 'JSLBL_Drafts'=>'Rascunhos', + 'JSLBL_PASSWORD_CANNOT_BE_EMPTY'=>'A Senha não pode estar vazia', + 'JSLBL_SERVERNAME_CANNOT_BE_EMPTY'=>'O nome do Servidor não pode estar vazio', + 'JSLBL_USERNAME_CANNOT_BE_EMPTY'=>'O nome de Usuário não pode estar vazio', + 'JSLBL_ACCOUNTNAME_CANNOT_EMPTY'=>'O nome da Organização não pode estar vazio', + 'JSLBL_FROM'=>'De:', + 'JSLBL_DATE'=>'Data: ', + 'JSLBL_SUBJECT'=>'Assunto: ', + 'JSLBL_TO'=>'Para: ', + 'JSLBL_CC'=>'Cc: ', + 'JSLBL_FORWARD_MESSAGE_TEXT'=>'---------- Mensagem Encaminhada ----------', + 'JSLBL_PLEASE_SELECT_ATLEAST_ONE_MAIL'=>'Por favor, selecione ao menos uma mensagem', + 'JSLBL_PLEASE_SELECT_ATLEAST_ONE_RECORD'=>'Por favor, selecione ao menos um registro', + 'JSLBL_MAIL_MOVED'=>'Mensagem(ens) movida(s)', + 'JSLBL_MOVING'=>'Movendo Mensagem(ens)', + 'JSLBL_LOADING_FOLDERS' => 'Carregando Pastas..', + 'JSLBL_ADD_COMMENT'=>'Adicionar Comentários', + 'JSLBL_Yahoo'=>'Yahoo', + 'JSLBL_CANNOT_ADD_EMPTY_COMMENT' => 'O Comentário não pode estar vazio', + 'JSLBL_NO_EMAILS_SELECTED' => 'Nenhum Email foi Selecionado.', + 'JSLBL_ENTER_SOME_VALUE' => 'Digite alguma palavra para pesquisar', + 'JSLBL_DRAFT_MAIL_SAVED'=>'A mensagem foi salva em Rascunhos', + 'JS_FUTURE_EVENT_CANNOT_BE_HELD' => 'Não pode ser mantido para o Futuro', + 'JSLBL_ENTER_VALID_EMAIL_ADDRESS' => 'Por favor, digite um endereço de email válido.', + 'LBL_DELETE_CONFIRMATION' => 'Você tem certeza que deseja apagar o(s) email(s) permanentemente?', + 'JS_DELETE_MAILBOX_SETTINGS_CONFIRMATION' => 'Você tem certeza que deseja Apagar?', + 'JSLBL_NO_MAIL_SELECTED_DESC' => 'Nenhuma mensagem selecionada. Clique sobre a mensagem para visualizar.', + 'JSLBL_FAILED_ADDING_COMMENT' => 'Falha ao adicionar Comentário', + 'JSLBL_MAILS_DELETED' => 'Mensagem(ens) apagada(s) com sucesso.', + 'JSLBL_MAILS_MARKED_UNREAD' => 'Mensagem(ens) marcada(s) como não lida(s).', + 'JSLBL_MAILS_MARKED_READ' => 'Mensagem(ens) marcada(s) como lida(s).', ); //Special Handling: Mix of language strings are used. -$languageStrings = array_merge($languageStrings, $jsLanguageStrings); \ No newline at end of file +$languageStrings = array_merge($languageStrings, $jsLanguageStrings); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Migration.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Migration.php index 9d3c7a9516fc2933be57a4418079116731c08ba9..3c8860748281bb7660203de67c84aa7549ea0d5c 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Migration.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Migration.php @@ -4,23 +4,23 @@ * ("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. + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br *************************************************************************************/ $languageStrings = array( - 'LBL_VTIGER_MIGRATION' => 'Bem-vindo ao Migração Vtiger', + 'LBL_VTIGER_MIGRATION' => 'Bem Vindo(a) a Migração do Vtiger', 'LBL_MIGRATION_COMPLETED' => 'Migração ConcluÃda', - 'LBL_MIGRATION_WIZARD' => 'Assistente de Migração', - 'LBL_PRIDE_BEING_ASSOCIATED' => 'Temos orgulho em ser associado com você.', - 'LBL_TALK_TO_US_AT_FORUMS' => 'Tem alguma dúvida? Procure ajuda em Vtiger <a href="http://forums.vtiger.com" target="_blank"> Discussões </a><br>', - 'LBL_DISCUSS_WITH_US_AT_BLOGS' => 'Para saber mais sobre Vtiger nos seguir nosso <a href="http://blogs.vtiger.com" target="_blank">Blog</a>', - 'LBL_CRM_DOCUMENTATION' => 'Vtiger6 Ajuda - <a href="http://wiki.vtiger.com/vtiger6" target="_blank">Documentaion</a> , <a href="http://www.youtube.com/vtiger" target="_blank">VÃdeos</a> <BR>', + 'LBL_MIGRATION_WIZARD' => 'Migração Assistida', + 'LBL_PRIDE_BEING_ASSOCIATED' => 'Estamos orgulhosos de termos você conosco.', + 'LBL_TALK_TO_US_AT_FORUMS' => 'Tem alguma dúvida? Encontre ajuda sobre o Vtiger em <a href="http://forums.vtiger.com" target="_blank"> Discussões </a><br>', + 'LBL_DISCUSS_WITH_US_AT_BLOGS' => 'Para saber mais sobre Vtiger siga-nos <a href="http://blogs.vtiger.com" target="_blank">Blog</a>', + 'LBL_CRM_DOCUMENTATION' => 'Ajuda Vtiger7 - <a href="http://wiki.vtiger.com/vtiger7" target="_blank">Documentação</a> , <a href="http://www.youtube.com/vtiger" target="_blank">VÃdeos</a> <BR>', 'LBL_THANKS' => 'Obrigado por utilizar <b>vtiger CRM</b>', - 'LBL_WE_AIM_TO_BE_BEST' => 'Nosso objetivo é ser - simplesmente o melhor', - 'LBL_SPACE_FOR_YOU' => 'Venha até aqui, não há espaço para você também!', - 'LBL_MIGRATION_COMPLETED_SUCCESSFULLY' => 'Sua migração vtiger6 concluÃda com êxito.', - 'LBL_RELEASE_NOTES' => 'Para saber o que é novo nesta versão, por favor leia <a href="#" target="_blank">Notas de Lançamento</a> <br>', - 'LBL_WAIT' => 'Por favor aguarde ...', - 'LBL_INPROGRESS' => 'Migração em andamento', - 'LBL_DATABASE_CHANGE_LOG' => 'Migração: Banco de Dados Alterações Log', -); \ No newline at end of file + 'LBL_WE_AIM_TO_BE_BEST' => 'Pretendemos ser simplesmente o melhor', + 'LBL_SPACE_FOR_YOU' => 'Venha conosco, há espaço para você também!', + 'LBL_MIGRATION_COMPLETED_SUCCESSFULLY' => 'A migração do seu vtiger7 foi concluÃda com sucesso..', + 'LBL_RELEASE_NOTES' => 'Para saber quais as novidades desta versão, por favor, leia <a href="#" target="_blank">Notas do Release</a> <br>', + 'LBL_WAIT' => 'Por favor, aguarde ...', + 'LBL_INPROGRESS' => 'Migração em Andamento', + 'LBL_DATABASE_CHANGE_LOG' => 'Migração: Log das Mudanças na Base de Dados', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ModComments.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ModComments.php index fc5889dc3eefdb084990bbf7a6a8c7c04441e041..16589157c366ca5eefc216067d89c6b9d0caf0eb 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ModComments.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ModComments.php @@ -1,21 +1,30 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source + * 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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'SINGLE_ModComments' => 'Comentário' , - 'LBL_RECORDS_LIST' => 'Comments List' , - 'LBL_MODCOMMENTS_INFORMATION' => 'Informação Comentários' , - 'LBL_OTHER_INFORMATION' => 'Outras Informações' , - 'LBL_ADDING_COMMENT' => 'Adding Comment' , - 'LBL_WRITE_YOUR_COMMENT_HERE' => 'Enter comments here' , - 'Comment' => 'Comentário' , - 'Creator' => 'Criador' , - 'Related To Comments' => 'Comentário Pai' , - 'LBL_COMMENTED_AT' => 'Comentou em' , -); \ No newline at end of file + // Basic Strings + 'SINGLE_ModComments' => 'Comentário', + 'LBL_RECORDS_LIST' => 'Lista Comentários', + + // Blocks + 'LBL_MODCOMMENTS_INFORMATION' => 'Comentários', + 'LBL_OTHER_INFORMATION' => 'Outras Informações', + + 'LBL_ADDING_COMMENT' => 'Adicionando Comentário', + 'LBL_WRITE_YOUR_COMMENT_HERE' => 'Digite comentário aqui', + + //Field Labels + 'Comment' => 'Comentário', + 'Creator' => 'Criador', + 'Related To Comments' => 'Relaciona a', + + //other + 'LBL_COMMENTED_AT' => 'Comentado em' + +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ModTracker.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ModTracker.php index a0a747ba032976fde0ba8652213160f35a67906e..b2945d572447ad5202fd33b1311cde8d2179bde1 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ModTracker.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ModTracker.php @@ -5,7 +5,7 @@ * 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. - * Contributor(s): Valmir C. Trindade - Translate to Brazilian Portuguese - 14/07/2013 - www.ttcasolucoes.com.br + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br *************************************************************************************/ $languageStrings = array( diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ModuleManager.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ModuleManager.php new file mode 100644 index 0000000000000000000000000000000000000000..257a76331d2eb18ee0e814bb15af8ab6856b326e --- /dev/null +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ModuleManager.php @@ -0,0 +1,72 @@ +<?php +/*+*********************************************************************************** + * The contents of this file are subject to the vtiger CRM Public License Version 1.0 + * ("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. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ +$languageStrings = array( + 'ModuleManager' => 'Gerenciador de Módulos', + 'LBL_IMPORT_MODULE' => 'Importar Módulo', + 'LBL_VTIGER_EXTENSION_STORE' => 'Loja Extensões Vtiger', + 'LBL_PUBLISHER' => 'Editor', + 'LBL_LICENSE' => 'Licença', + 'LBL_PUBLISHED_ON' => 'Publicado em', + 'LBL_INSTALL' => 'Instalar', + 'LBL_UPGRADE' => 'Atualizar', + 'LBL_VERSION' => 'Versão', + 'LBL_DECLINE' => 'Declinar', + 'LBL_ACCEPT_AND_INSTALL' => 'Aceitar e Instalar', + 'LBL_ALREADY_EXISTS' => 'Já existe', + 'LBL_OK' => 'OK', + 'LBL_EXTENSION_NOT_COMPATABLE' => 'A Extensão não compatÃvel com o Vtiger CRM', + 'LBL_INVALID_FILE' => 'Arquivo inválido', + 'LBL_NO_LICENSE_PROVIDED' => 'Nenhuma Licença foi Fornecida', + 'LBL_INSTALLATION' => 'Instalação', + 'LBL_FAILED' => 'Falha', + 'LBL_SUCCESSFULL' => 'Sucesso', + 'LBL_INSTALLATION_LOG' => 'Log da Instalação', + //Install From file labels + 'LBL_VERIFY_IMPORT_DETAILS' => 'Verificar Detalhes da Importação', + 'LBL_MODULE_NAME' => 'Nome Módulo', + 'LBL_REQ_VTIGER_VERSION' => 'Versão Vtiger', + 'LBL_LICENSE_ACCEPT_AGREEMENT' => 'Eu aceito os termos da Licença.', + 'LBL_EXISTS'=>'Existe', + 'LBL_PROCEED_WITH_IMPORT' => 'Você deseja executar com a importação?', + 'LBL_VERSION_NOT_SUPPORTED' => 'A versão do Módulo não compatÃvel com a versão do Vtiger', + 'LBL_FINISH' => 'Final', + 'LBL_IMPORT_ZIP' => 'Instalar a partir do Arquivo', + 'LBL_NOT_FOUND' => "Desculpe. Não encontramos nenhuma Extensão/Módulo para Versão Atual", + 'LBL_INVALID_IMPORT_TRY_AGAIN' => ' fornecido para importar o módulo! Tente Novamente.', + 'LBL_IMPORTED_MODULE' => ' o Módulo foi importado com sucesso.', + 'LBL__IMPORTING_MODULE' => 'Importando Módulo', + 'LBL_EXTENSION_STORE' => 'Loja de Extensões', + 'LBL_ACCEPT_WITH_THE_DISCLAIMER' => 'Estou ciente e gostaria de continuar', + 'LBL_INSTALL_FROM_ZIP' => 'Instalar a partir do Zip', + 'LBL_DELETE_EXIST_DIRECTORY' => 'Por favor, apague o diretório já existente do módulo para prosseguir com a importação do módulo', + + 'LBL_UPDATE_MODULE_FROM_FILE' => 'Atualizar o Módulo a partir do Arquivo', + 'LBL_UPDATED_MODULE' => ' o Módulo foi atualizado com sucesso.', + 'LBL__UPDATING_MODULE' => 'Atualizando Módulo', + 'LBL_PHP_EXTENSION_LOADER_IS_NOT_AVAIABLE' => 'Por favor, instale o carregador de extensão', + 'LBL_IMPORT_MODULE_FROM_ZIP' => 'Importar Módulo a partir do Zip', + 'LBL_UPDATE_NOW' => 'Atualizar Agora', + 'LBL_IMPORT_NOW' => 'Importar Agora', + 'LBL_DISCLAIMER_FOR_IMPORT_FROM_ZIP' => '<b>Aviso - Arquivos customizados podem colocar seu CRM em risco</b> <br> + Esta funcionalidade foi disponibilizada para que os Desenvolvedores testem seus novos módulos. + Se você está instalando a partir de um arquivo fornecido por terceiros, por favor, prossiga somente se confiar no fornecedor. Módulos customizados podem incluir vulnerabilidades de segurança e sobrescrever arquivos do Sistema colocando em risco seu CRM. O módulo que você está prestes a instalar não foi revisto pela equipe do Vtiger.', +); +$jsLanguageStrings = array( + 'JS_ON' => 'em', + 'JS_PLEASE_INSTALL_EXTENSION_LOADER_TO_INSTALL_THIS_EXTENSION_FROM_BELOW_LINK' => 'Por favor, para instalar esta extensão instale o carregador de extensão a partir do link abaixo', + 'JS_EXTENSION_STORE_IS_NOT_SUPPOTED_WOULD_YOU_LIKE_TO_INSTALL' => 'A extensão não é suportada, gostaria de instalar?', + 'JS_PHP_EXTENSION_LOADER_NOT_INSTALLED' => 'O carregador de extensão PHP não foi instalado', + 'JS_CLICK_HERE' => 'Clique aqui', + 'JS_FOR_INSTALLATION' => 'para instalação', + 'JS_IMPORT_SUCCESSFULL' => 'Importação realizada com Sucesso', + 'JS_IMPORTED_MODULE' => ' o Módulo foi importado com sucesso.', + 'JS_UPDATE_SUCCESSFULL' => 'Atualização realizada com Sucesso', + 'JS_UPDATED_MODULE' => 'o Módulo foi atualizado com sucesso', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/PBXManager.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/PBXManager.php index 20177e26efb0bcde0ce3036de767714d83e45968..452c1c788724543c0cc40525f8627c4dd7b0c738 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/PBXManager.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/PBXManager.php @@ -1,19 +1,40 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'Asterisk' => 'Asterisk' , - 'PBXManager' => 'Administrador PBX' , - 'SINGLE_PBXManager' => 'Administrador PBX' , - 'LBL_CALL_INFORMATION' => 'Call Details' , - 'Call From' => 'Chamada de' , - 'Call To' => 'Chamada para' , - 'Time Of Call' => 'Tempo Chamada' , - 'PBXManager ID' => 'PBX Manager ID' , -); \ No newline at end of file + 'Asterisk' => 'Asterisk', + 'Call From'=>'Chamada de', + 'Call To'=>'Chamada para', + 'LBL_CALL_INFORMATION' => 'Detalhes Chamada', + 'PBXManager ID'=>'ID Gestor PBX', + 'PBXManager' => 'Gestor PBX', + 'SINGLE_PBXManager' => 'Gestor PBX', + 'Time Of Call'=>'Hora Chamada', + //Blocks + 'LBL_PBXMANAGER_INFORMATION' => 'Detalhes Chamada', + 'LBL_CUSTOM_INFORMATION'=>'Informação Customizada', + + // list view settings links + 'LBL_SERVER_CONFIGURATION' => 'Configuração Provedor', + + //Detail view header title + 'LBL_CALL_FROM' => 'Chamada de', + 'LBL_CALL_TO' => 'Chamada para', + + //Incoming call pop-up + 'LBL_HIDDEN' => '(OCULTAR)', + + // Fields + 'Total Duration' => 'Duração (sec)', + 'Bill Duration' => 'Duração Fatura (sec)', + 'Recording URL' => 'Gravando', + + 'SINGLE_PBXManager' => 'Registro Chamada' , + +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Portal.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Portal.php index 95afd64f472f9f6fde0cf67c0df84c3d0a907201..f610bedc318ac0972368798e95c0629fb3ec4945 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Portal.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Portal.php @@ -4,30 +4,30 @@ * ("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. + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br *************************************************************************************/ $languageStrings = array( - 'Portal' => 'Nossos Sites', - 'LBL_ADD_BOOKMARK' => 'Adicionar marcadores', - 'LBL_BOOKMARK_NAME' => 'Bookmark Nome', - 'LBL_BOOKMARK_URL' => 'Bookmark Url', - 'LBL_CREATED_ON' => 'Criado em', - 'SINGLE_Portal' => 'Nosso Site', - 'LBL_EDIT_BOOKMARK' => 'Editar marcador', - 'LBL_ENTER_BOOKMARK_NAME' => 'Digite o nome do indicador', - 'LBL_ENTER_URL' => 'Digite Url (www.example.com)', - 'LBL_ADD_NEW_BOOKMARK' => 'Adicionar Novo Bookmark', - 'LBL_BOOKMARK_SAVED_SUCCESSFULLY' => 'Bookmark salvo com sucesso', - 'LBL_RECORD_DELETED_SUCCESSFULLY' => 'Registro excluÃdo com sucesso', - 'LBL_OUR_SITES_LIST' => 'Nosso Sites Lista', - 'LBL_BOOKMARKS_LIST' => 'Lista de Favoritos', - 'LBL_BOOKMARKS_DELETED_SUCCESSFULLY' => 'Marcadores excluÃdo com sucesso', - 'LBL_BOOKMARK' => 'Bookmark', - 'LBL_BOOKMARKS' => 'Marcadores', - 'HTTP_ERROR' => 'O site que você está tentando abrir não é seguro e pode não abrir. Se você ainda quiser ver a página da web, então você pode clicar sobre o bloqueador de conteúdo na barra de endereços e habilitá-lo.', + 'Portal' => 'Nossos Sites', + 'LBL_ADD_BOOKMARK' => 'Adicionar Favorito', + 'LBL_BOOKMARK_NAME' => 'Nome Favorito', + 'LBL_BOOKMARK_URL' => 'URL Favorito', + 'LBL_CREATED_ON' => 'Criado em', + 'SINGLE_Portal' => 'Nosso Site', + 'LBL_EDIT_BOOKMARK' => 'Editar Favorito', + 'LBL_ENTER_BOOKMARK_NAME' => 'Digite Nome Favorito', + 'LBL_ENTER_URL' => 'Digitar URL (www.example.com.br)', + 'LBL_ADD_NEW_BOOKMARK' => 'Adicionar Novo Favorito', + 'LBL_BOOKMARK_SAVED_SUCCESSFULLY' => 'Favorito Salvo com Sucesso', + 'LBL_RECORD_DELETED_SUCCESSFULLY' => 'Registro apagado com sucesso', + 'LBL_OUR_SITES_LIST' => 'Nossa Lista de Sites', + 'LBL_BOOKMARKS_LIST' => 'Lista de Favoritos', + 'LBL_BOOKMARKS_DELETED_SUCCESSFULLY' => 'Favoritos apagados com sucesso', + 'LBL_BOOKMARK' => 'Favorito', + 'LBL_BOOKMARKS' => 'Favoritos', + 'HTTP_ERROR' => 'O website que você está tentando abrir não é seguro e pode não abrir. Se mesmo assim quiser visualizar a página, então poderá clicar sobre o bloqueador de conteúdo na barra de endereço e habilita-lo.', ); $jsLanguageStrings = array( - 'JS_ENTER_MANDATORY_FIELDS' => 'Por favor, indique todos os campos obrigatórios', -); \ No newline at end of file + 'JS_ENTER_MANDATORY_FIELDS' => 'Por favor, preencha todos os campos obrigatórios', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Potentials.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Potentials.php index 6873a446e95ebe7b04e4683d203994ecd0eea873..7708175af14001c1f530e31775098dc1da856b34 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Potentials.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Potentials.php @@ -1,80 +1,74 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'Potentials' => 'Oportunidade' , - 'SINGLE_Potentials' => 'Oportunidade' , - 'LBL_ADD_RECORD' => 'Add Oportunidade' , - 'LBL_RECORDS_LIST' => 'Oportunidade List' , - 'LBL_OPPORTUNITY_INFORMATION' => 'Dados da Oportunidade:' , - 'Potential No' => 'No. Oportunidade' , - 'Amount' => 'Montante' , - 'Next Step' => 'Próximo Passo' , - 'Sales Stage' => 'Estágio de Vendas' , - 'Probability' => 'Probabilidade(%)' , - 'Campaign Source' => 'Fonte Campanha' , - 'Forecast Amount' => 'Receita Weighted' , - 'Funnel' => 'Sales Funnel' , - 'Potentials by Stage' => 'Oportunidade by Stage' , - 'Total Revenue' => 'Revenue by Salesperson' , - 'Top Potentials' => 'Top Oportunidade' , - 'Forecast' => 'Sales Forecast' , - 'Prospecting' => 'Prospectando' , - 'Qualification' => 'Qualificação' , - 'Needs Analysis' => 'Necessita Análise' , - 'Value Proposition' => 'Proposta Valor' , - 'Id. Decision Makers' => 'Identif. Decisor' , - 'Perception Analysis' => 'Análise Percepção' , - 'Proposal or Price Quote' => 'Proposta or Cotação' , - 'Negotiation or Review' => 'Negociação or Revisão' , - 'Closed Won' => 'Fechado Vencido' , - 'Closed Lost' => 'Fechado Perdido' , - '--None--' => '--Nada--' , - 'Existing Business' => 'Negócio Existente' , - 'New Business' => 'Novo Negócio' , - - 'LBL_EXPECTED_CLOSE_DATE_ON' => 'Expected to close on' , - 'LBL_RELATED_CONTACTS' => 'Related Contacts' , // TODO: Review - 'LBL_RELATED_PRODUCTS' => 'Related Products' , // TODO: Review - 'Related To' => 'Nome da Organização' , - 'Type' => 'Tipo' , + // Basic Strings + 'Potentials' => 'Oportunidades', + 'SINGLE_Potentials' => 'Oportunidade', + 'LBL_ADD_RECORD' => 'Adicionar Oportunidade', + 'LBL_RECORDS_LIST' => 'Lista Oportunidades', + + // Blocks + 'LBL_OPPORTUNITY_INFORMATION' => 'Detalhes Oportunidade', + + //Field Labels + 'Potential No' => 'No. Oportunidade', + 'Amount' => 'Valor Fechamento', + 'Next Step' => 'Próximo Passo', + 'Sales Stage' => 'Estágio Vendas', + 'Probability' => 'Probabilidade', + 'Campaign Source' => 'Fonte Campanha', + 'Forecast Amount' => 'Receita Ponderada', + 'Related To' => 'Nome Organização', + 'Contact Name' => 'Nome Contato', + 'Type' => 'Tipo', - 'Cold Call'=>'Cold Call', - 'Existing Customer'=>'Cliente Existente', - 'Self Generated'=>'Auto Gerado', - 'Employee'=>'Empregado', - 'Partner'=>'Parceiro', - 'Public Relations'=>'Relações Públicas', - 'Direct Mail'=>'Mala Direta', - 'Conference'=>'Conferência', - 'Trade Show'=>'Feira Negócios', - 'Web Site'=>'Website', - 'Word of mouth'=>'Boca-boca', - 'Other'=>'Outro', - + //Dashboard widgets + 'Funnel' => 'Funil de Vendas', + 'Potentials by Stage' => 'Oportunidades por Estágio', + 'Total Revenue' => 'Receita por Vendedor', + 'Top Potentials' => 'Principais Oportunidades', + 'Forecast' => 'Previsão Vendas', + + //Added for Existing Picklist Strings + + 'Prospecting'=>'Prospectando', + 'Qualification'=>'Qualificação', + 'Needs Analysis'=>'Analise', + 'Value Proposition'=>'Proposta Valor', + 'Id. Decision Makers'=>'Identificação Decisor', + 'Perception Analysis'=>'Analise Percepção', + 'Proposal/Price Quote'=>'Proposta', + 'Negotiation/Review'=>'Negociação', + 'Closed Won'=>'Fechado Vencido', + 'Closed Lost'=>'Fechado Perdido', + + '--None--'=>'--Nada--', + 'Existing Business'=>'Negócio Existente', + 'New Business'=>'Novo Negócio', + 'LBL_EXPECTED_CLOSE_DATE_ON' => 'Previsão fechamento em', + + //widgets headers + 'LBL_RELATED_CONTACTS' => 'Contatos Relacionados', + 'LBL_RELATED_PRODUCTS' => 'Produtos Relacionados', //Convert Potentials - 'LBL_CONVERT_POTENTIAL' => 'Converta Oportunidades', - 'LBL_POTENTIALS_FIELD_MAPPING' => 'Oportunidades de mapeamento de campo', - 'LBL_CONVERT_POTENTIALS_ERROR' => 'Você tem que permitir Projeto para converter o Opportunity', - 'LBL_POTENTIALS_FIELD_MAPPING_INCOMPLETE' => 'Oportunidades de mapeamento de campo é incompleta (Configurações> Module Manager> Oportunidades> Oportunidades de mapeamento de campo)', - 'LBL_CREATE_PROJECT' => 'Criar projeto', + 'LBL_CONVERT_POTENTIAL' => 'Converter Oportunidade', + 'LBL_CREATE_PROJECT' => 'Criar Projeto', + 'LBL_POTENTIALS_FIELD_MAPPING' => 'Mapeamento Campos Oportunidades', + 'LBL_CONVERT_POTENTIALS_ERROR' => 'Você deve habilitar o Projeto para converter a Oportunidade', + 'LBL_POTENTIALS_FIELD_MAPPING_INCOMPLETE' => 'O Mapeamento dos Campos da Oportunidade está incompleto (Configurações > Gerenciador Módulos > Oportunidade > Mapeamento Campos Oportunidade)', //Potentials Custom Field Mapping - 'LBL_CUSTOM_FIELD_MAPPING'=> 'Oportunidade para projeto de mapeamento', - - 'Contact Name' => 'Nome Do Contato', - 'Proposal/Price Quote' => 'Proposta/Cotação', - 'Negotiation/Review' => 'Negociação/Análise', - + 'LBL_CUSTOM_FIELD_MAPPING'=> 'Mapeando Oportunidade para Projeto', ); $jsLanguageStrings = array( - 'JS_SELECT_PROJECT_TO_CONVERT_LEAD' => 'Conversão requer seleção de Projeto', -); \ No newline at end of file + 'JS_SELECT_PROJECT_TO_CONVERT_LEAD' => 'A conversão exige a seleção do Projeto', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/PriceBooks.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/PriceBooks.php index be19a79d668fd5d60420b26f10c4158168327838..cf8330740833b3ce4ad18491947b832a636cee95 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/PriceBooks.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/PriceBooks.php @@ -2,21 +2,26 @@ /*+********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source + * 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. + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation -www.ttcasolucoes.com.br ************************************************************************************/ $languageStrings = array( - 'PriceBooks' => 'Listas Preços' , - 'SINGLE_PriceBooks' => 'Lista Preço' , - 'LBL_ADD_RECORD' => 'Add Price Book' , - 'LBL_RECORDS_LIST' => 'Price Books List' , - 'LBL_PRICEBOOK_INFORMATION' => 'Informação Lista de Preço:', - 'LBL_EDIT_LIST_PRICE' => 'Edit List Price' , - 'Price Book Name' => 'Nome Lista Preço' , - 'PriceBook No' => 'No. Lista Preços' , - - 'LBL_UNIT_PRICE' => 'Preço unitário', + // Basic Strings + 'PriceBooks' => 'Listas Preços', + 'SINGLE_PriceBooks'=> 'Lista Preço', + 'LBL_ADD_RECORD' => 'Adicionar Lista Preços', + 'LBL_RECORDS_LIST' => 'Relação Lista Preços', + + // Blocks + 'LBL_PRICEBOOK_INFORMATION'=> 'Detalhes Lista de Preço', + 'LBL_EDIT_LIST_PRICE'=> 'Editar Lista de Preços' , + + //Field Labels + 'Price Book Name'=> 'Nome Lista Preço' , + 'PriceBook No' => 'No. Lista Preços' , + + 'LBL_UNIT_PRICE' => 'Preço Unitário', 'LBL_ADD_TO' => 'Adicionar para', -); \ No newline at end of file +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Products.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Products.php index 13d73c5b89dfc897c82d78756fec9f12b30fec48..0b61d76c4622c9453629e077e7857ae8357407ab 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Products.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Products.php @@ -1,90 +1,104 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'Products' => 'Produto' , - 'SINGLE_Products' => 'Produto' , - 'LBL_ADD_RECORD' => 'Adicionar Produto' , - 'LBL_RECORDS_LIST' => 'Products List' , - 'LBL_PRODUCT_INFORMATION' => 'Dados do Produto' , - 'LBL_IMAGE_INFORMATION' => 'Informação Imagem Produto:', - 'LBL_STOCK_INFORMATION' => 'Informação do Estoque:' , - 'LBL_MORE_CURRENCIES' => 'outras moedas' , - 'LBL_PRICES' => 'Preços Produtos' , - 'LBL_PRICE' => 'Preço' , - 'LBL_RESET_PRICE' => 'Redefinir Preço' , - 'LBL_RESET' => 'Redefinir' , - 'LBL_ADD_TO_PRICEBOOKS' => 'Add to PriceBooks' , - 'Product No' => 'Cod. Produto' , - 'Part Number' => 'Part Number' , - 'Product Active' => 'Produto Ativo' , - 'Manufacturer' => 'Fabricante' , - 'Product Category' => 'Categoria de Produto' , - 'Website' => 'Website' , - 'Mfr PartNo' => 'Cód. Fabricante' , - 'Vendor PartNo' => 'Cód. Fornecedor' , - 'Usage Unit' => 'Unidade Utilizada' , - 'Handler' => 'Responsável' , - 'Reorder Level' => 'NÃvel Reabastecimento' , - 'Tax Class' => 'Categoria de Impostos' , - 'Serial No' => 'No. Série' , - 'Qty In Stock' => 'Qde. em Estoque' , - 'Product Sheet' => 'Ficha do Produto' , - 'Qty In Demand' => 'Qde. Comprada' , - 'GL Account' => 'Conta Plano Contas' , - 'Product Image' => 'Imagem Produto' , - 'Unit Price' => 'Preço Unitário' , - 'Commission Rate' => 'Comissão(%)' , - 'Qty/Unit' => 'Qde/Un' , - '--None--' => '--Nada--' , - 'Hardware' => 'Hardware' , - 'Software' => 'Software' , - 'CRM Applications' => 'Aplicações CRM' , - '300-Sales-Software' => '300-Vendas-Software' , - '301-Sales-Hardware' => '301-Vendas-Hardware' , - '302-Rental-Income' => '302-Aluguel-Renda' , - '303-Interest-Income' => '303-Juros-Renda' , - '304-Sales-Software-Support' => '304-Vendas-Suporte-Software' , - '305-Sales Other' => '305-Outras Vendas' , - '306-Internet Sales' => '306-Vendas Internet' , - '307-Service-Hardware Labor' => '307-Serviço-Lab. Hardware' , - '308-Sales-Books' => '308-Vendas-Livros' , - 'Box' => 'Cx' , - 'Carton' => 'Cartão' , - 'Caton' => '' , - 'Dozen' => 'Dz' , - 'Each' => 'Cada' , - 'Hours' => 'Hora' , - 'Impressions' => 'Impressão' , - 'Lb' => 'Lb' , - 'M' => 'M' , - 'Pack' => 'Pct' , - 'Pages' => 'Páginas' , - 'Pieces' => 'Peças' , - 'Reams' => 'Resma' , - 'Sheet' => 'Folhas' , - 'Spiral Binder' => '' , - 'Sq Ft' => '' , - 'LBL_CONVERSION_RATE' => 'Conversion Rate' , // TODO: Review - 'LBL_PRODUCTSMOD_DISABLED' => 'Ativar Produtos Módulo para ver os produtos', - 'LBL_SHOW_BUNDLE_IN_INVENTORY' => 'Mostrar itens dos pacotes em Factura/Cotações/Pedidos de Vendas/Ordem de Compra', - 'LBL_BUNDLE_TOTAL_COST' => 'Custo total da Bundle', - 'LBL_UPDATE_BUNDLE_PRICE' => 'Atualização Bundle Preço', + // Basic Strings + 'Products' => 'Produtos', + 'SINGLE_Products' => 'Produto', + 'LBL_ADD_RECORD' => 'Adicionar Produto', + 'LBL_RECORDS_LIST' => 'Lista Produtos', - 'LBL_PRODUCT_NAME' => 'Nome Do Produto', - 'LBL_PRICE_QUANTITY' => 'Preço x Quantidade', + // Blocks + 'LBL_PRODUCT_INFORMATION' => 'Detalhes Produto', + 'LBL_IMAGE_INFORMATION' => 'Informação Imagem Produto', + 'LBL_STOCK_INFORMATION' => 'Informação Estoque', + + 'LBL_MORE_CURRENCIES' => 'mais moedas', + 'LBL_PRICES' => 'Preços Produto', + 'LBL_PRICE' => 'Preço', + 'LBL_RESET_PRICE' => 'Redefinir Preço', + 'LBL_RESET' => 'Redefinir', + 'LBL_ADD_TO_PRICEBOOKS' => 'Adicionar Lista Preço', + //Field Labels + 'Product No' => 'Número Produto', + 'Part Number' => 'Part Number', + 'Product Active' => 'Ativar Produto', + 'Manufacturer' => 'Fabricante', + 'Product Category' => 'Categoria Produto', + 'Website' => 'Website', + 'Mfr PartNo' => 'Part Number Fabricante', + 'Vendor PartNo' => 'Part Number Fornecedor', + 'Usage Unit'=>'Unidade Utilizada', + 'Handler'=>'Responsável', + 'Reorder Level'=>'NÃvel Reabastecimento', + 'Tax Class'=>'Categoria Impostos', + 'Reorder Level'=>'NÃvel Reabastecimento', + 'Vendor PartNo'=>'Part Number Fornecedor', + 'Serial No'=>'No. Série', + 'Qty In Stock'=>'Qde. em Estoque', + 'Product Sheet'=>'Ficha Produto', + 'Qty In Demand'=>'Qde. Última Compra', + 'GL Account'=>'Plano Contas', + 'Product Image'=>'Imagem Produto', + 'Unit Price'=>'preço Unitário', + 'Commission Rate'=>'Percentual Comissão', + 'Qty/Unit'=>'Qde/Un', + + //Added for existing picklist entries + + '--None--'=>'--Nada--', + + 'Hardware'=>'Hardware', + 'Software'=>'Software', + 'CRM Applications'=>'Aplicações CRM', + + '300-Sales-Software' => '300-Vendas-Software' , + '301-Sales-Hardware' => '301-Vendas-Hardware' , + '302-Rental-Income'=> '302-Aluguel-Renda' , + '303-Interest-Income'=> '303-Juros-Renda' , + '304-Sales-Software-Support' => '304-Vendas-Suporte-Software' , + '305-Sales Other'=> '305-Outras Vendas' , + '306-Internet Sales' => '306-Vendas Internet' , + '307-Service-Hardware Labor' => '307-Serviço-Lab. Hardware', + '308-Sales-Books'=> '308-Vendas-Livros' , + + 'Box'=>'Cx', + 'Carton'=>'Cartao', + 'Caton'=>'', + 'Dozen'=>'Dúzia', + 'Each'=>'Cada', + 'Hours'=>'Horas', + 'Impressions'=>'Impressão', + 'Lb'=>'Libra', + 'M'=>'M', + 'Pack'=>'Pct', + 'Pages'=>'Pg', + 'Pieces'=>'Pc', + 'Reams'=>'Resma', + 'Sheet'=>'Fl', + 'Spiral Binder'=>'Pasta', + 'Sq Ft'=>'Pés', + + 'LBL_ADD_TO_PRICEBOOKS' => 'Adicionar na Lista Preços', + 'LBL_CONVERSION_RATE' => 'Taxa Câmbio', + 'LBL_PRODUCTSMOD_DISABLED' => 'Habilitar Módulo de Produtos para visualizar Produtos', + 'LBL_SHOW_BUNDLE_IN_INVENTORY' => 'Exibir pacote de itens na Fatura/Cotação/Pedido de Vendas/Pedido', + 'LBL_BUNDLE_TOTAL_COST' => 'Custo Total do Pacote', + 'LBL_UPDATE_BUNDLE_PRICE' => 'Atualizar Preço do Pacote', + 'LBL_PRODUCT_NAME' => 'Nome Produto', + 'LBL_PRICE_QUANTITY' => 'Preço x Quantidade', ); $jsLanguageStrings = array( - 'JS_SUB_PRODUCTS_WILL_BE_SHOWN_IN_INVENTORY' => 'Subprodutos será mostrado no Inventário', - 'JS_SUB_PRODUCTS_WILL_NOT_BE_SHOWN_IN_INVENTORY' => 'Subprodutos não será mostrado no Inventário', - 'JS_SUCCESSFULLY_CHANGED_BUNDLE_COST' => 'Custo total alterada com êxito de pacote', - 'JS_DELETION_OR_IN_ACTIVATION_CHILD_PRODUCT_MESSAGE' => 'Este produto faz parte de um pacote de produtos. O preço do pacote permanecem inalteradas quando um item de pacote é excluÃdo ou inativado. Tem certeza de que deseja continuar?', -); \ No newline at end of file + 'JS_SUB_PRODUCTS_WILL_BE_SHOWN_IN_INVENTORY' => 'Os sub produtos serão exibidos no Estoque', + 'JS_SUB_PRODUCTS_WILL_NOT_BE_SHOWN_IN_INVENTORY' => 'Os sub produtos não serão exibidos no Estoque', + 'JS_SUCCESSFULLY_CHANGED_BUNDLE_COST' => 'O custo do Pacote de Produtos foi alterado com sucesso', + 'JS_DELETION_OR_IN_ACTIVATION_CHILD_PRODUCT_MESSAGE' => 'Este produto é parte de um Pacote de Produtos. O preço do Pacote de Produtos será mantido sem alteração quando um item do Pacote for excluÃdo ou inativado. Você tem certeza que deseja prosseguir?', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Project.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Project.php index 7f49481cabfb7cca2e06bbc58d487ad2405619c7..ba8e81eb2063e1590a2ee5f51751c311f2150c90 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Project.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Project.php @@ -1,82 +1,91 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source + * 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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'Project' => "Projeto", - 'SINGLE_Project' => "Projeto", - 'LBL_ADD_RECORD' => "Adicionar projeto", - 'LBL_RECORDS_LIST' => "Lista de Projetos", - 'LBL_PROJECT_INFORMATION' => "Detalhes do Projeto", - 'Project Name' => "Nome do Projeto", - 'Start Date' => "Data de InÃcio", - 'Target End Date' => "Target Date End", - 'Actual End Date' => "Actual End Date", - 'Project No' => "Número do Projeto", - 'Target Budget' => "Orçamento alvo", - 'Project Url' => "Url projeto", - 'Progress' => "Progresso", - 'Type' => 'Tipo' , - 'Related to' => 'Relacionado a' , - 'LBL_TASKS_OPEN' => "Tarefas abertas", - 'LBL_TASKS_DUE' => "Tarefas devido", - 'LBL_TASKS_COMPLETED' => "As tarefas concluÃdas", - 'LBL_PEOPLE' => "Pessoas", - 'LBL_CHARTS' => "Gráficos", - 'LBL_TASKS_LIST' => "Lista de Tarefas", - 'LBL_MILESTONES' => "Milestones", - 'LBL_TASKS' => "Tarefas", - 'LBL_STATUS_IS' => "Estado é", - 'LBL_STATUS' => "Estado", - 'LBL_TICKET_PRIORITY' => "Prioridade", - 'LBL_MILESTONES_LIST' => "Lista Milestones", - 'LBL_DOWNLOAD_FILE' => "Baixar Arquivo", - 'LBL_TASKS_HIGH' => 'Alta prioridade', - 'LBL_TASKS_NORMAL' => 'Prioridade normal', - 'LBL_TASKS_LOW' => 'Baixa Prioridade', - 'LBL_TASKS_OTHER' => 'Outras prioridades', - 'LBL_SELECT_PROGRESS' => 'Progresso - Todos', + // Basic Strings + 'Project'=>'Projetos', + 'SINGLE_Project' => 'Projeto', + 'LBL_ADD_RECORD' => 'Adicionar Projeto', + 'LBL_RECORDS_LIST' => 'Lista Projetos', + + // Blocks + 'LBL_PROJECT_INFORMATION' => 'Detalhes Projeto', + + //Field Labels + 'Project Name' => 'Nome Projeto', + 'Start Date' => 'Data InÃcio', + 'Target End Date' => 'Data Final Alvo', + 'Actual End Date' => 'Data Final Atual', + 'Project No' => 'No. Projeto', + 'Target Budget' => 'Orçamento Alvo', + 'Project Url' => 'URL do Projeto', + 'Progress' => 'Progresso', + 'Type' => 'Tipo', + 'Related to' => 'Relacionado a', + + //Summary Information + 'LBL_TASKS_OPEN' => 'Tarefas Abertas', + 'LBL_TASKS_DUE' => 'Tarefas Vencidas', + 'LBL_TASKS_COMPLETED' => 'Tarefas ConcluÃdas', + 'LBL_PEOPLE' => 'Pessoas', + 'LBL_TASKS_HIGH' => 'Prioridade Alta', + 'LBL_TASKS_NORMAL' => 'Prioridade Normal', + 'LBL_TASKS_LOW' => 'Prioridade Baixa', + 'LBL_TASKS_OTHER' => 'Outra Prioridade', + 'LBL_SELECT_PROGRESS' => 'Progresso - Todos', 'LBL_SELECT_STATUS' => 'Status - Todos', - + + //Related List + 'LBL_CHARTS' => 'Gráfico', + 'LBL_TASKS_LIST' => 'Lista Tarefas', + 'LBL_MILESTONES' => 'Milestones', + 'LBL_TASKS' => 'Tarefas', + 'LBL_STATUS_IS' => 'Status é', + 'LBL_STATUS' => 'Status', + 'LBL_TICKET_PRIORITY' => 'Prioridade', + 'LBL_MILESTONES_LIST' => 'Lista Milestones', + + //Summary View Widgets + 'LBL_DOWNLOAD_FILE' => 'Arquivo Download', + //picklist values - 'prospecting' => 'Prospecção', - 'in progress' => 'Em andamento', - 'initiated' => 'Iniciado', - 'waiting for feedback' => 'À espera de feedback', - 'on hold' => 'Em Espera', - 'archived' => 'Arquivado', - 'completed' => 'ConcluÃdo', - 'delivered' => 'Entregue', + 'prospecting' => 'Prospectando', + 'in progress' => 'Em Andamento', + 'initiated' => 'Iniciado', + 'waiting for feedback' => 'Aguardando por Feedback', + 'on hold' => 'Aguardando', + 'archived' => 'Arquivado', + 'completed' => 'ConcluÃdo', + 'delivered' => 'Entregue', 'administrative' => 'Administrativo', - 'operative' => 'Operativo', - 'other' => 'Outro', - 'low' => 'Baixo', - 'normal' => 'Normal', - 'high' => 'Alto', - - //Gantt chart - 'LBL_CHART' => 'Gráfico de Gantt', - 'LBL_PROGRESS_CHART' => 'Gráfico de Gantt de progresso', - 'LBL_TASK_NAME' => 'nome da tarefa', - 'LBL_START_DATE' => 'data de inÃcio', - 'LBL_END_DATE' => 'data final', - 'LBL_DURATION' => 'duração', - 'LBL_EDIT_PROJECT_TASK_STATUS_COLOR' => 'Editar tarefa Projeto Cor Estado', - 'LBL_SELECT_PROJECT_TASK_STATUS_COLOR' => 'Selecione Projeto Task Cor Estado', - 'LBL_SELECT_STATUS' => 'Selecione Status', - 'LBL_EDIT_COLOR' => 'Editar cor', - - 'LBL_INFO' => 'Informações', - 'LBL_GANTT_INFO1' => 'Slide no lado direito da tarefa para expandir duração', - 'LBL_GANTT_INFO2' => 'Arraste o para a esquerda ou centro de tarefa para alterar a data de inÃcio e fim.', + 'operative' => 'Operacional', + 'other' => 'Outro', + 'low' => 'Baixo', + 'normal' => 'Normal', + 'high' => 'Alto', + //Gantt chart + 'LBL_CHART' => 'Gráfico', + 'LBL_PROGRESS_CHART' => 'Andamento Gráfico', + 'LBL_TASK_NAME' => 'Nome Tarefa', + 'LBL_START_DATE' => 'Data InÃcio', + 'LBL_END_DATE' => 'Data Final', + 'LBL_DURATION' => 'Duração', + 'LBL_INFO' => 'Info', + 'LBL_GANTT_INFO1' => 'Deslize para o lado direito da Tarefa para expandir a duração', + 'LBL_GANTT_INFO2' => 'Arraste para o lado esquerdo ou para o centro da Tarefa para alterar a data de inÃcio e término.', + 'LBL_EDIT_PROJECT_TASK_STATUS_COLOR' => 'Editar a côr do Status da Tarefa do Projeto', + 'LBL_SELECT_PROJECT_TASK_STATUS_COLOR' => 'Selecionar a côr do Status da Tarefa do Projeto', + 'LBL_SELECT_STATUS' => 'Selecionar Status', + 'LBL_EDIT_COLOR' => 'Editar Côr', ); $jsLanguageStrings = array( - 'JS_COLOR_SAVED_SUCESSFULLY' => 'Sucesso a cores Saved', -); \ No newline at end of file + 'JS_COLOR_SAVED_SUCESSFULLY' => 'A côr foi salva com sucesso', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ProjectMilestone.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ProjectMilestone.php index 5d675a51c009bc67b5e1419bfcc50eca4f5ab3be..d8370471a81521c650b8c4043467589bb90d87c1 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ProjectMilestone.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ProjectMilestone.php @@ -1,27 +1,33 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source + * 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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'SINGLE_ProjectMilestone' => 'Marco Projeto' , - 'LBL_ADD_RECORD' => 'Add Project Milestone' , - 'LBL_RECORDS_LIST' => 'Project Milestones List' , - 'LBL_PROJECTS_LIST' => 'Lista de Projetos' , - 'LBL_TASKS_LIST' => 'Lista de Tarefas' , - 'LBL_MILESTONES_LIST' => 'Lista Milestones' , - 'LBL_PROJECT_MILESTONE_INFORMATION' => 'Informação Marco Projeto' , - 'Project Milestone Name' => 'Nome Marco' , - 'Milestone Date' => 'Data Marco' , - 'Project Milestone No' => 'No. Marco' , - 'Type' => 'Tipo' , - 'Related to' => 'Relacionado a' , + // Basic Strings + 'SINGLE_ProjectMilestone' => 'Milestone', + 'LBL_ADD_RECORD' => 'Adicionar Milestone', + 'LBL_RECORDS_LIST' => 'Lista de Milestones', + 'LBL_PROJECTS_LIST' => 'Lista de Projetos', + 'LBL_TASKS_LIST' => 'Lista de Tarefas', + 'LBL_MILESTONES_LIST' => 'Lista de Milestones', + + // Blocks + 'LBL_PROJECT_MILESTONE_INFORMATION' => 'Detalhes do Milestone', + + //Field Labels + 'Project Milestone Name' => 'Nome do Milestone', + 'Milestone Date' => 'Data Milestone', + 'Project Milestone No' => 'No. Milestone', + 'Type' => 'Tipo', + 'Related to' => 'Relacionado a', //picklist values 'administrative' => 'Administrativo', - 'operative' => 'Operativo', + 'operative' => 'Operacional', 'other' => 'Outro', -); \ No newline at end of file + +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ProjectTask.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ProjectTask.php index 5ed497e0d4b7609ec23faae02e6f158390c20dfb..9abc86377187543621fa11c8d6658d026c6dd6f1 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ProjectTask.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ProjectTask.php @@ -1,47 +1,50 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source + * 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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'SINGLE_ProjectTask' => 'Tarefa Projeto' , - 'LBL_ADD_RECORD' => 'Add Project Task' , - 'LBL_RECORDS_LIST' => 'Project Task List' , - 'LBL_PROJECT_TASK_INFORMATION' => 'Informação Tarefa Projeto' , - 'LBL_PROJECTS_LIST' => 'Projects List' , // TODO: Review - 'LBL_TASKS_LIST' => 'Tasks List' , // TODO: Review - 'LBL_MILESTONES_LIST' => 'Lista Milestones' , + // Basic Strings + 'SINGLE_ProjectTask' => 'Tarefa Projeto', + 'LBL_ADD_RECORD' => 'Adicionar Tarefa Projeto', + 'LBL_RECORDS_LIST' => 'Lista Tarefa Projeto', + + // Blocks + 'LBL_PROJECT_TASK_INFORMATION' => 'Detalhes Tarefa Projeto', + 'LBL_PROJECTS_LIST' => 'Lista Projetos', + 'LBL_TASKS_LIST' => 'Lista Tarefas', + 'LBL_MILESTONES_LIST' => 'Lista Milestones', //Field Labels - 'Project Task Name' => 'Project Task Name', - 'Project Task No' => 'Project Task No', - 'Project Task Number' => 'Project Task Number', + 'Project Task Name' => 'Nome Tarefa Projeto', + 'Project Task No' => 'No. Tarefa Projeto', + 'Project Task Number' => 'Número Tarefa Projeto', 'Status' => 'Status', - 'Priority' => 'Priority', - 'Progress' => 'Progress', - 'Type'=>'Type', - 'Worked Hours'=>'Worked Hours', - 'Start Date'=>'Start Date', - 'End Date'=>'End Date', - 'Related to' => 'Related To', + 'Priority' => 'Prioridade', + 'Progress' => 'Progresso', + 'Type'=>'Tipo', + 'Worked Hours'=>'Horas Trabalhadas', + 'Start Date'=>'Data InÃcio', + 'End Date'=>'Data Final', + 'Related to' => 'Projeto relacionado', //Relacionado a 'administrative' => 'Administrativo', - 'operative' => 'Operativo', + 'operative' => 'Operacional', 'other' => 'Outro', 'low' => 'Baixo', 'normal' => 'Normal', 'high' => 'Alto', - 'Created Time' => 'Created Time', - 'Modified Time' => 'Modified Time', - 'description' => 'Description', - 'Assigned To' => 'Assigned To', - 'Open' => 'Open', - 'In Progress' => 'In Progress', - 'Completed' => 'Completed', - 'Deferred' => 'Deferred', - 'Canceled ' => 'Canceled', - 'LBL_NO_DATE_VALUE_MSG' => 'ou Tarefas do Projeto não tem inÃcio e / ou Data Final', -); \ No newline at end of file + 'Created Time' => 'Hora Criação', + 'Modified Time' => 'Hora Modificação', + 'description' => 'Descrição', + 'Assigned To' => 'Designado a', + 'Open' => 'Aberto', + 'In Progress' => 'Em Andamento', + 'Completed' => 'ConcluÃdo', + 'Deferred' => 'Adiado', + 'Canceled ' => 'Cancelado', + 'LBL_NO_DATE_VALUE_MSG' => 'ou a Tarefa do Projeto não tem Data InÃcio e/ou Data Fim', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Proposal.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Proposal.php new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/PurchaseOrder.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/PurchaseOrder.php index 72a9faf5bb23e5f38f72d02f62fa0617abd3e1c4..176f8d7f40787dc1b385a88a25948a866dbf7f7a 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/PurchaseOrder.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/PurchaseOrder.php @@ -1,56 +1,66 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'PurchaseOrder' => 'Ordens de compra' , - 'SINGLE_PurchaseOrder' => 'Orden de compra' , - 'LBL_EXPORT_TO_PDF' => 'Exportar para PDF' , - 'LBL_SEND_MAIL_PDF' => 'Send Email with PDF' , // TODO: Review - 'LBL_ADD_RECORD' => 'Add Purchase Order' , - 'LBL_RECORDS_LIST' => 'Listar Pedido de Compra' , - 'LBL_COPY_SHIPPING_ADDRESS' => 'Copiar endereço da Expedição' , // TODO: Review - 'LBL_COPY_BILLING_ADDRESS' => 'Copiar Endereço de Cobrança' , // TODO: Review - 'LBL_PO_INFORMATION' => 'Informação Pedido Compra' , - 'PurchaseOrder No' => 'No. Pedido Compra' , - 'Requisition No' => 'No. Requisição' , - 'Tracking Number' => 'No. Rastreamento' , - 'Sales Commission' => 'Comissão Vendas' , - 'LBL_PAID' => 'Paid' , // TODO: Review - 'LBL_BALANCE' => 'Balance' , // TODO: Review - 'Received Shipment' => 'Entrega Recebida' , - 'LBL_LIST_PRICE' => 'Lista dos Preços', - 'List Price' => 'Lista dos Preços', - 'LBL_COPY_COMPANY_ADDRESS' => 'Copiar endereço da Empresa', - 'LBL_COPY_ACCOUNT_ADDRESS' => 'Copiar Organização Endereço', - 'LBL_SELECT_ADDRESS_OPTION' => 'Selecione Endereço para copiar', - 'LBL_BILLING_ADDRESS' => 'Endereço de Cobrança', - 'LBL_COMPANY_ADDRESS' => 'Endereço da Empresa', - 'LBL_ACCOUNT_ADDRESS' => 'Organização Endereço', - 'LBL_VENDOR_ADDRESS' => 'Vendedor Endereço', - 'LBL_CONTACT_ADDRESS' => 'Contato Endereço', + 'PurchaseOrder' => 'Pedido Compras', + //DetailView Actions + 'SINGLE_PurchaseOrder' => 'Pedido de Compra', + 'LBL_EXPORT_TO_PDF' => 'Exportar para PDF', + 'LBL_SEND_MAIL_PDF' => 'Enviar Email com PDF', - 'LBL_THIS' => 'Este', - 'LBL_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_OR_REPLACE_THIS_ITEM' => 'é excluÃdo do sistema.por favor, remover ou substituir este item', - 'LBL_THIS_LINE_ITEM_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_THIS_LINE_ITEM' => 'Este item de linha é excluÃda do sistema,por favor, remova esta linha de itens', + //Basic strings + 'LBL_ADD_RECORD' => 'Adicionar Pedido Compras', + 'LBL_RECORDS_LIST' => 'Lista Pedido Compras', + 'LBL_COPY_SHIPPING_ADDRESS' => 'Copiar Endereço de Entrega', + 'LBL_COPY_BILLING_ADDRESS' => 'Copiar Endereço Faturamento', -); + // Blocks + 'LBL_PO_INFORMATION' => 'Detalhes Pedido Compras', -$jsLanguageStrings = array( - 'JS_ORGANIZATION_NOT_FOUND'=> 'Organização vazio', - 'JS_ORGANIZATION_NOT_FOUND_MESSAGE'=> 'Por favor seleccione uma organização antes de copiar endereço', - 'JS_ACCOUNT_NOT_FOUND' => 'Organização vazio!', - 'JS_ACCOUNT_NOT_FOUND_MESSAGE' => 'Por favor, selecione uma organização antes de copiar endereço', - 'JS_VENDOR_NOT_FOUND' => 'Vendedor vazio', - 'JS_VENDOR_NOT_FOUND_MESSAGE' => 'Por favor seleccione um fornecedor antes de copiar endereço', - 'JS_CONTACT_NOT_FOUND' => 'Contato vazio', - 'JS_CONTACT_NOT_FOUND_MESSAGE' => 'Por favor, selecione um contato antes de copiar endereço', + //Field Labels + 'PurchaseOrder No' => 'No. Pedido Compras', + 'Requisition No' => 'No. Requisição', + 'Tracking Number' => 'Número Rastreamento', + 'Sales Commission' => 'Comissão Vendas', + 'LBL_PAID' => 'Pago', + 'LBL_BALANCE' => 'Saldo', + + //Added for existing Picklist Entries - 'JS_PLEASE_REMOVE_LINE_ITEM_THAT_IS_DELETED' => 'Por favor, remover da linha de item excluÃdo', + 'Received Shipment'=>'Entrega Recebida', + + //Translation for product not found + 'LBL_THIS' => 'Este', + 'LBL_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_OR_REPLACE_THIS_ITEM' => 'foi apagado pelo Sistema. Por favor, remova ou substitua este item', + 'LBL_THIS_LINE_ITEM_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_THIS_LINE_ITEM' => 'Este item foi excluÃdo do Sistema. Por favor, remova o item da linha', + 'LBL_LIST_PRICE' => 'Lista Preço', + 'List Price' => 'Lista Preço', + + 'LBL_COPY_COMPANY_ADDRESS' => 'Copiar Endereço Empresa', + 'LBL_COPY_ACCOUNT_ADDRESS' => 'Copiar Endereço Organização', + 'LBL_SELECT_ADDRESS_OPTION' => 'Selecionar Endereço para copiar', + 'LBL_BILLING_ADDRESS' => 'Endereço Faturamento', + 'LBL_COMPANY_ADDRESS' => 'Endereço Empresa', + 'LBL_ACCOUNT_ADDRESS' => 'Endereço Organização', + 'LBL_VENDOR_ADDRESS' => 'Endereço Fornecedor', + 'LBL_CONTACT_ADDRESS' => 'Endereço Contato' + +); -); \ No newline at end of file +$jsLanguageStrings = array( + 'JS_PLEASE_REMOVE_LINE_ITEM_THAT_IS_DELETED' => 'Por favor, remova o item da linha que foi excluÃdo', + 'JS_ORGANIZATION_NOT_FOUND'=> 'Organização vazia!', + 'JS_ORGANIZATION_NOT_FOUND_MESSAGE'=> 'Por favor, selecione uma Organização antes de copiar o endereço', + 'JS_ACCOUNT_NOT_FOUND' => 'Organização vazia!', + 'JS_ACCOUNT_NOT_FOUND_MESSAGE' => 'Por favor, selecione uma Organização antes de copiar o endereço', + 'JS_VENDOR_NOT_FOUND' => 'Fornecedor vazio!', + 'JS_VENDOR_NOT_FOUND_MESSAGE' => 'Por favor, selecione um Fornecedor antes de copiar o endereço', + 'JS_CONTACT_NOT_FOUND' => 'Contato vazio!', + 'JS_CONTACT_NOT_FOUND_MESSAGE' => 'Po favor, selecione um Contato antes de copiar o endereço', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Quotes.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Quotes.php index 7da5ef0ff8cc61ae8f5b49f3e95e9ed57ca21496..6696d7c35e34fe613a6b0b9a164a6dd538162a82 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Quotes.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Quotes.php @@ -1,30 +1,44 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - ************************************************************************************/ -$languageStrings = array( - 'Quotes' => 'Cotação' , - 'SINGLE_Quotes' => 'Cotação' , - 'LBL_EXPORT_TO_PDF' => 'Exportar para PDF' , - 'LBL_SEND_MAIL_PDF' => 'Send Email with PDF' , // TODO: Review - 'LBL_ADD_RECORD' => 'Add Quote' , - 'LBL_RECORDS_LIST' => 'Lista Cotações' , - 'LBL_QUOTE_INFORMATION' => 'Informação Cotação' , - 'Quote No' => 'No. Cotação' , - 'Quote Stage' => 'Estágio Cotação' , - 'Valid Till' => 'Válido até' , - 'Inventory Manager' => 'Almoxarife' , - 'Accepted' => 'Aceita' , - 'Rejected' => 'Rejeitada' , - 'Related To' => 'Relacionado a' , - - 'LBL_THIS' => 'Este', - 'LBL_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_OR_REPLACE_THIS_ITEM' => 'é excluÃdo do sistema.por favor, remover ou substituir este item', - 'LBL_THIS_LINE_ITEM_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_THIS_LINE_ITEM' => 'Este item de linha é excluÃda do sistema,por favor, remova esta linha de itens', - -); \ No newline at end of file +<?php +/*+*********************************************************************************** + * The contents of this file are subject to the vtiger CRM Public License Version 1.0 + * ("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. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ +$languageStrings = array( + 'Quotes'=>'Cotações', + //DetailView Actions + 'SINGLE_Quotes' => 'Cotação', + 'LBL_EXPORT_TO_PDF' => 'Exportar para PDF', + 'LBL_SEND_MAIL_PDF' => 'Enviar Email com PDF', + + //Basic strings + 'LBL_ADD_RECORD' => 'Adicionar Cotação', + 'LBL_RECORDS_LIST' => 'Lista Cotações', + + // Blocks + 'LBL_QUOTE_INFORMATION' => 'Detalhes Cotação', + + //Field Labels + 'Quote No'=>'No. Cotação', + 'Quote Stage'=>'Estágio Cotação', + 'Valid Till'=>'Válida até', + 'Inventory Manager'=>'Gestor Estoque', + 'Related To' => 'Relacionado a', + //Added for existing Picklist Entries + + 'Accepted'=>'Aceita', + 'Rejected'=>'Rejeitada', + + //Translation for product not found + 'LBL_THIS' => 'Esta', + 'LBL_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_OR_REPLACE_THIS_ITEM' => 'foi apagado pelo Sistema. Por faovr, remova ou sibstitua este item', + 'LBL_THIS_LINE_ITEM_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_THIS_LINE_ITEM' => 'Este item foi excluÃdo do Sistema. Por favor, remova o item da linha', + +); + +$jsLanguageStrings = array( + 'JS_PLEASE_REMOVE_LINE_ITEM_THAT_IS_DELETED' => 'Por favor, remova da linha o item que foi excluÃdo', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/RecycleBin.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/RecycleBin.php index 23a6c60de061639b6a779765989952e4e51715a1..eafd263fe781001754e7724ee0efa919a749e810 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/RecycleBin.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/RecycleBin.php @@ -1,29 +1,32 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - ************************************************************************************/ -$languageStrings = array( - 'Recycle Bin' => 'Recycle Bin' , // TODO: Review - 'RecycleBin' => 'Recycle Bin' , // TODO: Review - 'LBL_SELECT_MODULE' => 'Select Module' , // TODO: Review - 'LBL_EMPTY_RECYCLEBIN' => 'Empty Recycle Bin' , // TODO: Review - 'LBL_RESTORE' => 'Restore' , // TODO: Review - 'LBL_NO_PERMITTED_MODULES' => 'No permitted modules available', // TODO: Review - 'LBL_RECORDS_LIST' => 'Recycle Bin List' , // TODO: Review - 'LBL_NO_RECORDS_FOUND' => 'No records found to Restore in module', // TODO: Review -); -$jsLanguageStrings = array( - 'JS_MSG_EMPTY_RB_CONFIRMATION' => 'Are you sure you want to permanently remove all the deleted records from your database?', // TODO: Review - 'JS_LBL_RESTORE_RECORDS_CONFIRMATION' => 'Are you sure you want to restore the records?', // TODO: Review - 'JS_LBL_RESTORE_RECORD_CONFIRMATION' => 'Tem certeza de que deseja restaurar o registro?', - 'JS_RESTORING_RECORD' => 'Restaurar Registro', - 'JS_RESTORE_AND_UNTRASH_FILE_IN_DRIVE' => 'Restaurar em Vtiger and Drive', - - 'JS_RESTORING_RECORDS' => 'Restaurar os registros', - -); +<?php +/*+********************************************************************************** + * The contents of this file are subject to the vtiger CRM Public License Version 1.0 + * ("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. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese TRanslation - www.ttcasolucoes.com.br + ************************************************************************************/ + +$languageStrings = Array( + 'Recycle Bin' => 'Lixeira', + 'RecycleBin' => 'Lixeira', + 'LBL_SELECT_MODULE' => 'Selecionar Módulo', + 'LBL_EMPTY_RECYCLEBIN' => 'Limpar Lixeira', + 'LBL_RESTORE' => 'Restaurar', + 'LBL_NO_PERMITTED_MODULES' => 'Nenhum módulo permitido disponÃvel', + 'LBL_RECORDS_LIST' => 'Lista Lixeira', + 'LBL_NO_RECORDS_FOUND' => 'Nenhum registro foi encontrado para Restaurar no módulo', +); + +$jsLanguageStrings = array( + 'JS_MSG_EMPTY_RB_CONFIRMATION' => 'Tem certeza que deseja remover permanentemente, de sua base de dados, todos os registros apagados?', + 'JS_LBL_RESTORE_RECORDS_CONFIRMATION' => 'Tem certeza que deseja restaurar os registros?', + 'JS_RESTORING_RECORDS' => 'Restaurando registros', + 'JS_LBL_RESTORE_RECORD_CONFIRMATION' => 'Você tem certeza que deseja restaurar o registro?', + 'JS_RESTORING_RECORD' => 'Restaurando o Registro', + 'JS_RESTORE_AND_UNTRASH_FILE_IN_DRIVE' => 'Restaurar no Vtiger e Drive', +); + + +?> diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Reports.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Reports.php index e071b30d650659e2521660b36bd530e7abdc5042..e578d3567bda3827deca7278d8e8ee9794282aeb 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Reports.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Reports.php @@ -4,221 +4,237 @@ * ("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. + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br ************************************************************************************/ $languageStrings = array( - 'Reports' => 'Reports' , // TODO: Review - 'SINGLE_Reports' => 'Report' , // TODO: Review - 'LBL_FOLDER_NOT_EMPTY' => 'Folder is not empty' , - 'LBL_MOVE_REPORT' => 'Mover Relatórios' , - 'LBL_CUSTOMIZE' => 'Customizar' , - 'LBL_REPORT_EXPORT_EXCEL' => 'Export Excel' , - 'LBL_REPORT_PRINT' => 'Imprimir' , - 'LBL_STEP_1' => 'Step 1' , - 'LBL_STEP_2' => 'Step 2' , - 'LBL_STEP_3' => 'Step 3' , - 'LBL_REPORT_DETAILS' => 'Detalhes Relatório' , - 'LBL_SELECT_COLUMNS' => 'Selecionar Colunas' , - 'LBL_FILTERS' => 'Filtros' , - 'LBL_FOLDERS' => 'Folders' , - 'LBL_ADD_NEW_FOLDER' => 'Adicionar Novo Grupo' , - 'LBL_FOLDER_NAME' => 'Folder Name' , - 'LBL_FOLDER_DESCRIPTION' => 'Folder Description' , - 'LBL_WRITE_YOUR_DESCRIPTION_HERE' => 'Enter Description' , - 'LBL_DUPLICATES_EXIST' => 'Duplicate Exists' , - 'LBL_FOLDERS_LIST' => 'Folders List' , - 'LBL_DENIED_REPORTS' => 'Denied Reports' , - 'LBL_NO_OF_RECORDS' => 'Total Records : ' , // TODO: Review - 'LBL_MORE_RECORDS_TXT'=>'Only 500 records are shown below. Please export to see all Records', - 'LBL_ADD_RECORD' => 'Add Report' , - 'LBL_ADD_FOLDER' => 'Add Folder' , - 'LBL_REPORT_DELETE_DENIED' => 'Permission denied to delete the Report', - 'LBL_FOLDER_CAN_NOT_BE_DELETED' => 'This folder can not be deleted', - 'LBL_REPORTS_LIST' => 'Reports list' , - 'LBL_REPORT_NAME' => 'Nome Relatório' , - 'LBL_REPORT_FOLDER' => 'Pasta Relatório' , - 'LBL_DESCRIPTION' => 'Descrição' , - 'PRIMARY_MODULE' => 'Primary Module' , - 'LBL_SELECT_RELATED_MODULES' => 'Select Related Modules' , - 'LBL_MAX' => 'MAX' , - 'LBL_NEXT' => 'Próximo' , - 'LBL_REPORTS' => 'Reports List' , - 'LBL_GROUP_BY' => 'Group By' , - 'LBL_SORT_ORDER' => 'Sort Order' , - 'LBL_ASCENDING' => 'Ascendente' , - 'LBL_DESCENDING' => 'Descendente' , - 'LBL_CALCULATIONS' => 'Cálculos' , - 'LBL_COLUMNS' => 'Colunas' , - 'LBL_SUM_VALUE' => 'Soma' , - 'LBL_AVERAGE' => 'Média' , - 'LBL_LOWEST_VALUE' => 'Valor MÃnimo' , - 'LBL_HIGHEST_VALUE' => 'Highest Value' , - 'LBL_GENERATE_REPORT' => 'Salve & Gerar relatório' , - 'LBL_SUM' => 'SOMA' , - 'LBL_AVG' => 'MED' , - 'LBL_MIN' => 'MIN' , - 'LBL_FIELD_NAMES' => 'Nomes Campos' , - 'LBL_REPORT_CSV' => 'Export CSV' , - 'LBL_VIEW_DETAILS' => 'Detalhes Visualização' , - 'LBL_GENERATE_NOW' => 'Generate now' , // TODO: Review - 'Report Name' => 'Nome Relatório' , - 'Account and Contact Reports' => 'Relatórios de Organizações e Contatos', - 'Lead Reports' => 'Relatórios de Leads' , - 'Potential Reports' => 'Relatórios de Oportunidades', - 'Activity Reports' => 'Relatórios de Atividades' , - 'HelpDesk Reports' => 'Relatórios de Tickets' , - 'Product Reports' => 'Relatórios de Produtos' , - 'Quote Reports' => 'Relatórios de Cotação' , - 'PurchaseOrder Reports' => 'Relatórios de Pedidos de Compras', - 'SalesOrder Reports' => 'Relatórios de Pedidos de Vendas', - 'Invoice Reports' => 'Relatórios de Faturas' , - 'Campaign Reports' => 'Relatórios de Campanhas' , - 'Contacts by Accounts' => 'Contatos por Organizações' , - 'Contacts without Accounts' => 'Contatos sem Organizações' , - 'Contacts by Potentials' => 'Contatos por Oportunidades' , - 'Contacts related to Accounts' => 'Contatos relacionados à s Organizações', - 'Contacts not related to Accounts' => 'Contatos não relacionados à s Organizações', - 'Contacts related to Potentials' => 'Contatos relacionados à s Oportunidades', - 'Lead by Source' => 'Lead por Fonte' , - 'Lead Status Report' => 'Relatório Status do Lead' , - 'Potential Pipeline' => 'Oportunidade Funil de Vendas', - 'Closed Potentials' => 'Oportunidade Fechada' , - 'Potential that have Won' => 'Oportunidade vitoriosa' , - 'Tickets by Products' => 'Tickets por Produtos' , - 'Tickets by Priority' => 'Tickets por Prioridade' , - 'Open Tickets' => 'Tickets Abertos' , - 'Tickets related to Products' => 'Tickets relacionados aos Produtos', - 'Tickets that are Open' => 'Tickets que estão Abertos' , - 'Product Details' => 'Detalhes do Produto' , - 'Products by Contacts' => 'Produtos por Contatos' , - 'Product Detailed Report' => 'Relatório Detalhado do Produto', - 'Products related to Contacts' => 'Produtos relacionados aos Contatos', - 'Open Quotes' => 'Cotações Abertas' , - 'Quotes Detailed Report' => 'Relatório Detalhado das Cotações', - 'Quotes that are Open' => 'Cotações que estão Abertas', - 'PurchaseOrder by Contacts' => 'Pedido Compra por Contatos' , + 'Reports'=>'Reports', + 'SINGLE_Reports' => 'Relatórios', + + // Basic Strings + 'LBL_FOLDER_NOT_EMPTY' => 'A pasta não está vazia', + 'LBL_MOVE_REPORT' => 'Mover Relatórios' , + 'LBL_CUSTOMIZE' => 'Customizar', + 'LBL_REPORT_EXPORT_EXCEL' => 'Exportar para Excel', + 'LBL_REPORT_PRINT' => 'Imprimir', + 'LBL_CREATING_REPORT' => 'Criando Relatório', + 'LBL_EDITING_REPORT' => 'Editando Relatório', + 'LBL_REPORT_DETAILS' => 'Detalhes Relatório' , + 'LBL_SELECT_COLUMNS' => 'Selecionar Colunas', + 'LBL_FILTERS' => 'Filtros' , + 'LBL_FOLDERS' => 'Pastas' , + 'LBL_ADD_NEW_FOLDER' => 'Adicionar Novo Grupo', + 'LBL_FOLDER_NAME' => 'Nome Pasta' , + 'LBL_FOLDER_DESCRIPTION' => 'Descrição Pasta', + 'LBL_WRITE_YOUR_DESCRIPTION_HERE' => 'Digitar Descrição' , + 'LBL_DUPLICATES_EXIST' => 'Duplicado', + 'LBL_FOLDERS_LIST' => 'Lista de Pastas', + 'LBL_DENIED_REPORTS' => 'Relatórios Negados', + 'LBL_NO_OF_RECORDS' => 'Total registros:', + 'LBL_MORE_RECORDS_TXT'=>'Somente 500 registros são exibidos abaixo. Por favor, exporte para visualizar todos os Registros', + 'LBL_SCHEDULE_REPORTS' => 'Agendar Relatórios', + 'LBL_AT_TIME' => 'Hora', + + 'LBL_DAILY' => 'Diariamente', + 'LBL_WEEKLY' => 'Semanalmente', + 'LBL_MONTHLY_BY_DATE' => 'Mensal por Data', + 'LBL_YEARLY' => 'Anualmente', + 'LBL_SPECIFIC_DATE' => 'Data EspecÃfica', + 'LBL_CHOOSE_DATE' => 'Escolher Data', + 'LBL_ON_THESE_DAYS' => 'Nesses dias', + 'LBL_SELECT_MONTH_AND_DAY' => 'Selecionar Mês e Data', + 'LBL_SELECTED_DATES' => 'Datas Selecionadas', + 'LBL_EXCEEDING_MAXIMUM_LIMIT' => 'Limite máximo excedido', + 'LBL_NEXT_TRIGGER_TIME' => 'Próxima gatilho iniciado', + 'LBL_RUN_REPORT' =>'Executar Relatório', + 'LBL_SELECT_RECIEPIENTS' => 'Selecionar Destinatários', + 'LBL_SPECIFIC_EMAIL_ADDRESS' => 'Enviar para e-mail especÃfico', + 'LBL_SAME_LEVEL_ROLES' => 'Mesmo NÃvel da Função', + 'LBL_SUBORDINATE_ROLES' => 'Funções Subordinadas', + //ListView Actions + 'LBL_ADD_RECORD' => 'Adicionar Relatório', + 'LBL_ADD_FOLDER' => 'Adicionar Pasta', + 'LBL_REPORT_DELETE_DENIED' => 'Permissão para apagar Relatório negada', + + //Folder Actions + 'LBL_FOLDER_NOT_EMPTY' => 'A pasta não está vazia', + 'LBL_FOLDER_CAN_NOT_BE_DELETED' => 'Esta Pasta não pode ser apagada', + + //Mass Actions + 'LBL_REPORTS_LIST' => 'Lista de Relatórios', + + //Step1 Strings + 'LBL_REPORT_NAME' => 'Nome Relatório' , + 'LBL_REPORT_FOLDER' => 'Pasta Relatório', + 'LBL_DESCRIPTION' => 'Descrição' , + 'PRIMARY_MODULE' => 'Módulo Principal', + 'LBL_SELECT_RELATED_MODULES' => 'Selecionar Módulos Relacionados', + 'LBL_MAX' => 'Max', + 'LBL_NEXT' => 'Próximo', + 'LBL_REPORTS' => 'Lista Relatórios', + 'LBL_SELECT_RELATED_MODULES' => 'Selecionar Módulos Relacionados', + + //Step2 Strings + 'LBL_GROUP_BY' => 'Agrupar por', + 'LBL_SORT_ORDER' => 'Ordem', + 'LBL_ASCENDING' => 'Ascendente', + 'LBL_DESCENDING' => 'Descendente' , + 'LBL_CALCULATIONS' => 'Cálculos' , + 'LBL_COLUMNS' => 'Colunas' , + 'LBL_SUM_VALUE' => 'Soma', + 'LBL_AVERAGE' => 'Média', + 'LBL_LOWEST_VALUE' => 'Valor MÃnimo' , + 'LBL_HIGHEST_VALUE'=> 'Valor Máximo' , + + //Step3 Strings + 'LBL_GENERATE_REPORT'=> 'Gerar Relatório' , + + //DetailView + 'LBL_SUM' => 'SOMA', + 'LBL_AVG' => 'MED', + 'LBL_MIN' => 'MIN' , + 'LBL_MAX' => 'Max', + 'LBL_FIELD_NAMES' => 'Nomes Campos', + 'LBL_REPORT_CSV' => 'Exportar CSV', + 'LBL_VIEW_DETAILS' => 'Detalhes Visualização' , + 'LBL_GENERATE_NOW' => 'Gerar agora', + + //List View Headers + 'Report Name' => 'Nome Relatório' , + + //Default Folders Names, Report Names and Description + 'Account and Contact Reports'=> 'Relatórios de Organizações e Contatos', + 'Lead Reports'=> 'Relatórios de Leads', + 'Potential Reports'=> 'Relatórios de Oportunidades', + 'Activity Reports' => 'Relatórios de Atividades' , + 'HelpDesk Reports' => 'Relatórios de Chamados', + 'Product Reports'=> 'Relatórios de Produtos' , + 'Quote Reports'=> 'Relatórios de Cotação', + 'PurchaseOrder Reports'=> 'Relatórios de Pedidos de Compras', + 'SalesOrder Reports' => 'Relatórios de Pedidos de Vendas', //Added for SO + 'Invoice Reports'=> 'Relatórios de Faturas', + 'Campaign Reports' => 'Relatórios de Campanhas', //Added for Campaigns + 'Contacts by Accounts' => 'Contatos por Organizações' , + 'Contacts without Accounts'=> 'Contatos sem Organizações' , + 'Contacts by Potentials' => 'Contatos por Oportunidades', + 'Contacts related to Accounts' => 'Contatos relacionados à s Organizações', + 'Contacts not related to Accounts' => 'Contatos não relacionados à s Organizações', + 'Contacts related to Potentials' => 'Contatos relacionados à s Oportunidades', + 'Lead by Source' => 'Lead por Fonte', + 'Lead Status Report' => 'Relatório Status do Lead' , + 'Potential Pipeline' => 'Oportunidade Funil de Vendas', + 'Closed Potentials'=> 'Oportunidade Fechada', + 'Potential that have Won'=> 'Oportunidade vitoriosa', + 'Tickets by Products'=> 'Chamados por Produtos', + 'Tickets by Priority'=> 'Chamados por Prioridade', + 'Open Tickets' => 'Chamados Abertos' , + 'Tickets related to Products'=> 'Chamados relacionados aos Produtos', + 'Tickets that are Open'=> 'Chamados Abertos', + 'Product Details'=> 'Detalhes do Produto' , + 'Products by Contacts' => 'Produtos por Contatos' , + 'Product Detailed Report'=> 'Relatório Detalhado do Produto', + 'Products related to Contacts' => 'Produtos relacionados aos Contatos', + 'Open Quotes'=> 'Cotações Abertas', + 'Quotes Detailed Report' => 'Relatório Detalhado das Cotações', + 'Quotes that are Open' => 'Cotações Abertas', + 'PurchaseOrder by Contacts'=> 'Pedido Compra por Contatos', 'PurchaseOrder Detailed Report' => 'Relatório Detalhado dos Pedidos Compras', - 'PurchaseOrder related to Contacts' => 'Pedidos Compras relacionados aos Contatos', - 'Invoice Detailed Report' => 'Relatório Detalhado da Fatura', - 'Last Month Activities' => 'Atividades do Último Mês' , - 'This Month Activities' => 'Atividades deste Mês' , - 'Campaign Expectations and Actuals' => 'Campanha - Previsto/Realizado', - 'SalesOrder Detailed Report' => 'Relatório Detalhado Pedido de Vendas', - 'Email Reports' => 'Email Reports' , - 'Contacts Email Report' => 'Contacts Email Report' , - 'Accounts Email Report' => 'Organizations Email Report' , - 'Leads Email Report' => 'Leads Email Report' , - 'Vendors Email Report' => 'Vendors Email Report' , - 'Emails sent to Contacts' => 'Emails sent to Contacts' , - 'Emails sent to Organizations' => 'Emails sent to Organizations', - 'Emails sent to Leads' => 'Emails sent to Leads' , - 'Emails sent to Vendors' => 'Emails sent to Vendors' , - 'LBL_PRINT_REPORT' => 'Print Report' , // TODO: Review - 'LBL_RECORDS' => 'Records' , // TODO: Review - 'LBL_LIMIT_EXCEEDED' => 'Only 1000 + records are displayed. Use CSV or Excel Export to see all the records', // TODO: Review - 'LBL_TOP' => 'Top' , // TODO: Review - 'LBL_ALL_REPORTS' => 'All Reports' , // TODO: Review - 'LBL_CALCULATION_CONVERSION_MESSAGE' => 'Cálculo são baseados na minha Preferências moeda do seu CRM', // TODO: Review - - //Schedule Reports - 'LBL_CREATING_REPORT' => 'Criando Relatório', - 'LBL_EDITING_REPORT' => 'Edição Relatório', - 'LBL_SCHEDULE_REPORTS' => 'Relatórios Agenda', - 'LBL_AT_TIME' => 'No Tempo', - 'LBL_DAILY' => 'Diariamente', - 'LBL_WEEKLY' => 'Semanal', - 'LBL_MONTHLY_BY_DATE' => 'Mensal por Data', - 'LBL_YEARLY' => 'Anual', - 'LBL_SPECIFIC_DATE' => 'Em Data EspecÃfica', - 'LBL_CHOOSE_DATE' => 'Escolha Data', - 'LBL_ON_THESE_DAYS' => 'Nesses dias', - 'LBL_SELECT_MONTH_AND_DAY' => 'Selecione o mês e data', - 'LBL_SELECTED_DATES' => 'Datas selecionados', - 'LBL_EXCEEDING_MAXIMUM_LIMIT' => 'Limite máximo excedido', - 'LBL_NEXT_TRIGGER_TIME' => 'Tempo de disparo em Avançar na', - 'LBL_RUN_REPORT' => 'Executar Relatório', - 'LBL_SELECT_RECIEPIENTS' => 'Selecionar Destinatários', - 'LBL_SPECIFIC_EMAIL_ADDRESS' => 'Enviar para o e-mail especÃfico', + 'PurchaseOrder related to Contacts' => 'Pedidos Compras relacionados aos Contatos', + 'Invoice Detailed Report'=> 'Relatório Detalhado da Fatura', + 'Last Month Activities'=> 'Atividades do Último Mês', + 'This Month Activities'=> 'Atividades deste Mês' , + 'Campaign Expectations and Actuals' => 'Campanha - Previsto/Realizado', //Added for Campaigns + 'SalesOrder Detailed Report' => 'Relatório Detalhado Pedido de Vendas',//Added for SO + + 'Email Reports'=> 'Relatórios Emails' , + 'Contacts Email Report'=> 'Relatório Emails Contatos' , + 'Accounts Email Report'=> 'Relatório Emails Organizações', + 'Leads Email Report' => 'Relatório Emails Leads', + 'Vendors Email Report' => 'Relatório Emails Fornecedores', + + 'Emails sent to Contacts'=> 'Emails enviados para Contatos' , + 'Emails sent to Organizations' => 'Emails enviados para Organizações', + 'Emails sent to Leads' => 'Emails enviados para Leads', + 'Emails sent to Vendors' => 'Emails enviados para Fornecedores', + + 'LBL_PRINT_REPORT' => 'Imprimir Relatório', + 'LBL_RECORDS' => 'Registros', + 'LBL_LIMIT_EXCEEDED' => 'São exibidos somente até 1.000 registros. Utilize Exportar para CSV ou Excel para visualizar todos os registros', + 'LBL_TOP' => 'Topo', + 'LBL_ALL_REPORTS' => 'Todos os Relatórios', + 'LBL_CALCULATION_CONVERSION_MESSAGE' => 'Os cálculos são baseados na moeda padrão do seu CRM', //Summary/Pivot Reports - 'LBL_CREATING_PIVOT_REPORT' => 'Criar Pivot Relatório', - 'LBL_EDITING_PIVOT_REPORT' => 'Editar relatório Pivot', - 'LBL_SELECT_PIVOT_FIELDS' => 'Selecione Pivot Campos', - 'LBL_SELECT_ROWS' => 'Selecione Linhas', - 'LBL_SELECT_DATA_FIELDS' => 'Selecione campos de dados', - 'LBL_ADD_ROWS' => 'Adicionar linhas', - 'LBL_ADD_COLUMNS' => 'Adicionar colunas', - 'LBL_ADD_DATA_FIELDS' => 'Adicionar campos de dados', - 'LBL_PIVOT_FIELDS' => 'Selecionado Pivot Campos', - 'LBL_RECORD_COUNT' => 'Contagem de registros', - 'LBL_SELECT_PIVOT_FIELDS_WARNING' => 'Aviso: Por favor seleccione pelo menos um campo de linha, campo de coluna e no campo de dados', - 'LBL_PIVOT_DATA_FIELDS_WARNING' => 'Aviso: Na coluna de dados - funções de agregação (soma, média, mÃnimo e máximo) não deve repetir.', - 'LBL_MODIFY_CONDITIONS' => 'Modificar as condições', - 'LBL_PIVOT_PREVIEW_EX' => 'Pivot Relatório Preview (Exemplo)', + 'LBL_CREATING_PIVOT_REPORT' => 'Criar Relatório Pivot', + 'LBL_EDITING_PIVOT_REPORT' => 'Editar Relatório Pivot', + 'LBL_SELECT_PIVOT_FIELDS' => 'Selecionar Campos Pivot', + 'LBL_SELECT_ROWS' => 'Selecionar Linhas', + 'LBL_SELECT_DATA_FIELDS' => 'Selecionar Campos de Dados', + 'LBL_ADD_ROWS' => 'Adicionar Linhas', + 'LBL_ADD_COLUMNS' => 'Adicionar Colunas', + 'LBL_ADD_DATA_FIELDS' => 'Adicionar Campos de Dados', + 'LBL_PIVOT_FIELDS' => 'Campos Pivot Selecionado', + 'LBL_RECORD_COUNT' => 'Contagem Registros', + 'LBL_SELECT_PIVOT_FIELDS_WARNING' => 'Atenção: Por favor, selecione ao menos um campo Linha, Coluna e Dados.', + 'LBL_PIVOT_DATA_FIELDS_WARNING' => 'Atenção: Na Coluna Dados - funções de agregação (soma, média, min e max) não devem se repetir.', + 'LBL_MODIFY_CONDITIONS' => 'Modificar Condições', + 'LBL_PIVOT_PREVIEW_EX' => 'Visualizar Relatório Pivot (Examplo)', //charts labels - 'LBL_SELECT_CHART_TYPE' => 'Selecione o tipo de gráfico', - 'LBL_CLICK_THROUGH_NOT_AVAILABLE' => 'Clique por não disponÃveis como você selecionou mais de um módulo', - 'LBL_TOTAL_SUM_OF' => 'Soma total de', - 'LBL_AVG_OF' => 'Média de', - 'LBL_MIN_OF' => 'MÃnimo de', - 'LBL_MAX_OF' => 'Máximo de', - 'LBL_RECORD_COUNT' => 'Contagem de registros', - 'LBL_PIE_CHART' => 'Pie Chart', - 'LBL_VERTICAL_BAR_CHART' => 'Bar Vertical Chart', - 'LBL_HORIZONTAL_BAR_CHART' => 'Bar Horizontal Chart', - 'LBL_LINE_CHART' => 'Gráfico de Linhas', - 'LBL_SELECT_CHART' => 'Seleccione Carta', - 'LBL_CREATING_CHART_REPORT' => 'Criação de relatório de gráfico', - 'LBL_EDITING_CHART_REPORT' => 'Relatório Gráfico Edição', + 'LBL_SELECT_CHART_TYPE' => 'Selecionar tipo de Gráfico', + 'LBL_CLICK_THROUGH_NOT_AVAILABLE' => 'Clique não disponÃvel pois você seleciou mais de um módulo', + 'LBL_TOTAL_SUM_OF' => 'Soma Total de %s', + 'LBL_AVG_OF' => 'Média de %s', + 'LBL_MIN_OF' => 'MÃnimo de %s', + 'LBL_MAX_OF' => 'Máximo de %s', + 'LBL_RECORD_COUNT' => 'Contar Registros', + 'LBL_PIE_CHART' => 'Gráfico de Pizza', + 'LBL_VERTICAL_BAR_CHART' => 'Gráfico de Barras Vertical', + 'LBL_HORIZONTAL_BAR_CHART' => 'Gráfico de Barras Horizontal', + 'LBL_LINE_CHART' => 'Gráfico de Linha', + 'LBL_SELECT_CHART' => 'Selecionar Gráfico', + 'LBL_CREATING_CHART_REPORT' => 'Criando Gráfico de Relatório', + 'LBL_EDITING_CHART_REPORT' => 'Editando Gráfico de Relatório', 'LBL_GENERATE_CHART' => 'Gerar Gráfico', - 'LBL_SELECT_GROUP_BY_FIELD' => 'Selecione Grupo de Campo', - 'LBL_SELECT_DATA_FIELD' => 'Selecione campos de dados', - 'LBL_MODIFY_CONDITION' => 'Modificar as condições', - 'LBL_PLEASE_SELECT_ATLEAST_ONE_GROUP_FIELD_AND_DATA_FIELD' => 'Selecione pelo menos um campo groupby e um campo de dados.', - 'LBL_FOR_BAR_GRAPH_AND_LINE_GRAPH_SELECT_3_MAX_DATA_FIELDS' => 'Para Bar e linha do gráfico, você pode selecionar no máximo, 3 campos de dados.', - 'LBL_DETAIL_REPORT' => 'Relatório detalhado', - 'LBL_PIVOT_REPORT' => 'Pivot Relatório', - 'LBL_CHARTS' => 'Gráficos', + 'LBL_SELECT_GROUP_BY_FIELD' => 'Selecionar Grupo de Campo', + 'LBL_SELECT_DATA_FIELD' => 'Selecionar Campo de Dados', + 'LBL_MODIFY_CONDITION' => 'Modificar Condições', + 'LBL_PLEASE_SELECT_ATLEAST_ONE_GROUP_FIELD_AND_DATA_FIELD' => 'Por favor, selecione pelo menos um Grupo de Campos e um campo de Dados.', + 'LBL_FOR_BAR_GRAPH_AND_LINE_GRAPH_SELECT_3_MAX_DATA_FIELDS' => 'Para gráficos de Barras e Linha você pode selecionar no máximo de campos de Dados.', + 'LBL_DETAIL_REPORT' => 'Criar Relatório', + 'LBL_PIVOT_REPORT' => 'Relatório Pivot', + 'LBL_CHARTS' => 'Criar Gráfico', //Schedule Reports - Mail Content - 'LBL_AUTO_GENERATED_REPORT_EMAIL' => 'Este é um e-mail gerado automaticamente enviadas em nome de um relatório agendado.', - 'LBL_PIN_CHART_TO_DASHBOARD' => 'Pin Chart para o Dashboard', - 'LBL_FILE_FORMAT' => 'Formato de arquivo', + 'LBL_AUTO_GENERATED_REPORT_EMAIL' => 'Este é um email gerado automaticamente e enviado em função de um relatório agendado.', + 'LBL_PIN_CHART_TO_DASHBOARD' => 'Fixar Gráfico no Painel', + 'LBL_FILE_FORMAT' => 'Formato Arquivo', - 'Report Type' => 'Tipo de relatório', + 'Report Type' => 'Tipo Relatório', 'tabular' => 'Detalhe', - 'summary' => 'Detalhe', - 'pivot' => 'Articulação', + 'summary' => 'Tabular', + 'pivot' => 'Pivot', 'chart' => 'Gráfico', - 'LBL_REPORTS_MOVED_SUCCESSFULLY'=>'Relatórios movido com êxito.', - 'LBL_SAME_SOURCE_AND_TARGET_FOLDER'=>'Pasta de destino é o mesmo que pasta de origem.', - 'LBL_SEARCH_FOR_FOLDERS' => 'Procurar por pastas', - 'LBL_CHART_REPORT' => 'Relatório Gráfico', - 'LBL_UNPIN_CHART_FROM_DASHBOARD' => 'Gráfico Desafixar do dashboard', - - 'LBL_SAME_LEVEL_ROLES' => 'Mesmo NÃvel De Funções', - 'LBL_SUBORDINATE_ROLES' => 'Cargos Subordinados', - 'LBL_SHARE_REPORT' => 'Compartilhar Relatório', - 'LBL_SHARED_REPORTS' => 'Contou-Me', - 'LBL_PINNED' => 'Preso', - 'LBL_UNPINNED' => 'Desafixado', - - - 'LBL_REPORTS_DELETED_SUCCESSFULLY' => 'Relatórios ExcluÃdo Com Sucesso', + 'LBL_REPORTS_MOVED_SUCCESSFULLY'=>'Os Relatórios foram Movidos com Sucesso.', + 'LBL_SAME_SOURCE_AND_TARGET_FOLDER'=>'A Pasta Alvo é a mesma que a Pasta Origem.', + 'LBL_SHARE_REPORT' => 'Compartilhar Relatório', + 'LBL_SHARED_REPORTS' => 'Compartilhou comigo', + 'LBL_PINNED' => 'Fixado', + 'LBL_UNPINNED' => 'Desafixado', + 'LBL_SEARCH_FOR_FOLDERS' => 'Pesquisar por pastas', + 'LBL_CHART_REPORT' => 'Relatório Gráfico', + 'LBL_UNPIN_CHART_FROM_DASHBOARD' => 'Desafixar Gráfico do Painel', + 'LBL_REPORTS_DELETED_SUCCESSFULLY' => 'Relatórios Apagados com sucesso', ); $jsLanguageStrings = array( - 'JS_DUPLICATE_RECORD' => 'Duplicate Report' , // TODO: Review - 'JS_CALCULATION_LINE_ITEM_FIELDS_SELECTION_LIMITATION' => 'Limitation: Line Item fields(List Price, Discount & Quantity) can only be used when other calculation fields are not selected.', // TODO: Review - 'JS_CHART_PINNED_TO_DASHBOARD' => 'Gráfico Fixado para o Dashboard', - 'JS_CHART_ALREADY_PINNED_TO_DASHBOARD' => 'Gráfico Já Fixado para o Dashboard', - 'JS_MOVE_REPORTS'=>'Mova Relatórios', - 'JS_SCHEDULED_DATE_TIME_ERROR' => 'Data e hora agendadas deve ser maior que a data e hora atuais', - 'JSLBL_PIN_CHART_TO_DASHBOARD' => 'Pin Gráfico para o Dashboard', - 'JSLBL_UNPIN_CHART_FROM_DASHBOARD' => 'Gráfico Desafixar do dashboard', - 'JS_CHART_REMOVED_FROM_DASHBOARD' => 'Gráfico removido do painel de instrumentos', - - 'JS_NO_CHART_DATA_AVAILABLE' => 'Dados não disponÃveis, por favor, verifique os campos selecionados', - -); \ No newline at end of file + 'JS_DUPLICATE_RECORD' => 'Duplicar Relatório', + 'JS_CALCULATION_LINE_ITEM_FIELDS_SELECTION_LIMITATION' => 'Limitação: os campos do Item da linha (Lista de Preço, Desconto & Quantidade) somente podem ser utilizados quando outros campos de cálculo não forem selecionados.', + 'JS_NO_CHART_DATA_AVAILABLE' => 'Dados não disponÃveis, por favor, verifique os campos selecionados', + 'JS_CHART_PINNED_TO_DASHBOARD' => 'Gráfico Fixado no Painel', + 'JS_CHART_ALREADY_PINNED_TO_DASHBOARD' => 'O Gráfico já está Fixado no Painel', + 'JS_MOVE_REPORTS'=>'Mover Relatórios', + 'JS_SCHEDULED_DATE_TIME_ERROR' => 'Data e Hora agendada deverá ser maior que a Data e Hora atual', + 'JSLBL_PIN_CHART_TO_DASHBOARD' => 'Fixar Gráfico no Painel', + 'JSLBL_UNPIN_CHART_FROM_DASHBOARD' => 'Desafixar Gráfico do Painel', + 'JS_CHART_REMOVED_FROM_DASHBOARD' => 'Remover Gráfico do Painel', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Rss.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Rss.php index 54e7ee6d56baf16a50e6485d29c081873b3c2834..2d9dd62a7de5acf6e586e902504285abdf43dbe1 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Rss.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Rss.php @@ -4,31 +4,28 @@ * ("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. + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br ************************************************************************************/ $languageStrings = Array( 'Rss'=>'Rss', - 'LBL_RSS_FEED_SOURCES' => 'Fontes RSS feed', - 'LBL_ADD_FEED_SOURCE' => 'Adicionar feed Fonte', - 'LBL_FEEDS_LIST_FROM' => 'Feeds Lista De', - 'LBL_SET_AS_DEFAULT' => 'Definir como padrão', - 'LBL_SENDER' => 'transmissor', - 'LBL_FEED_SOURCE' => 'Fonte de alimentação', - 'LBL_ENTER_FEED_SOURCE' => 'Digite alimentação Fonte', - 'SINGLE_Rss' => 'alimentação de Rss', + 'LBL_RSS_FEED_SOURCES' => 'Fontes Feeds RSS', + 'LBL_ADD_FEED_SOURCE' => 'Adicionar Fonte Feed', + 'LBL_FEEDS_LIST_FROM' => 'Lista Feed de', + 'LBL_SET_AS_DEFAULT' => 'Configurar como Padrão', + 'LBL_SENDER' => 'Remetente', + 'LBL_FEED_SOURCE' => 'Fonte Feed', + 'LBL_ENTER_FEED_SOURCE' => 'Digitar Fonte Feed', + 'SINGLE_Rss' => 'Feed RSS', ); $jsLanguageStrings = array( - 'JS_RSS_SUCCESSFULLY_SAVED' => 'Rss salvos com sucesso', - 'JS_INVALID_RSS_URL' => 'Inválido Rss Url', - 'JS_RSS_MADE_AS_DEFAULT' => 'Rss Feitos como padrão', - - - 'JS_NO_RECORDS' => 'Não Há Registros', + 'JS_RSS_SUCCESSFULLY_SAVED' => 'RSS salvo com sucesso', + 'JS_INVALID_RSS_URL' => 'URL do RSS Inválida', + 'JS_RSS_MADE_AS_DEFAULT' => 'Definir RSS como Padrão', + 'JS_NO_RECORDS' => 'Nenhum Registro', ); - -?> \ No newline at end of file +?> diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/SMSNotifier.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/SMSNotifier.php index 493cb33c94d16000419a628d8997d102872eb1ed..608991f6474d5a4d4668b894cc6767650b7f47e0 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/SMSNotifier.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/SMSNotifier.php @@ -2,22 +2,28 @@ /*+********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source + * 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. + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br ************************************************************************************/ $languageStrings = array( - 'LBL_SEND_SMS_TO_SELECTED_NUMBERS' => 'Send SMS to the selected numbers', - 'LBL_STEP_1' => 'Step 1' , - 'LBL_STEP_2' => 'Step 2' , - 'LBL_SELECT_THE_PHONE_NUMBER_FIELDS_TO_SEND' => 'Select the phone number fields to send', - 'LBL_TYPE_THE_MESSAGE' => 'Type the message' , - 'LBL_WRITE_YOUR_MESSAGE_HERE' => 'write your message here' , - 'LBL_ADD_MORE_FIELDS' => 'Add more fields' , - 'LBL_SERVER_CONFIG' => 'Configuração Servidor' , - 'LBL_CHECK_STATUS' => 'Checar status' , - 'message' => 'Mensagem' , - 'LBL_SMSNOTIFIER_INFORMATION' => 'Informação SMS' , - 'SINGLE_SMSNotifier' => 'SMS Notifier' , // TODO: Review -); \ No newline at end of file + // Basic Strings + 'SMSNotifier'=>'Notificador SMS', + 'LBL_SEND_SMS_TO_SELECTED_NUMBERS' => 'Enviar SMS para os números selecionados', + 'LBL_STEP_1' => 'Passo 1', + 'LBL_STEP_2' => 'Passo 2', + 'LBL_SELECT_THE_PHONE_NUMBER_FIELDS_TO_SEND' => 'Selecione o número de telefone para enviar', + 'LBL_TYPE_THE_MESSAGE' => 'Digite a mensagem', + 'LBL_WRITE_YOUR_MESSAGE_HERE'=> 'escreva sua mensagem aqui' , + 'LBL_ADD_MORE_FIELDS'=> 'Adicionar mais campos' , + 'LBL_SERVER_CONFIG' => 'Configuração do Servidor' , + + //DetailView Actions + 'LBL_CHECK_STATUS' => 'Checar status' , + 'message' => 'Mensagem', + + //Blocks + 'LBL_SMSNOTIFIER_INFORMATION'=> 'Informação SMS', + 'SINGLE_SMSNotifier' => 'Notificador SMS', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/SalesOrder.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/SalesOrder.php index 1e2542842dd5ce0fd7e9553608fdf515b9933302..8d669e977e146c01a2ad1069c23dc923d6b0e66a 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/SalesOrder.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/SalesOrder.php @@ -1,43 +1,57 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'SalesOrder' => 'Pedidos de Vendas' , - 'SINGLE_SalesOrder' => 'Pedidos de Venda' , - 'LBL_EXPORT_TO_PDF' => 'Exportar para PDF' , - 'LBL_SEND_MAIL_PDF' => 'Send Email with PDF' , // TODO: Review - 'LBL_ADD_RECORD' => 'Add Sales Order' , - 'LBL_RECORDS_LIST' => 'Listar Pedido Vendas' , - 'LBL_SO_INFORMATION' => 'Informação Pedido Venda' , - 'SalesOrder No' => 'No. Pedido Vendas' , - 'Quote Name' => 'Nome Cotação' , - 'Customer No' => 'Cód. Cliente' , - 'Requisition No' => 'No. Requisição' , - 'Tracking Number' => 'No. Rastreamento' , - 'Sales Commission' => 'Comissão Vendas' , - 'Purchase Order' => 'Pedido Compra' , - 'Vendor Terms' => 'Condições Fornecedor' , - 'Pending' => 'Pendente' , - 'Enable Recurring' => 'Habilitar Recorrência' , - 'Frequency' => 'Frequencia' , - 'Start Period' => 'InÃcio PerÃodo' , - 'End Period' => 'Final PerÃodo' , - 'Payment Duration' => 'Duração Pagamento' , - 'Invoice Status' => 'Status Fatura' , - 'Sub Total' => 'Sub-Total' , - 'AutoCreated' => 'Auto Criado' , - 'Sent' => 'Enviado' , - 'Credit Invoice' => 'Fatura Crédito' , - 'Paid' => 'Pago' , + 'SalesOrder' => 'Pedidos de Vendas', + //DetailView Actions + 'SINGLE_SalesOrder' => 'Pedido de Vendas', + 'LBL_EXPORT_TO_PDF' => 'Exportar para PDF', + 'LBL_SEND_MAIL_PDF' => 'Enviar Email com PDF', - 'LBL_THIS' => 'Este', - 'LBL_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_OR_REPLACE_THIS_ITEM' => 'é excluÃdo do sistema.por favor, remover ou substituir este item', - 'LBL_THIS_LINE_ITEM_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_THIS_LINE_ITEM' => 'Este item de linha é excluÃda do sistema,por favor, remova esta linha de itens', + //Basic strings + 'LBL_ADD_RECORD' => 'Adicionar Pedido de Vendas', + 'LBL_RECORDS_LIST' => 'Lista Pedido de Vendas', -); \ No newline at end of file + // Blocks + 'LBL_SO_INFORMATION' => 'Detalhes Pedido de Vendas', + + //Field labels + 'SalesOrder No'=>'No. Pedido de Vendas', + 'Quote Name'=>'Nome Cotação', + 'Customer No' => 'Cód. Cliente', + 'Requisition No'=>'No. Requisição', + 'Tracking Number'=>'Número Rastreamento', + 'Sales Commission' => 'Comissão de Vendas', + 'Purchase Order'=>'Pedido de Compra', + 'Vendor Terms'=>'Condições Fornecedor', + 'Pending'=>'Pendente', + 'Enable Recurring' => 'Habilitar Recorrência', + 'Frequency' => 'Frequência', + 'Start Period' => 'InÃcio PerÃodo', + 'End Period' => 'Final PerÃodo', + 'Payment Duration' => 'Duração Pagamento', + 'Invoice Status' => 'Status Fatura', + + //Added for existing Picklist Entries + + 'Sub Total'=>'Sub Total', + 'AutoCreated'=>'Auto Criado', + 'Sent'=>'Enviado', + 'Credit Invoice'=>'Fatura de Crédito', + 'Paid'=>'Pago', + + //Translation for product not found + 'LBL_THIS' => 'Este', + 'LBL_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_OR_REPLACE_THIS_ITEM' => 'foi excluÃdo do Sistema. Por favor, remova ou substitua este item', + 'LBL_THIS_LINE_ITEM_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_THIS_LINE_ITEM' => 'Este item foi excluÃdo do Sistema. Por favor, remova este item da linha', +); + +$jsLanguageStrings = array( + 'JS_PLEASE_REMOVE_LINE_ITEM_THAT_IS_DELETED' => 'Por favor, remova da linha o item que foi apagado', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ServiceContracts.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ServiceContracts.php index 2192e5c1f17194c7e36959f401a39590b887ffcb..c553846099723acd8a5730e01d9c4d4253066c24 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ServiceContracts.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/ServiceContracts.php @@ -1,45 +1,48 @@ <?php -/*+********************************************************************************** + +/* +*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + * *********************************************************************************** */ $languageStrings = array( - 'ServiceContracts' => 'Contratos Serviços' , - 'SINGLE_ServiceContracts' => 'Contrato Serviço' , - 'LBL_ADD_RECORD' => 'Add Service Contract' , - 'LBL_RECORDS_LIST' => 'Service Contracts List' , - 'LBL_SERVICE_CONTRACT_INFORMATION' => 'Informação Contrato Serviço', - 'Contract No' => 'No. Contrato' , - 'Start Date' => 'Data InÃcio' , - 'End Date' => 'Data Término' , - 'Tracking Unit' => 'Unidade Rastreamento' , - 'Total Units' => 'Unidades Totais' , - 'Used Units' => 'Unidades Utilizadas' , - 'Progress' => 'Progresso (em %)' , - 'Planned Duration' => 'Duração Planejada (em Dias)', - 'Actual Duration' => 'Duração Atual (em Dias)' , - 'Type' => 'Tipo' , - 'Related to' => 'Relacionado a' , - 'Hours' => 'Horas', - 'Days' => 'Dias', - 'Incidents' => 'Incidentes', - 'Normal' => 'Normal', - 'Support' => 'Apoio', - 'Administrative' => 'Administrativo', - 'Undefined' => 'Indefinido', - 'In Planning' => 'Em planejamento', - 'On Hold' => 'Em Espera', - 'Complete' => 'Completo', - 'Archived' => 'Documentos arquivados', - 'Low' => 'Baixo', - 'High' => 'AltoAlto', - 'Services' => 'Serviços', - 'In Progress' => 'Em Andamento', - - 'Service Contracts' => 'Contratos De Serviço', - -); \ No newline at end of file + // Basic Strings + 'ServiceContracts' => 'Contratos', + 'Service Contracts' => 'Contratos', + 'SINGLE_ServiceContracts' => 'Contrato', + 'LBL_ADD_RECORD' => 'Adicionar Contrato', + 'LBL_RECORDS_LIST' => 'Lista de Contratos', + // Blocks + 'LBL_SERVICE_CONTRACT_INFORMATION' => 'Detalhes Contrato', + + //Field Labels + 'Contract No' => 'No. Contrato', + 'Start Date' => 'Data Inicial', + 'End Date' => 'Data Final', + 'Tracking Unit' => 'Unidade Rastreamento', + 'Total Units' => 'Unidades Totais', + 'Used Units' => 'Unidades Utilizadas', + 'Progress'=> 'Progresso', + 'Planned Duration' => 'Duração Planejada (em Dias)', + 'Actual Duration' => 'Duração Atual (em Dias)', + 'Type' => 'Tipo', + 'Related to' => 'Relacionado a', + 'Hours' => 'Horas', + 'Days' => 'Dias', + 'Incidents' => 'Incidentes', + 'Normal' => 'Normal', + 'Support' => 'Suporte', + 'Administrative' => 'Administrativo', + 'Undefined' => 'Indefinido', + 'In Planning' => 'Planejamento', + 'On Hold' => 'Aguardando', + 'Complete' => 'ConcluÃdo', + 'Archived' => 'Arquivado', + 'Low' => 'Baixa', + 'High' => 'Alta', + 'Services' => 'Serviços', + 'In Progress' => 'Em Andamento', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Services.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Services.php index 01cfa1eecdb5febe209e01e1272a61c89fcae6e4..ecd2ecf74e485640704d3ff1c9791910fd4188bf 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Services.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Services.php @@ -1,33 +1,44 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'Services' => 'Serviços' , - 'SINGLE_Services' => 'Serviço' , - 'LBL_ADD_RECORD' => 'Adicionar Serviço' , - 'LBL_RECORDS_LIST' => 'Services List' , - 'LBL_SERVICE_INFORMATION' => 'Informação Serviço' , - 'LBL_MORE_CURRENCIES' => 'outras moedas' , - 'LBL_PRICES' => 'Service Prices' , - 'LBL_PRICE' => 'Preço' , - 'LBL_RESET_PRICE' => 'Redefinir Preço' , - 'LBL_RESET' => 'Redefinir' , - 'LBL_ADD_TO_PRICEBOOKS' => 'Add to PriceBooks' , - 'Service Name' => 'Nome Serviço' , - 'Service Active' => 'Ativo' , - 'Service Category' => 'Categoria' , - 'Service No' => 'Cod. Serviço' , - 'Owner' => 'Proprietário' , - 'No of Units' => 'No. Unidades' , - 'Commission Rate' => 'Comissão(%)' , - 'Price' => 'Preço' , - 'Usage Unit' => 'Unidade Utilizada' , - 'Tax Class' => 'Categoria Imposto' , - 'Website' => 'Website' , -); \ No newline at end of file + // Basic Strings + 'Services' => 'Serviços', + 'SINGLE_Services' => 'Serviço', + 'LBL_ADD_RECORD' => 'Adicionar Serviço', + 'LBL_RECORDS_LIST' => 'Lista de Serviços', + + // Blocks + 'LBL_SERVICE_INFORMATION' => 'Detalhes Serviço', + + 'LBL_MORE_CURRENCIES' => 'mais moedas', + 'LBL_PRICES' => 'Preços Serviço', + 'LBL_PRICE' => 'Preço', + 'LBL_RESET_PRICE' => 'Redefinir Preço', + 'LBL_RESET' => 'Redefinir', + + //Services popup of pricebook + 'LBL_ADD_TO_PRICEBOOKS' => 'Adicionar na Lista de Preços', + + //Field Labels + 'Service Name'=>'Nome Serviço', + 'Service Active'=>'Ativo', + 'Service Category'=>'Categoria', + 'Service No'=>'No. Serviço', + 'Owner'=>'Proprietário', + 'No of Units'=>'Número de Unidades', + 'Commission Rate'=>'Percentual Comissão', + 'Price'=>'Preço', + 'Usage Unit'=>'Unidade Utilizada', + 'Tax Class'=>'Categoria Imposto', + 'Website'=>'Website', + + //Services popup of pricebook + 'LBL_ADD_TO_PRICEBOOKS' => 'Adicionar na Lista de Preços', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/CronTasks.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/CronTasks.php index 6ba11eeb0f83f0f1147758e547d98063a485511b..d720f25975d85d0c890ba71abf20a92eb9019b43 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/CronTasks.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/CronTasks.php @@ -1,23 +1,27 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * All Rights Reserved. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'CronTasks' => 'Scheduler' , // TODO: Review - 'Id' => 'Id' , // TODO: Review - 'Cron Job' => 'Cron Job' , // TODO: Review - 'Frequency' => 'Frequency' , // TODO: Review - 'Status' => 'Status' , // TODO: Review - 'Last Start' => 'Last scan started' , // TODO: Review - 'Last End' => 'Last scan ended' , // TODO: Review - 'Sequence' => 'Sequence' , // TODO: Review - 'LBL_COMPLETED' => 'Completed' , // TODO: Review - 'LBL_RUNNING' => 'Running' , // TODO: Review - 'LBL_ACTIVE' => 'Active' , // TODO: Review - 'LBL_INACTIVE' => 'In Active' , // TODO: Review -); \ No newline at end of file + 'CronTasks' => 'Agendador', + + //Basic Field Names + 'Id' => 'Id', + 'Cron Job' => 'Tarafe Cron', + 'Frequency' => 'Frequência', + 'Status' => 'Status', + 'Last Start' => 'Última verificação iniciada', + 'Last End' => 'Último verificação finalizada', + 'Sequence' => 'Sequência', + + //Actions + 'LBL_COMPLETED' => 'ConcluÃdo', + 'LBL_RUNNING' => 'Executando', + 'LBL_ACTIVE' => 'Ativo', + 'LBL_INACTIVE' => 'Inativo', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Currency.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Currency.php index 59bf1426289a4717295c70b54fe5abcd688ea332..dcb2219d5af17709dbe9e460447f8e21ba1975e9 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Currency.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Currency.php @@ -1,156 +1,160 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * All Rights Reserved. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'LBL_ADD_RECORD' => 'Add Currency' , // TODO: Review - 'LBL_EDIT_CURRENCY' => 'Edit Currency' , // TODO: Review - 'LBL_ADD_NEW_CURRENCY' => 'Add New Currency' , // TODO: Review - 'LBL_CURRENCY_NAME' => 'Currency Name' , // TODO: Review - 'LBL_CURRENCY_CODE' => 'Currency Code' , // TODO: Review - 'LBL_CURRENCY_SYMBOL' => 'Symbol' , // TODO: Review - 'LBL_CONVERSION_RATE' => 'Conversion Rate' , // TODO: Review - 'LBL_ENTER_CONVERSION_RATE' => 'Enter Conversion Rate' , // TODO: Review - 'LBL_CURRENCY_STATUS_DESC' => 'Enable checkbox to make currency Active', // TODO: Review - 'LBL_TRANSFER_CURRENCY' => 'Transfer Currency' , // TODO: Review - 'LBL_CURRENT_CURRENCY' => 'Current Currency' , // TODO: Review - 'Albania, Leke' => 'Albania, Leke' , // TODO: Review - 'Argentina, Pesos' => 'Argentina, Pesos' , // TODO: Review - 'Aruba, Guilders' => 'Aruba, Guilders' , // TODO: Review - 'Australia, Dollars' => 'Australia, Dollars' , // TODO: Review - 'Azerbaijan, New Manats' => 'Azerbaijan, New Manats' , // TODO: Review - 'Bahamas, Dollars' => 'Bahamas, Dollars' , // TODO: Review - 'Bahrain, Dinar' => 'Bahrain, Dinar' , // TODO: Review - 'Barbados, Dollars' => 'Barbados, Dollars' , // TODO: Review - 'Belarus, Rubles' => 'Belarus, Rubles' , // TODO: Review - 'Belize, Dollars' => 'Belize, Dollars' , // TODO: Review - 'Bermuda, Dollars' => 'Bermuda, Dollars' , // TODO: Review - 'Bolivia, Bolivianos' => 'Bolivia, Bolivianos' , // TODO: Review - 'Convertible Marka' => 'Convertible Marka' , // TODO: Review - 'Botswana, Pulas' => 'Botswana, Pulas' , // TODO: Review - 'Bulgaria, Leva' => 'Bulgaria, Leva' , // TODO: Review - 'Brazil, Reais' => 'Brazil, Reais' , // TODO: Review - 'Great Britain Pounds' => 'Great Britain Pounds' , // TODO: Review - 'Brunei Darussalam, Dollars' => 'Brunei Darussalam, Dollars' , // TODO: Review - 'Canada, Dollars' => 'Canada, Dollars' , // TODO: Review - 'Cayman Islands, Dollars' => 'Cayman Islands, Dollars' , // TODO: Review - 'Chile, Pesos' => 'Chile, Pesos' , // TODO: Review - 'Colombia, Pesos' => 'Colombia, Pesos' , // TODO: Review - 'Costa Rica, Colón' => 'Costa Rica, Colón' , // TODO: Review - 'Croatia, Kuna' => 'Croatia, Kuna' , // TODO: Review - 'Cuba, Pesos' => 'Cuba, Pesos' , // TODO: Review - 'Cyprus, Pounds' => 'Cyprus, Pounds' , // TODO: Review - 'Czech Republic, Koruny' => 'Czech Republic, Koruny' , // TODO: Review - 'Denmark, Kroner' => 'Denmark, Kroner' , // TODO: Review - 'Dominican Republic, Pesos' => 'Dominican Republic, Pesos' , // TODO: Review - 'East Caribbean, Dollars' => 'East Caribbean, Dollars' , // TODO: Review - 'Egypt, Pounds' => 'Egypt, Pounds' , // TODO: Review - 'El Salvador, Colón' => 'El Salvador, Colón' , // TODO: Review - 'England, Pounds' => 'England, Pounds' , // TODO: Review - 'Estonia, Krooni' => 'Estonia, Krooni' , // TODO: Review - 'Euro' => 'Euro' , // TODO: Review - 'Falkland Islands, Pounds' => 'Falkland Islands, Pounds' , // TODO: Review - 'Fiji, Dollars' => 'Fiji, Dollars' , // TODO: Review - 'Ghana, Cedis' => 'Ghana, Cedis' , // TODO: Review - 'Gibraltar, Pounds' => 'Gibraltar, Pounds' , // TODO: Review - 'Guatemala, Quetzales' => 'Guatemala, Quetzales' , // TODO: Review - 'Guernsey, Pounds' => 'Guernsey, Pounds' , // TODO: Review - 'Guyana, Dollars' => 'Guyana, Dollars' , // TODO: Review - 'Honduras, Lempiras' => 'Honduras, Lempiras' , // TODO: Review - 'LvHong Kong, Dollars ' => 'LvHong Kong, Dollars ' , // TODO: Review - 'Hungary, Forint' => 'Hungary, Forint' , // TODO: Review - 'Iceland, Krona' => 'Iceland, Krona' , // TODO: Review - 'India, Rupees' => 'India, Rupees' , // TODO: Review - 'Indonesia, Rupiahs' => 'Indonesia, Rupiahs' , // TODO: Review - 'Iran, Rials' => 'Iran, Rials' , // TODO: Review - 'Isle of Man, Pounds' => 'Isle of Man, Pounds' , // TODO: Review - 'Israel, New Shekels' => 'Israel, New Shekels' , // TODO: Review - 'Jamaica, Dollars' => 'Jamaica, Dollars' , // TODO: Review - 'Japan, Yen' => 'Japan, Yen' , // TODO: Review - 'Jersey, Pounds' => 'Jersey, Pounds' , // TODO: Review - 'Kazakhstan, Tenge' => 'Kazakhstan, Tenge' , // TODO: Review - 'Korea (North), Won' => 'Korea (North), Won' , // TODO: Review - 'Korea (South), Won' => 'Korea (South), Won' , // TODO: Review - 'Kyrgyzstan, Soms' => 'Kyrgyzstan, Soms' , // TODO: Review - 'Laos, Kips' => 'Laos, Kips' , // TODO: Review - 'Latvia, Lati' => 'Latvia, Lati' , // TODO: Review - 'Lebanon, Pounds' => 'Lebanon, Pounds' , // TODO: Review - 'Liberia, Dollars' => 'Liberia, Dollars' , // TODO: Review - 'Switzerland Francs' => 'Switzerland Francs' , // TODO: Review - 'Lithuania, Litai' => 'Lithuania, Litai' , // TODO: Review - 'Macedonia, Denars' => 'Macedonia, Denars' , // TODO: Review - 'Malaysia, Ringgits' => 'Malaysia, Ringgits' , // TODO: Review - 'Malta, Liri' => 'Malta, Liri' , // TODO: Review - 'Mauritius, Rupees' => 'Mauritius, Rupees' , // TODO: Review - 'Mexico, Pesos' => 'Mexico, Pesos' , // TODO: Review - 'Mongolia, Tugriks' => 'Mongolia, Tugriks' , // TODO: Review - 'Mozambique, Meticais' => 'Mozambique, Meticais' , // TODO: Review - 'Namibia, Dollars' => 'Namibia, Dollars' , // TODO: Review - 'Nepal, Rupees' => 'Nepal, Rupees' , // TODO: Review - 'Netherlands Antilles, Guilders' => 'Netherlands Antilles, Guilders', // TODO: Review - 'New Zealand, Dollars' => 'New Zealand, Dollars' , // TODO: Review - 'Nicaragua, Cordobas' => 'Nicaragua, Cordobas' , // TODO: Review - 'Nigeria, Nairas' => 'Nigeria, Nairas' , // TODO: Review - 'North Korea, Won' => 'North Korea, Won' , // TODO: Review - 'Norway, Krone' => 'Norway, Krone' , // TODO: Review - 'Oman, Rials' => 'Oman, Rials' , // TODO: Review - 'Pakistan, Rupees' => 'Pakistan, Rupees' , // TODO: Review - 'Panama, Balboa' => 'Panama, Balboa' , // TODO: Review - 'Paraguay, Guarani' => 'Paraguay, Guarani' , // TODO: Review - 'Peru, Nuevos Soles' => 'Peru, Nuevos Soles' , // TODO: Review - 'Philippines, Pesos' => 'Philippines, Pesos' , // TODO: Review - 'Poland, Zlotych' => 'Poland, Zlotych' , // TODO: Review - 'Qatar, Rials' => 'Qatar, Rials' , // TODO: Review - 'Romania, New Lei' => 'Romania, New Lei' , // TODO: Review - 'Russia, Rubles' => 'Russia, Rubles' , // TODO: Review - 'Saint Helena, Pounds' => 'Saint Helena, Pounds' , // TODO: Review - 'Saudi Arabia, Riyals' => 'Saudi Arabia, Riyals' , // TODO: Review - 'Serbia, Dinars' => 'Serbia, Dinars' , // TODO: Review - 'Seychelles, Rupees' => 'Seychelles, Rupees' , // TODO: Review - 'Singapore, Dollars' => 'Singapore, Dollars' , // TODO: Review - 'Solomon Islands, Dollars' => 'Solomon Islands, Dollars' , // TODO: Review - 'Somalia, Shillings' => 'Somalia, Shillings' , // TODO: Review - 'South Africa, Rand' => 'South Africa, Rand' , // TODO: Review - 'South Korea, Won' => 'South Korea, Won' , // TODO: Review - 'Sri Lanka, Rupees' => 'Sri Lanka, Rupees' , // TODO: Review - 'Sweden, Kronor' => 'Sweden, Kronor' , // TODO: Review - 'Switzerland, Francs' => 'Switzerland, Francs' , // TODO: Review - 'Suriname, Dollars' => 'Suriname, Dollars' , // TODO: Review - 'Syria, Pounds' => 'Syria, Pounds' , // TODO: Review - 'Taiwan, New Dollars' => 'Taiwan, New Dollars' , // TODO: Review - 'Thailand, Baht' => 'Thailand, Baht' , // TODO: Review - 'Trinidad and Tobago, Dollars' => 'Trinidad and Tobago, Dollars', // TODO: Review - 'Turkey, New Lira' => 'Turkey, New Lira' , // TODO: Review - 'Turkey, Liras' => 'Turkey, Liras' , // TODO: Review - 'Tuvalu, Dollars' => 'Tuvalu, Dollars' , // TODO: Review - 'Ukraine, Hryvnia' => 'Ukraine, Hryvnia' , // TODO: Review - 'United Kingdom, Pounds' => 'United Kingdom, Pounds' , // TODO: Review - 'USA, Dollars' => 'USA, Dollars' , // TODO: Review - 'Uruguay, Pesos' => 'Uruguay, Pesos' , // TODO: Review - 'Uzbekistan, Sums' => 'Uzbekistan, Sums' , // TODO: Review - 'Venezuela, Bolivares Fuertes' => 'Venezuela, Bolivares Fuertes', // TODO: Review - 'Vietnam, Dong' => 'Vietnam, Dong' , // TODO: Review - 'Zimbabwe Dollars' => 'Zimbabwe Dollars' , // TODO: Review - 'China, Yuan Renminbi' => 'China, Yuan Renminbi' , // TODO: Review - 'Afghanistan, Afghanis' => 'Afghanistan, Afghanis' , // TODO: Review - 'Cambodia, Riels' => 'Cambodia, Riels' , // TODO: Review - 'Jordan, Dinar' => 'Jordan, Dinar' , // TODO: Review - 'Kenya, Shilling' => 'Kenya, Shilling' , // TODO: Review - 'MADAGASCAR, Malagasy Ariary' => 'MADAGASCAR, Malagasy Ariary' , // TODO: Review - 'United Arab Emirates, Dirham' => 'United Arab Emirates, Dirham', // TODO: Review - 'United Republic of Tanzania, Shilling' => 'United Republic OF Tanzania, Shilling', // TODO: Review - 'Yemen, Rials' => 'Yemen, Rials' , // TODO: Review - 'Zambia, Kwacha' => 'Zambia, Kwacha' , // TODO: Review - 'Malawi, kwacha' => 'Malawi, kwacha' , // TODO: Review - 'Tunisian, Dinar' => 'Tunisian, Dinar' , // TODO: Review - 'Moroccan, Dirham' => 'Moroccan, Dirham' , // TODO: Review + 'LBL_ADD_RECORD' => 'Adicionar Moeda', + 'LBL_EDIT_CURRENCY' => 'Editar Moeda', + 'LBL_ADD_NEW_CURRENCY' => 'Adicionar Nova Moeda', + 'LBL_CURRENCY_NAME' => 'Nome Moeda', + 'LBL_CURRENCY_CODE' => 'Código Moeda', + 'LBL_CURRENCY_SYMBOL' => 'SÃmbolo', + 'LBL_CONVERSION_RATE' => 'Taxa de Câmbio', + 'LBL_ENTER_CONVERSION_RATE' => 'Digite a Taxa de Câmbio', + 'LBL_CURRENCY_STATUS_DESC' => 'Habilitar caixa de seleção para tornar a Moeda Ativa', + 'LBL_TRANSFER_CURRENCY' => 'Transferir Moeda', + 'LBL_CURRENT_CURRENCY' => 'Moeda Atual', + + //currency names + 'Albania, Leke' => 'Albania, Leke', + 'Argentina, Pesos' => 'Argentina, Pesos', + 'Aruba, Guilders' => 'Aruba, Guilders', + 'Australia, Dollars' => 'Australia, Dollars', + 'Azerbaijan, New Manats'=> 'Azerbaijan, New Manats', + 'Bahamas, Dollars' => 'Bahamas, Dollars', + 'Bahrain, Dinar' => 'Bahrain, Dinar', + 'Barbados, Dollars' => 'Barbados, Dollars', + 'Belarus, Rubles' => 'Belarus, Rubles', + 'Belize, Dollars' => 'Belize, Dollars', + 'Bermuda, Dollars' => 'Bermuda, Dollars', + 'Bolivia, Bolivianos' => 'Bolivia, Bolivianos', + 'Convertible Marka' => 'Convertible Marka', + 'Botswana, Pulas' => 'Botswana, Pulas', + 'Bulgaria, Leva' => 'Bulgaria, Leva', + 'Brazil, Reais' => 'Brazil, Reais', + 'Great Britain Pounds' => 'Great Britain Pounds', + 'Brunei Darussalam, Dollars' => 'Brunei Darussalam, Dollars', + 'Canada, Dollars' => 'Canada, Dollars', + 'Cayman Islands, Dollars' => 'Cayman Islands, Dollars', + 'Chile, Pesos' => 'Chile, Pesos', + 'Colombia, Pesos' => 'Colombia, Pesos', + 'Costa Rica, Colón' => 'Costa Rica, Colón', + 'Croatia, Kuna' => 'Croatia, Kuna', + 'Cuba, Pesos' => 'Cuba, Pesos', + 'Cyprus, Pounds' => 'Cyprus, Pounds', + 'Czech Republic, Koruny' => 'Czech Republic, Koruny', + 'Denmark, Kroner' => 'Denmark, Kroner', + 'Dominican Republic, Pesos' => 'Dominican Republic, Pesos', + 'East Caribbean, Dollars' => 'East Caribbean, Dollars', + 'Egypt, Pounds' => 'Egypt, Pounds', + 'El Salvador, Colón' => 'El Salvador, Colón', + 'England, Pounds' => 'England, Pounds', + 'Estonia, Krooni' => 'Estonia, Krooni', + 'Euro' => 'Euro', + 'Falkland Islands, Pounds' => 'Falkland Islands, Pounds', + 'Fiji, Dollars' => 'Fiji, Dollars', + 'Ghana, Cedis' => 'Ghana, Cedis', + 'Gibraltar, Pounds' => 'Gibraltar, Pounds', + 'Guatemala, Quetzales' => 'Guatemala, Quetzales', + 'Guernsey, Pounds' => 'Guernsey, Pounds', + 'Guyana, Dollars' => 'Guyana, Dollars', + 'Honduras, Lempiras' => 'Honduras, Lempiras', + 'LvHong Kong, Dollars ' => 'LvHong Kong, Dollars ', + 'Hungary, Forint' => 'Hungary, Forint', + 'Iceland, Krona' => 'Iceland, Krona', + 'India, Rupees' => 'India, Rupees', + 'Indonesia, Rupiahs' => 'Indonesia, Rupiahs', + 'Iran, Rials' => 'Iran, Rials', + 'Isle of Man, Pounds' => 'Isle of Man, Pounds', + 'Israel, New Shekels' => 'Israel, New Shekels', + 'Jamaica, Dollars' => 'Jamaica, Dollars', + 'Japan, Yen' => 'Japan, Yen', + 'Jersey, Pounds' => 'Jersey, Pounds', + 'Kazakhstan, Tenge' => 'Kazakhstan, Tenge', + 'Korea (North), Won' => 'Korea (North), Won', + 'Korea (South), Won' => 'Korea (South), Won', + 'Kyrgyzstan, Soms' => 'Kyrgyzstan, Soms', + 'Laos, Kips' => 'Laos, Kips', + 'Latvia, Lati' => 'Latvia, Lati', + 'Lebanon, Pounds' => 'Lebanon, Pounds', + 'Liberia, Dollars' => 'Liberia, Dollars', + 'Switzerland Francs' => 'Switzerland Francs', + 'Lithuania, Litai' => 'Lithuania, Litai', + 'Macedonia, Denars' => 'Macedonia, Denars', + 'Malaysia, Ringgits' => 'Malaysia, Ringgits', + 'Malta, Liri' => 'Malta, Liri', + 'Mauritius, Rupees' => 'Mauritius, Rupees', + 'Mexico, Pesos' => 'Mexico, Pesos', + 'Mongolia, Tugriks' => 'Mongolia, Tugriks', + 'Mozambique, Meticais' => 'Mozambique, Meticais', + 'Namibia, Dollars' => 'Namibia, Dollars', + 'Nepal, Rupees' => 'Nepal, Rupees', + 'Netherlands Antilles, Guilders' => 'Netherlands Antilles, Guilders', + 'New Zealand, Dollars' => 'New Zealand, Dollars', + 'Nicaragua, Cordobas' => 'Nicaragua, Cordobas', + 'Nigeria, Nairas' => 'Nigeria, Nairas', + 'North Korea, Won' => 'North Korea, Won', + 'Norway, Krone' => 'Norway, Krone', + 'Oman, Rials' => 'Oman, Rials', + 'Pakistan, Rupees' => 'Pakistan, Rupees', + 'Panama, Balboa' => 'Panama, Balboa', + 'Paraguay, Guarani' => 'Paraguay, Guarani', + 'Peru, Nuevos Soles' => 'Peru, Nuevos Soles', + 'Philippines, Pesos' => 'Philippines, Pesos', + 'Poland, Zlotych' => 'Poland, Zlotych', + 'Qatar, Rials' => 'Qatar, Rials', + 'Romania, New Lei' => 'Romania, New Lei', + 'Russia, Rubles' => 'Russia, Rubles', + 'Saint Helena, Pounds' => 'Saint Helena, Pounds', + 'Saudi Arabia, Riyals' => 'Saudi Arabia, Riyals', + 'Serbia, Dinars' => 'Serbia, Dinars', + 'Seychelles, Rupees' => 'Seychelles, Rupees', + 'Singapore, Dollars' => 'Singapore, Dollars', + 'Solomon Islands, Dollars' => 'Solomon Islands, Dollars', + 'Somalia, Shillings' => 'Somalia, Shillings', + 'South Africa, Rand' => 'South Africa, Rand', + 'South Korea, Won' => 'South Korea, Won', + 'Sri Lanka, Rupees' => 'Sri Lanka, Rupees', + 'Sweden, Kronor' => 'Sweden, Kronor', + 'Switzerland, Francs' => 'Switzerland, Francs', + 'Suriname, Dollars' => 'Suriname, Dollars', + 'Syria, Pounds' => 'Syria, Pounds', + 'Taiwan, New Dollars' => 'Taiwan, New Dollars', + 'Thailand, Baht' => 'Thailand, Baht', + 'Trinidad and Tobago, Dollars' => 'Trinidad and Tobago, Dollars', + 'Turkey, New Lira' => 'Turkey, New Lira', + 'Turkey, Liras' => 'Turkey, Liras', + 'Tuvalu, Dollars' => 'Tuvalu, Dollars', + 'Ukraine, Hryvnia' => 'Ukraine, Hryvnia', + 'United Kingdom, Pounds' => 'United Kingdom, Pounds', + 'USA, Dollars' => 'USA, Dollars', + 'Uruguay, Pesos' => 'Uruguay, Pesos', + 'Uzbekistan, Sums' => 'Uzbekistan, Sums', + 'Venezuela, Bolivares Fuertes' => 'Venezuela, Bolivares Fuertes', + 'Vietnam, Dong' => 'Vietnam, Dong', + 'Zimbabwe Dollars' => 'Zimbabwe Dollars', + 'China, Yuan Renminbi' => 'China, Yuan Renminbi', + 'Afghanistan, Afghanis' => 'Afghanistan, Afghanis', + 'Cambodia, Riels' => 'Cambodia, Riels', + 'China, Yuan Renminbi' => 'China, Yuan Renminbi', + 'Jordan, Dinar' => 'Jordan, Dinar', + 'Kenya, Shilling' => 'Kenya, Shilling', + 'MADAGASCAR, Malagasy Ariary' => 'MADAGASCAR, Malagasy Ariary', + 'United Arab Emirates, Dirham' => 'United Arab Emirates, Dirham', + 'United Republic of Tanzania, Shilling' => 'United Republic OF Tanzania, Shilling', + 'Yemen, Rials' => 'Yemen, Rials', + 'Zambia, Kwacha' => 'Zambia, Kwacha', + 'Malawi, kwacha' => 'Malawi, kwacha', + 'Tunisian, Dinar' => 'Tunisian, Dinar', + 'Moroccan, Dirham' => 'Moroccan, Dirham', ); + $jsLanguageStrings = array( - 'JS_CURRENCY_DETAILS_SAVED' => 'Currency Details Saved' , // TODO: Review - 'JS_CURRENCY_DELETED_SUEESSFULLY' => 'Currency Deleted Successfully', // TODO: Review -); \ No newline at end of file + 'JS_CURRENCY_DETAILS_SAVED' => 'Detalhes da Moeda Salvo', + 'JS_CURRENCY_DELETED_SUEESSFULLY' => 'Moeda Apagada com Sucesso', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/CustomerPortal.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/CustomerPortal.php index 54ef12e47b279052d2a023df01b5fabc0507f64a..ec5e151814d212e55f4514ce8df1ce5dbf0283c5 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/CustomerPortal.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/CustomerPortal.php @@ -1,80 +1,88 @@ <?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 +/* +********************************************************************************** + * 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 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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. + * All Rights Reserved. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + * ***********************************************************************************/ + $languageStrings = array( - 'CustomerPortal' => 'Customer Portal' , // TODO: Review - 'LBL_PORTAL_DESCRIPTION' => 'Setup Privileges of Portal User', // TODO: Review - 'LBL_PRIVILEGES' => 'Privileges' , // TODO: Review - 'LBL_DEFAULT_ASSIGNEE' => 'Default Assignee' , // TODO: Review - 'LBL_PORTAL_URL' => 'Portal Url' , // TODO: Review - 'LBL_MODULE_NAME' => 'Module Name' , // TODO: Review - 'LBL_ENABLE_MODULE' => 'Enable Module' , // TODO: Review - 'LBL_VIEW_ALL_RECORDS' => 'See Records across Organization', // TODO: Review - 'LBL_PREVILEGES_MESSAGE' => 'This User\'s privileges will be applied to the Portal User.', // TODO: Review - 'LBL_DEFAULT_ASSIGNEE_MESSAGE' => 'Casos / ingressos serão atribuÃdas ao requerente selecionado pelo padrão Grupo / Usuário do Portal do Cliente.', // TODO: Review - 'LBL_PORTAL_URL_MESSAGE' => 'This is URL for the Portal where your contacts can login to submit/track tickets, access knowledge base and do more. Contacts will be sent the login details when Portal access is enabled from Contact details page.', // TODO: Review - 'LBL_DRAG_AND_DROP_MESSAGE' => 'Drag and Drop modules to reorder in the Customer Portal', // TODO: Review - "LBL_CONTACTS_ENABLE_MESSAGE"=>"Contatos serão enviados os detalhes de login quando Portal de acesso está habilitado a partir da página Detalhes de contato.", - "LBL_SUPPORT_NOTIFY_MESSAGE"=>"Suporte alerta renovação do contrato é notificado sobre o portal do cliente com base no número de dias inseridos.", - "LBL_ADD_DOCUMENT"=>"Adicionar Documento", - "LBL_OPEN_TICKETS"=>"Abertas Ingressos", - "LBL_CREATE_TICKET"=>"Criar Ticket", - "LBL_ADD_SHORTCUT"=>"Adicionar atalho", - "OpenTicketsByPriority"=>"Os bilhetes abertos por prioridade", - "TicketsClosureTimeByPriority"=>"Ingressos tempo de fechamento por prioridade", - "OpenTicketsBySeverity"=>"Os bilhetes abertos por gravidade", - "TicketsClosureTimeBySeverity"=>"Ingressos tempo de fechamento por gravidade", - "Announcement"=>"Anúncio", - "Activity Stream"=>"Activity Stream", - "Fields and privilege"=>"Campos e privilégio", - "onlymine"=>"Mostrar só %s ligada ao contato", - "all"=>"Mostrar %s ligada ao contato e organização", - "products_or_services"=>"Mostre tudo %s", - "faq"=>"Mostrar todos publicados %s", - "LBL_LAYOUT_HEADER"=>"Portal Menu", - "LBL_HOME"=>"Casa", - "LBL_CONTACT_NOTIFICATION"=>"Contato Notificação Suporte", - "LBL_DAYS_BEFORE"=>"Dias antes", - "LBL_HOME_LAYOUT"=>"Portal InÃcio Disposição", - "LBL_RELATED_INFORMATION"=>"Informações relacionadas", - "LBL_RECORD_VISIBILITY"=>"registros Visibilidade", - "LBL_ADD_FIELDS"=>"Adicionar Campos", - "LBL_READ_AND_WRITE"=>"Ler e escrever", - "LBL_READ_ONLY"=>"Somente leitura", - "LBL_PORTAL_FIELDS_PRIVILEGES"=>"Campos portal e Privilégios", - "LBL_RECENT"=>"Recente", - "LBL_REC_WIDGET"=>"Grave Widget", - "LBL_CHARTS"=>"Charts", - "LBL_ANNOUNCEMENT"=>"Anúncio", - "LBL_SHORTCUTS"=>"Atalhos", - "LBL_SHOW"=>"VisÃvel", - "History"=>"atualizações", - "LBL_VISIBILITY"=>"visibilidade", - "LBL_RECORD_PERMISSIONS"=>"Permissões de recordes", - "LBL_CREATE_RECORD"=>"Criar Registro", - "LBL_EDIT_RECORD"=>"Editar Gravar", + 'CustomerPortal' => 'Portal do Cliente', + 'LBL_PORTAL_DESCRIPTION' => 'Configurar Privilégios do Usuário Portal', + + 'LBL_PRIVILEGES' => 'Privilégios', + 'LBL_DEFAULT_ASSIGNEE' => 'Responsável padrão', + 'LBL_PORTAL_URL' => 'URL Padrão', - 'LBL_CREATE_CASE' => 'Criar Caso', - 'LBL_OPEN_CASES' => 'Casos Em Aberto', - 'OpenCasesByPriority' => 'Abra casos por prioridade', - 'CasesClosureTimeByPriority' => 'Casos o tempo de resolução por prioridade', + //Fields + 'LBL_MODULE_NAME' => 'Nome Módulo', + 'LBL_ENABLE_MODULE' => 'Habilitar Módulo', + 'LBL_VIEW_ALL_RECORDS' => 'Ver Registros em toda Organização', + //Messages + 'LBL_PREVILEGES_MESSAGE' => "Os privilégios da Função selecionada serão aplicados ao Usuário do Portal..", + 'LBL_DEFAULT_ASSIGNEE_MESSAGE' => 'Os Chamados serão atribuÃdos ao Responsável selecionado como Usuário/Grupo padrão do Portal do Cliente.', + 'LBL_PORTAL_URL_MESSAGE' => 'Esta é a URL do Portal onde seus Contatos poderão acessar para submeter/acompanhar os Chamados, acessar a Base de Conhecimento e muito mais.', + 'LBL_CONTACTS_ENABLE_MESSAGE' => 'Os detalhes para acesso ao Portal do Cliente serão enviados assim que o acesso for habilitado no cadastro do Contato.', + 'LBL_SUPPORT_NOTIFY_MESSAGE' => 'O alerta de renovação do contrato de suporte é notificado no portal do cliente com base no número de dias informados.', + 'LBL_DRAG_AND_DROP_MESSAGE' => 'Arraste e solte módulos para reordenar no Portal do Cliente', + //Portal shortcuts + 'LBL_ADD_DOCUMENT' => 'Adicionar Documento', + 'LBL_OPEN_TICKETS' => 'Abrir Chamados', + 'LBL_CREATE_TICKET' => 'Criar Chamado', + 'LBL_ADD_SHORTCUT' => 'Adicionar Atalho', + 'LBL_CREATE_CASE' => 'Criar Caso', + 'LBL_OPEN_CASES' => 'Abrir Casos', + //Charts + 'OpenTicketsByPriority' => 'Chamados Abertos por Prioridade', + 'TicketsClosureTimeByPriority' => 'Tempo de Fechamento Chamados por Prioridade', + 'OpenTicketsBySeverity' => 'Chamados Abertos por Gravidade', + 'TicketsClosureTimeBySeverity' => 'Tempo Fechamento Chamados por Gravidade', + 'OpenCasesByPriority' => 'Caso Abertos por Prioridade', + 'CasesClosureTimeByPriority' => 'Tempo de Resolução de Casos por Prioridade', + 'Announcement' => 'Anúncio', + 'Activity Stream' => 'Transmissão de Atividade', + 'Fields and privilege' => 'Campos e Privilégios', + //Record visiblity status + 'onlymine' => 'Exibir somente %s vinculado ao Contato', + 'all' => 'Exibir %s vinculado ao Contato e Organização', + 'products_or_services' => 'Exibir todos %s', + 'faq' => 'Exibir todos publicados %s', + 'LBL_LAYOUT_HEADER' => 'Menu Portal', + 'LBL_HOME' => 'Principal', + 'LBL_CONTACT_NOTIFICATION' => 'Notificação Suporte Contato', + 'LBL_DAYS_BEFORE' => 'Dias antes', + 'LBL_HOME_LAYOUT' => 'Layout Home Portal', + 'LBL_RELATED_INFORMATION' => 'Informação relacionada', + 'LBL_RECORD_VISIBILITY' => 'Visibilidade dos Registros', + 'LBL_ADD_FIELDS' => 'Adicionar Campos', + 'LBL_READ_AND_WRITE' => 'Leitura e Escrita', + 'LBL_READ_ONLY' => 'Somente Leitura', + 'LBL_PORTAL_FIELDS_PRIVILEGES' => 'Campos e Privilégios do Portal', + 'LBL_RECENT' => 'Recente', + 'LBL_REC_WIDGET' => 'Widget de Registro ', + 'LBL_CHARTS' => 'Gráficos', + 'LBL_ANNOUNCEMENT' => 'Anúncio', + 'LBL_SHORTCUTS' => 'Atalhos', + 'LBL_SHOW' => 'VisÃvel', + 'History' => 'Atualizações', + 'LBL_VISIBILITY' => 'Visibilidade', + 'LBL_RECORD_PERMISSIONS' => 'Permissões Registro', + 'LBL_CREATE_RECORD' => 'Criar Registro', + 'LBL_EDIT_RECORD' => 'Editar Registro' ); + $jsLanguageStrings = array( - 'JS_PORTAL_INFO_SAVED' => 'Definições Portal do Cliente salvo.', // TODO: Review - "LBL_ADD_DOCUMENT"=>"Adicionar Documento", - "LBL_OPEN_TICKETS"=>"Abertas Ingressos", - "LBL_CREATE_TICKET"=>"Criar Ticket", - "JS_SELECT_SHORTCUT"=>"Selecione um atalho", - "JS_ADD_FIELD"=>"Adicione campos", - "JS_SHOW"=>"VisÃvel", - "JS_HIDE"=>"Esconder", - "JS_NUMBERS"=>"Aceitar apenas número inteiro positivo com até quatro dÃgitos.", - "JS_MANDATORY_FIELDS_MISSING"=>"Campos não poderia ser saved.Please selecionar todos os campos obrigatórios." -); \ No newline at end of file + 'JS_PORTAL_INFO_SAVED' => 'Configurações do Portal do Cliente foram salvas', + 'LBL_ADD_DOCUMENT' => 'Adicionar Documento', + 'LBL_OPEN_TICKETS' => 'Chamados Abertos', + 'LBL_CREATE_TICKET' => 'Criar Chamado', + 'JS_SELECT_SHORTCUT' => 'Selecionar um atalho', + 'JS_ADD_FIELD' => 'Adicionar campos', + 'JS_SHOW' => 'VisÃvel', + 'JS_HIDE' => 'Oculto', + 'JS_NUMBERS' => 'Aceita somente um número inteiro positivo, com até quatro dÃgitos.', + 'JS_MANDATORY_FIELDS_MISSING' => 'Os campos não podem ser salvos. Por favor, selecione todos os campos obrigatórios.' +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/ExtensionStore.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/ExtensionStore.php index 807b2d669c02c7cc4ae814d93dcb344e0f98f9bd..5f55cf4bb6b1d60b745d1a07b1d595e8a14c80a3 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/ExtensionStore.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/ExtensionStore.php @@ -1,123 +1,137 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source + * 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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. + * All Rights Reserved. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ + $languageStrings = array( - 'LBL_PUBLISHER' => 'Publisher' , - 'LBL_LICENSE' => 'License' , - 'LBL_PUBLISHED_ON' => 'Published on' , - 'LBL_INSTALL' => 'Install' , - 'LBL_UPGRADE' => 'Upgrade' , - 'LBL_VERSION' => 'Version' , - 'LBL_DECLINE' => 'Decline' , - 'LBL_ACCEPT_AND_INSTALL' => 'Aceitar e instalar' , - 'LBL_OK' => 'OK' , - 'LBL_EXTENSION_NOT_COMPATABLE' => 'Extensão não é compatÃvel', - 'LBL_INVALID_FILE' => 'Invalid File' , - 'LBL_NO_LICENSE_PROVIDED' => 'Nenhuma licença fornecida' , - 'LBL_INSTALLATION' => 'Installation' , - 'LBL_FAILED' => 'Failed' , - 'LBL_SUCCESSFULL' => 'Bem sucedido' , - 'LBL_INSTALLATION_LOG' => 'Log de instalação' , - 'LBL_UPDATED_MODULE' => ' módulo foi atualizado com sucesso.', - 'LBL_UPDATING_MODULE' => 'Updating Module' , - 'LBL_VTIGER_EXTENSION_STORE' => 'Vtiger Extension Store' , - 'LBL_SEARCH_FOR_AN_EXTENSION' => 'Pesquisar por uma extensão...', - 'LBL_DOWNLOADS' => 'Downloads' , - 'LBL_NO_EXTENSIONS_FOUND' => 'No Extensions Found' , - 'LBL_REGISTER_TO_MARKET_PLACE' => 'Register to Marketplace' , - 'LBL_MARKETPLACE_REGISTRATION' => 'Marketplace Registration' , - 'LBL_MARKETPLACE_LOGIN' => 'Marketplace Login' , - 'LBL_NEW_TO_MARKETPLCAE' => 'New to Marketplace ?' , - 'LBL_CREATE_AN_ACCOUNT' => 'Criar uma nova conta' , - 'LBL_SETUP_CARD_DETAILS' => 'Setup Card Details' , - 'LBL_SETUP_CARD' => 'Setup Card' , - 'LBL_CARD_NUMBER' => 'Card Number' , - 'LBL_EXP_MONTH' => 'Exp Month' , - 'LBL_EXP_YEAR' => 'Ano de exp' , - 'LBL_CVC_CODE' => 'CVC Code' , - 'LBL_RESET' => 'Reset' , - 'LBL_EXTENSION_STORE' => 'Extension Store' , - 'LBL_INSTALLED' => 'Installed' , - 'LBL_UPDATE_CARD_DETAILS' => 'Update Card Details' , - 'LBL_BY' => 'by' , - 'LBL_RATINGS' => 'Ratings' , - 'LBL_DESCRIPTION' => 'Description' , - 'LBL_AUTHOR_INFORMATION' => 'Author Information' , - 'LBL_AUTHOR_NAME' => 'Nome do autor' , - 'LBL_PHONE' => 'Telefone' , - 'LBL_EMAIL' => 'Email' , - 'LBL_SCREEN_SHOTS' => 'Screenshots' , - 'LBL_CUSTOMER_RATINGS' => 'Customer Ratings' , - 'LBL_CUSTOMER_REVIEWS' => 'Customer Reviews' , - 'LBL_WRITE_A_REVIEW' => 'Escrever um comentário' , - 'LBL_CUSTOMER_REVIEW' => 'Customer Review' , - 'LBL_REVIEW' => 'Review' , - 'LBL_CUSTOMERS_REVIEWED' => 'Customers Reviewed' , - 'LBL_SINGLE_CUSTOMER_REVIEWED' => 'Single Customer Reviewed' , - 'LBL_INSTALLATION_FAILED' => 'Installation Failed' , - 'LBL_SUCCESSFULL_INSTALLATION' => 'Successful Installation' , - 'LBL_INSTALL_FROM_ZIP' => 'Install from Zip' , - 'LBL_MORE_DETAILS' => 'More Details' , - 'Install' => 'Install' , - 'Upgrade' => 'Upgrade' , - 'LBL_RATE_IT' => 'Rate it.' , - 'LBL_UNINSTALL' => 'UnInstall' , - 'LBL_LAUNCH' => 'Launch' , - 'LBL_SIGN_UP_FOR_FREE' => 'Sign up for free' , - 'LBL_EMAIL_ADDRESS' => 'Email address' , - 'LBL_FIRST_NAME' => 'First name' , - 'LBL_LAST_NAME' => 'Last name' , - 'LBL_COMPANY_NAME' => 'Company name' , - 'LBL_PASSWORD' => 'Password' , - 'LBL_CONFIRM_PASSWORD' => 'Confirm password' , - 'LBL_REGISTER' => 'Registre-se' , - 'LBL_EXTENSION_STORE_LOGIN' => 'Extensionstore Login' , - 'LBL_REMEMBER_ME' => 'Remember me' , - 'LBL_TRY_IT' => 'Try it' , - 'LBL_TRIAL_INSTALLED' => 'Trial Installed' , - 'LBL_BUY' => 'Buy ' , - 'LBL_LOGIN_TO_MARKET_PLACE' => 'Login para o mercado' , - 'LBL_LOGIN' => 'Login' , - 'LBL_PHP_EXTENSION_LOADER_IS_NOT_AVAIABLE' => 'Please install extension loader', - 'LBL_INSTALL_EXTENSION_LOADER' => 'Install Extension Loader' , - 'LBL_TO_CONTINUE_USING_EXTENSION_STORE' => 'Para continuar usando extensão loja instalar por favor ', - 'LBL_DOWNLOAD' => 'Download' , - 'LBL_COMPATIABLE_EXTENSION' => ' and enable it as zend_extension.', - 'LBL_MORE_DETAILS_ON_INSTALLATION' => 'For more details on installation ', - 'LBL_READ_HERE' => 'read here' , - 'LBL_REVIEWS' => 'Reviews' , - 'LBL_SIGNUP_FOR_MARKET_PLACE' => 'Signup for Marketplace' , - 'LBL_UNAUTHORIZED' => 'Não autorizado' , - 'LBL_EXPIRY_DATE' => 'Expiry Date' , - 'firstname' => 'First Name' , - 'lastname' => 'Last Name' , - 'email' => 'Email' , - 'company' => 'Company' , - 'Phone' => 'Phone' , - 'Website' => 'Website' , - 'LBL_SECURITY_CODE' => 'Código de segurança' , - 'LBL_WHAT_IS_SECURITY_CODE' => 'What is Security Code ?' , - 'LBL_CARD_NUMBER_PLACEHOLDER' => '16 digit number on your card', - 'LBL_SECURITY_CODE_HELP_CONTENT' => 'The CVV Number(Card Verification Value) on your credit/debit card is a 3 digit number on VISA®, MasterCard® etc.. branded credit/debit cards.', - 'LBL_MARKET_PLACE' => 'mercado', + 'LBL_PUBLISHER' => 'Editor', + 'LBL_LICENSE' => 'Licença', + 'LBL_PUBLISHED_ON' => 'Publicado em', + 'LBL_INSTALL' => 'Instalar', + 'LBL_UPGRADE' => 'Atualizar', + 'LBL_VERSION' => 'Versão', + 'LBL_DECLINE' => 'Declinar', + 'LBL_ACCEPT_AND_INSTALL' => 'Aceitar e Instalar', + 'LBL_OK' => 'OK', + 'LBL_EXTENSION_NOT_COMPATABLE' => 'A Extensão não é CompatÃvel', + 'LBL_INVALID_FILE' => 'Arquivo Inválido', + 'LBL_NO_LICENSE_PROVIDED' => 'Nenhuma Licença Fornecida', + 'LBL_INSTALLATION' => 'Instalação', + 'LBL_FAILED' => 'Falha', + 'LBL_SUCCESSFULL' => 'Sucesso', + 'LBL_INSTALLATION_LOG' => 'Log de Instalação', + 'LBL_UPDATED_MODULE' => ' O Módulo foi atualizado com sucesso.', + 'LBL_UPDATING_MODULE' => 'Módulo Atualização', + 'LBL_MARKET_PLACE' => 'Loja', + + //Extension Store translations + 'LBL_VTIGER_EXTENSION_STORE' => 'Loja de Extensões Vtiger', + 'LBL_SEARCH_FOR_AN_EXTENSION' => 'Pesquisar por uma Extensão..', + 'LBL_DOWNLOADS' => 'Downloads', + 'LBL_NO_EXTENSIONS_FOUND' => 'Nenhuma Extensão foi Encontrada', + 'LBL_REGISTER_TO_MARKET_PLACE' => 'Cadastre-se na Loja', + 'LBL_MARKETPLACE_REGISTRATION' => 'Registro Loja', + 'LBL_MARKETPLACE_LOGIN' => 'Acesso Loja', + 'LBL_NEW_TO_MARKETPLCAE' => 'Novo na Loja?', + 'LBL_CREATE_AN_ACCOUNT' => 'Criar uma nova conta', + 'LBL_SETUP_CARD_DETAILS' => 'Configurar Detalhes do Cartão', + 'LBL_SETUP_CARD' => 'Configurar Cartão', + 'LBL_CARD_NUMBER' => 'Número do Cartão', + 'LBL_EXP_MONTH' => 'Mês Expira', + 'LBL_EXP_YEAR' => 'Ano Expira', + 'LBL_CVC_CODE' => 'Código CVC', + 'LBL_RESET' => 'Redefinir', + 'LBL_EXTENSION_STORE' => 'Loja Extensão', + 'LBL_INSTALLED' => 'Instalado', + 'LBL_UPDATE_CARD_DETAILS' => 'Atualizar Detalhes Cartão', + 'LBL_BY' => 'por', + 'LBL_RATINGS' => 'Classificações', + 'LBL_DESCRIPTION' => 'Descrição', + 'LBL_AUTHOR_INFORMATION' => 'Informação Autor', + 'LBL_AUTHOR_NAME' => 'Nome Autor', + 'LBL_PHONE' => 'Telefone', + 'LBL_EMAIL' => 'Email', + 'LBL_SCREEN_SHOTS' => 'Captura Telas', + 'LBL_CUSTOMER_RATINGS' => 'Classificações Clientes', + 'LBL_CUSTOMER_REVIEWS' => 'Avaliações Clientes', + 'LBL_WRITE_A_REVIEW' => 'Escrever uma Avaliação', + 'LBL_CUSTOMER_REVIEW' => 'Avaliação do Cliente', + 'LBL_REVIEW' => 'Avaliação', + 'LBL_CUSTOMERS_REVIEWED' => 'Clientes Avaliados', + 'LBL_SINGLE_CUSTOMER_REVIEWED' => 'Cliente Único Avaliado', + 'LBL_INSTALLATION_FAILED' => 'Instalação Falhou', + 'LBL_SUCCESSFULL_INSTALLATION' => 'Instalado com Sucesso', + 'LBL_INSTALL_FROM_ZIP' => 'Instalar do Zip', + 'LBL_MORE_DETAILS' => 'Mais detalhes', + 'Install' => 'Instalar', + 'Upgrade' => 'Atualizar', + 'LBL_RATE_IT' => 'Avalie', + 'LBL_UNINSTALL' => 'Desinstalar', + 'LBL_LAUNCH' => 'Iniciar', + 'LBL_SIGN_UP_FOR_FREE' => 'Inscreva-se gratuitamente', + 'LBL_EMAIL_ADDRESS' => 'Endereço de Email', + 'LBL_FIRST_NAME' => 'Nome', + 'LBL_LAST_NAME' => 'Sobrenome', + 'LBL_COMPANY_NAME' => 'Nome Empresa', + 'LBL_PASSWORD' => 'Senha', + 'LBL_CONFIRM_PASSWORD' => 'Confirma Senha', + 'LBL_REGISTER' => 'Cadastrar', + 'LBL_EXTENSION_STORE_LOGIN' => 'Acesso Loja Extensão', + 'LBL_REMEMBER_ME' => 'Lembrar-me', + 'LBL_TRY_IT' => 'Testar', + 'LBL_TRIAL_INSTALLED' => 'Demonstração Instalada', + 'LBL_BUY' => 'Comprar ', + 'LBL_LOGIN_TO_MARKET_PLACE' => 'Acessar Loja', + 'LBL_LOGIN' => 'Acessar', + 'LBL_PHP_EXTENSION_LOADER_IS_NOT_AVAIABLE' => 'Por favor, instale o carregador de extensão', + 'LBL_INSTALL_EXTENSION_LOADER' => 'Instalar o Carregador de Extensão', + 'LBL_TO_CONTINUE_USING_EXTENSION_STORE' => 'Por favor, instale para continuar utilizando a Loja de Extensão', + 'LBL_DOWNLOAD' => 'Download', + 'LBL_COMPATIABLE_EXTENSION' => ' e habilite a zend_extension.', + 'LBL_MORE_DETAILS_ON_INSTALLATION' => 'Para mais detalhes sobre a instalação ', + 'LBL_READ_HERE' => 'leia aqui', + 'LBL_REVIEWS' => 'Avaliações', + 'LBL_SIGNUP_FOR_MARKET_PLACE' => 'Cadastre-se na Loja', + 'LBL_UNAUTHORIZED' => 'Não Autorizado', + 'LBL_EXPIRY_DATE' => 'Data Validade', + 'LBL_LOGOUT' => 'Desconectar', + + 'firstname' => 'Nome', + 'lastname' => 'Sobrenome', + 'email' => 'Email', + 'company' => 'Empresa', + 'Phone' => 'Telefone', + 'Website' => 'Website', + 'LBL_SECURITY_CODE' => 'Código de Segurança', + 'LBL_WHAT_IS_SECURITY_CODE' => 'Qual é o Código de Segurança?', + 'LBL_CARD_NUMBER_PLACEHOLDER' => 'Número com 16 dÃgitos do seu Cartão', + 'LBL_SECURITY_CODE_HELP_CONTENT' => 'O Número CVV (Card Verification Value) no seu Cartão de Crédito/Débito é um número de 3 dÃgitos nas bandeiras VISA®, MasterCard® etc.', + 'LBL_ENTER_REGISTERED_EMAIL' => 'Digite seu email registrado', + 'LBL_RESET_PASSWORD_LINK_EMAILED' => 'Link para redefinir Senha foi enviado para você!', + 'LBL_FORGOT_PASSWORD' => 'Esqueceu a Senha', + 'LBL_ALREADY_INSTALLED_MODULE_BUILDER' => 'Já foi criado pelo construtor de módulos', + 'LBL_REVIEW_RESTRICTED' => 'Revisão restrita', ); $jsLanguageStrings = array( - 'JS_PLEASE_SETUP_CARD_DETAILS_TO_INSTALL_THIS_EXTENSION' => 'Please setup card details to install this extension', - 'JS_UPDATE_CARD_DETAILS' => 'Update Card Details' , - 'JS_ON' => 'on' , - 'JS_RATINGS' => 'Ratings' , - 'JS_INSTALLED' => 'Installed' , - 'JS_TRIAL_INSTALLED' => 'Trial Installed' , - 'JS_PLEASE_INSTALL_EXTENSION_LOADER_TO_INSTALL_THIS_EXTENSION_FROM_BELOW_LINK' => 'Please install extension loader to install this extension from below link', - 'JS_PLEASE_LOGIN_TO_MARKETPLACE_FOR_INSTALLING_EXTENSION' => 'Please login to marketplace for installing extension', - 'JS_PLEASE_SETUP_CARD_DETAILS_TO_INSTALL_EXTENSION' => 'Please setup card details to install extension', - 'JS_PLEASE_LOGIN_TO_MARKETPLACE_FOR_UNINSTALLING_EXTENSION' => 'Please login to marketplace for uninstalling extension', - 'JS_CARD_DETAILS_UPDATED' => 'Card details updated!' , - 'JS_PASSWORDS_MISMATCH' => 'Senhas não combinam!' , -); \ No newline at end of file + 'JS_PLEASE_SETUP_CARD_DETAILS_TO_INSTALL_THIS_EXTENSION' => 'Por favor, configure os detalhes do Cartão para instalar esta extensão', + 'JS_UPDATE_CARD_DETAILS' => 'Atualizar Detalhes do Cartão', + 'JS_ON' => 'em', + 'JS_RATINGS' => 'Classificações', + 'JS_INSTALLED' => 'Instalado', + 'JS_TRIAL_INSTALLED' => 'Demonstração Instalada', + 'JS_PLEASE_INSTALL_EXTENSION_LOADER_TO_INSTALL_THIS_EXTENSION_FROM_BELOW_LINK' => 'Instale o carregador de extensão para instalar esta extensão com link abaixo', + 'JS_PLEASE_LOGIN_TO_MARKETPLACE_FOR_INSTALLING_EXTENSION' => 'Acesse a Loja para instalação da extensão', + 'JS_PLEASE_SETUP_CARD_DETAILS_TO_INSTALL_EXTENSION' => 'Configure os detalhes do Cartão para instalar a extensão', + 'JS_PLEASE_LOGIN_TO_MARKETPLACE_FOR_UNINSTALLING_EXTENSION' => 'Acesse a Loja para desinstalar a extensão', + 'JS_LBL_ARE_YOU_SURE_YOU_WANT_TO_INSTALL_THIS_EXTENSION' => 'Você tem certeza que deseja instalar esta Extensão?', + 'JS_CARD_DETAILS_UPDATED' => 'Detalhes do Cartão atualizado!', + 'JS_LBL_ARE_YOU_SURE_YOU_WANT_TO_LOGOUT_FROM_EXTENSION' => 'Você tem certeza que deseja desconectar da extensão?', + 'JS_PASSWORDS_MISMATCH' => "As Senhas não combinam!", + 'JS_ARE_YOU_SURE_UNINSTALL' => 'Você tem certeza que deseja desinstalar esta Extensão', + 'JS_ARE_YOU_SURE_INSTALL' => 'Você tem certeza que deseja instalar esta Extensão', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Groups.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Groups.php index 0f948546beaa5aa8e1b7f795c1bda37fa695e1a0..dd91626f87642c85b02a150704b1e1a66ea6d6ba 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Groups.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Groups.php @@ -1,28 +1,26 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. + * All Rights Reserved. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'LBL_TRANSFORM_OWNERSHIP' => 'Transfer ownership' , - 'SINGLE_Groups' => 'Group' , // TODO: Review - 'LBL_TO_OTHER_GROUP' => 'To Other Group ' , - 'LBL_ADD_RECORD' => 'Add Group' , // TODO: Review - 'LBL_GROUP_NAME' => 'Group Name' , // TODO: Review - 'LBL_GROUP_MEMBERS' => 'Group Members' , // TODO: Review - 'LBL_ADD_USERS_ROLES' => 'Add Users, Roles...' , // TODO: Review - 'LBL_ROLEANDSUBORDINATE' => 'Role and Subordinates' , // TODO: Review - 'RoleAndSubordinates' => 'Role and Subordinates' , // TODO: Review - - 'LBL_DUPLICATES_EXIST' => 'Nome do grupo já Existe', - + 'LBL_TRANSFORM_OWNERSHIP' => 'Transferir propriedade', + 'SINGLE_Groups' => 'Grupo', + 'LBL_TO_OTHER_GROUP' => 'Para Outro Grupo ', + 'LBL_ADD_RECORD' => 'Adicionar Grupo', + 'LBL_GROUP_NAME' => 'Nome Grupo', + 'LBL_GROUP_MEMBERS' => 'Membro Grupo', + 'LBL_ROLEANDSUBORDINATE' => 'Função e Subordinados', + 'RoleAndSubordinates' => 'Função e Subordinados', + 'LBL_DUPLICATES_EXIST' => 'O Nome do Grupo já existe', ); $jsLanguageStrings = array( - 'JS_PLEASE_SELECT_ATLEAST_ONE_MEMBER_FOR_A_GROUP' => 'Please select atleast one member for a group', // TODO: Review - 'JS_RECORD_DELETED_SUCCESSFULLY' => 'Group deleted successfully' , // TODO: Review - 'JS_COMMA_NOT_ALLOWED_GROUP' => 'Caracteres especiais como ,"<> não são permitidos no nome do grupo.', -); \ No newline at end of file + 'JS_PLEASE_SELECT_ATLEAST_ONE_MEMBER_FOR_A_GROUP' => 'Selecione pelo menos um membro de um Grupo', + 'JS_RECORD_DELETED_SUCCESSFULLY' => 'Grupo apagado com sucesso', + 'JS_COMMA_NOT_ALLOWED_GROUP' => 'Caracteres especiais como,"<> não são permitidos no Nome do Grupo.', +); + diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/LayoutEditor.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/LayoutEditor.php index 9f9cd3a9f7881ab0c5da4598d2568bc4c6fe6ff4..c384cdf07db2d401aa82de746d33d029d9e46d35 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/LayoutEditor.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/LayoutEditor.php @@ -1,199 +1,229 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. + * All Rights Reserved. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'LayoutEditor' => 'Editor de layout' , - 'LBL_FIELDS_AND_LAYOUT_EDITOR' => 'Campos e Editor de Layout' , - 'LBL_CREATE_CUSTOM_FIELD' => 'Criar o campo personalizado' , - 'LBL_DETAILVIEW_LAYOUT' => 'Detail View Layout' , - 'LBL_ARRANGE_RELATED_TABS' => 'Arrange Related Tabs' , - 'LBL_ADD_CUSTOM_FIELD' => 'Adicionar campo personalizado', - 'LBL_ADD_CUSTOM_BLOCK' => 'Adicionar bloco personalizado', - 'LBL_SAVE_FIELD_SEQUENCE' => 'Save Field Sequence' , - 'LBL_BLOCK_NAME' => 'Nome do bloco' , - 'LBL_ADD_AFTER' => 'Adicionar depois' , - 'LBL_ACTIONS' => 'Ações' , - 'LBL_ALWAYS_SHOW' => 'Sempre mostrar' , - 'LBL_INACTIVE_FIELDS' => 'Inactive Fields' , - 'LBL_DELETE_CUSTOM_BLOCK' => 'Excluir bloco personalizado' , - 'LBL_MANDATORY_FIELD' => 'Campo obrigatório' , - 'LBL_ACTIVE' => 'Ativo' , - 'LBL_QUICK_CREATE' => 'Criar rapidamente' , - 'LBL_SUMMARY_FIELD' => 'Summary View' , - 'LBL_MASS_EDIT' => 'Mass Edit' , - 'LBL_DEFAULT_VALUE' => 'Valor padrão' , - 'LBL_SELECT_FIELD_TYPE' => 'Selecione o tipo de campo' , - 'LBL_LABEL_NAME' => 'Nome da etiqueta' , - 'LBL_LENGTH' => 'Length' , - 'LBL_DECIMALS' => 'Casas decimais' , - 'LBL_ENTER_PICKLIST_VALUES' => 'Enter Picklist Values..' , - 'LBL_PICKLIST_VALUES' => 'Valores booleanos' , - 'LBL_REACTIVATE' => 'Reactivate' , - 'LBL_ARRANGE_RELATED_LIST' => 'Organizar a lista de relacionados', - 'LBL_SELECT_MODULE_TO_ADD' => 'Selecione o módulo para adicionar', - 'LBL_NO_RELATED_INFORMATION' => 'No Related Information' , - 'LBL_RELATED_LIST_INFO' => 'Drag and drop the module to reorder the list', - 'LBL_REMOVE_INFO' => 'Clique no Ãcone de exclusão para remover a relação de forma permanente a partir da lista', - 'LBL_ADD_MODULE_INFO' => 'Select the module from the removed modules to add back to list', - 'LBL_SELECT_MODULE' => 'Selecione o módulo...' , - 'LBL_DUPLICATES_EXIST' => 'Block Name already exists' , - 'LBL_NON_ROLE_BASED_PICKLIST' => 'Lista de seleção baseado em função não', - 'LBL_DUPLICATE_FIELD_EXISTS' => 'Existe campo duplicado' , - 'LBL_WRONG_FIELD_TYPE' => 'Wrong Field Type' , - 'LBL_ROLE_BASED_PICKLIST' => 'Role Based Picklist' , - 'LBL_CLICK_HERE_TO_EDIT' => 'Click here to edit' , - 'Text' => 'Texto' , - 'Decimal' => 'Decimal' , - 'Integer' => 'Número inteiro' , - 'Percent' => 'Por cento' , - 'Currency' => 'Moeda' , - 'Date' => 'Data' , - 'Email' => 'Email' , - 'Phone' => 'Phone' , - 'PickList' => 'Pick List' , - 'MultiSelectCombo' => 'Caixa de seleção múltipla combinação', - 'URL' => 'URL' , - 'Checkbox' => 'Caixa de seleção' , - 'TextArea' => 'Ãrea de texto' , - 'Skype' => 'Skype' , - 'Time' => 'Time' , - 'Calendar' => 'Tarefa' , - 'LBL_FIELD_COULD_NOT_BE_CREATED' => '%s campo não pode ser criado', - 'SELECT_MODULE' => 'Select Module' , - 'LBL_UITYPE' => 'UI Type' , - 'LBL_BASIC_FIELDS' => 'Campos básicos' , - 'LBL_MANDATORY' => 'Campo obrigatório' , - 'LBL_PROPERTIES' => 'Properties' , - 'LBL_DRAG_UI_TYPE' => 'Drag UI Type here' , - 'LBL_RELATION_FIELDS' => 'Campos de relação' , - 'LBL_SELECT_BLOCK' => 'Selecione o bloco' , - 'LBL_SHOW_INACTIVE_FIELDS' => 'Mostrar campos inativos' , - 'LBL_MANY_MANY_TEXT' => 'Many-Muitos relacionamentos estão atualmente disponÃveis apenas para s% e %s', - 'LBL_EDIT_FIELD' => 'Editar propriedades do campo: %s', - 'LBL_RELATION_SHIPS' => 'Relacionamentos' , - '1-1' => 'One to One' , - '1-N' => 'Um para muitos' , - 'N-1' => 'Many to One' , - 'N-N' => 'Muitos para muitos' , - 'LBL_FIELD_TYPES' => 'Tipos de Campos' , - 'LBL_RELATION_ADDED_SUCCESS' => 'Relacionamento adicionou com sucesso', - 'FIELD_NAME_IN_PRIMARY_MODULE' => 'Campo Relação em %s' , - 'FIELD_NAME_IN_RELATED_MODULE' => 'Campo Relação em %s' , - 'TAB_IN_PRIMARY_MODULE' => 'Tabela / Tab em %s' , - 'TAB_IN_RELATED_MODULE' => 'Tabela / Tab em %s' , - 'LBL_ADDING_RELATIONSHIP' => 'Adicionando relacao %s' , - 'LBL_DETAIL_VIEW' => 'Visão Detalhada' , - 'LBL_EXPANDED' => 'Expandido' , - 'LBL_COLLAPSED' => 'Desabou' , - 'LBL_FILED_IN_PRIMARY_HELP_TEXT' => 'Campo de referência do módulo %s', - 'LBL_TAB_IN_PRIMARY_HELP_TEXT' => 'Tabela / Tab de módulo %s' , - 'LBL_FILED_IN_RELATED_HELP_TEXT' => 'Campo de referência do módulo %s', - 'LBL_TAB_IN_RELATED_HELP_TEXT' => 'Tabela / Tab de módulo %s' , - 'LBL_NO_RELATION_TYPE' => 'Não existe relação deste tipo', + 'LayoutEditor' => 'Editor de Layout', + 'LBL_FIELDS_AND_LAYOUT_EDITOR' => 'Editor de Campos e Layout', + 'LBL_CREATE_CUSTOM_FIELD' => 'Criar Campo Customizado', + 'LBL_DETAILVIEW_LAYOUT' => 'Layout Visão Detalhada', + 'LBL_ARRANGE_RELATED_TABS' => 'Organizar Abas Relacionadas', + 'LBL_ADD_CUSTOM_FIELD' => 'Adicionar Campo Customizado', + 'LBL_ADD_CUSTOM_BLOCK' => 'Adicionar Bloco', + 'LBL_SAVE_FIELD_SEQUENCE' => 'Salvar Sequência de Campos', + 'LBL_BLOCK_NAME' => 'Nome Bloco', + 'LBL_ADD_AFTER' => 'Adicionar Depois', + 'LBL_ACTIONS' => 'Ações', + 'LBL_ALWAYS_SHOW' => 'Sempre Exibir', + 'LBL_SHOW_INACTIVE_FIELDS' => 'Exibir Campos Inativos', + 'LBL_SHOW_HIDDEN_FIELDS' => 'Visualizar Campos Ocultos', + 'LBL_DELETE_CUSTOM_BLOCK' => 'Apagar Bloco customizado', + 'LBL_MANDATORY_FIELD' => 'Campo Obrigatório', + 'LBL_ACTIVE' => 'Ativo', + 'LBL_QUICK_CREATE' => 'Criar Rápido', + 'LBL_SUMMARY_FIELD' => 'Visão Resumida', + 'LBL_KEY_FIELD_VIEW' => 'Visualizar Campo Chave', + 'LBL_MASS_EDIT' => 'Editar em Massa', + 'LBL_DEFAULT_VALUE' => 'Valor Padrão', + 'LBL_SELECT_FIELD_TYPE' => 'Selecionar Tipo Campo', + 'LBL_LABEL_NAME' => 'Nome Rótulo', + 'LBL_LENGTH' => 'Comprimento', + 'LBL_DECIMALS' => 'Decimais', + 'LBL_ENTER_PICKLIST_VALUES' => 'Digite Valores Lista Opções..', + 'LBL_PICKLIST_VALUES' => 'Valores Lista Opções', + 'LBL_INACTIVE_FIELDS' => 'Campos Inativos', + 'LBL_REACTIVATE' => 'Reativar', + 'LBL_ARRANGE_RELATED_LIST' => 'Organizar Lista Relacionada', + 'LBL_SELECT_MODULE_TO_ADD' => 'Selecionar Módulo para Adicionar', + 'LBL_SELECT_HIDDEN_MODULE' => 'Selecionar Módulo oculto', + 'LBL_NO_RELATED_INFORMATION' => 'Nenhuma Informação Relacionada', + 'LBL_RELATED_LIST_INFO' => 'Arraste e solte o Módulo para reordenar a lista', + 'LBL_REMOVE_INFO' => 'Clique sobre o Ãcone Apagar para remover permanentemente o relacionamento da lista', + 'LBL_ADD_MODULE_INFO' => 'Selecionar, a partir dos módulos removidos, o módulo que deseja adicionar de volta para a lista', + 'LBL_MANY_MANY_TEXT' => 'Os relacionamentos Muitos-Muitos, estão atualmente disponÃveis somente para %s e %s', + 'LBL_SELECT_MODULE' => 'Selecionar o Módulo..', + 'LBL_DUPLICATES_EXIST' => 'O Nome do Bloco já existe', + 'LBL_NON_ROLE_BASED_PICKLIST' => 'Lista de Opções não Baseada em Função', + 'LBL_DUPLICATE_FIELD_EXISTS' => 'Existem Campos Duplicados', + 'LBL_WRONG_FIELD_TYPE' => 'Tipo de Campo Errado', + 'LBL_ROLE_BASED_PICKLIST' => 'Lista de Opções Baseada em Função', + 'LBL_CLICK_HERE_TO_EDIT' => 'Clicar aqui para editar', + 'LBL_EDIT_FIELD' => 'Editar propriedades do Campo: %s', - 'LBL_CREATE_ITEM_CUSTOM_FIELD' => 'Criar item de linha de campo personalizado', - 'LBL_MAP_PRODUCT_FIELD' => 'Mapa de campo Produtos', - 'LBL_MAP_SERVICE_FIELD' => 'Mapa de campo Serviços', - 'LBL_ENABLE_TO_MAP_PRODUCT_FIELD' => 'Habilitar para mapear o campo Products', - 'LBL_ENABLE_TO_MAP_SERVICE_FIELD' => 'Habilitar para mapear o campo Serviços', + //Field Types + 'Text'=>'Texto', + 'Decimal'=>'Decimal', + 'Integer'=>'Inteiro', + 'Percent'=>'Percentual', + 'Currency'=>'Moeda', + 'Date'=>'Data', + 'Email'=>'Email', + 'Phone'=>'Telefone', + 'PickList'=>'Lista Opções', + 'MultiSelectCombo'=>'Caixa Multiseleção', + 'URL' => 'URL', + 'Checkbox' => 'Caixa Seleção', + 'TextArea' => 'Ãrea Texto', + 'Skype'=>'Skype', + 'Time'=>'Hora', + + //Translation for module + 'Calendar' => 'Tarefa', + 'LBL_FIELD_COULD_NOT_BE_CREATED'=>'O Campo %s não pode ser criado', + 'SELECT_MODULE' => 'Selecionar Módulo', + + //Related Lists + 'LBL_RELATION_SHIPS' => 'Relacionamentos', + 'LBL_ADD_RELATIONSHIP' => 'Adicionar Relacionamento', + 'LBL_RELATED_MODULE' => 'Módulo Relacionado', + 'LBL_ADDING_RELATIONSHIP' => 'Adicionando Relationamento para %s', + 'LBL_SELECTED_RELATED_MODULE' => 'Selecionar módulo relacionado', + 'LBL_SELECTED_RELATION_TYPE' => 'Selecionar tipo relacionamento', + 'ONE_ONE_AND_MANY_ONE_RELATIONSHIP' => 'Relacionamentos Um-um e Muitos-um', + 'ONE_MANY_RELATIONSHIP' => 'Relacionamentos Um-muitos e Muitos-muitos', + '1-1' => 'Um para Um', + '1-N' => 'Um para Muitos', + 'N-1' => 'Muitos para Um', + 'N-N' => 'Muitos para Muitos', + + + //New layout translations + 'LBL_FIELD_TYPES' => 'Tipos Campos', + 'LBL_BASIC_FIELDS' => 'Campos Básicos', + 'LBL_MANDATORY' => 'Campos Obrigatórios', + 'LBL_PROPERTIES' => 'Propriedades', + 'LBL_DRAG_UI_TYPE' => 'Arraste e Solte o Campo aqui', + 'LBL_RELATION_FIELDS' => 'Relação Campos', + 'LBL_SELECT_BLOCK' => 'Selecionar Bloco', + 'LBL_RELATION_ADDED_SUCCESS' => 'Relacionamento adicionado com sucesso', + + 'FIELD_NAME_IN_PRIMARY_MODULE' => 'Relação Campos em %s', + 'FIELD_NAME_IN_RELATED_MODULE' => 'Relação Campo em %s', + 'TAB_IN_PRIMARY_MODULE' => 'Tabela/Aba em %s', + 'TAB_IN_RELATED_MODULE' => 'Tabela/Aba em %s', + + 'LBL_DETAIL_VIEW' => 'Visão Detalhada', + 'LBL_EXPANDED' => 'Expandido', + 'LBL_COLLAPSED' => 'Colapsado', + + 'LBL_FILED_IN_PRIMARY_HELP_TEXT' => 'Campo referência do módulo %s', + 'LBL_TAB_IN_PRIMARY_HELP_TEXT' => 'Tabela/Aba do módulo %s', + 'LBL_FILED_IN_RELATED_HELP_TEXT' => 'Campo referência do módulo %s', + 'LBL_TAB_IN_RELATED_HELP_TEXT' => 'Tabela/Aba do módulo %s', + 'LBL_NO_RELATION_TYPE' => 'Não existe nenhum relacionamento deste tipo ', - 'LBL_SHOW_HIDDEN_FIELDS' => 'Visualizar Campos Ocultos', - 'LBL_KEY_FIELD_VIEW' => 'Chave De Vista De Campo', - 'LBL_SELECT_HIDDEN_MODULE' => 'Seleccione oculto módulo', - 'LBL_ADD_RELATIONSHIP' => 'Adicione Relação', - 'LBL_RELATED_MODULE' => 'Módulo Relacionado', - 'LBL_SELECTED_RELATED_MODULE' => 'Selecione módulo relacionado', - 'LBL_SELECTED_RELATION_TYPE' => 'Selecione o tipo de relação', - 'ONE_ONE_AND_MANY_ONE_RELATIONSHIP' => 'Um-a-um e Muitos-um Relacionamento', - 'ONE_MANY_RELATIONSHIP' => 'Um-muitos e Muitos-muitos Relacionamentos', - 'LBL_NO_RELATED_INFO' => 'Não existe Relação', - 'LBL_ADD_NEW_FIELD_HERE' => 'Adicionar novo campo aqui', - 'LBL_SAVE_LAYOUT' => 'Salvar Layout', - 'LBL_SHOW_FIELD' => 'Mostrar Campo', - 'LBL_ENABLE_OR_DISABLE_FIELD_PROP' => 'Ativar / Desativar o campo de propriedades', - 'LBL_PROP_MANDATORY' => 'obrigatório', - 'LBL_DEFAULT_VALUE_NOT_SET' => 'Valor padrão não definido', - 'LBL_INFO' => 'Informações', - 'LBL_PRODUCTFIELDDEFAULTVALUE' => ' (Produtos', - 'LBL_SERVICEFIELDDEFAULTVALUE' => ' (Serviços', - 'LBL_SHOW_THIS_FIELD_IN' => 'Clique aqui para mostrar este campo em %s view', - 'LBL_MAKE_THIS_FIELD' => 'Clique aqui para fazer este campo %s', - 'LBL_HIDE_THIS_FIELD_IN' => 'Clique aqui para ocultar este campo em %s view', - 'LBL_NOT_MAKE_THIS_FIELD' => 'Clique aqui para fazer este campo não-%s', - 'LBL_TAB_NAME_HELP_TEXT' => 'Lista de %s mostrado em %s registro', - 'LBL_TAB_NAME_TEXT' => 'Nome da guia de %s de %s de registro', - 'LBL_FILED_NAME_HELP_TEXT' => 'Um campo de Referência para %s em %s registro será adicionado', - 'LBL_FIELD_NAME_TEXT' => 'Nome do campo %s em %s registro', - 'LBL_COLLAPSE_BLOCK' => 'O Colapso Do Bloco', - 'LBL_COLLAPSE_BLOCK_DETAIL_VIEW' => 'O colapso do bloco no modo de exibição de detalhes', - 'LBL_HEADER' => 'Cabeçalho', - 'LBL_DETAIL_HEADER' => 'O registo de cabeçalho', - 'LBL_HEADER_FIELD' => 'Cabeçalho De Vista', + 'LBL_CREATE_ITEM_CUSTOM_FIELD' => 'Criar Campo Customizado Item Linha', + 'LBL_MAP_PRODUCT_FIELD' => 'Mapa para campo Produtos', + 'LBL_MAP_SERVICE_FIELD' => 'Mapa para campo Serviços', + 'LBL_ENABLE_TO_MAP_PRODUCT_FIELD' => 'Habilitar para mapa campo Produtos', + 'LBL_ENABLE_TO_MAP_SERVICE_FIELD' => 'Habilitar para mapa campo Serviços', + + //Vtiger7 Strings + 'LBL_NO_RELATED_INFO' => 'Nenhum Relacionamento existente', + 'LBL_ADD_NEW_FIELD_HERE' => 'Adicionar novo campo aqui', + 'LBL_SAVE_LAYOUT' => 'Salvar Layout', + 'LBL_SHOW_FIELD' => 'Exibir Campo', + 'LBL_ENABLE_OR_DISABLE_FIELD_PROP' => 'Habilitar/Desabilitar propriedade campo', + 'LBL_PROP_MANDATORY' => 'obrigatório', + 'LBL_DEFAULT_VALUE_NOT_SET' => 'Valor padrão não definido', + 'LBL_INFO' => 'Informação', + 'LBL_PRODUCTFIELDDEFAULTVALUE' => ' (Produtos)', + 'LBL_SERVICEFIELDDEFAULTVALUE' => ' (Serviços)', + 'LBL_SHOW_THIS_FIELD_IN' => 'Clique aqui para exibir este campo na visão %s', + 'LBL_MAKE_THIS_FIELD' => 'Clique aqui para tornar este campo %s', + 'LBL_HIDE_THIS_FIELD_IN' => 'Clique aqui para ocultar este campo na visão %s', + 'LBL_NOT_MAKE_THIS_FIELD' => 'Clique aqui para tornar este campo não-%s', + 'LBL_TAB_NAME_HELP_TEXT' => 'Lista de %s exibido no registro %s', + 'LBL_TAB_NAME_TEXT' => 'Nome da Aba de %s no registro %s', + 'LBL_FILED_NAME_HELP_TEXT' => 'Será adicionado um campos de Referência para %s no registro %s', + 'LBL_FIELD_NAME_TEXT' => 'Nome do Campo de %s no registro %s', + 'LBL_COLLAPSE_BLOCK' => 'Colapsar Bloco', + 'LBL_COLLAPSE_BLOCK_DETAIL_VIEW' => 'Colapsar o bloco na visão detalhada', + 'LBL_HEADER' => 'Cabeçalho', + 'LBL_DETAIL_HEADER' => 'Cabeçalho do Registro', + 'LBL_HEADER_FIELD' => 'Visão do Cabeçalho', + 'LBL_DUPLICATE_HANDLING' => 'Prevenção Duplicidade', + 'LBL_DUPLICATE_CHECK' => 'Habilitar checagem duplicidade', + 'LBL_DUPLICATION_INFO_MESSAGE' => 'O recurso de prevenção de duplicidade impede que novos registros, criados por usuários e aplicativos externos, sejam duplicados. Os registros criados a partir de Importação e a partir de Workflows, não serão verificados duplicados.<br><br>Caso existam registros duplicados, os mesmos poderão ser removidos utilizando o recurso "Localizar duplicados" a partir da página do módulo.', + 'LBL_SELECT_FIELDS_FOR_DUPLICATION' => 'Selecionar um único campo sobre o qual os registros duplicados serão verificados', + 'LBL_SELECT_FIELDS' => 'Selecionar Campos', + 'LBL_MAX_3_FIELDS' => 'Máximo 3 Campos', + 'LBL_SELECT_RULE' => 'Selecionar regra para tratar duplicidade', + 'LBL_ALLOW_DUPLICATES' => 'Permitir Duplicidade', + 'LBL_DO_NOT_ALLOW_DUPLICATES' => 'Não permitir Duplicidade', + 'LBL_DUPLICATES_IN_SYNC_MESSAGE' => 'Ação a ser tomada se forem encontrados registros duplicados durante sincronização com aplicações externas', + 'LBL_PREFER_LATEST_RECORD' => 'Prefere registro mais recente', + 'LBL_PREFER_INTERNAL_RECORD' => 'Prefere registro interno', + 'LBL_PREFER_EXTERNAL_RECORD' => 'Prefere registro externo', + 'LBL_SYNC_TOOLTIP_MESSAGE' => 'Prefere registros mais recentes - Os dados dos registros modificados mais recentemente serão retornados<br>Prefere registros internos - O registro existente será mantido como está<br>Prefere registros externos - Os dados do aplicativo externo serão copiados', ); -$jsLanguageStrings = array( - 'JS_BLOCK_VISIBILITY_SHOW' => 'Programa bloco habilitado' , - 'JS_BLOCK_VISIBILITY_HIDE' => 'Esconder bloco habilitado' , - 'JS_CUSTOM_BLOCK_ADDED' => 'New Custom Block added' , - 'JS_BLOCK_SEQUENCE_UPDATED' => 'Blocks Sequence Updated' , - 'JS_SELECTED_FIELDS_REACTIVATED' => 'Campos selecionados reativados', - 'JS_FIELD_DETAILS_SAVED' => 'Detalhes do campo salvos' , - 'JS_CUSTOM_BLOCK_DELETED' => 'Custom Block Deleted' , - 'JS_CUSTOM_FIELD_ADDED' => '%s Campo Adicionado' , - 'JS_CUSTOM_FIELD_DELETED' => 'Custom Field Deleted' , - 'JS_LENGTH_SHOULD_BE_LESS_THAN_EQUAL_TO' => 'Comprimento deve ser menor ou igual a', - 'JS_PLEASE_ENTER_NUMBER_IN_RANGE_2TO5' => 'Decimal should be in the range 2 to 5', - 'JS_SAVE_THE_CHANGES_TO_UPDATE_FIELD_SEQUENCE' => 'Save the changes to update Field sequence', - 'JS_RELATED_INFO_SAVED' => 'Related Info Saved' , - 'JS_BLOCK_NAME_EXISTS' => 'Block Name already exists' , - 'JS_NO_HIDDEN_FIELDS_EXISTS' => 'No Inactive Fields' , - 'JS_SPECIAL_CHARACTERS' => 'Caracteres especiais como' , - 'JS_NOT_ALLOWED' => 'Não são permitidos' , - 'JS_FIELD_SEQUENCE_UPDATED' => 'Field Sequence Updated' , - 'JS_DUPLICATES_VALUES_FOUND' => 'Duplicate Values found' , - 'JS_FIELD_IN_RELATED_MODULE' => 'Campo Relação em %s' , - 'JS_TAB_IN_RELATED_MODULE' => 'Tabela / Tab em %s' , - 'JS_ONE_ONE_RELATION_FIELD_DELETE' => 'Este campo %s vai apagar no módulo %s %s campo e vai apagar no módulo %s. Você deseja continuar?', - 'JS_FILED_IN_RELATED_HELP_TEXT' => 'Campo de referência do módulo %s', - 'JS_TAB_IN_RELATED_HELP_TEXT' => 'Tabela / Tab de módulo %s' , - 'JS_TAB_FIELD_DELETION' => 'Excluindo o relacionamento vai apagar o campo %s no módulo %s e excluir o %s Table / Tab em %s. Você deseja continuar?', - 'JS_CUSTOM_FIELDS_MAX_LIMIT' => 'Você pode adicionar apenas máximo de campos personalizados %s no bloco %s', - 'JS_DEFAULT_VALUE_NOT_SET' => 'Valor padrão não definido', - 'JS_DEFAULT_VALUE' => 'Valor Padrão', - 'JS_SAVE_MODULE_SEQUENCE' => 'Salvar as alterações para atualizar Relacionadas com o Módulo de seqüência', - 'JS_PRODUCTFIELDDEFAULTVALUE' => ' (Produtos', - 'JS_SERVICEFIELDDEFAULTVALUE' => ' (Serviços', - 'JS_TAB_TAB_DELETION' => 'Isto irá apagar %s guia em %s módulo e de seus dados. Deseja continuar?', - 'JS_SHOW_THIS_FIELD_IN' => 'Clique aqui para mostrar este campo em %s view', - 'JS_MAKE_THIS_FIELD' => 'Clique aqui para fazer este campo %s', - 'JS_HIDE_THIS_FIELD_IN' => 'Clique aqui para ocultar este campo em %s view', - 'JS_NOT_MAKE_THIS_FIELD' => 'Clique aqui para fazer este campo não-%s', - 'JS_TAB_NAME_HELP_TEXT' => 'Lista de %s mostrado em %s registro', - 'JS_TAB_NAME_TEXT' => 'Nome da guia de %s de %s de registro', - 'JS_FILED_NAME_HELP_TEXT' => 'Um campo de Referência para %s em %s registro será adicionado', - 'JS_FIELD_NAME_TEXT' => 'Nome do campo %s em %s registro', - 'JS_PROP_MANDATORY' => 'obrigatório', - 'JS_SUMMARY' => 'Resumo', - 'JS_KEY_FIELD' => 'Campo Chave', - 'JS_QUICK_CREATE' => 'Criação Rápida', - 'JS_MASS_EDIT' => 'Massa Editar', - 'JS_LBL_ARE_YOU_SURE_YOU_WANT_TO_DELETE' => 'Esta operação irá resultar na remoção permanente de dados. -Quando um campo é excluÃdo, os valores armazenados neste campo serão excluÃdos e não poderão ser recuperados. -Se você não tem certeza e quer ser capaz de exibir estes dados no futuro, você pode marcar o campo como Inativo, em vez de excluÃ-lo. Inativos campos mais tarde pode ser ativado a qualquer momento. -Tem certeza de que deseja excluir este campo?', - 'JS_FIELD_DELETE_CONFIRMATION' => 'Excluir - eu não preciso de dados neste campo.', - 'JS_STATUS_CHANGED_SUCCESSFULLY' => 'Status alterado com Sucesso', - 'JS_FIELD_CAN_EITHER_BE_HEADER_OR_SUMMARY_ENABLED' => 'O campo pode ser um campo de cabeçalho ou chave de campo', - 'JS_DETAIL_HEADER' => 'O registo de cabeçalho', - 'JS_MAXIMUM_HEADER_FIELDS_ALLOWED' => 'Máximo de %s campos de cabeçalho permitidos', - 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'Campos de nome aparecer no Cabeçalho padrão', - 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'Esse Campo de Cabeçalho é habilitado para Vtiger7, Ele será exibido no modo de Exibição de Resumo', +$jsLanguageStrings = array( + 'JS_BLOCK_VISIBILITY_SHOW' => 'Exibir Bloco ativo', + 'JS_BLOCK_VISIBILITY_HIDE' => 'Ocultar Bloco ativo', + 'JS_CUSTOM_BLOCK_ADDED' => 'Novo Bloco Customizado adicionado', + 'JS_BLOCK_SEQUENCE_UPDATED' => 'Sequência de Blocos Atualizada', + 'JS_SELECTED_FIELDS_REACTIVATED' => 'Campos Selecionados Reativado', + 'JS_FIELD_DETAILS_SAVED' => 'Detalhes do Campo Salvo', + 'JS_CUSTOM_BLOCK_DELETED' => 'Bloco Customizado Apagado', + 'JS_CUSTOM_FIELD_ADDED' => '%s Campo Adicionado', + 'JS_CUSTOM_FIELD_DELETED' => 'Campo Customizado Apagado', + 'JS_LENGTH_SHOULD_BE_LESS_THAN_EQUAL_TO' => 'O Comprimento deve ser menor ou igual a', + 'JS_PLEASE_ENTER_NUMBER_IN_RANGE_2TO5' => 'O Decimal deve estar entre 2 a 5', + 'JS_SAVE_THE_CHANGES_TO_UPDATE_FIELD_SEQUENCE' => 'Salvar as mudanças para atualizar sequência de Campos', + 'JS_RELATED_INFO_SAVED' => 'Informação Relacionada Salva', + 'JS_BLOCK_NAME_EXISTS' => 'O Nome do Bloco já existe', + 'JS_NO_HIDDEN_FIELDS_EXISTS' => 'Nenhum Campo Inativo', + 'JS_SPECIAL_CHARACTERS' => 'Caracteres Especiais como', + 'JS_NOT_ALLOWED' => 'não é permitido', + 'JS_FIELD_SEQUENCE_UPDATED' => 'Sequência de Campos Atualizada', + 'JS_DUPLICATES_VALUES_FOUND' => 'Foram encontrados Valores Duplicados', + 'JS_FIELD_IN_RELATED_MODULE' => 'Relação campos em %s', + 'JS_TAB_IN_RELATED_MODULE' => 'Tabela/Aba em %s', + 'JS_FILED_IN_RELATED_HELP_TEXT' => 'Campo referência do módulo %s', + 'JS_TAB_IN_RELATED_HELP_TEXT' => 'Tabela/Aba do módulo %s', + 'JS_TAB_FIELD_DELETION' => 'Ao apagar o relacionamento, irá apagar o campo %s no módulo %s e apagará a Tabela/Aba %s no %s. Deseja prosseguir?', + 'JS_ONE_ONE_RELATION_FIELD_DELETE' => 'Este procedimento irá apagar o campo %s no módulo %s e apagará o campo %s no módulo %s. Deseja continuar?', + 'JS_CUSTOM_FIELDS_MAX_LIMIT' => 'Você pode adicionar no máximo de % campos customizados no bloco %s', + 'JS_DEFAULT_VALUE_NOT_SET' => 'Valor padrão não definido', + 'JS_DEFAULT_VALUE' => 'Valor Padrão', + 'JS_SAVE_MODULE_SEQUENCE' => 'Salvar as mudanças para atualizar a sequência de Módulo Relacionado', + 'JS_PRODUCTFIELDDEFAULTVALUE' => ' (Produtos)', + 'JS_SERVICEFIELDDEFAULTVALUE' => ' (Serviços)', + 'JS_TAB_TAB_DELETION' => 'este procedimento apagará a Aba %s no módulo %s e seus dados. Deseja prosseguir?', + 'JS_SHOW_THIS_FIELD_IN' => 'Clique aqui para exibir este campo na visão %s', + 'JS_MAKE_THIS_FIELD' => 'Clique aqui para fazer este campo %s', + 'JS_HIDE_THIS_FIELD_IN' => 'Clique aqui para ocultar este campo na visão %s', + 'JS_NOT_MAKE_THIS_FIELD' => 'Cliwur aqui para fazer este campo não-%s', + 'JS_TAB_NAME_HELP_TEXT' => 'Exibir lista de %s no registro %s', + 'JS_TAB_NAME_TEXT' => 'O nome da Aba de %s no registro %s', + 'JS_FILED_NAME_HELP_TEXT' => 'Um campo Referência para %s no registro %s será adicionada', + 'JS_FIELD_NAME_TEXT' => 'O nome do campo de %s no registro %s', + 'JS_PROP_MANDATORY' => 'obrigatório', + 'JS_SUMMARY' => 'Resumida', + 'JS_KEY_FIELD' => 'Campo Chave', + + 'JS_QUICK_CREATE' => 'Criar Rápido', + 'JS_MASS_EDIT' => 'Editar em Massa', + 'JS_LBL_ARE_YOU_SURE_YOU_WANT_TO_DELETE' => 'Esta operação resultará na remoção permanente dos dados. + Quando um campo é apagado, os valores armazenados neste campo será apagado e não poderá ser recuperados. + Se você não tem certeza e quer poder visualizar esses dados no futuro, você pode marcar o campo como Inativo em vez de excluÃ-lo. Os campos inativos podem ser ativados a qualquer momento. + Você tem certeza que deseja apagar este campo?', + 'JS_FIELD_DELETE_CONFIRMATION' => 'Apagar - Eu não necessito dos dados deste campo.', + 'JS_STATUS_CHANGED_SUCCESSFULLY' => 'O Status foi alterado com sucesso', + 'JS_FIELD_CAN_EITHER_BE_HEADER_OR_SUMMARY_ENABLED' => 'O campo pode ser um campo de cabeçalho ou campo chave', + 'JS_DETAIL_HEADER' => 'Cabeçalho do Registro', + 'JS_MAXIMUM_HEADER_FIELDS_ALLOWED' => 'Permitidos máximo %s campos de cabeçalhos', + 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'Campos Nome aparecem no Cabeçalho por padrão', + 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'Este Campo está habilitado para o Cabeçalho do Vtiger7 e aparecerá na Visão Resumida', -); \ No newline at end of file + 'JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE' => 'Atualizado com sucesso considerando campos selecionados na prevenção de duplicidade', + 'JS_DUPLICATE_HANDLING_FAILURE_MESSAGE' => 'Falha ao considerar os campos selacionado na prevenção de duplicidade', + 'JS_DUPLICATE_CHECK_DISABLED' => 'Checagem de duplicidade desabilitada', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Leads.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Leads.php index 87b78eb645ae6cd861b67b3ecc24b0f9bdc53662..b38d25460f9591bbe8eb6858852f7d72f067b7e7 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Leads.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Leads.php @@ -1,17 +1,18 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. + * All Rights Reserved. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'LBL_CONVERT_LEAD_FIELD_MAPPING' => 'Convert Lead Mapping' , // TODO: Review - 'LBL_ORGANIZATIONS' => 'Organizations' , // TODO: Review - 'LBL_CONTACTS' => 'Contacts' , // TODO: Review - 'LBL_OPPURTUNITIES' => 'Oppurtunities' , // TODO: Review + //Actions + 'LBL_CONVERT_LEAD_FIELD_MAPPING' => 'Mapeamento Conversão Lead', + 'LBL_ORGANIZATIONS' => 'Organizações', + 'LBL_CONTACTS' => 'Contatos', + 'LBL_OPPURTUNITIES' => 'Oportunidades', ); $jsLanguageStrings = array( -); \ No newline at end of file +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/MailConverter.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/MailConverter.php index b116217afc1dd625f3773b8c0ed6eeb69f969c22..ef5e62c71c4119e946479c63cb6efea58c6aa39e 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/MailConverter.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/MailConverter.php @@ -1,180 +1,208 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. + * All Rights Reserved. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'MailConverter' => "Converter Correio", - 'MailConverter_Description' => "Converter e-mails para os respectivos registros", - 'MAILBOX' => "MailBox", - 'RULE' => "Regra", - 'LBL_ADD_RECORD' => "Adicionar caixa de correio", - 'ALL' => "Tudo", - 'UNSEEN' => "Não lido", - 'LBL_MARK_READ' => "Marcar como Lido", - 'SEEN' => "Ler", - 'LBL_EDIT_MAILBOX' => "Editar caixa postal", - 'LBL_CREATE_MAILBOX' => "Criar caixas de correio", - 'LBL_BACK_TO_MAILBOXES' => "Voltar à s caixas de correio", - 'LBL_MARK_MESSAGE_AS' => "Marcar mensagem como", - 'LBL_CREATE_MAILBOX_NOW' => "Criar caixa postal agora", - 'LBL_ADDING_NEW_MAILBOX' => "Adicionando Nova caixa de correio", - 'MAILBOX_DETAILS' => "Detalhes da caixa de correio", - 'SELECT_FOLDERS' => "Selecione Folders", - 'ADD_RULES' => "Adicionar regras", - 'CREATE_Leads_SUBJECT' => "Criar Chumbo", - 'CREATE_Contacts_SUBJECT' => "Criar Contato", - 'CREATE_Accounts_SUBJECT' => "Criar Organização", - 'LBL_ACTIONS' => "Ações", - 'LBL_MAILBOX' => "Caixa Postal", - 'LBL_RULE' => "Regra", - 'LBL_CONDITIONS' => "Condições", - 'LBL_FOLDERS_SCANNED' => "Pastas digitalizadas", - 'LBL_NEXT' => "Próximo", - 'LBL_FINISH' => "Terminar", - 'TO_CHANGE_THE_FOLDER_SELECTION_DESELECT_ANY_OF_THE_SELECTED_FOLDERS' => "Para alterar a seleção de pasta desmarque qualquer uma das pastas selecionadas", - 'LBL_MAILCONVERTER_DESCRIPTION' => "Conversor de correio permite que você configure sua caixa de correio para verificar seus e-mails e criar entidades competentes em Vtiger CRM. <br> Você também precisará definir regras para especificar quais ações devem ser executadas em seus e-mails. <br> Seus e-mails são digitalizados automaticamente, a menos que você tenha desativado tarefa Mail Scanner em Scheduler. <br> <br> <br>", - 'LBL_MAX_LIMIT_ONLY_TWO' => "Você pode configurar apenas duas caixas de correio", - 'LBL_IS_IN_RUNNING_STATE' => "Em estado de execução", - 'LBL_SAVED_SUCCESSFULLY' => "Salvo com sucesso", - 'LBL_CONNECTION_TO_MAILBOX_FAILED' => "Conectando-se a caixa de correio falhou.", - 'LBL_DELETED_SUCCESSFULLY' => "ExcluÃdo com sucesso", - 'LBL_RULE_DELETION_FAILED' => "Exclusão regra não", - 'LBL_RULES_SEQUENCE_INFO_IS_EMPTY' => "Regras Informações seqüência está vazia", - 'LBL_SEQUENCE_UPDATED_SUCCESSFULLY' => "Sequência atualizado com sucesso", - 'LBL_SCANNED_SUCCESSFULLY' => "Digitalizada com êxito", - 'scannername' => "Nome Scanner", - 'server' => "IMAP Name Server", - 'protocol' => "Protocolo", - 'username' => "Nome de usuário", - 'password' => "Senha", - 'ssltype' => "SSL Tipo", - 'sslmethod' => "Método SSL", - 'connecturl' => "Ligação Url", - 'searchfor' => "Procurar", - 'markas' => "Depois de digitalização", - 'LBL_ENABLE' => "Permitir", - 'LBL_DISABLE' => "Incapacitar", - 'LBL_STATUS_MESSAGE' => "Verifique para certificar-ativo", - 'LBL_VALIDATE_SSL_CERTIFICATE' => "Validar certificado SSL", - 'LBL_DO_NOT_VALIDATE_SSL_CERTIFICATE' => "Não Validar Certificado SSL", - 'LBL_ALL_MESSAGES_FROM_LAST_SCAN' => "Todas as mensagens da última verificação", - 'LBL_UNREAD_MESSAGES_FROM_LAST_SCAN' => "As mensagens não lidas da última verificação", - 'LBL_MARK_MESSAGES_AS_READ' => "Marcar mensagens como lidas", - 'LBL_I_DONT_KNOW' => "Eu não sei", - 'LBL_SCAN_NOW' => "Scan Now", - 'LBL_RULES_LIST' => "Lista de regras", - 'LBL_SELECT_FOLDERS' => "Selecione Folders", - 'LBL_DELETED_SUCCESSFULLY' => "ExcluÃdo com sucesso", - 'LBL_RULE_DELETION_FAILED' => "Exclusão regra não", - 'LBL_SAVED_SUCCESSFULLY' => "Salvo com sucesso", - 'LBL_SCANED_SUCCESSFULLY' => "Digitalizada com êxito", - 'LBL_IS_IN_RUNNING_STATE' => "está em estado de execução", - 'LBL_FOLDERS_INFO_IS_EMPTY' => "Informações Folders está vazia", - 'LBL_RULES_SEQUENCE_INFO_IS_EMPTY' => "Regras informações sequnce está vazia", - 'LBL_UPDATE_FOLDERS' => "Atualize Folders", - 'fromaddress' => "De", - 'toaddress' => "A", - 'subject' => "Assunto", - 'body' => "Corpo", - 'matchusing' => "Corresponder", - 'action' => "Ações", - 'LBL_PRIORITY' => "Prioridade", - 'PRIORITISE_MESSAGE' => "Arraste e solte bloco de priorizar a regra", - 'LBL_ALL_CONDITIONS' => "Todas as Condições", - 'LBL_ANY_CONDITIOn' => "Qualquer Estado", - 'Contains' => "Contém", - 'Not Contains' => "Não Contém", - 'Equals' => "Igual", - 'Not Equals' => "Não é igual a", - 'Begins With' => "Começar", - 'Ends With' => "Final", - 'Regex' => "Regex", - 'LBL_FROM_ADDRESS_PLACE_HOLDER' => 'Endereço de email ou nome de domÃnio', - 'CREATE_HelpDesk_FROM' => "Criar Ticket (com contacto)", - 'CREATE_HelpDeskNoContact_FROM' => 'Criar Ticket (sem contato)', - 'UPDATE_HelpDesk_SUBJECT' => "Atualize Ticket", - 'LINK_Contacts_FROM' => "Adicionar ao contato [DE]", - 'LINK_Contacts_TO' => "Adicionar ao contato [TO]", - 'LINK_Accounts_FROM' => "Adicionar à Organização [DE]", - 'LINK_Accounts_TO' => "Adicionar à Organização [TO]", - 'LINK_Leads_FROM' => "Aumentar a vantagem [DE]", - 'LINK_Leads_TO' => "Aumentar a vantagem [TO]", - 'CREATE_Potentials_SUBJECT' => 'Criar Opportunity (com contacto)', - 'CREATE_PotentialsNoContact_SUBJECT' => 'Criar Opportunity (sem contato)', - 'LINK_Potentials_FROM' => 'Adicionar ao Opportunity [DE]', - 'LINK_Potentials_TO' => 'Adicionar ao Opportunity [TO]', - 'LINK_HelpDesk_FROM' => 'Adicionar ao Ticket [DE]', - 'LINK_HelpDesk_TO' => 'Adicionar ao Ticket [TO]', - 'LBL_UPDATE_FOLDERS' => "Atualize Folders", - 'LBL_UNSELECT_ALL' => "Desmarcar todos", - 'LBL_CONVERT_EMAILS_TO_RESPECTIVE_RECORDS' => "Converter e-mails para os respectivos registros", - 'LBL_DRAG_AND_DROP_BLOCK_TO_PRIORITISE_THE_RULE' => "A regra número indica a prioridade. Arraste e solte para alterar a prioridade.", - 'LBL_ADD_RULE' => "Adicionar regra", - 'LBL_PRIORITY' => "Prioridade", - 'LBL_DELETE_RULE' => "Excluir regra", - 'LBL_BODY' => "Corpo", - 'LBL_MATCH' => "Corresponder", - 'LBL_ACTION' => "Ação", - 'LBL_FROM' => "De", - 'LBL_EDIT_RULE' => 'Editar regra', - 'LBL_RULE_CONDITIONS' => 'Condições Regra', - 'LBL_RULE_ACTIONS' => 'Ações de regras', - 'isvalid' => 'Estado', - 'time_zone' => 'Fuso horário Mail Server', - 'scanfrom' => 'Digitalização a partir de e-mails', + 'MailConverter' => 'Escâner Mensagens', + 'MailConverter_Description' => 'Converter e-mails para respectivos registros', + 'MAILBOX' => 'Caixa Postal', + 'RULE' => 'Regra', + 'LBL_ADD_RECORD' => 'Adicionar Caixa Postal', + 'ALL' => 'Todos', + 'UNSEEN' => 'Não Lido', + 'LBL_MARK_READ' => 'Marcar Lido', + 'SEEN' => 'Ler', + 'LBL_EDIT_MAILBOX' => 'Editar Caixa Postal', + 'LBL_CREATE_MAILBOX' => 'Criar Caixa Postal', + 'LBL_BACK_TO_MAILBOXES' => 'Retornar para Caixas Correio', + 'LBL_MARK_MESSAGE_AS' => 'Marcar mensagem com', + 'LBL_CREATE_MAILBOX_NOW' => 'Criar Caixa Postal agora', + 'LBL_ADDING_NEW_MAILBOX' => 'Adicionado Nova Caixa Postal', + 'MAILBOX_DETAILS' => 'Detalhes Caixa Postal', + 'SELECT_FOLDERS' => 'Selecionar Pastas', + 'ADD_RULES' => 'Adicionar Regras', + 'CREATE_Leads_SUBJECT' => 'Criar Lead', + 'CREATE_Contacts_SUBJECT' => 'Criar Contato', + 'CREATE_Accounts_SUBJECT' => 'Criar Organização', + 'LBL_ACTIONS' => 'Ações', + 'LBL_MAILBOX' => 'Caixa Postal', + 'LBL_RULE' => 'Regra', + 'LBL_CONDITIONS' => 'Condições', + 'LBL_FOLDERS_SCANNED' => 'Pastas Escaneada', + 'LBL_NEXT' => 'Próximo', + 'LBL_FINISH' => 'Final', + 'TO_CHANGE_THE_FOLDER_SELECTION_DESELECT_ANY_OF_THE_SELECTED_FOLDERS' => 'Para mudar a seleção da pasta, desmarque qualquer uma das pastas selecionadas', + 'LBL_MAILCONVERTER_DESCRIPTION' => "O Escâner de Mensagens permite que você configure sua Caixa Postal para ser escaneada e criar entidades no Vtiger CRM. <br />Será necessário também a definição de regras para especificar quais ações deverão ser executadas sobre seus e-mails.<br />Os e-mails serão escaneados automaticamente, a menos que você tenha desabilitado a tarefa do Escâner de Mensagens no Agendador. <br /><br /><br />", + + //Server Messages + 'LBL_MAX_LIMIT_ONLY_TWO' => 'Você pode configurar somente duas Caixas de Correio', + 'LBL_IS_IN_RUNNING_STATE' => 'Em estado de execução', + 'LBL_SAVED_SUCCESSFULLY' => 'Salvo com sucesso', + 'LBL_CONNECTION_TO_MAILBOX_FAILED' => 'A conexão com a Caixa Postal falhou.', + 'LBL_DELETED_SUCCESSFULLY' => 'Apagado com Sucesso', + 'LBL_RULE_DELETION_FAILED' => 'Falha ao apagar Regra', + 'LBL_RULES_SEQUENCE_INFO_IS_EMPTY' => 'A informação da sequência de Regras está vazia', + 'LBL_SEQUENCE_UPDATED_SUCCESSFULLY' => 'A sequência foi atualizada com sucesso', + 'LBL_SCANNED_SUCCESSFULLY' => 'Escaneado com sucesso', + + //Field Names + 'scannername' => 'Nome Escâner', + 'server' => 'Nome Servidor IMAP', + 'protocol' => 'Protocolo', + 'username' => 'Nome Usuário', + 'password' => 'Senha', + 'ssltype' => 'Tipo SSL', + 'sslmethod' => 'Método SSL', + 'connecturl' => 'URL Conectada', + 'searchfor' => 'Olhar Para', + 'markas' => 'Após Escanear', + 'isvalid' => 'Status', + 'time_zone' => 'Fuso Horário Servidor Mensagem', + 'scanfrom' => 'Escanear Mensagens de', 'YESTERDAY' => 'Ontem', - 'LBL_AUTOFILL_VALUES_FROM_EMAIL_BODY' => 'Valores de preenchimento automático de corpo-mail', + + //Field values & Messages + 'LBL_ENABLE' => 'Habilitar', + 'LBL_DISABLE' =>'Desabilitar', + 'LBL_STATUS_MESSAGE' => 'Verificar para ativar', + 'LBL_VALIDATE_SSL_CERTIFICATE' => 'Validar Certificado SSL', + 'LBL_DO_NOT_VALIDATE_SSL_CERTIFICATE' => 'Não Validar Certificado SSL', + 'LBL_ALL_MESSAGES_FROM_LAST_SCAN' => 'Todas as mensagens do último Escâner', + 'LBL_UNREAD_MESSAGES_FROM_LAST_SCAN' => 'Mensagens não lidas desde o último Escâner', + 'LBL_MARK_MESSAGES_AS_READ' => 'Marcar mensagens como lida', + 'LBL_I_DONT_KNOW' => "Não sei", + + //Mailbox Actions + 'LBL_SCAN_NOW' => 'Escanear Agora', + 'LBL_RULES_LIST' => 'Lista de Regras', + 'LBL_SELECT_FOLDERS' => 'Selecionar Pastas', + + //Action Messages + 'LBL_DELETED_SUCCESSFULLY' => 'Apagado com sucesso', + 'LBL_RULE_DELETION_FAILED' => 'Falha ao apagar regra', + 'LBL_SAVED_SUCCESSFULLY' => 'Salvo com sucesso', + 'LBL_SCANED_SUCCESSFULLY' => 'Escaneado com sucesso', + 'LBL_IS_IN_RUNNING_STATE' => 'está em execução', + 'LBL_FOLDERS_INFO_IS_EMPTY' => 'A informação das pastas está vazia', + 'LBL_RULES_SEQUENCE_INFO_IS_EMPTY' => 'A informação da sequência de regras está vazia', + + //Folder Actions + 'LBL_UPDATE_FOLDERS' => 'Atualizar Pastas', + + //Rule Fields + 'fromaddress' => 'De', + 'toaddress' => 'Para', + 'subject' => 'Assunto', + 'body' => 'Copo', + 'matchusing' => 'Combinar', + 'action' => 'Ação', + + //Rules List View labels + 'LBL_PRIORITY' => 'Prioridade', + 'PRIORITISE_MESSAGE' => 'Arraste e solte o Bloco para priorizar a regra', + 'LBL_NOTE'=>'Nota', + 'LBL_MAILCONVERTER_DISABLE_MESSAGE'=>'O Escâner de Mensagens será removido em 31 de Julho. A Central de Mensagens fornece um caminho mais simples para escanear seus emails. Para ativar a Central de Mensagens, por favor ', + 'LBL_CLICK_HERE'=>'clique aqui', + + //Rule Field values & Messages + 'LBL_ALL_CONDITIONS' => 'Todas as Condições', + 'LBL_ANY_CONDITIOn' => 'Qualquer Condição', + + //Rule Conditions + 'Contains' => 'Contém', + 'Not Contains' => 'Não Contém', + 'Equals' => 'Igual a', + 'Not Equals' => 'Diferente', + 'Begins With' => 'Inicio', + 'Ends With' => 'Fim', + 'Regex' => 'Regex', + 'LBL_FROM_ADDRESS_PLACE_HOLDER' => 'Nome do endereço de email ou domÃnio', + + //Rule Actions + 'CREATE_HelpDesk_FROM' => 'Criara Chamado (Com Contato)', + 'CREATE_HelpDeskNoContact_FROM' => 'Criar Chamado (Sem Contato)', + 'UPDATE_HelpDesk_SUBJECT' => 'Atualizar Chamado', + 'LINK_Contacts_FROM' => 'Adicionar ao Contato [DE]', + 'LINK_Contacts_TO' => 'Adicionar ao Contato [PARA]', + 'LINK_Accounts_FROM' => 'Adicionar à Organização [DE]', + 'LINK_Accounts_TO' => 'Adicionar à Organização [PARA]', + 'LINK_Leads_FROM' => 'Adicionar ao Lead [DE]', + 'LINK_Leads_TO' => 'Adicionar ao Lead [PARA]', + 'CREATE_Potentials_SUBJECT' => 'Criar Oportunidade (Com Contato)', + 'CREATE_PotentialsNoContact_SUBJECT' => 'Criar Oportunidade (Sem Contato)', + 'LINK_Potentials_FROM' => 'Adicionar à Oportunidade [DE]', + 'LINK_Potentials_TO' => 'Adicionar à Oportunidade [PARA]', + 'LINK_HelpDesk_FROM' => 'Adicionar ao Chamado [DE]', + 'LINK_HelpDesk_TO' => 'Adicionar ao Chamado [PARA]', + + //Select Folder + 'LBL_UPDATE_FOLDERS' => 'Atualizar Pastas', + 'LBL_UNSELECT_ALL' => 'Remover toda Seleção', + + //Setup Rules + 'LBL_CONVERT_EMAILS_TO_RESPECTIVE_RECORDS' => 'Converter emails para os respectivos registros', + 'LBL_DRAG_AND_DROP_BLOCK_TO_PRIORITISE_THE_RULE' => 'O número da regra indica a prioridade. Arraste e solte para alterar a prioridade.', + 'LBL_ADD_RULE' => 'Adicionar Regra', + 'LBL_EDIT_RULE' => 'Editar Regra', + 'LBL_PRIORITY' => 'Prioridade', + 'LBL_DELETE_RULE' => 'Apagar Regra', + 'LBL_BODY' => 'Corpo', + 'LBL_MATCH' => 'Combinar', + 'LBL_ACTION' => 'Ação', + 'LBL_FROM' => 'De', + 'LBL_CONNECTION_ERROR' => 'A conexão com a Caixa Postal falhou. Verificar a conexão da rede e tente novamente.', + 'LBL_RULE_CONDITIONS' => 'Condições da Regra', + 'LBL_RULE_ACTIONS' => 'Ações da Regra', + // Body Rule + 'LBL_AUTOFILL_VALUES_FROM_EMAIL_BODY' => 'Autocompletar valores a partir do corpo do Email', 'LBL_DELIMITER' => 'Delimitador', - 'LBL_COLON' => ': (Dois pontos)', - 'LBL_SEMICOLON' => '; (Ponto e vÃrgula)', + 'LBL_COLON' => ': (VÃrgula)', + 'LBL_SEMICOLON' => '; (Ponto e VÃrgula)', 'LBL_DASH' => '- (HÃfen)', - 'LBL_EQUAL' => '= (Igual a)', + 'LBL_EQUAL' => '= (Igual)', 'LBL_GREATER_THAN' => '> (Maior que)', - 'LBL_COLON_DASH' => ':- (Colon-hÃfen)', - 'LBL_COLON_EQUAL' => ':= (Colón-Equals)', - 'LBL_SEMICOLON_DASH' => ';- (Ponto e vÃrgula, hÃfen)', - 'LBL_SEMICOLON_EQUAL' => ';= (Ponto e vÃrgula-Equals)', - 'LBL_EQUAL_GREATER_THAN' => '=> (Igual-Maior que)', + 'LBL_COLON_DASH' => ':- (VÃrgula-HÃfen)', + 'LBL_COLON_EQUAL' => ':= (VÃgula-Igual)', + 'LBL_SEMICOLON_DASH' => ';- (Ponto e VÃrgula-HÃfen)', + 'LBL_SEMICOLON_EQUAL' => ';= (Ponto e VÃrgula-Igual)', + 'LBL_EQUAL_GREATER_THAN' => '=> (Igual-Maior que)', 'LBL_OTHER' => 'Outro', - 'LBL_DELIMITER_INFO' => 'Selecione o delimitador que separa os valores das etiquetas em seu corpo e-mail', - 'LBL_EMAIL_BODY_INFO' => 'Copie o texto de um e-mail de amostra a ser digitalizado na caixa abaixo. Vtiger CRM tentará localizar valores e ajudá-lo a mapear a campos de CRM.', - 'LBL_SAMPLE_BODY_TEXT' => 'Exemplo de texto de corpo', - 'LBL_FIND_FIELDS' => 'Clique aqui para saber valores do corpo do email', - 'LBL_BODY_FIELDS' => 'Valores de E-mail', + 'LBL_DELIMITER_INFO' => 'Selecionar o delimitador que separa os valores dos rótulos no corpo do seu email', + 'LBL_EMAIL_BODY_INFO' => 'Copie o texto de um exemplo de email para ser escaneado na caixa abaixo. O Vtiger CRM tentará localizar o valor e ajudá-lo mapear para os campos do CRM.', + 'LBL_SAMPLE_BODY_TEXT' => 'Texto do Corpo do Exemplo', + 'LBL_FIND_FIELDS' => 'Clique aqui para encontrar valores no corpo do email', + 'LBL_BODY_FIELDS' => 'Valores do Email', 'LBL_CRM_FIELDS' => 'Campos do CRM', - 'LBL_MAP_TO_CRM_FIELDS' => 'Mapa valores para Campos do CRM', - 'SELECT_FIELD' => 'Selecione Campo', - 'LBL_SAVE_MAPPING_INFO' => 'Salvando regra corpo para uma regra Converter Correio existente irá substituir regra corpo existente para essa regra.', - 'LBL_MULTIPLE_FIELDS_MAPPED' => 'Não é possÃvel mapear um campo de CRM com vários campos', - 'LBL_BODY_RULE' => 'Regra corpo definido', - 'LBL_MAIL_SCANNER_INACTIVE' => 'Esta caixa de correio está em estado inativo', - 'LBL_NO_RULES' => 'Não há regras definidas para esta caixa de correio', - 'LBL_SCANNERNAME_ALPHANUMERIC_ERROR' => 'Scanner Nome aceita valor apenas alfa-numérico. Os caracteres especiais não são permitidos.', - 'LBL_SERVER_NAME_ERROR' => 'Nome do servidor inválido. Os caracteres especiais não são permitidos para o nome do servidor.', - 'LBL_USERNAME_ERROR' => 'Por favor insira um endereço de e-mail válido para o nome do usuário.', - 'servertype' => 'Tipo de servidor', - 'LBL_DUPLICATE_USERNAME_ERROR' => 'Já existe um conversor Mail configurado com este endereço de e-mail. Você não pode criar Converter Correio duplicado com o mesmo endereço de e-mail.', - 'LBL_DUPLICATE_SCANNERNAME_ERROR' => 'Já existe um conversor Mail configurado com este nome. Você não pode criar Converter mail com nome duplicado.', - - 'LBL_NOTE' => 'Nota', - 'LBL_MAILCONVERTER_DISABLE_MESSAGE' => 'Correio do Conversor será removido em 31 de julho. Correspondências fornece uma forma mais fácil a verificação de seus e-mails. Para ativar Correspondências, por favor ', - 'LBL_CLICK_HERE' => 'clique aqui', - 'LBL_CONNECTION_ERROR' => 'Ligar à caixa de Correio falhou. Verifique a conexão de rede e tente novamente.', - + 'LBL_MAP_TO_CRM_FIELDS' => 'Mapear Valores para os Campos do CRM', + 'SELECT_FIELD' => 'Selecionar Campo', + 'LBL_SAVE_MAPPING_INFO' => 'A regra de salvar o corpo para uma regra existente do Escâner de Mensagens, substituirá a regra do corpo existente para essa regra.', + 'LBL_MULTIPLE_FIELDS_MAPPED' => 'Não é possÃvel mapear um campo do CRM com vários campos', + 'LBL_BODY_RULE' => 'Regra do Corpo Definida', + + 'LBL_MAIL_SCANNER_INACTIVE' => 'Esta Caixa Postal está em Estado Inativo', + 'LBL_NO_RULES' => 'Nenhuma regra foi definida para esta Caixa Postal', + + 'LBL_SCANNERNAME_ALPHANUMERIC_ERROR' => 'Nome do Escâner aceita somente valores alfanumérico. Não são permitidos caracteres especiais.', + 'LBL_SERVER_NAME_ERROR' => 'Nome do Servidor inválido. Não são permitidos caracteres especiais no nome do Servidor.', + 'LBL_USERNAME_ERROR' => 'Digite um endereço de email válido para o nome do Usuário.', + 'servertype' => 'Tipo Servidor', + 'LBL_DUPLICATE_USERNAME_ERROR' => 'Já existe um Escâner de Mensagens configurado com este endereço de email. Você não pode criar Escâner de Mensagens duplicado, com o mesmo endereço de email.', + 'LBL_DUPLICATE_SCANNERNAME_ERROR' => 'Já existe um Escâner de Mensagens configurado com este nome. Você não pode criar Escâner de Mensagens com nome duplicado.', + ); $jsLanguageStrings = array( - 'JS_MAILBOX_DELETED_SUCCESSFULLY' => "Caixa de correio excluÃda com sucesso", - 'JS_MAILBOX_LOADED_SUCCESSFULLY' => "MailBox carregado com sucesso", - 'JS_SELECT_ATLEAST_ONE' => 'Por favor, mapear pelo menos um campo', - 'JS_SERVER_NAME' => 'Digite o nome do servidor', - 'JS_TIMEZONE' => 'Fuso horário Mail Server', - 'JS_SCAN_FROM' => 'Digitalização a partir de e-mails', - 'JS_TIMEZONE_INFO' => 'Por favor seleccione fuso horário em que o servidor de correio está localizado. Seleção de fuso horário errado pode pular alguns e-mails de verificação.', - 'JS_SCAN_FROM_INFO' => 'Este campo determina se todos os mails em sua caixa de correio deve ser digitalizada ou mails que desembarcou na sua caixa de correio ontem ou mais tarde deverá ser digitalizada. Este campo é aplicável apenas para a configuração primeira vez ou quando você selecionar uma nova pasta para digitalizar.', + 'JS_MAILBOX_DELETED_SUCCESSFULLY' => 'Caixa Postal apagada com Sucesso', + 'JS_MAILBOX_LOADED_SUCCESSFULLY' => 'Caixa Postal carregada com Sucesso', + 'JS_SELECT_ATLEAST_ONE' => 'Mapear pelo menos um campo', + 'JS_SERVER_NAME' => 'Digitar o nome do Servidor', + 'JS_TIMEZONE' => 'Fuso Horário Servidor Mensagens', + 'JS_SCAN_FROM' => 'Escanear Mensagens de', + 'JS_TIMEZONE_INFO' => 'Selecionar o fuso horário onde o Servidor de Mensagens está localizado. Ao selecionar um fuso horário incorreto alguns emails podem não ser escaneados.', + 'JS_SCAN_FROM_INFO' => 'Este campo determina se todas as mensagens da sua Caixa Postal devem ser escaneadas ou as mensagens que entraram na sua Caixa Postal ontem ou anteriormente deverão ser escaneadas. Este campo é aplicável somente na primeira configuração ou quando você selecionar uma nova pasta para escanear.', 'JS_SELECT_ONE_FOLDER' => 'Você deve selecionar pelo menos uma pasta.', -); \ No newline at end of file +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/MenuEditor.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/MenuEditor.php new file mode 100644 index 0000000000000000000000000000000000000000..2df84ae713f5b48d7ea76c2cce4af1fa51bba0a7 --- /dev/null +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/MenuEditor.php @@ -0,0 +1,29 @@ +<?php +/*+*********************************************************************************** + * The contents of this file are subject to the vtiger CRM Public License Version 1.0 + * ("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. Contributor(s): Valmir Carlos Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ + +$languageStrings = array( + 'LBL_SELECT_MARKETING_MODULES' => 'Seleciona módulos para exibir na aplicação Marketing', + 'LBL_SELECT_SALES_MODULES' => 'Selecionar módulos para exibir na aplicação Vendas', + 'LBL_SELECT_INVENTORY_MODULES' => 'Selecionar módulos para exibir na aplicação Estoque', + 'LBL_SELECT_SUPPORT_MODULES' => 'Selecionar módulos para exibir na aplicação Suporte', + 'LBL_SELECT_PROJECT_MODULES' => 'Selecionar módulos para exibir na aplicação Projeto', + 'LBL_SELECT_HIDDEN_MODULE' => 'Selecionar Módulo Oculto', + 'LBL_INFO' => 'info', + 'LBL_MENU_EDITOR_INFO' => 'Arraste e Solte um Módulo para movê-lo/reordená-lo. Você pode Remover um Módulo a partir da Aplicação e Adicioná-lo mais tarde.', +); + +$jsLanguageStrings = Array ( + 'JS_MODULE_NOT_DRAGGABLE' => 'O Módulo não pode ser movido', + 'JS_MODULE_SEQUENCE_SAVED' => 'A sequência do Módulo foi slava com sucesso', + 'JS_MODULE_REMOVED' => 'O Módulo foi removido com sucesso', + 'JS_MODULE_ADD_SUCCESS' => 'O(s) Módulo(s) foi adicionado(s) com sucesso', + 'JS_PLEASE_SELECT_A_MODULE' => 'Por favor, seleciona um Módulo', +) +?> diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/ModuleManager.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/ModuleManager.php index 302e7b7cb9b76df05c98ef506d11f16b298ecd93..f353f3890990dca7d665a390111f910714b7f24d 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/ModuleManager.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/ModuleManager.php @@ -4,100 +4,69 @@ * ("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. - * Contributor(s): Valmir C. Trindade - Translate to Brazilian Portuguese - 28/07/2014 - www.ttcasolucoes.com.br + * Portions created by vtiger are Copyright (C) vtiger. + * All Rights Reserved. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br *************************************************************************************/ $languageStrings = array( - 'LBL_ACCEPT_AND_INSTALL' => 'Aceitar e Instalar', - 'LBL_ACCEPT_WITH_THE_DISCLAIMER' => 'Estou ciente e gostaria de continuar', - 'LBL_DECLINE' => 'Rejeitar', - 'LBL_EXISTS'=>'Existe', - 'LBL_EXTENSION_NOT_COMPATABLE' => 'A Extensão não é compatÃvel com o Vtiger', - 'LBL_EXTENSION_STORE' => 'Loja de Extensões', - 'LBL_FAILED' => 'Falhou', - 'LBL_FINISH' => 'Final', - 'LBL_IMPORTED_MODULE' => ' o módulo foi importado com sucesso.', - 'LBL__IMPORTING_MODULE' => 'Importando Módulo', - 'LBL_IMPORT_MODULE_FROM_ZIP' => 'Importar Módulo a partir do Zip', + 'ModuleManager' => 'Gerenciador de Módulos', 'LBL_IMPORT_MODULE' => 'Importar Módulo', - 'LBL_IMPORT_MODULE' => 'Instalar a partir Vtiger ...', - 'LBL_IMPORT_NOW' => 'Importar Agora', - 'LBL_IMPORT_ZIP' => 'Instalar a partir Arquivo ...', + 'LBL_VTIGER_EXTENSION_STORE' => 'Loja Extensões Vtiger', + 'LBL_PUBLISHER' => 'Editor', + 'LBL_LICENSE' => 'Licença', + 'LBL_PUBLISHED_ON' => 'Publicado em', + 'LBL_INSTALL' => 'Instalar', + 'LBL_UPGRADE' => 'Atualizar', + 'LBL_VERSION' => 'Versão', + 'LBL_DECLINE' => 'Declinar', + 'LBL_ACCEPT_AND_INSTALL' => 'Aceitar e Instalar', + 'LBL_ALREADY_EXISTS' => 'Já existe', + 'LBL_OK' => 'OK', + 'LBL_EXTENSION_NOT_COMPATABLE' => 'A Extensão não compatÃvel com o Vtiger CRM', + 'LBL_INVALID_FILE' => 'Arquivo inválido', + 'LBL_NO_LICENSE_PROVIDED' => 'Nenhuma Licença foi Fornecida', 'LBL_INSTALLATION' => 'Instalação', + 'LBL_FAILED' => 'Falha', + 'LBL_SUCCESSFULL' => 'Sucesso', 'LBL_INSTALLATION_LOG' => 'Log da Instalação', - 'LBL_INSTALL_FROM_ZIP' => 'Instalar a partir do Zip', - 'LBL_INSTALL' => 'Instalar', - 'LBL_INVALID_FILE' => 'Arquivo Inválido', - 'LBL_INVALID_IMPORT_TRY_AGAIN' => ' fornecida para importar o módulo! Tente Novamente.', - 'LBL_LICENSE_ACCEPT_AGREEMENT' => 'Aceito os termos da Licença.', - 'LBL_LICENSE' => 'Licença', + //Install From file labels + 'LBL_VERIFY_IMPORT_DETAILS' => 'Verificar Detalhes da Importação', 'LBL_MODULE_NAME' => 'Nome Módulo', - 'LBL_NO_LICENSE_PROVIDED' => 'Nenhuma Licença Fornecida', - 'LBL_NOT_FOUND' => "Desculpe. Não encontramos nenhuma Extensão/Módulo para Versão Atual", - 'LBL_OK' => 'OK', - 'LBL_OK' => 'OK', - 'LBL_PHP_EXTENSION_LOADER_IS_NOT_AVAIABLE' => 'Por favor, instale o carregador de extensão', - 'LBL_PROCEED_WITH_IMPORT' => 'Deseja prosseguir com a importação?', - 'LBL_PUBLISHED_ON' => 'Publicado em', - 'LBL_PUBLISHER' => 'Editor', 'LBL_REQ_VTIGER_VERSION' => 'Versão Vtiger', - 'LBL_SUCCESSFULL' => 'Successo', - 'LBL_UPDATED_MODULE' => ' o Módulo fou atualizado com sucesso.', - 'LBL_UPDATE_MODULE_FROM_FILE' => 'Atualizar Módulo a partir do Arquivo', - 'LBL_UPDATE_NOW' => 'Atualizar Agora', + 'LBL_LICENSE_ACCEPT_AGREEMENT' => 'Eu aceitop os termos da Licença.', + 'LBL_EXISTS'=>'Existe', + 'LBL_PROCEED_WITH_IMPORT' => 'Você deseja executar com a importação?', + 'LBL_VERSION_NOT_SUPPORTED' => 'A versão do Módulo não compatÃvel com a versão do Vtiger', + 'LBL_FINISH' => 'Final', + 'LBL_IMPORT_ZIP' => 'Instalar a partir do Arquivo', + 'LBL_NOT_FOUND' => "Desculpe. Não encontramos nenhuma Extensão/Módulo para Versão Atual", + 'LBL_INVALID_IMPORT_TRY_AGAIN' => ' fornecido para importar o módulo! Tente Novamente.', + 'LBL_IMPORTED_MODULE' => ' o Módulo foi importado com sucesso.', + 'LBL__IMPORTING_MODULE' => 'Importando Módulo', + 'LBL_EXTENSION_STORE' => 'Loja de Extensões', + 'LBL_ACCEPT_WITH_THE_DISCLAIMER' => 'Estou ciente e gostaria de continuar', + 'LBL_INSTALL_FROM_ZIP' => 'Instalar a partir do Zip', + 'LBL_DELETE_EXIST_DIRECTORY' => 'Por favor, apague o diretório já existente do módulo para prosseguir com a importação do módulo', + + 'LBL_UPDATE_MODULE_FROM_FILE' => 'Atualizar o Módulo a partir do Arquivo', + 'LBL_UPDATED_MODULE' => ' o Módulo foi atualizado com sucesso.', 'LBL__UPDATING_MODULE' => 'Atualizando Módulo', - 'LBL_UPGRADE' => 'Atualizar', - 'LBL_VERIFY_IMPORT_DETAILS' => 'Verificar Detalhes Importação', - 'LBL_VERSION_NOT_SUPPORTED' => 'A versão do Módulo não é compatÃvel com a versão do vtiger', - 'LBL_VERSION' => 'Versão', - 'LBL_VTIGER_EXTENSION_STORE' => 'Loja de Extensões do Vtiger', - 'LBL_DISCLAIMER_FOR_IMPORT_FROM_ZIP' => '<b>Aviso - Arquivos customizados podem colocar seu CRM em risco</b> <br> + 'LBL_PHP_EXTENSION_LOADER_IS_NOT_AVAIABLE' => 'Por favor, instale o carregador de extensão', + 'LBL_IMPORT_MODULE_FROM_ZIP' => 'Importar Módulo a partir do Zip', + 'LBL_UPDATE_NOW' => 'Atualizar Agora', + 'LBL_IMPORT_NOW' => 'Importar Agora', + 'LBL_DISCLAIMER_FOR_IMPORT_FROM_ZIP' => '<b>Aviso - Arquivos customizados podem colocar seu CRM em risco</b> <br> Esta funcionalidade foi disponibilizada para que os Desenvolvedores testem seus novos módulos. Se você está instalando a partir de um arquivo fornecido por terceiros, por favor, prossiga somente se confiar no fornecedor. Módulos customizados podem incluir vulnerabilidades de segurança e sobrescrever arquivos do Sistema colocando em risco seu CRM. O módulo que você está prestes a instalar não foi revisto pela equipe do Vtiger.', - //Extension Store translations - 'LBL_VTIGER_EXTENSION_STORE' => 'Loja de Extensões Vtiger', - 'LBL_SEARCH_FOR_AN_EXTENSION' => 'Pesquisar por uma Extensão..', - 'LBL_DOWNLOADS' => 'Downloads', - 'LBL_NO_EXTENSIONS_FOUND' => 'Nenhuma Extensão foi Encontrada', - 'LBL_REGISTER_NOW' => 'Registrar Agora', - 'LBL_RATINGS' => 'Avaliações', - 'LBL_DESCRIPTION' => 'Descrição', - 'LBL_AUTHOR_INFORMATION' => 'Informações do Autor', - 'LBL_AUTHOR_NAME' => 'Nome do Autor', - 'LBL_PHONE' => 'Telefone', - 'LBL_EMAIL' => 'Email', - 'LBL_SCREEN_SHOTS' => 'Imagens', - 'LBL_CUSTOMER_RATINGS' => 'Avaliações Clientes', - 'LBL_CUSTOMER_REVIEWS' => 'Comentários Clientes', - 'LBL_WRITE_A_REVIEW' => 'Escrever um Comentário', - 'LBL_CUSTOMER_REVIEW' => 'Comentário Cliente', - 'LBL_REVIEW' => 'Comentário', - 'LBL_CUSTOMERS_REVIEWED' => 'Avaliado Clientes', - 'LBL_SINGLE_CUSTOMER_REVIEWED' => 'Avaliado Único Cliente', - 'LBL_INSTALLATION_FAILED' => 'A instalação Falhou', - 'LBL_SUCCESSFULL_INSTALLATION' => 'Instalado com Sucesso', - 'LBL_MORE_DETAILS' => 'Mais Detalhes', - 'LBL_INSTALLED' => 'Instalado', - 'Install' => 'Instalar', - 'Upgrade' => 'Atualizar', - 'LBL_RATE_IT' => 'Avalie.', - 'LBL_UNINSTALL' => 'Desinstalar', - 'LBL_LAUNCH' => 'Iniciar', - - 'email' => 'Email', - 'company' => 'Empresa', - 'Phone' => 'Telefone', - 'Website' => 'Website', ); $jsLanguageStrings = array( - 'JS_ON' => 'em', - 'JS_PLEASE_INSTALL_EXTENSION_LOADER_TO_INSTALL_THIS_EXTENSION_FROM_BELOW_LINK' => 'Por favor, para instalar esta extensão instale o carregador de extensão a partir do link abaixo', - 'JS_EXTENSION_STORE_IS_NOT_SUPPOTED_WOULD_YOU_LIKE_TO_INSTALL' => 'A extensão não é suportada, gostaria de instalar?', - 'JS_PHP_EXTENSION_LOADER_NOT_INSTALLED' => 'O carregador de extensão PHP não foi instalado', - 'JS_CLICK_HERE' => 'Clique aqui ', - 'JS_FOR_INSTALLATION' => 'para instalar', - 'JS_IMPORT_SUCCESSFULL' => 'Importado com Sucesso', - 'JS_IMPORTED_MODULE' => ' o Módulo foi importado com sucesso.', - 'JS_UPDATE_SUCCESSFULL' => 'Atualização realizada com Sucesso', - 'JS_UPDATED_MODULE' => 'o Módulo foi atualizado com sucesso', + 'JS_ON' => 'em', + 'JS_PLEASE_INSTALL_EXTENSION_LOADER_TO_INSTALL_THIS_EXTENSION_FROM_BELOW_LINK' => 'Por favor, para instalar esta extensão instale o carregador de extensão a partir do link abaixo', + 'JS_EXTENSION_STORE_IS_NOT_SUPPOTED_WOULD_YOU_LIKE_TO_INSTALL' => 'A extensão não é suportada, gostaria de instalar?', + 'JS_PHP_EXTENSION_LOADER_NOT_INSTALLED' => 'O carregador de extensão PHP não foi instalado', + 'JS_CLICK_HERE' => 'Clique aqui', + 'JS_FOR_INSTALLATION' => 'para instalação', + 'JS_IMPORT_SUCCESSFULL' => 'Importação realizada com Sucesso', + 'JS_IMPORTED_MODULE' => ' o Módulo foi importado com sucesso.', + 'JS_UPDATE_SUCCESSFULL' => 'Atualização realizada com Sucesso', + 'JS_UPDATED_MODULE' => 'o Módulo foi atualizado com sucesso', ); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/PBXManager.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/PBXManager.php new file mode 100644 index 0000000000000000000000000000000000000000..fa1999b5c64af6df48b453e8c1ac58f469c60639 --- /dev/null +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/PBXManager.php @@ -0,0 +1,32 @@ +<?php + +/* +*********************************************************************************** + * The contents of this file are subject to the vtiger CRM Public License Version 1.0 + * ("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. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br. + * *********************************************************************************** */ +$languageStrings = array( + 'LBL_SELECT_ONE' => 'Selecionar', + 'LBL_PBXMANAGER' =>'Gestor PBX', + 'LBL_PBXMANAGER_CONFIG' => 'Detalhes do Servidor Asterisk', + 'LBL_NOTE' => 'Nota:', + 'LBL_INFO_WEBAPP_URL' => 'Configure a URL do seu Asterisk no formato', + 'LBL_FORMAT_WEBAPP_URL' => '(Protocolo)://(asterisk_ip):(Porta)', + 'LBL_FORMAT_INFO_WEBAPP_URL' => 'ex:http://0.0.0.0:5000', + 'LBL_INFO_CONTEXT' => 'Contexto EspecÃfico do Vtiger configurado no seu servidro Asterisk (extensions.conf)', + 'LBL_PBXMANAGER_INFO' => 'Configure os Detalhes do Servidor Asterisk acima, somente depois de instalar o Conector do Vtiger em seu Servidor Asterisk.', + + 'webappurl'=>'URL do Vtiger Asterisk', + 'vtigersecretkey'=>'Chave Secreta Vtiger', + 'outboundcontext' => 'Contexto Outbound', + 'outboundtrunk' => 'Tronco Outbound', + +); + +$jsLanguageStrings = array( + +); +?> diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/PickListDependency.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/PickListDependency.php index 8756dabf2b63d1868c5d273863332739c7024d28..0efc6cab7e59a1e486ace026449927f03264c067 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/PickListDependency.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/PickListDependency.php @@ -1,39 +1,38 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. + * All Rights Reserved. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'LBL_ADD_RECORD' => 'Add Picklist Dependency' , // TODO: Review - 'LBL_PICKLIST_DEPENDENCY' => 'Picklist Dependency' , // TODO: Review - 'LBL_SELECT_MODULE' => 'Module' , // TODO: Review - 'LBL_SOURCE_FIELD' => 'Source Field' , // TODO: Review - 'LBL_TARGET_FIELD' => 'Target Field' , // TODO: Review - 'LBL_SELECT_FIELD' => 'Select field' , // TODO: Review - 'LBL_CONFIGURE_DEPENDENCY_INFO' => 'Click on the respective cell to change the mapping for picklist values of target field', // TODO: Review - 'LBL_CONFIGURE_DEPENDENCY_HELP_1' => 'Only mapped picklist values of the Source field will be shown below (except for first time)', // TODO: Review - 'LBL_CONFIGURE_DEPENDENCY_HELP_2' => 'If you want to see or change the mapping for the other picklist values of Source field, <br/> - then you can select the values by clicking on <b>\'Select Source values\'</b> button on the right side', // TODO: Review - 'LBL_CONFIGURE_DEPENDENCY_HELP_3' => 'Selected values of the Target field values, are highlighted as', // TODO: Review - 'LBL_SELECT_SOURCE_VALUES' => 'Select Source Values' , // TODO: Review - 'LBL_SELECT_SOURCE_PICKLIST_VALUES' => 'Select Source Picklist Values', // TODO: Review - 'LBL_ERR_CYCLIC_DEPENDENCY' => 'This dependency setup is not allowed as it ends up in some cyclic dependency', // TODO: Review - 'LBL_SELECT_ALL_VALUES' => 'Selecionar tudo', - 'LBL_UNSELECT_ALL_VALUES' => 'Desmarcar tudo', - 'LBL_CYCLIC_DEPENDENCY_ERROR' => 'Isso poderia acabar em redundância cÃclica como campo %s já está configurado para o campo %s', - - 'PickListDependency' => 'Lista De Opções De Dependência', - + 'LBL_ADD_RECORD' => 'Adicionar Dependência Lista de Opções', + 'PickListDependency' => 'Dependência Lista Opções', + 'LBL_PICKLIST_DEPENDENCY' => 'Dependência Lista de Opções', + 'LBL_SELECT_MODULE' => 'Módulo', + 'LBL_SOURCE_FIELD' => 'Campo Origem', + 'LBL_TARGET_FIELD' => 'Campo Alvo', + 'LBL_SELECT_FIELD' => 'Selecionar campo', + 'LBL_CONFIGURE_DEPENDENCY_INFO' => 'Clique sobre a respectiva célula, para alterar o mapeamento de valores da Lista de Opções do campo alvo', + 'LBL_CONFIGURE_DEPENDENCY_HELP_1' => 'Somente valores do campo Fonte, da Lista de Opções mapeada, serão exibidos a seguir (exceto na primeira vez)', + 'LBL_CONFIGURE_DEPENDENCY_HELP_2' => "e você deseja ver ou alterar o mapeamento para outros valores da Lista de Opções do campo Fonte,<br/> + poderá selecionar os valores clicando no botão <b>'Selecionar valores Fonte'</b> no lado direito", + 'LBL_CONFIGURE_DEPENDENCY_HELP_3' => 'Os valores selecionados do campo Alvo, são destacados como', + 'LBL_SELECT_SOURCE_VALUES' => 'Selecionar Valores da Fonte', + 'LBL_SELECT_SOURCE_PICKLIST_VALUES' => 'Selecionar Valores da Lista de Opções Fonte', + 'LBL_ERR_CYCLIC_DEPENDENCY' => 'Esta configuração de dependência não é permitida, uma vez que acaba gerando uma dependência cÃclica', + 'LBL_SELECT_ALL_VALUES' => 'Selecionar Tudo', + 'LBL_UNSELECT_ALL_VALUES' => 'Remover toda seleção', + 'LBL_CYCLIC_DEPENDENCY_ERROR' => 'Este procedimento pode resultar em uma redundância cÃclica, já que o campo %s já está configurado para o campo %s', ); + $jsLanguageStrings = array( - 'JS_LBL_ARE_YOU_SURE_YOU_WANT_TO_DELETE' => 'Are you sure you want to delete this picklist dependency?', // TODO: Review - 'JS_DEPENDENCY_DELETED_SUEESSFULLY' => 'Dependency deleted successfully', // TODO: Review - 'JS_PICKLIST_DEPENDENCY_SAVED' => 'Picklist Dependency Saved' , // TODO: Review - 'JS_DEPENDENCY_ATLEAST_ONE_VALUE' => 'You need to select atleast one value for', // TODO: Review - 'JS_SOURCE_AND_TARGET_FIELDS_SHOULD_NOT_BE_SAME' => 'Source field and Target field should not be same', // TODO: Review - 'JS_SELECT_SOME_VALUE' => 'Select some value' , // TODO: Review -); \ No newline at end of file + 'JS_LBL_ARE_YOU_SURE_YOU_WANT_TO_DELETE' => 'Você tem certeza que deseja apagar esta dependência de Lista de Opções?', + 'JS_DEPENDENCY_DELETED_SUEESSFULLY' => 'A dependência foi apagada com sucesso', + 'JS_PICKLIST_DEPENDENCY_SAVED' => 'A dependência da Lista de Opções foi Salva', + 'JS_DEPENDENCY_ATLEAST_ONE_VALUE' => 'Você precisa selecionar pelo menos um valor para', + 'JS_SOURCE_AND_TARGET_FIELDS_SHOULD_NOT_BE_SAME' => 'Os campos Fonte e Alvo não devem ser os mesmos', + 'JS_SELECT_SOME_VALUE' => 'Selecione algum valor' +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Picklist.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Picklist.php index 256848a7a7c3192f7d8884c73dc3efefbe0318bb..0283c60ca49b6b436c8ef5c09cb50439fb014c16 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Picklist.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Picklist.php @@ -1,64 +1,61 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - ************************************************************************************/ -$languageStrings = array( - 'LBL_SELECT_PICKLIST_IN' => 'Select Picklist in' , // TODO: Review - 'LBL_ADD_VALUE' => 'Add Value' , // TODO: Review - 'LBL_RENAME_VALUE' => 'Rename Value' , // TODO: Review - 'LBL_DELETE_VALUE' => 'Delete Value' , // TODO: Review - 'LBL_ITEMS' => 'Values' , // TODO: Review - 'LBL_DRAG_ITEMS_TO_RESPOSITION' => 'Drag items to reposition them', // TODO: Review - 'LBL_SELECT_AN_ITEM_TO_RENAME_OR_DELETE' => 'Select an item to rename or delete', // TODO: Review - 'LBL_TO_DELETE_MULTIPLE_HOLD_CONTROL_KEY' => 'To Delete multiple items hold Ctrl key down while selecting items', // TODO: Review - 'LBL_ADD_ITEM_TO' => 'Add Item to' , // TODO: Review - 'LBL_ITEM_VALUE' => 'Item value' , // TODO: Review - 'LBL_ITEM_TO_RENAME' => 'Item to rename' , // TODO: Review - 'LBL_ENTER_NEW_NAME' => 'Enter new Name' , // TODO: Review - 'LBL_RENAME_PICKLIST_ITEM' => 'Rename PickList Item' , // TODO: Review - 'LBL_DELETE_PICKLIST_ITEMS' => 'Delete PickList Items' , // TODO: Review - 'LBL_ITEMS_TO_DELETE' => 'Items to Delete' , // TODO: Review - 'LBL_REPLACE_IT_WITH' => 'Replace it with' , // TODO: Review - 'LBL_ASSIGN_TO_ROLE' => 'Assign to Role' , // TODO: Review - 'LBL_ALL_ROLES' => 'All Roles' , // TODO: Review - 'LBL_CHOOSE_ROLES' => 'Choose Roles' , // TODO: Review - 'LBL_ALL_VALUES' => 'All values' , // TODO: Review - 'LBL_VALUES_ASSIGNED_TO_A_ROLE' => 'Values assigned to a role' , // TODO: Review - 'LBL_ASSIGN_VALUE' => 'Assign Value' , // TODO: Review - 'LBL_SAVE_ORDER' => 'Save Order' , // TODO: Review - 'LBL_ROLE_NAME' => 'Role name' , // TODO: Review - 'LBL_SELECTED_VALUES_MESSGAE' => 'will appear for the user with this role', // TODO: Review - 'LBL_ENABLE/DISABLE_MESSGAE' => 'Click on value to Enable/Disable it.After done click on save', // TODO: Review - 'LBL_ASSIGN_VALUES_TO_ROLES' => 'Assign Values to Roles' , // TODO: Review - 'LBL_SELECTED_VALUES' => 'Selected Values' , // TODO: Review - 'NO_PICKLIST_FIELDS' => 'do not have any picklist fields', // TODO: Review - 'LBL_EDIT_PICKLIST_ITEM' => 'Editar Picklist item', - - //Translation for module - 'Calendar' => 'Tarefa' , - - 'LBL_NON_EDITABLE_PICKLIST_VALUES' => 'Não Editável Valores', - -); -$jsLanguageStrings = array( - 'JS_ITEM_RENAMED_SUCCESSFULLY' => 'Item Renamed Successfully' , // TODO: Review - 'JS_ITEM_ADDED_SUCCESSFULLY' => 'Item added Successfully' , // TODO: Review - 'JS_NO_ITEM_SELECTED' => 'No item Selected' , // TODO: Review - 'JS_MORE_THAN_ONE_ITEM_SELECTED' => 'More than one Item selected' , // TODO: Review - 'JS_ITEMS_DELETED_SUCCESSFULLY' => 'Items Deleted Successfully' , // TODO: Review - 'JS_YOU_CANNOT_DELETE_ALL_THE_VALUES' => 'You cannot delete all the values', // TODO: Review - 'JS_ALL_ROLES_SELECTED' => 'All Roles Selected' , // TODO: Review - 'JS_LIST_UPDATED_SUCCESSFULLY' => 'List updated Successfully' , // TODO: Review - 'JS_SEQUENCE_UPDATED_SUCCESSFULLY' => 'Sequence updated successfully', // TODO: Review - 'JS_VALUE_ASSIGNED_SUCCESSFULLY' => 'Value assigned successfully' , // TODO: Review - 'JS_PLEASE_SELECT_MODULE' => 'Please seelct module' , // TODO: Review - - 'JS_SPECIAL_CHARACTERS' => 'Caracteres especiais como', - 'JS_NOT_ALLOWED' => 'não são permitidos', - -); \ No newline at end of file +<?php +/*+*********************************************************************************** + * The contents of this file are subject to the vtiger CRM Public License Version 1.0 + * ("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. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ +$languageStrings = array( + 'LBL_SELECT_PICKLIST_IN' => 'Selecionar Lista Opções em', + 'LBL_ADD_VALUE' => 'Adicionar Valor', + 'LBL_RENAME_VALUE' => 'Renomear Valor', + 'LBL_DELETE_VALUE' => 'Apagar Valor', + 'LBL_ITEMS' => 'Valores', + 'LBL_DRAG_ITEMS_TO_RESPOSITION' => 'Arrastar itens para o reposicioná-los', + 'LBL_SELECT_AN_ITEM_TO_RENAME_OR_DELETE' => 'Selecionar um item para renomear ou apagar', + 'LBL_TO_DELETE_MULTIPLE_HOLD_CONTROL_KEY' => 'Para apagar múltiplos itens, aperte e segure a tecla CTRL enquanto seleciona os itens', + 'LBL_ADD_ITEM_TO' => 'Adicionar Item para', + 'LBL_ITEM_VALUE' => 'Valor do Item', + 'LBL_ITEM_TO_RENAME' => 'Item para renomear', + 'LBL_ENTER_NEW_NAME' => 'Digite novo Nome', + 'LBL_RENAME_PICKLIST_ITEM' => 'Renomear Item da Lista de Opções', + 'LBL_DELETE_PICKLIST_ITEMS' => 'Apagar Itens da Lista de Opções', + 'LBL_ITEMS_TO_DELETE' => 'Itens para Apagar', + 'LBL_REPLACE_IT_WITH' => 'SubstituÃ-o por', + 'LBL_ASSIGN_TO_ROLE' => 'Atribuir à Função', + 'LBL_ALL_ROLES' => 'Todas as Funções', + 'LBL_CHOOSE_ROLES' => 'Escolha as Funções', + 'LBL_ALL_VALUES' => 'Todos os valores', + 'LBL_VALUES_ASSIGNED_TO_A_ROLE' => 'Valores designados para a Função', + 'LBL_ASSIGN_VALUE' => 'Atribuir Valor', + 'LBL_SAVE_ORDER' => 'Salvar Ordem', + 'LBL_ROLE_NAME' => 'Nome da Função', + 'LBL_SELECTED_VALUES_MESSGAE' => 'será exibido para os Usuários com esta Função', + 'LBL_ENABLE/DISABLE_MESSGAE' => 'Clique sobre o valor para Habilitar/Desabilitar. Depois de clicar em Salvar', + 'LBL_ASSIGN_VALUES_TO_ROLES' => 'Atribuir Valores para as Funções', + 'LBL_SELECTED_VALUES' => 'Valores selecionados', + 'NO_PICKLIST_FIELDS'=> 'não existe nenhum campo Lista de Opções', + 'LBL_NON_EDITABLE_PICKLIST_VALUES' => 'Nenhum Valor Editável', + 'LBL_EDIT_PICKLIST_ITEM' => 'Editar Item Lista Opções', + + //Translation for module + 'Calendar' => 'Tarefa', +); +$jsLanguageStrings = array( + //PickList + 'JS_ITEM_RENAMED_SUCCESSFULLY' => 'Item Renomeado com Sucesso', + 'JS_ITEM_ADDED_SUCCESSFULLY' => 'Item adicionado com Sucesso', + 'JS_NO_ITEM_SELECTED' => 'Nenhum item Selecionado', + 'JS_MORE_THAN_ONE_ITEM_SELECTED' => 'Selecionado mais de um Item', + 'JS_ITEMS_DELETED_SUCCESSFULLY' => 'Os Itens foram Apagados com Sucesso', + 'JS_YOU_CANNOT_DELETE_ALL_THE_VALUES' => 'Você não pode apagar todos os valores', + 'JS_ALL_ROLES_SELECTED' => 'Todas as Funções Selecionadas', + 'JS_LIST_UPDATED_SUCCESSFULLY' => 'A Lista foi atualizada com Sucesso', + 'JS_SEQUENCE_UPDATED_SUCCESSFULLY' => 'A Sequência foi atualizada com Sucesso', + 'JS_VALUE_ASSIGNED_SUCCESSFULLY' => 'O Valor foi atribuÃdo com Sucesso', + 'JS_PLEASE_SELECT_MODULE' => 'Selecione um Módulo', + 'JS_SPECIAL_CHARACTERS' => 'Caracteres especiais como', + 'JS_NOT_ALLOWED' => 'não é permitido', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Potentials.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Potentials.php index 4d9d65614aed754247c81ba93acf2bf236a4feac..20cf0593a80f9c27aa489eb58ad737d3eeb809d0 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Potentials.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Potentials.php @@ -1,13 +1,13 @@ <?php -/*+*********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 +/* +********************************************************************************** + * 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. - *************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. + * All Rights Reserved. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + * ***********************************************************************************/ + $languageStrings = array( - 'LBL_POTENTIAL_FIELD_MAPPING' => 'Oportunidades de mapeamento de campo', + 'LBL_POTENTIAL_FIELD_MAPPING' => 'Mapeamento Campos Oportunidades', ); -?> diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Profiles.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Profiles.php index d8b8c5263f6464ae2e843c5b9257826516ddeac4..64fb234cdf2d41e9c7b05f5702b3fca7565002dd 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Profiles.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Profiles.php @@ -2,48 +2,52 @@ /*+********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source + * 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. + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * All Rights Reserved. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br ************************************************************************************/ $languageStrings = array( - 'Profiles' => 'Perfis' , - 'SINGLE_Profiles' => 'Perfil' , - 'LBL_ADD_RECORD' => 'Add Profile' , - 'LBL_CREATE_PROFILE' => 'Create Profile' , // TODO: Review - 'LBL_PROFILE_NAME' => 'Profile name' , // TODO: Review - 'LBL_DESCRIPTION' => 'Description' , // TODO: Review - 'LBL_EDIT_PRIVILIGES_FOR_THIS_PROFILE' => 'Edit priviliges for this profile', // TODO: Review - 'LBL_MODULES' => 'Modules' , // TODO: Review - 'LBL_PROFILE_VIEW' => 'Profile view' , // TODO: Review - 'LBL_FIELDS' => 'Fields' , // TODO: Review - 'LBL_TOOLS' => 'Tools' , // TODO: Review - 'LBL_FIELD_AND_TOOL_PRIVILEGES' => 'Campo e ferramenta de Privilégios' , // TODO: Review - 'LBL_EDIT_RECORD' => 'Edit' , // TODO: Review - 'LBL_DUPLICATE_RECORD' => 'Duplicate' , // TODO: Review - 'LBL_DELETE_RECORD' => 'Delete' , // TODO: Review - 'LBL_VIEW_PRVILIGE' => 'Visualizar' , - 'LBL_EDIT_PRVILIGE' => 'Criar/Editar' , - 'LBL_DELETE_PRVILIGE' => 'Apagar' , - 'LBL_INIVISIBLE' => 'Invisible' , // TODO: Review - 'LBL_READ_ONLY' => 'Read only' , // TODO: Review - 'LBL_WRITE' => 'Write' , // TODO: Review - 'LBL_DELETE_PROFILE' => 'Delete Profile' , // TODO: Review - 'LBL_TRANSFER_ROLES_TO_PROFILE' => 'Transfer roles to profile' , // TODO: Review - 'LBL_PROFILES' => 'Profiles' , // TODO: Review - 'LBL_CHOOSE_PROFILES' => 'Choose Profiles' , // TODO: Review - 'LBL_GLOBAL_PERMISSION_WARNING' => 'Aviso: Usuários associados com este perfil pode acessar todos os registros no CRM', + // Basic Strings + 'Profiles' => 'Perfis', + 'SINGLE_Profiles' => 'Perfil', + 'LBL_ADD_RECORD' => 'Adicionar Perfil', + 'LBL_CREATE_PROFILE' => 'Criar Perfil', + 'LBL_PROFILE_NAME' => 'Nome Perfil', + 'LBL_DESCRIPTION' => 'Descrição', + 'LBL_EDIT_PRIVILEGES_OF_THIS_PROFILE' => 'Editar privilégios para este Perfil', + 'LBL_MODULES' => 'Módulos', + 'LBL_PROFILE_VIEW' => 'Visualizar Perfil', + 'LBL_FIELDS' => 'Campos', + 'LBL_TOOLS' => 'Ferramentas', + 'LBL_FIELD_AND_TOOL_PRIVILEGES' => 'Privilégios Campos e Ferramentas', + 'LBL_EDIT_RECORD' => 'Editar', + 'LBL_DUPLICATE_RECORD' => 'Duplicar', + 'LBL_DELETE_RECORD' => 'Apagar', - 'LBL_EDIT_PRIVILEGES_OF_THIS_PROFILE' => 'Editar os privilégios de este perfil', - 'LBL_VIEW_ALL' => 'Visualizar Todas As', - 'LBL_EDIT_ALL' => 'Editar Todos Os', - 'LBL_VIEW_ALL_DESC' => 'Pode visualizar todas as informações de módulos', - 'LBL_EDIT_ALL_DESC' => 'Pode editar todas as informações de módulos', - 'LBL_DUPLICATES_EXIST' => 'Perfil Duplicado Existe', - 'LBL_EDIT_PROFILE' => 'Editar Perfil', + 'LBL_VIEW_PRVILIGE' => 'Visualizar', + 'LBL_EDIT_PRVILIGE' => 'Criar/Editar', + 'LBL_DELETE_PRVILIGE' => 'Apagar', + 'LBL_INIVISIBLE' => 'InvisÃvel', + 'LBL_READ_ONLY' => 'Somente leitura', + 'LBL_WRITE' => 'Escrita', + 'LBL_DELETE_PROFILE' => 'Apagar Perfil', + 'LBL_TRANSFER_ROLES_TO_PROFILE' => 'Transferir Funçao para o Perfil', + 'LBL_PROFILES' => 'Perfis', + 'LBL_CHOOSE_PROFILES' => 'Escolher Perfis', + + 'LBL_VIEW_ALL' => 'Visualizar Todos', + 'LBL_EDIT_ALL' => 'Editar Todos', + 'LBL_VIEW_ALL_DESC' => 'Pode visualizar informação de todos os Módulos', + 'LBL_EDIT_ALL_DESC' => 'Pode editar informações de todos os Módulos', + 'LBL_DUPLICATES_EXIST' => 'Existe Perfil Duplicado', + + /*Vtiger7 Strings*/ + 'LBL_EDIT_PROFILE' => 'Editar Perfil', + 'LBL_GLOBAL_PERMISSION_WARNING' => 'Aviso : Usuários associados com este Perfil pode acessar todos os registros no CRM', ); + $jsLanguageStrings = array( - 'JS_RECORD_DELETED_SUCCESSFULLY' => 'Profile deleted successfully', // TODO: Review -); \ No newline at end of file + 'JS_RECORD_DELETED_SUCCESSFULLY' => 'O Perfil foi apagado com sucesso', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Roles.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Roles.php index ab1aede1d180572c7bc4e8e39c207f9cdd750325..f7188d18af095abac02e73456f1a88c38e32563f 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Roles.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Roles.php @@ -1,37 +1,47 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. + * All Rights Reserved. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'Roles' => 'Funções' , - 'SINGLE_Roles' => 'Função' , - 'LBL_ADD_RECORD' => 'Adicionar Função' , - 'LBL_DELETE_ROLE' => 'Delete Role' , // TODO: Review - 'LBL_TRANSFER_OWNERSHIP' => 'Transfer Ownership' , // TODO: Review - 'LBL_TO_OTHER_ROLE' => 'To other Role' , // TODO: Review - 'LBL_CLICK_TO_EDIT_OR_DRAG_TO_MOVE' => 'Click to edit/Drag to move' , // TODO: Review - 'LBL_ASSIGN_ROLE' => 'Assign Role' , // TODO: Review - 'LBL_CHOOSE_PROFILES' => 'Choose profiles' , // TODO: Review - 'LBL_TRANSFER_TO_OTHER_ROLE' =>'Transferir a propriedade para outra função', - 'LBL_COPY_PRIVILEGES_FROM' => 'Copy privileges from' , // TODO: Review - 'LBL_PROFILE' => 'Profile' , // TODO: Review - 'LBL_REPORTS_TO' => 'Reports To' , // TODO: Review - 'LBL_NAME' => 'Name' , // TODO: Review - 'LBL_ASSIGN_NEW_PRIVILEGES' => 'Assign privileges directly to Role', // TODO: Review - 'LBL_ASSIGN_EXISTING_PRIVILEGES' => 'Assign priviliges from existing profiles', // TODO: Review - 'LBL_PRIVILEGES' => 'Privileges' , // TODO: Review + // Basic Strings + 'Roles' => 'Funções', + 'SINGLE_Roles' => 'Função', + 'LBL_ADD_RECORD' => 'Adicionar Função', + 'LBL_DELETE_ROLE' => 'Apagar Função', + 'LBL_TRANSFER_OWNERSHIP' => 'Transferir Propriedade', + 'LBL_TO_OTHER_ROLE' => 'Para outra Função', + 'LBL_CLICK_TO_EDIT_OR_DRAG_TO_MOVE' => 'Clique para Editar e Arrastar para mover', + 'LBL_ASSIGN_ROLE' => 'Atribuir Função', + 'LBL_CHOOSE_PROFILES' => 'Escolha Perfis', + 'LBL_COPY_PRIVILEGES_FROM' => 'Copiar privilégios de', + 'LBL_TRANSFER_TO_OTHER_ROLE' =>'Transferir propriedade para outra Função', + + //Edit View + 'LBL_PROFILE' => 'Perfil', + 'LBL_REPORTS_TO' => 'Reporta-se a', + 'LBL_NAME' => 'Nome', + 'LBL_ASSIGN_NEW_PRIVILEGES' => 'Atribuir privilégios diretamente para Função', + 'LBL_ASSIGN_EXISTING_PRIVILEGES' => 'Atribuir privilégios a partir de um Perfil existente', + 'LBL_PRIVILEGES' => 'Privilégios', + 'LBL_DUPLICATES_EXIST' => 'Existe Função Duplicada', + + //Assign Records to + 'LBL_CAN_ASSIGN_RECORDS_TO' => 'Pode Atribuir Registros para', + 'LBL_ALL_USERS' => 'Todos os Usuários', + 'LBL_USERS_WITH_LOWER_LEVEL' => 'Usuários com Subordinados', + 'LBL_USERS_WITH_SAME_OR_LOWER_LEVEL' => 'Usuários do mesmo NÃvel/Subordinados', + + /*Vtiger7 String*/ + 'LBL_EDIT_ROLE' => 'Editar Função', + 'LBL_CREATE_ROLE' => 'Criar Função', +); - 'LBL_DUPLICATES_EXIST' => 'Duplicar Função Existe', - 'LBL_CAN_ASSIGN_RECORDS_TO' => 'Pode Atribuir Os Registros Para', - 'LBL_ALL_USERS' => 'Todos Os Usuários', - 'LBL_USERS_WITH_LOWER_LEVEL' => 'Usuários com Papel Subordinado', - 'LBL_USERS_WITH_SAME_OR_LOWER_LEVEL' => 'Os usuários que têm o Mesmo Papel ou Papel Subordinado', - 'LBL_EDIT_ROLE' => 'Edição De Papel', - 'LBL_CREATE_ROLE' => 'Criar Funções', - -); \ No newline at end of file +$jsLanguageStrings = array( + 'JS_PERMISSION_DENIED' => 'Permissão Negada', + 'JS_NO_PERMISSIONS_TO_MOVE' => 'Sem Permissão para Mover', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/SMSNotifier.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/SMSNotifier.php index 8ccce57a6e4a31c3e52dbcf440f5f54cc3ffd395..3468d9117d8c2787be0577e27ba5a6595bd8a677 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/SMSNotifier.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/SMSNotifier.php @@ -1,25 +1,26 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - ************************************************************************************/ -$languageStrings = array( - 'LBL_ADD_RECORD' => 'New Configuration' , // TODO: Review - 'SMSNotifier' => 'SMS Provider Configuration' , // TODO: Review - 'LBL_ADD_CONFIGURATION' => 'New Configuration' , // TODO: Review - 'LBL_EDIT_CONFIGURATION' => 'Edit Configuration' , // TODO: Review - 'LBL_SELECT_ONE' => 'Select One' , // TODO: Review - 'providertype' => 'Provider' , // TODO: Review - 'isactive' => 'Active' , // TODO: Review - 'username' => 'User Name' , // TODO: Review - 'password' => 'Password' , // TODO: Review -); -$jsLanguageStrings = array( - 'LBL_DELETE_CONFIRMATION' => 'Are you sure, you want to delete this SMSNotifier Configuration', // TODO: Review - 'JS_RECORD_DELETED_SUCCESSFULLY' => 'SMS Provider Deleted Successfully', // TODO: Review - 'JS_CONFIGURATION_SAVED' => 'SMS Provider Configurations saved', // TODO: Review -); \ No newline at end of file +<?php +/*+*********************************************************************************** + * The contents of this file are subject to the vtiger CRM Public License Version 1.0 + * ("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. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ +$languageStrings = array( + 'isactive' => 'Ativo', + 'LBL_ADD_CONFIGURATION' => 'Nova Configuração', + 'LBL_ADD_RECORD' => 'Nova Configuração', + 'LBL_EDIT_CONFIGURATION' => 'Editar Configuração', + 'LBL_SELECT_ONE' => 'Selecionar', + 'password' => 'Senha', + 'providertype' => 'Provedor', + 'SMSNotifier' => 'Configuração Provedor SMS', + 'username' => 'Usuário', +); + +$jsLanguageStrings = array( + 'JS_CONFIGURATION_SAVED' => 'Configuração do Provedor SMS salva', + 'JS_RECORD_DELETED_SUCCESSFULLY' => 'Provedor SMS Apagado com Sucesso', + 'LBL_DELETE_CONFIRMATION' => 'Tem certeza que deseja apagar esta Configuração do Notificador SMS?', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/SharingAccess.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/SharingAccess.php index edaa4f545d07e055ada18d82745f78592ab23fae..e59c302115513efcf4132ca6a7ab735ada7d546e 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/SharingAccess.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/SharingAccess.php @@ -2,38 +2,37 @@ /*+********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source + * 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. + * Portions created by vtiger are Copyright (C) vtiger. + * All Rights Reserved. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br ************************************************************************************/ $languageStrings = array( - 'Accounts' => 'Organizations & Contacts' , // TODO: Review - 'LBL_ADD_CUSTOM_RULE' => 'Adicionar Privilégio para Função Customizada', - 'Read Only' => 'R' , - 'Read Write' => 'R+W' , - 'LBL_ADD_CUSTOM_RULE_TO' => 'Add Custom Rule to' , // TODO: Review - 'LBL_CAN_ACCESSED_BY' => 'Pode ser acessado por' , - 'LBL_PRIVILEGES' => 'Privilégios' , - 'LBL_SHARING_RULE' => 'Sharing Rules' , - 'LBL_RULE_NO' => 'No. Função' , - 'LBL_MODULE' => 'Module' , // TODO: Review - 'LBL_ADVANCED_SHARING_RULES' => 'Advanced Sharing Rules' , // TODO: Review - 'LBL_WITH_PERMISSIONS' => 'With Permissions' , // TODO: Review - 'LBL_APPLY_NEW_SHARING_RULES' => 'Apply New Sharing Rules' , // TODO: Review - 'LBL_READ' => 'Read' , // TODO: Review - 'LBL_READ_WRITE' => 'Read and Write' , // TODO: Review - 'LBL_CUSTOM_ACCESS_MESG' => 'No Custom Access Rules defined', // TODO: Review - 'SINGLE_Groups' => 'Group' , // TODO: Review - 'SINGLE_Roles' => 'Role' , // TODO: Review - 'SINGLE_RoleAndSubordinates' => 'RoleAndSubordinate' , // TODO: Review - - 'SharingAccess' => 'As Regras De Partilha', - + 'SharingAccess' => 'Regras de Compartilhamento', + 'Accounts' => 'Organizações e Contatos', + 'LBL_ADD_CUSTOM_RULE' => 'Adicionar Regra Customizada', + 'Read Only' => 'Somente Leitura', + 'Read Write' => 'Leitura/Escrita', + 'LBL_ADD_CUSTOM_RULE_TO' => 'Adicionar Regra Customizada para', + 'LBL_CAN_ACCESSED_BY' => 'Pode ser acessado por', + 'LBL_PRIVILEGES' => 'Privilégios', + 'LBL_SHARING_RULE' => 'Regras de Compartilhamento', + 'LBL_RULE_NO' => 'Número Regra', + 'LBL_MODULE' => 'Módulo', + 'LBL_ADVANCED_SHARING_RULES' => 'Regras Compartilhamento Avançadas', + 'LBL_WITH_PERMISSIONS' => 'Com Permissões de', + 'LBL_APPLY_NEW_SHARING_RULES' => 'Aplicar Novas Regras de Compartilhamento', + 'LBL_READ' => 'Leitura', + 'LBL_READ_WRITE' => 'Leitura e Escrita', + 'LBL_CUSTOM_ACCESS_MESG' => 'Nenhuma Regra de Compartilhamento Customizada definida', + 'SINGLE_Groups' => 'Grupo', + 'SINGLE_Roles' => 'Função', + 'SINGLE_RoleAndSubordinates' => 'Função e Subordinados', ); + $jsLanguageStrings = array( - 'JS_CUSTOM_RULE_SAVED_SUCCESSFULLY' => 'Custom Sharing Rule Saved Successfully', // TODO: Review - 'JS_SELECT_ANY_OTHER_ACCESSING_USER' => 'Select any other accessing user', // TODO: Review - 'JS_NEW_SHARING_RULES_APPLIED_SUCCESSFULLY' => 'New Sharing Rules Applied Successfully', // TODO: Review - 'JS_DEPENDENT_PRIVILEGES_SHOULD_CHANGE' => 'Opportunities, Tickets, Quotes, SalesOrder & Invoice Access must be set to Private when the Organization Access is set to Private', // TODO: Review -); \ No newline at end of file + 'JS_CUSTOM_RULE_SAVED_SUCCESSFULLY' => 'Regra de Compartilhamento Customizada Salva com Sucesso', + 'JS_SELECT_ANY_OTHER_ACCESSING_USER' => 'Selecionar qualquer outro Usuário', + 'JS_NEW_SHARING_RULES_APPLIED_SUCCESSFULLY' => 'Nova Regra de Compartilhamento Aplicada com Sucesso', + 'JS_DEPENDENT_PRIVILEGES_SHOULD_CHANGE' => 'O acesso a Oportunidades, Chamados, Cotações, Pedido de Venda e Fatura devem ser configurados como Particular, quando o acesso à Organização estiver configurado como Particular', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Vtiger.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Vtiger.php index 2bc4a9ba44cd2b7ca38936cc99f2c8cbcf58dacf..d54fde2f1c6e7ce16d706d2c53dc0d9f3ad3264c 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Vtiger.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Vtiger.php @@ -1,367 +1,419 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. + * All Rights Reserved. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'LBL_INTEGRATION' => 'Integração', - 'LBL_PBXMANAGER' => 'PBXManager', - 'Settings' => 'Configurações' , - 'LBL_SEARCH_SETTINGS_PLACEHOLDER' => 'Search Settings' , // TODO: Review - 'LBL_SUMMARY' => 'Summary' , // TODO: Review - 'LBL_ACTIVE_USERS' => 'Users' , // TODO: Review - 'LBL_WORKFLOWS_ACTIVE' => 'Workflows' , // TODO: Review - 'LBL_MODULES' => 'Modules' , // TODO: Review - 'LBL_SETTINGS_SHORTCUTS' => 'Settings Shortcuts' , // TODO: Review - 'LBL_UNPIN' => 'Unpin' , // TODO: Review - 'LBL_PIN' => 'pin' , // TODO: Review - 'LBL_STUDIO' => 'Estudio' , - 'LBL_COMMUNICATION_TEMPLATES' => 'Modelos de Comunicação' , - 'LBL_USER_MANAGEMENT' => 'Administração de Usuário & Acessos', - 'LBL_ACCESS_MANAGEMENT' => 'Access Management' , - 'LBL_MODULE_MANAGER' => 'Module Management' , - 'LBL_NOTIFICATIONS' => 'Notifications' , - 'LBL_EXTERNAL_SERVER_SETTINGS' => 'External Server Settings' , - 'LBL_OTHER_SETTINGS' => 'Outras Configurações' , - 'LBL_EXTENSIONS_PLACE' => 'Extensions Place' , // TODO: Review - 'LBL_EXTENSIONS' => 'Extensions' , // TODO: Review - 'LBL_PBXMANAGER' => 'PBXManager', - 'LBL_DESCRIPTION' => 'Description' , // TODO: Review - 'LBL_USER_DESCRIPTION' => 'Gerenciar usuários que podem acessar Vtiger CRM', - 'LBL_ROLES' => 'Funções' , - 'LBL_ROLE_DESCRIPTION' => 'Definir hierarquia das Funções e Atribuições para Usuários', - 'LBL_PROFILES' => 'Perfis' , - 'LBL_PROFILE_DESCRIPTION' => 'Administrar acesso de Usuários a Módulos especÃficos para diferentes Funções', - 'USERGROUPLIST' => 'Grupos' , - 'LBL_GROUP_DESCRIPTION' => 'Administrar tipos diferentes de Equipes baseados em Funções, Usuários, Perfis etc', - 'LBL_SHARING_ACCESS' => 'Compartilhar Acesso' , - 'LBL_SHARING_ACCESS_DESCRIPTION' => 'Administrar Módulo de Compartilhamento para Funções Padrões & Funções Customizadas', - 'LBL_WORKFLOW_LIST' => 'Workflow List' , - 'LBL_AVAILABLE_WORKLIST_LIST' => 'Set up dependency between picklist values in each module', - 'LBL_FIELDFORMULAS' => 'Field Formulas' , - 'LBL_FIELDFORMULAS_DESCRIPTION' => 'Add custom equations to custom fields', - 'VTLIB_LBL_MODULE_MANAGER' => 'Módulos' , - 'VTLIB_LBL_MODULE_MANAGER_DESCRIPTION' => 'Gerenciar Comportamento Módulos no vtiger CRM', - 'LBL_PICKLIST_EDITOR' => 'Valores Picklist Campo' , - 'LBL_PICKLIST_DESCRIPTION' => 'Customizar Lista de Opções em cada Módulo', - 'LBL_PICKLIST_DEPENDENCY_SETUP' => 'PickList Dependências', - 'LBL_PICKLIST_DEPENDENCY_DESCRIPTION' => 'Configuração Dependência entre valores Lista Opções em cada módulo', - 'LBL_MENU_EDITOR' => 'Menu principal' , - 'LBL_MENU_DESC' => 'Customizar sequência do Menu', - 'LBL_MENU_EDITOR_MESSAGE' =>'O número real de itens de menu apresentados dependerá do tamanho da tela e pode ser menor do que os itens selecionados.', - 'EMAILTEMPLATES' => 'Modelos E-mail' , - 'LBL_EMAIL_TEMPLATE_DESCRIPTION' => 'Administrar modelos para Módulo de E-Mail', - 'LBL_COMPANY_DETAILS' => 'Detalhes da Empresa' , - 'LBL_COMPANY_DESCRIPTION' => 'Especificar Endereço comercial da Empresa', - 'LBL_MAIL_MERGE' => 'Mesclar Correspondência' , - 'LBL_MAIL_MERGE_DESCRIPTION' => 'Administrar modelos de Correspondências', - 'LBL_TAX_SETTINGS' => 'Cálculo Imposto' , - 'LBL_TAX_DESCRIPTION' => 'Administrar Impostos e respectivas alÃquotas', - 'LBL_MAIL_SERVER_SETTINGS' => 'Servidor Envio Mensagem' , - 'LBL_MAIL_SERVER_DESCRIPTION' => 'Configurar detalhes do Servidor de Envio Mensagem', - 'INVENTORYTERMSANDCONDITIONS' => 'Estoque: Prazos e Condições', - 'LBL_INV_TANDC_DESCRIPTION' => 'Especificar Prazos e Condições para Cotações, Pedidos e Faturas', - 'LBL_ANNOUNCEMENT_DESCRIPTION' => 'Administrar Anúncios da Empresa', - 'LBL_CURRENCY_SETTINGS' => 'Moedas' , - 'LBL_CURRENCY_DESCRIPTION' => 'Administrar Moedas Internacionais e Taxas de Câmbio', - 'LBL_CUSTOMIZE_MODENT_NUMBER' => 'Módulo de Numeração', - 'LBL_CUSTOMIZE_MODENT_NUMBER_DESCRIPTION' => 'Customizar Número Entidade do Módulo', - 'LBL_MAIL_SCANNER' => 'Scanner de Mensagem' , - 'LBL_MAIL_SCANNER_DESCRIPTION' => 'Configure Caixa Correio para Scanear', - 'LBL_LIST_WORKFLOWS' => 'Workflows' , - 'LBL_LIST_WORKFLOWS_DESCRIPTION' => 'Criar e Editar Workflows para o vtiger', - 'Configuration Editor' => 'Editor Configuração' , - 'LBL_CONFIG_EDITOR_DESCRIPTION' => 'arquivo de configuração de atualização do aplicativo', - 'Update configuration file of the application' => 'Update application configuration file', - 'LBL_PERSONAL_EMAIL_TRACKING_INFO' => 'Para acompanhar abre de e-mails enviados para contatos diretos, por favor habilite esta opção. Por favor, note que o email enviado do módulo Campanhas de e-mail são sempre monitorado, e não é afetado por essa configuração', - 'LBL_CUSTOMER_PORTAL' => 'Portal do Cliente' , - 'PORTAL_EXTENSION_DESCRIPTION' => 'Permite Configurar o Plugin do Portal do Cliente', - 'LBL_LAYOUT_EDITOR_DESCRIPTION' => 'Designing and Modifying the layout in each of the modules', // TODO: Review - 'LBL_WEBFORMS_DESCRIPTION' => 'Create and manage webforms which can be used to capture Leads', // TODO: Review - 'LBL_TO_ADD_NEW_USER_PLEASE_CLICK_ON' => 'To add a new User, please click on ', // TODO: Review - 'LBL_SETTINGS_ICON' => 'Settings Icon' , // TODO: Review - 'LBL_ADD_OR_DELETE_USERS' => 'Add/Delete Users' , // TODO: Review - 'LBL_ADD_USER' => 'Add User' , // TODO: Review - 'LBL_LABELS_EDITOR' => 'Etiquetas do Editor', - 'LBL_LABELS_EDITOR_DESCRIPTION' => 'Permite que você personalize os nomes dos módulos, rótulos de campos e outras seqüências de acordo com as suas necessidades empresariais', - 'Scheduler' => 'Scheduler' , - 'Allows you to Configure Cron Task' => 'Configure Cron Tasks' , - 'Webforms' => 'Webforms' , - 'Allows you to manage Webforms' => 'Manage Webforms' , - 'LBL_CREATING_NEW' => 'Creating new' , // TODO: Review - 'LBL_EDITING' => 'Editing' , // TODO: Review - 'LBL_EDIT_RECORD' => 'Edit' , // TODO: Review - 'LBL_DELETE_RECORD' => 'Delete' , // TODO: Review - 'LBL_ADD_MOVE_MENU_ITEMS' => 'Add/Move Menu Items' , // TODO: Review - 'LBL_ADD_MENU_ITEM' => 'Add Menu Item' , // TODO: Review - 'LBL_MAX' => 'Max' , // TODO: Review - 'LBL_TAX_CALCULATIONS' => 'Tax Calculations' , // TODO: Review - 'LBL_TAX_DESC' => 'Manage different types of tax rates for taxes, such as Sales Tax, VAT etc.,', // TODO: Review - 'LBL_PRODUCT_SERVICE_TAXES' => 'Product & Service Taxes' , // TODO: Review - 'LBL_SHIPPING_HANDLING_TAXES' => 'Shipping & Handling Taxes' , // TODO: Review - 'LBL_ADD_NEW_TAX' => 'Add New Tax' , // TODO: Review - 'LBL_EDIT_TAX' => 'Edit Tax' , // TODO: Review - 'LBL_TAX_NAME' => 'Tax Name' , // TODO: Review - 'LBL_TAX_VALUE' => 'Tax Value' , // TODO: Review - 'LBL_STATUS' => 'Status' , // TODO: Review - 'LBL_TAX_STATUS_DESC' => 'Enable checkbox to make tax active', // TODO: Review - 'LBL_ENTER_TAX_NAME' => 'Enter tax name' , // TODO: Review - 'LBL_ENTER_TAX_VALUE' => 'Enter tax value' , // TODO: Review - 'LBL_TAX_NAME_EXIST' => 'Tax Name already exists' , // TODO: Review - 'LBL_TERMS_AND_CONDITIONS' => 'Terms & Conditions' , // TODO: Review - 'LBL_SPECIFY_TERMS_AND_CONDITIONS' => 'Specify Terms & Conditions here', // TODO: Review - 'LBL_ANNOUNCEMENTS' => 'Announcements' , // TODO: Review - 'LBL_ENTER_ANNOUNCEMENT_HERE' => 'Enter Announcement Here' , // TODO: Review - 'LBL_ANNOUNCEMENT_DESC' => 'Change the text that appears in the announcement display on top of each page', // TODO: Review - 'LBL_RESET_TO_DEFAULT' => 'Reset to Default' , // TODO: Review - 'LBL_SERVER_NAME' => 'Server Name' , // TODO: Review - 'LBL_USER_NAME' => 'User Name' , // TODO: Review - 'LBL_PASSWORD' => 'Password' , // TODO: Review - 'LBL_FROM_EMAIL' => 'From Email' , // TODO: Review - 'LBL_REQUIRES_AUTHENTICATION' => 'Requires Authentication' , // TODO: Review - 'LBL_OUTGOING_SERVER' => 'Outgoing Server' , // TODO: Review - 'LBL_OUTGOING_SERVER_DESC' => 'Configure your Outgoing Mail Server details', // TODO: Review - 'LBL_DEFAULT' => 'By default, SMTP account settings for the outgoing server are configured to od1.vtiger.com mail server. To avoid outgoing emails getting filtered out by spam filters on your recipient ISP mail server, we recommend you implement one of the following.', // TODO: Review - 'LBL_OPTIONS1' => 'Send emails from your mail server<br> - - Enter the SMTP account details (Server Name, User Name, Password) for the same account as entered in the FROM email address.', // TODO: Review - 'LBL_OPTIONS2' =>"Add vtiger.com server as an authorized sender of emails for your domain <b>(your_company.com)</b> when you are using your <b>From Email (eg : support@your_company.com)</b>.<br> - -To ensure that your emails are not rejected by recipient's Server as SPAM, - the below mentioned TXT record should be added to your domain's DNS record", // TODO: Review - 'LBL_MAIL_SERVER_SMTP' => 'Mail Server Settings (SMTP)' , // TODO: Review - 'LBL_OUTGOING_SERVER_FROM_FIELD' => 'NOTE: If "From Email" field is set to blank then the User Email address will be picked up.', // TODO: Review - 'LBL_TESTMAILSTATUS' => 'Test Mail Status : ' , // TODO: Review - 'LBL_MAILSENDERROR' => 'Mail could not be sent to the admin user. Please check the admin emailid/Server settings', // TODO: Review - 'LBL_CONFIG_EDITOR' => 'Configuration Editor' , // TODO: Review - 'LBL_CONFIG_DESCRIPTION' => 'Edit the Configuration details of vtiger CRM', // TODO: Review - 'LBL_CONFIG_FILE' => 'config.inc.php' , // TODO: Review - 'LBL_MB' => 'MB' , // TODO: Review - 'LBL_MINI_CALENDAR_DISPLAY' => 'Mini Calendar Display' , // TODO: Review - 'LBL_WORLD_CLOCK_DISPLAY' => 'World Clock Display' , // TODO: Review - 'LBL_CALCULATOR_DISPLAY' => 'Calculator Display' , // TODO: Review - 'LBL_USE_RTE' => 'Use RTE' , // TODO: Review - 'LBL_HELPDESK_SUPPORT_EMAILID' => 'Helpdesk Support Email-Id' , // TODO: Review - 'LBL_HELPDESK_SUPPORT_NAME' => 'Helpdesk Support Name' , // TODO: Review - 'LBL_MAX_UPLOAD_SIZE' => 'Maximum Upload Size (Max 5MB)', // TODO: Review - 'LBL_MAX_HISTORY_VIEWED' => 'Maximum History Viewed' , // TODO: Review - 'LBL_DEFAULT_MODULE' => 'Default Module' , // TODO: Review - 'LBL_MAX_TEXT_LENGTH_IN_LISTVIEW' => 'Maximum text length in List View', // TODO: Review - 'LBL_MAX_ENTRIES_PER_PAGE_IN_LISTVIEW' => 'Maximum entries per page in List View', // TODO: Review - 'LBL_EMAIL_TRACKING' => 'Ativar rastreamento de e-mail', - 'LBL_INVALID_EMAILID' => 'Invalid EmailId' , // TODO: Review - 'LBL_INVALID_SUPPORT_NAME' => 'Invalid Name' , // TODO: Review - 'LBL_INVALID_MODULE' => 'Invalid Module' , // TODO: Review - 'LBL_INVALID_NUMBER' => 'Invalid Number' , // TODO: Review - 'LBL_FIELDS_INFO_IS_EMPTY' => 'Fields information is empty' , // TODO: Review - 'LBL_SUCCESSFULLY_UPDATED' => 'Successfully Updated' , // TODO: Review - 'LBL_CUSTOMIZE_RECORD_NUMBERING' => 'Módulo de Numeração' , // TODO: Review - 'LBL_MODULE_ENTITY_NUMBER_CUSTOMIZATION' => 'Module Entity Number customization', // TODO: Review - 'LBL_UPDATE_MISSING_RECORD_SEQUENCE' => 'Update Missing Record Sequence', // TODO: Review - 'LBL_USE_PREFIX' => 'Use Prefix' , // TODO: Review - 'LBL_START_SEQUENCE' => 'Start Sequence' , // TODO: Review - 'organizationname' => 'Company Name' , // TODO: Review - 'logoname' => 'Company Logo' , // TODO: Review - 'address' => 'Address' , // TODO: Review - 'city' => 'City' , // TODO: Review - 'state' => 'State' , // TODO: Review - 'code' => 'Postal Code' , // TODO: Review - 'country' => 'Country' , // TODO: Review - 'phone' => 'Phone' , // TODO: Review - 'fax' => 'Fax' , // TODO: Review - 'website' => 'Website' , // TODO: Review - 'vatid' => 'IVA ID', - 'facebook' => 'Facebook' , - 'twitter' => 'Twitter' , - 'linkedin' => 'LinkedIn' , - 'LBL_INVALID_IMAGE' => 'Invalid Image' , // TODO: Review - 'LBL_IMAGE_CORRUPTED' => 'Virus detected or Uploaded image corrupted', // TODO: Review - 'LBL_LOGO_RECOMMENDED_MESSAGE' => 'Permitidos tamanho 150X40 pixels (formato .jpeg, .jpg, .png, .gif, .pjpeg, .x-png).', // TODO: Review - 'LBL_COMPANY_INFORMATION' => 'Company Information' , // TODO: Review - 'LBL_UPDATE' => 'Update' , // TODO: Review - 'LBL_UPDATE_LOGO' => 'Update Logo' , // TODO: Review - 'LBL_COMPANY_LOGO' => 'Company Logo' , // TODO: Review - 'LBL_EDIT_COMPANY_DETAILS_MESSAGE' => 'To edit company details, please click on Settings Icon > Add/Delete Users > Company ', // TODO: Review - 'LBL_ACTIVE' => 'Active' , // TODO: Review - 'LBL_INACTIVE' => 'In Active' , // TODO: Review - 'LBL_DISABLED' => 'Disabled' , // TODO: Review - 'LBL_RUNNING' => 'Running' , // TODO: Review - 'LBL_LAST_SCAN_TIMED_OUT' => 'Last scan timed out' , // TODO: Review - 'LBL_LAST_SCAN_AT' => 'Last scanned at ' , // TODO: Review - 'LBL_TIME_TAKEN' => ' time taken ' , // TODO: Review - 'LBL_SHORT_SECONDS' => 'sec' , // TODO: Review - - //User Login History - 'LoginHistory' => 'User Login History', - 'LBL_LOGIN_HISTORY_DETAILS' => 'Login History', - 'LBL_LOGIN_HISTORY_DESCRIPTION' => 'Login History Details', - 'LBL_USER_NAME'=> 'User Name', - 'LBL_USER_IP_ADDRESS'=> 'User IP Address', - 'LBL_LOGIN_TIME' => 'Sign-in Time', - 'LBL_LOGGED_OUT_TIME' => 'Sign-out Time', - 'LBL_STATUS' => 'Status', + // Basic Strings + 'Settings' => 'Configurações', + 'LBL_MAILROOM'=>'Centro de Mensagens', + 'LBL_SEARCH_SETTINGS_PLACEHOLDER' => 'Configurações de Pesquisas', + 'LBL_SUMMARY' => 'Resumo', + 'LBL_ACTIVE_USERS' => 'Usuários', + 'LBL_WORKFLOWS_ACTIVE' => 'Workflows', + 'LBL_MODULES' => 'Módulos', + 'LBL_SETTINGS_SHORTCUTS' => 'Configurações Atalhos', + 'LBL_UNPIN' => 'Desafixar', + 'LBL_PIN' => 'Fixar', + + // Blocks + 'LBL_STUDIO' => 'Estúdio', + 'LBL_COMMUNICATION_TEMPLATES' => 'Modelos', + 'LBL_USER_MANAGEMENT' => 'Controle Usuários e Acessos', + 'LBL_ACCESS_MANAGEMENT' => 'Gestão de Acessos', + 'LBL_MODULE_MANAGER' => 'Gestão de Módulos', + 'LBL_NOTIFICATIONS' => 'Notificações', + 'LBL_EXTERNAL_SERVER_SETTINGS' => 'Configurações Servidor Externo', + 'LBL_OTHER_SETTINGS' => 'Outras Configurações', + 'LBL_EXTENSIONS_PLACE' => 'Loja Extensões', + 'LBL_EXTENSIONS' => 'Extensões', + 'LBL_PBXMANAGER' => 'Gestor PBX', + 'LBL_INTEGRATION' => 'Integração', + 'LBL_EXCHANGE_CONNECTOR' => 'Conector Exchange', - // Leads and Potentials Field Mapping - 'LBL_SAVED_SUCCESSFULLY' => 'Saved Successfully' , // TODO: Review - 'LBL_DELETED_SUCCESSFULLY' => 'Deleted Successfully' , // TODO: Review - 'LBL_INVALID_MAPPING' => 'Invalid Mapping' , // TODO: Review - 'LBL_FIELD_LABEL' => 'Field Label' , // TODO: Review - 'LBL_FIELD_TYPE' => 'Field Type' , // TODO: Review - 'LBL_MAPPING_WITH_OTHER_MODULES' => 'Mapping with other Modules' , // TODO: Review - 'LBL_ADD_MAPPING' => 'Add Mapping' , // TODO: Review - 'LBL_NONE' => 'None' , // TODO: Review - 'phone' => 'Telefone' , - 'picklist' => 'Lista de Escolha' , - 'email' => 'Email' , - 'text' => 'Cordas' , - 'currency' => 'Moeda' , - 'multiSelectCombo' => 'Multi-Select Combo Box' , - 'time' => 'Tempo' , - 'textArea' => 'Ãrea de texto' , - 'url' => 'Url' , - 'string' => 'Cordas' , - 'checkBox' => 'Caixa de Seleção' , - 'date' => 'Data' , - 'decimal' => 'Decimal' , - 'percent' => 'Porcentagem' , - 'skype' => 'Skype' , - 'image' => 'Imagem', - 'LBL_DEFAULT_TAX_MODE' => 'Modo Padrão Fiscal', + // Fields + 'LBL_DESCRIPTION' => 'Descrição', + + // Other Strings + 'LBL_USER_DESCRIPTION' => 'Gerenciar Usuários para acesso ao vtiger CRM', + 'LBL_ROLES' => 'Funções', + 'LBL_ROLE_DESCRIPTION' => 'Definir hierarquia das Funções e atribuir para Usuários', + + 'LBL_PROFILES' => 'Perfis', + 'LBL_PROFILE_DESCRIPTION' => 'Gerenciar acesso a módulos especÃficos do usuário para Funções diferentes', + + 'USERGROUPLIST' => 'Grupos', + 'LBL_GROUP_DESCRIPTION' => 'Gerenciar tipos diferentes de equipes baseadas em Funções, Usuários e Perfis', + + 'LBL_SHARING_ACCESS' => 'Regras de Compartilhamento', + 'LBL_SHARING_ACCESS_DESCRIPTION' => 'Gerenciar Regras de Compartilhamento de Módulo e Regras de Compartilhamento Customizada', + + 'LBL_WORKFLOW_LIST' => 'Lista de Workflow', + 'LBL_AVAILABLE_WORKLIST_LIST' => 'Workflows DisponÃveis', + 'LBL_FIELDFORMULAS' => 'Fórmulas de Campo', + 'LBL_FIELDFORMULAS_DESCRIPTION' => 'Adicionar equações customizadas para campos customizados', + + 'VTLIB_LBL_MODULE_MANAGER' => 'Módulos', + 'VTLIB_LBL_MODULE_MANAGER_DESCRIPTION' => 'Gerenciar comportamento do módulo no vtiger CRM', + 'LBL_PICKLIST_EDITOR' => 'Valores Campos Listas de Opções', + 'LBL_PICKLIST_DESCRIPTION' => 'Customizar valores da Lista de Opções em cada módulo', + 'LBL_PICKLIST_DEPENDENCY_SETUP' => 'Dependência Listas de Opções', + 'LBL_PICKLIST_DEPENDENCY_DESCRIPTION' => 'Configurar Dependência entre valores da Lista de Opções em cada módulo', + + 'LBL_FIELDFORMULAS' => 'Fórmulas de Campo', + 'LBL_FIELDFORMULAS_DESCRIPTION' => 'Adicionar equações customizadas para campos customizados', + + 'LBL_MENU_EDITOR' => 'Menu Principal', + 'LBL_MENU_DESC' => 'Customizar Sequência de Menus', + 'LBL_MENU_EDITOR_MESSAGE' => 'O número atual de itens do menu exibido, dependerá do tamanho da tela e pode ser menor que os itens selecionados.', + + 'EMAILTEMPLATES' => 'Modelos de E-mail', + 'LBL_EMAIL_TEMPLATE_DESCRIPTION' => 'Gerenciar modelos para módulo de E-mail', + + 'LBL_COMPANY_DETAILS' => 'Detalhes da Empresa', + 'LBL_COMPANY_DESCRIPTION' => 'Informe o endereço comercial da empresa', + + 'LBL_MAIL_MERGE' => 'Mala Direta', + 'LBL_MAIL_MERGE_DESCRIPTION' => 'Gerenciar modelos para Mala Direta', + + 'LBL_TAX_SETTINGS' => 'Cálculos de Impostos', + 'LBL_TAX_DESCRIPTION' => 'Gerenciar impostos e alÃquotas de impostos correspondentes', + + 'LBL_MAIL_SERVER_SETTINGS' => 'Servidor Envio Mensagens', + 'LBL_MAIL_SERVER_DESCRIPTION' => 'Configurar detalhes Servidor Envio Mensagens', + + 'INVENTORYTERMSANDCONDITIONS' => 'Estoque: Termos e Condições', + 'LBL_INV_TANDC_DESCRIPTION' => 'Informar os termos e condições para Cotações, Faturas e Pedidos de Vendas', + + 'LBL_ANNOUNCEMENT_DESCRIPTION' => 'Gerenciar anúncios da Empresa', + + 'LBL_CURRENCY_SETTINGS' => 'Moedas', + 'LBL_CURRENCY_DESCRIPTION' => 'Gerenciar moedas internacionais e taxas de câmbio', + + 'LBL_CUSTOMIZE_MODENT_NUMBER' => 'Numeração de Módulos', + 'LBL_CUSTOMIZE_MODENT_NUMBER_DESCRIPTION' => 'Customização Numeração Módulos', + + 'LBL_MAIL_SCANNER' => 'Escaner de Mensagens', + 'LBL_MAIL_SCANNER_DESCRIPTION' => 'Configurar a caixa de entrada de emails, para escanear e anexar registros', + + 'LBL_LIST_WORKFLOWS' => 'Workflows', + 'LBL_LIST_WORKFLOWS_DESCRIPTION' => 'Criar e editar workflows', + 'LBL_SELECT_DATE' => 'Selecionar datas', + + 'Configuration Editor' => 'Editor de Configuração', + 'LBL_CONFIG_EDITOR_DESCRIPTION' => 'Atualizar arquivo de configuração da aplicação', + 'Update configuration file of the application' => 'Atualizar arquivo de configuração da aplicação', + 'LBL_PERSONAL_EMAIL_TRACKING_INFO' => "Para acompanhar os e-mails enviados para os Contatos, habilite esta caixa de seleção. Observe que os emails enviados pelo módulo de Campanha de Email são sempre rastreados e não são afetados por esta configuração.", + 'LBL_CUSTOMER_PORTAL' => 'Portal do Cliente', + 'PORTAL_EXTENSION_DESCRIPTION' => 'Permite configurar o Plugin do Portal do Cliente', + + 'LBL_LAYOUT_EDITOR_DESCRIPTION' => 'Desenhando e Modificando o layout de cada um dos módulos', + 'LBL_WEBFORMS_DESCRIPTION' => 'Criar e gerenciar Webforms que podem ser utilizados para capturar Leads, Contatos, Chamados etc.', + 'LBL_TO_ADD_NEW_USER_PLEASE_CLICK_ON' => 'Para adicionar um novo Usuário, clique em ', + 'LBL_SETTINGS_ICON' => 'Ãcone de Configurações', + 'LBL_ADD_OR_DELETE_USERS' => 'Adicionar/Apagar Usuários', + 'LBL_ADD_USER' => 'Adicionar Usuário', + 'LBL_LABELS_EDITOR' => 'Editor Rótulos', + 'LBL_LABELS_EDITOR_DESCRIPTION' => 'Permite customizar nomes dos módulos, rótulos dos campos e outras strings de acordo as necessidades do seu negócio', + + 'Scheduler' => 'Agendador', + 'Allows you to Configure Cron Task' => 'Permite configurar as Tarefas do Cron', + + 'Webforms' => 'Webforms', + 'Allows you to manage Webforms' => 'Gestão de Webforms', + 'LBL_CREATING_NEW' => 'Criando novo', + 'LBL_EDITING' => 'Edição', + 'LBL_EDIT_RECORD' => 'Editar', + 'LBL_DELETE_RECORD' => 'Apagar', + + //Menu Editor + 'LBL_ADD_MOVE_MENU_ITEMS' => 'Adicionar/Mover Itens do Menu', + 'LBL_ADD_MENU_ITEM' => 'Adicionar Item do Menu', + 'LBL_MAX' => 'Máximo', + //Tax Calculations + 'LBL_TAX_CALCULATIONS' => 'Cálculos de Impostos', + 'LBL_TAX_DESC'=>'Gerenciar diferentes tipos de alÃquotas para Impostos, tais como ICMS, IPI etc.,', + 'LBL_PRODUCT_SERVICE_TAXES' => 'Impostos de Produto e Serviço', + 'LBL_SHIPPING_HANDLING_TAXES' => 'Impostos de Frete', + 'LBL_ADD_NEW_TAX' => 'Adicionar Imposto', + 'LBL_EDIT_TAX' => 'Editar Imposto', + 'LBL_TAX_NAME' => 'Nome Imposto', + 'LBL_TAX_VALUE' => 'Valor Imposto', + 'LBL_STATUS' => 'Status', + 'LBL_TAX_STATUS_DESC' => 'Habilitar caixa de seleção para marcar Imposto como Ativo', + 'LBL_ENTER_TAX_NAME' => 'Digite o nome do Imposto', + 'LBL_ENTER_TAX_VALUE' => 'Digite o valor do Imposto', + 'LBL_TAX_NAME_EXIST' => 'O nome do Impostos já existe', 'LBL_TAXES' => 'Impostos', - 'LBL_CHARGES_AND ITS_TAXES' => 'Encargos (e os impostos)', + 'LBL_CHARGES_AND ITS_TAXES' => 'Encargos (e suas alÃquotas)', 'LBL_TAX_REGIONS' => 'Regiões Fiscais', 'LBL_NO_REGION_EXISTS' => 'Não existe Região', 'LBL_TYPE' => 'Tipo', 'LBL_CALCULATION' => 'Cálculo', - 'LBL_ADD_NEW_CHARGE' => 'Adicionar nova acusação', - 'LBL_ADD_NEW_TAX_FOR_CHARGE' => 'Adicionar Novo imposto para a carga', - 'LBL_CHARGE_NAME' => 'Carregue Nome', - 'LBL_CHARGE_NAME_EXIST' => 'Nome carga já existe', + 'LBL_ADD_NEW_CHARGE' => 'Adicionar Novo Encargo', + 'LBL_ADD_NEW_TAX_FOR_CHARGE' => 'Adicionar nova alÃquota do Encargo', + 'LBL_CHARGE_NAME' => 'Nome Encargo', + 'LBL_CHARGE_NAME_EXIST' => 'O Nome do Encargo já existe', 'LBL_VALUE' => 'Valor', - 'LBL_IS_TAXABLE' => 'tributável', - 'LBL_AVAILABLE_REGIONS' => 'Regiões disponÃveis', - 'LBL_ADD_NEW_REGION' => 'Adicionar Novo Região', - 'LBL_TAX_REGION_DESC' => 'Regiões Fiscais aparecerá durante a criação de impostos variáveis, e podem ser selecionados durante a criação de citações, faturas, pedidos de vendas, ordem de compra', - 'LBL_TAX_CALCULATION' => 'Cálculo do Imposto', + 'LBL_IS_TAXABLE' => 'Tributável', + 'LBL_AVAILABLE_REGIONS' => 'Regiões DisponÃveis', + 'LBL_ADD_NEW_REGION' => 'Adicionar Nova Região', + 'LBL_TAX_REGION_DESC' => 'As Regiões Fiscais aparecem quando os Impostos Variáveis são criados e podem ser selecionadas ao criar uma Cotação, Fatura, Pedido de Vendas ou Pedido de Compras', + 'LBL_TAX_CALCULATION' => 'Cálculo Imposto', 'LBL_SIMPLE' => 'Simples', 'LBL_COMPOUND' => 'Composto', 'LBL_DEDUCTED' => 'Deduzido', - 'LBL_TAX_TYPE' => 'Tipo de imposto', + 'LBL_TAX_TYPE' => 'Tipo Imposto', 'LBL_FIXED' => 'Fixo', 'LBL_VARIABLE' => 'Variável', - 'LBL_COMPOUND_ON' => 'Composto No', - 'LBL_DEFAULT_VALUE' => 'Omissão', - 'LBL_ADD_TAX_BRACKET' => 'Adicionar suporte de imposto', - 'LBL_TAX_BRACKETS_DESC' => 'Se você não atribuir valor fiscal para um valor padrão será utilizado região', - 'LBL_SELECT_SIMPLE_TAXES' => 'Selecione Impostos Simples', - 'LBL_REGION_NAME' => 'Região Nome', - 'LBL_ENTER_REGION_NAME' => 'Digite o nome de Região', + 'LBL_COMPOUND_ON' => 'Composto em', + 'LBL_DEFAULT_VALUE' => 'Padrão', + 'LBL_ADD_TAX_BRACKET' => 'Adicionar Imposto Progressivo', //Tax Bracket [https://en.wikipedia.org/wiki/Tax_bracket] + 'LBL_TAX_BRACKETS_DESC' => 'Se você não atribuir u valor do impostos para uma Região, um valor padrão será utilizado', + 'LBL_SELECT_SIMPLE_TAXES' => 'Selecionar Impostos Simples', + 'LBL_REGION_NAME' => 'Nome da Região', + 'LBL_ENTER_REGION_NAME' => 'Digite Nome da Região', 'LBL_EDIT_REGION' => 'Editar Região', - 'LBL_TAX_REGION_EXIST' => 'Região Nome já existe', - 'LBL_EDIT_CHARGE' => 'Editar Carga', - 'LBL_CHARGE_FORMAT' => 'Formato de carga', - 'LBL_FLAT' => 'Apartamento', - 'LBL_DIRECT_PRICE' => 'Preço direto', - 'LBL_PERCENT' => 'Por cento', - 'LBL_CHARGE_TYPE' => 'Carga Tipo', - 'LBL_CHARGE_VALUE' => 'Carga Valor', - 'LBL_ENTER_CHARGE_NAME' => 'Digite o nome de custo', - 'LBL_ENTER_CHARGE_VALUE' => 'Digite Carga Valor', + 'LBL_TAX_REGION_EXIST' => 'O Nome da Região já existe', + 'LBL_EDIT_CHARGE' => 'Editar Encargo', + 'LBL_CHARGE_FORMAT' => 'Formato Encargo', + 'LBL_FLAT' => 'Plano', + 'LBL_DIRECT_PRICE' => 'Preço Direto', + 'LBL_PERCENT' => 'Percentual', + 'LBL_CHARGE_TYPE' => 'Tipo Encargo', + 'LBL_CHARGE_VALUE' => 'Valor Encargo', + 'LBL_ENTER_CHARGE_NAME' => 'Digite Nome Encargo', + 'LBL_ENTER_CHARGE_VALUE' => 'Digite Valor Encargo', 'LBL_REGIONS' => 'Regiões', - 'LBL_ENABLE_TAXES_FOR_CHARGE' => 'Activar se carga é tributável', - 'LBL_SELECT_TAX' => 'Selecione Imposto', - 'LBL_SELECT_TAXES' => 'Selecione Impostos', + 'LBL_ENABLE_TAXES_FOR_CHARGE' => 'Habilitar se o Encargo for tributável', + 'LBL_SELECT_TAX' => 'Selecionar Imposto', + 'LBL_SELECT_TAXES' => 'Selecionar Impostos', 'LBL_SELECT_REGIONS' => 'Selecionar Regiões', - 'LBL_SELECT_TAX_DESC' => 'Somente os impostos sobre os encargos indicados', - 'LBL_CHARGE_STORE_DISC' => 'Valor de carga sempre armazenar em moeda base', - 'LBL_DEDUCTED_TAX_DISC' => 'Impostos deduzidos são calculados sobre o total de itens, e são deduzidos do total', - 'LBL_RELATIONSHIPS' => 'Relacionamentos', - 'LBL_NEXT' => 'Next', - 'LBL_MODULE_BUILDER_DESCRIPTION' => 'A criação de novos módulos', - 'LBL_FINISH' => 'Acabamento', - 'LBL_GATEWAY_CONFIGURATION' => 'Configuração de Gateway de Pagamento', - 'MAIN_PRODUCT_WHITELABEL' => 'Rotulagem branco CRM', - 'LBL_WHITE_LABELING_INFO' => 'Ativando isto irá remover Ãcone feedback, links de vÃdeo, vÃdeos novos recursos e rodapé de CRM.', - 'LBL_WHITE_LABELING_INFO_MSG' => 'Ativando isto irá remover botão de ajuda e rodapé de CRM.', - 'LBL_PHONE_CONFIGURATION' => 'Configuração do telefone', + 'LBL_SELECT_TAX_DESC' => 'Exibir somente Impostos sobre Encargos', + 'LBL_CHARGE_STORE_DISC' => 'O valor do Encargo é sempre armazenado na Moeda base', + 'LBL_DEDUCTED_TAX_DISC' => 'O Impostos Deduzidos são computados sobre o total dos Itens e são deduzidos do Total', - 'LBL_MAILROOM' => 'Sala de correspondências', - 'LBL_EXCHANGE_CONNECTOR' => 'O Exchange Connector', - 'LBL_SELECT_DATE' => 'Seleccione datas', - 'LBL_SERVER_TYPE' => 'Tipo De Servidor', - 'LBL_OTHERS' => 'Outros', - 'LBL_GMAIL' => 'Gmail', - 'LBL_HOTMAIL' => 'Hotmail', - 'LBL_YAHOO' => 'Yahoo', - 'LBL_OFFICE365' => 'Office365', - 'LBL_VTIGER' => 'Vtiger', - 'LBL_PREFIX_IN_USE' => 'Prefixo já está em uso', - 'LBL_NO_LOGO_EDIT_AND_UPLOAD' => 'Nenhuma imagem, editar e fazer upload de imagem', - 'EmailTemplate' => 'Modelo De E-Mail', - 'LBL_TEMPLATE_NAME' => 'Nome do modelo', - 'LBL_SUBJECT' => 'Assunto', - 'LBL_EXTENSION_STORE' => 'Extensão Loja', - 'LBL_MODULE_MANAGEMENT' => 'Módulo Gerenciador De', - 'LBL_AUTOMATION' => 'Automação', - 'LBL_CONFIGURATION' => 'Configuração', - 'LBL_MARKETING_SALES' => 'Marketing & Vendas', - 'LBL_INVOICES' => 'Faturas', - 'LBL_SUPPORT' => 'Suporte', - 'LBL_TEMPLATES' => 'Modelos', - 'LBL_MODULE_CUSTOMIZATION' => 'Módulo De Layouts & Campos', - 'LBL_TAX_MANAGEMENT' => 'Gestão Tributária', - 'LBL_LEAD_MAPPING' => 'Levar Conversão De Mapeamento De Dados', - 'LBL_OPPORTUNITY_MAPPING' => 'Oportunidade para Mapeamento do Projeto', - 'LBL_PICKLIST_DEPENDENCY' => 'Lista De Opções De Dependência', - 'LBL_MY_TAGS' => 'Minhas Tags', - 'LBL_ADD_MODULE' => 'Adicionar Módulo De', - 'LBL_SMART_NOTIFICATIONS' => 'Smart Notificações', - 'LBL_FORECAST_SETTINGS' => 'Previsão De Configurações', - 'LBL_SEARCH_FOR_SETTINGS' => 'Definições de pesquisa', - 'LBL_GOOGLE' => 'O Google', - 'LBL_QUICKBOOKS' => 'QuickBooks', - 'LBL_XERO' => 'Xero', - 'LBL_TALLY' => 'Tally', - 'LBL_SHOPPINGCART' => 'ShoppingCart', + //Terms & conditions + 'LBL_TERMS_AND_CONDITIONS' => 'Prazos e Condições de Pagamento', + 'LBL_SPECIFY_TERMS_AND_CONDITIONS' => 'Especifique aqui os Prazos e Condições de Pagamento', + //Announcements + 'LBL_ANNOUNCEMENTS' => 'Anúncios', + 'LBL_ENTER_ANNOUNCEMENT_HERE' => 'Digite o Anúncio aqui', + 'LBL_ANNOUNCEMENT_DESC' => 'Altere o texto que aparece na exibição do Anúncio no topo de cada página', -); -$jsLanguageStrings = array( - 'JS_PLEASE_SELECT_ATLEAST_ONE_MEMBER_FOR_A_GROUP' => 'Please select atleast one member for a group', // TODO: Review - 'JS_GROUP_DELETED_SUCCESSFULLY' => 'Group deleted successfully' , // TODO: Review - 'JS_TAX_SAVED_SUCCESSFULLY' => 'Tax Saved Successfully' , // TODO: Review - 'JS_TAX_DISABLED' => 'Tax disabled' , // TODO: Review - 'JS_TAX_ENABLED' => 'Tax Enabled' , // TODO: Review - 'JS_SELECT_SIMPLE_TAXES' => 'Selecione Impostos Simples', - 'JS_TAX_REGION_SAVED_SUCCESSFULLY' => 'Região Fiscal Salvo com sucesso', - 'JS_TAX_REGION_DELETED_SUCCESSFULLY' => 'Imposto Região excluÃdo com sucesso', - 'JS_INVENTORY_CHARGE_SAVED_SUCCESSFULLY' => 'Carga Inventário Salvo com sucesso', - 'JS_INVENTORY_CHARGE_DELETED_SUCCESSFULLY' => 'Inventário de carga excluÃdo com sucesso', - 'JS_DELETE_CHARGE_DESC' => 'Excluindo essa cobrança afetará todos os registros de inventário com esta carga existente. Você deseja continuar?', - 'JS_DELETE_REGION_DESC' => 'Excluindo esta região afetará todos os impostos de inventário com esta região existente. Você deseja continuar?', - 'JS_SELECT_REGIONS' => 'Selecionar Regiões', - 'JS_DELETE' => 'Excluir', - 'JS_EDIT' => 'Edit' , // TODO: Review - 'JS_ANNOUNCEMENT_SAVED' => 'Announcement Saved' , // TODO: Review - 'JS_CONFIRM_DEFAULT_SETTINGS' => 'Are you sure that you want to change the server details to the default server values', // TODO: Review - 'JS_PLEASE_ENTER_NUMBER_IN_RANGE_1TO5' => 'Please enter value in the range 1-5', // TODO: Review - 'JS_PLEASE_ENTER_NUMBER_IN_RANGE_1TO100' => 'Please enter value in the range 1-100', // TODO: Review - 'JS_RECORD_NUMBERING_SAVED_SUCCESSFULLY_FOR' => 'Record Numbering Successfully saved for', // TODO: Review - 'JS_RECORD_NUMBERING_UPDATED_SUCCESSFULLY_FOR' => 'Record Numbering Updated Successfully for', // TODO: Review - 'JS_SEQUENCE_NUMBER_MESSAGE' => 'Sequence Number should be greater than or equal to', // TODO: Review - 'LBL_WRONG_IMAGE_TYPE' => 'not supported Image type' , // TODO: Review - 'LBL_MAXIMUM_SIZE_EXCEEDS' => 'You can upload maximum size of 1MB only', // TODO: Review - 'LBL_NO_LOGO_SELECTED' => 'No logo selected' , // TODO: Review - 'JS_CONFIGURATION_DETAILS_SAVED' => 'Configuration Details Saved' , // TODO: Review - 'JS_DEFAULT_TAX_MODE_SET_AS' => 'Modo imposto Padrão definido como ', + //Outgoing Server + 'LBL_RESET_TO_DEFAULT' => 'Redefinir para Padrão', + 'LBL_SERVER_NAME' => 'Nome do Servidor', + 'LBL_USER_NAME' => 'Usuário', + 'LBL_PASSWORD' => 'Senha', + 'LBL_FROM_EMAIL' => 'Do E-mail', + 'LBL_SERVER_TYPE' => 'Tipo Servidor', + 'LBL_OTHERS' => 'Outros', + 'LBL_GMAIL' => 'Gmail', + 'LBL_HOTMAIL' => 'Hotmail', + 'LBL_YAHOO' => 'Yahoo', + 'LBL_OFFICE365' => 'Office365', + 'LBL_VTIGER' => 'Vtiger', + 'LBL_REQUIRES_AUTHENTICATION' => 'Requer Autenticação', + 'LBL_OUTGOING_SERVER' => 'Servidor Envio Mensagens', + 'LBL_OUTGOING_SERVER_DESC' => 'Configurar detalhes do seu Servidor Envio Mensagens', + 'LBL_DEFAULT'=>'Por padrão, as configurações da conta SMTP para o Servidor de Envio de Mensagens são definidas para o servidor od1.vtiger.com. Para evitar que emails enviados sejam bloqueados pelos filtros de spam no servidor de correio do ISP destinatário, recomendamos que você implemente um dos seguintes:', + 'LBL_OPTIONS1'=>'Enviar emails a partir do seu Servidor de Mensagens<br> + - Digite os detalhes da conta SMTP (Nome Servidor, Usuário e Senha) para a mesma conta digitada no campo "Responder a [Email]".', + 'LBL_OPTIONS2'=>"Adicione o servidor od1.vtiger.com como um remetente autorizado para seu dominio.<br> + - Se desejar manter o servdor vtiger como o servidor de envio de mensagens, recomendamos que você configure o registro SFP do domÃnio para incluir o servidor do vtiger como um remetente válido para seu domÃnio. + Para instruções adicionais sobre como configurar o registro SFP, por favor envie email para od-support@vtiger.com.", + 'LBL_MAIL_SERVER_SMTP'=>'Configurações Servidor Mensagens (SMTP)', + 'LBL_OUTGOING_SERVER_FROM_FIELD'=>'NOTA: Se o campo "Responder a [Email]" estiver em branco, o endereço de email do Usuário será utilizado.', + 'LBL_TESTMAILSTATUS'=>'Status Teste Mensagem: ', + 'LBL_MAILSENDERROR'=>'A mensagem não pode ser enviada para o usuário Admin. Por favor, verifique as configurações do email do Admin ou as configurações do Servidor', + + //Configuration Editor + 'LBL_CONFIG_EDITOR' => 'Editor de Configuração', + 'LBL_CONFIG_DESCRIPTION' => 'Editar ods detalhes da Configuração do vtiger CRM', + 'LBL_CONFIG_FILE' => 'config.inc.php', + 'LBL_MB' => 'MB', - 'JS_TERMS_AND_CONDITIONS_SAVED' => 'Termos e condições guardado', - 'JS_INVALID_URL' => 'URL inválido', + //Config Editor Fields + 'LBL_MINI_CALENDAR_DISPLAY' => 'Exibir Mini Calendário', + 'LBL_WORLD_CLOCK_DISPLAY' => 'Exibir Relógio Mundial', + 'LBL_CALCULATOR_DISPLAY' => 'Exibir Calculadora', + 'LBL_USE_RTE' => 'Usar RTE', + 'LBL_HELPDESK_SUPPORT_EMAILID' => 'Email Suporte', + 'LBL_HELPDESK_SUPPORT_NAME' => 'Nome Suporte', + 'LBL_MAX_UPLOAD_SIZE' => 'Tamanho Máximo Upload (Max %sMB)', + 'LBL_MAX_HISTORY_VIEWED' => 'Hitórico Máximo Visualizado', + 'LBL_DEFAULT_MODULE' => 'Módulo Padrão', + 'LBL_MAX_TEXT_LENGTH_IN_LISTVIEW' => 'Comprimento Máximo do texto na Lista de Registro', + 'LBL_MAX_ENTRIES_PER_PAGE_IN_LISTVIEW' => 'Máximo de Linhas por página nas Listas de Registros', + 'LBL_EMAIL_TRACKING' => 'Habilitar rastreamento de emails', + 'LBL_INVALID_EMAILID' => 'Email Inválido', + 'LBL_INVALID_SUPPORT_NAME' => 'Nome Inválido', + 'LBL_INVALID_MODULE' => 'Módulo Inválido', + 'LBL_INVALID_NUMBER' => 'Número Inválido', + 'LBL_FIELDS_INFO_IS_EMPTY' => 'As informações dos campos estão vazias', + //CustomRecordNumbering + 'LBL_SUCCESSFULLY_UPDATED' => 'Atualizado com Sucesso', + 'LBL_CUSTOMIZE_RECORD_NUMBERING' => 'Numeração Módulo', + 'LBL_MODULE_ENTITY_NUMBER_CUSTOMIZATION' => 'Customização Número Módulo', + 'LBL_UPDATE_MISSING_RECORD_SEQUENCE' => 'Atualizar Sequência Registros', + 'LBL_USE_PREFIX' => 'Utilizar Prefixo', + 'LBL_PREFIX_IN_USE' => 'Prefixo já está em uso', + 'LBL_START_SEQUENCE' => 'Iniciar Sequência', - 'JS_LBL_TAX_REGION_EXIST' => 'Região Nome já existe', - 'JS_LOGO_IMAGE_DIMENSIONS_WRONG' => 'A Imagem do logotipo dimensões não correspondem ao permitido dimensão. Redimensionar a imagem e tente novamente.', + //Company Details + 'organizationname' => 'Nome Empresa', + 'logoname' => 'Logo da Empresa', + 'address' => 'Endereço', + 'city' => 'Cidade', + 'state' => 'Estado', + 'code' => 'CEP', + 'country' => 'PaÃs', + 'phone' => 'Telefone', + 'fax' => 'Fax', + 'website' => 'Website', + 'vatid' => 'CNPJ', + 'facebook' => 'Facebook', + 'twitter' => 'Twitter', + 'linkedin' => 'LinkedIn', + 'LBL_IMAGE_CORRUPTED' => 'Virus detectado ou imagens carregada corrompida', + 'LBL_LOGO_RECOMMENDED_MESSAGE' => 'Permitido tamanho 150X40 pixels (.jpeg , .jpg , .png , .gif , .pjpeg , .x-png format).', + 'LBL_COMPANY_INFORMATION' => 'Informação da Empresa', + 'LBL_UPDATE' => 'Atualizar', + 'LBL_UPDATE_LOGO' => 'Atualizar Logo', + 'LBL_COMPANY_LOGO' => 'Logo Empresa', + 'LBL_NO_LOGO_EDIT_AND_UPLOAD' => 'Sem imagem, editar e carregar imagem', + 'LBL_EDIT_COMPANY_DETAILS_MESSAGE' => 'Para editar detalhes da Empresa, clique no Ãcone Configurações > Adicionar/Apagar Usuários > Empresa', + + 'LBL_ACTIVE' => 'Ativo', + 'LBL_INACTIVE' => 'Inativo', + + //show last scan in workflows and mailconverter + 'LBL_DISABLED' => 'Desabilitado', + 'LBL_RUNNING' => 'Executando', + 'LBL_LAST_SCAN_TIMED_OUT' => 'Último verificação', + 'LBL_LAST_SCAN_AT' => 'Última verificação em', + 'LBL_TIME_TAKEN' => ' tempo ocupado', + 'LBL_SHORT_SECONDS' => 'seg', + + //Email Templates + 'EmailTemplate' => 'Modelo Email', + 'LBL_TEMPLATE_NAME' => 'Nome Modelo', + 'LBL_DESCRIPTION' => 'Descrição', + 'LBL_SUBJECT' => 'Assunto', + + //User Login History + 'LoginHistory' => 'Histórico Acesso Usuário', + 'LBL_LOGIN_HISTORY_DETAILS' => 'Histórico Acesso', + 'LBL_LOGIN_HISTORY_DESCRIPTION' => 'Detalhes Histórico Acesso', + 'LBL_USER_NAME'=> 'Usuário', + 'LBL_USER_IP_ADDRESS'=> 'Endereço IP Usuário', + 'LBL_LOGIN_TIME' => 'Hora Conexão', + 'LBL_LOGGED_OUT_TIME' => 'Hora Desconexão', + 'LBL_STATUS' => 'Status', + + // Leads and Potentials Mapping + 'LBL_SAVED_SUCCESSFULLY' => 'Salvo com Sucesso', + 'LBL_DELETED_SUCCESSFULLY' => 'Apagado com Sucesso', + 'LBL_INVALID_MAPPING' => 'Mapeamento Inválido', + 'LBL_FIELD_LABEL' => 'Rótulo Campo', + 'LBL_FIELD_TYPE' => 'Tipo Campo', + 'LBL_MAPPING_WITH_OTHER_MODULES' => 'Mapeamento com outros Módulos', + 'LBL_ADD_MAPPING' => 'Adicionar Mapeamento', + 'LBL_NONE' => 'Nada', + + //Field Type Translation + 'phone' => 'Telefone', + 'picklist' => 'Lista Opções', + 'email' => 'Email', + 'text' => 'String', + 'currency' => 'Moeda', + 'multiSelectCombo' => 'Caixa Multiseleção', + 'time' => 'Hora', + 'textArea' => 'Ãrea de Texto', + 'url' => 'URL', + 'string' => 'String', + 'checkBox' => 'Caixa Seleção', + 'date' => 'Data', + 'decimal' => 'Decimal', + 'percent' => 'Percentual', + 'skype' => 'Skype', + 'image' => 'Imagem', + 'LBL_DEFAULT_TAX_MODE' => 'Modo Imposto Padrão', + 'LBL_RELATIONSHIPS' => 'Relacionamentos', + + 'LBL_MODULE_BUILDER_DESCRIPTION' => 'Criação novos Módulos', + + 'LBL_EXTENSION_STORE' => 'Loja de Extensões', + 'LBL_GATEWAY_CONFIGURATION' => 'Configuração Gateway de Pagamento', + 'MAIN_PRODUCT_WHITELABEL' => 'White Label CRM', + 'LBL_WHITE_LABELING_INFO' => 'Ao habilitar removerá o Ãcone feedback, links para vÃdeo, novos recursos e rodapé do CRM.', + 'LBL_WHITE_LABELING_INFO_MSG' => 'Ao habilitar isto removerá o botão ajuda e rodapé do CRM.', + /*Vtiger7 Language Strings*/ + 'LBL_USER_MANAGEMENT' => 'Gestão Usuários', + 'LBL_MODULE_MANAGEMENT' => 'Gerenciador Módulos', + 'LBL_AUTOMATION' => 'Automação', + 'LBL_CONFIGURATION' => 'Configuração', + 'LBL_MARKETING_SALES' => 'Marketing e Vendas', + 'LBL_INVOICES' => 'Faturas', + 'LBL_SUPPORT' => 'Suporte', + 'LBL_TEMPLATES' => 'Modelos', + 'LBL_MODULE_CUSTOMIZATION' => 'Layouts e Campos de Módulos', + 'LBL_TAX_MANAGEMENT' => 'Gestão Fiscal', + 'LBL_TERMS_AND_CONDITIONS' => 'Termos e Condições', + 'LBL_GATEWAY_CONFIGURATION' => 'Subscrição', + 'LBL_LEAD_MAPPING' => 'Mapeamento Dados Conversão Lead', + 'LBL_OPPORTUNITY_MAPPING' => 'Mapeamento de Oportunidade para Projeto', + 'LBL_PICKLIST_DEPENDENCY' => 'Dependência Listas Opções', + 'LBL_MY_TAGS' => 'Minhas Tags', + 'LBL_ADD_MODULE' => 'Adicionar Módulo', + 'LBL_SMART_NOTIFICATIONS' => 'Notificações Inteligentes', + 'LBL_FORECAST_SETTINGS' => 'Configurações Previsões', + 'LBL_SEARCH_FOR_SETTINGS' => 'Configurações Pesquisas', + 'LBL_GOOGLE' => 'Google', + 'LBL_QUICKBOOKS' => 'QuickBooks', + 'LBL_XERO' => 'Xero', + 'LBL_TALLY' => 'Tally', + 'LBL_SHOPPINGCART' => 'Carrinho Compras', + 'LBL_PHONE_CONFIGURATION' => 'Configurações Telefone', +); -); \ No newline at end of file +$jsLanguageStrings = array( + 'JS_PLEASE_SELECT_ATLEAST_ONE_MEMBER_FOR_A_GROUP' => 'Selecione pelo menos um membro para um Grupo', + 'JS_GROUP_DELETED_SUCCESSFULLY' => 'Grupo apagado com Sucesso', + 'JS_TAX_SAVED_SUCCESSFULLY' => 'Imposto Salvo com Sucesso', + 'JS_TAX_DISABLED' => 'Imposto Desabilitado', + 'JS_TAX_ENABLED' => 'Imposto Habilitado', + 'JS_SELECT_SIMPLE_TAXES' => 'Selecionar Impostos Simples', + 'JS_TAX_REGION_SAVED_SUCCESSFULLY' => 'Região Fiscal Salva com Sucesso', + 'JS_TAX_REGION_DELETED_SUCCESSFULLY' => 'Região Fiscal Apagada com Sucesso', + 'JS_INVENTORY_CHARGE_SAVED_SUCCESSFULLY' => 'Taxa Estoque Salva com Sucesso', + 'JS_INVENTORY_CHARGE_DELETED_SUCCESSFULLY' => 'Taxa Estoque Apagada com Sucesso', + 'JS_DELETE_CHARGE_DESC' => 'Ao excluir esta taxa, serão afetados todos os registros do Estoque em que esta taxa encontra-se aplicada. Deseja continuar?', + 'JS_DELETE_REGION_DESC' => 'Ao excluir esta Região, serão afetadas todas as taxas do Estoque com esta Região. Deseja continuar?', + 'JS_SELECT_REGIONS' => 'Selecionar Regiões', + 'JS_DELETE' => 'Apagar', + 'JS_EDIT' => 'Editar', + 'JS_ANNOUNCEMENT_SAVED' => 'Anuncio Salvo', + 'JS_CONFIRM_DEFAULT_SETTINGS' => 'Tem certeza de que deseja alterar os detalhes do Servidor para os valores padrão do Servidor', + 'JS_PLEASE_ENTER_NUMBER_IN_RANGE_1TO5' => 'Digite o valor no intervalo 1-%sMB', + 'JS_PLEASE_ENTER_NUMBER_IN_RANGE_1TO100' => 'Digite o valor no intervalo 1-100', + 'JS_RECORD_NUMBERING_SAVED_SUCCESSFULLY_FOR' => 'A Numeração do Registro foi Salva com Sucesso para', + 'JS_RECORD_NUMBERING_UPDATED_SUCCESSFULLY_FOR' => 'A Numeração do Registro Atualizado com Sucesso para', + 'JS_SEQUENCE_NUMBER_MESSAGE' => 'Número da Sequência deve ser maior ou igual a', + 'LBL_WRONG_IMAGE_TYPE' => 'tipo de Imagem não suportado', + 'LBL_MAXIMUM_SIZE_EXCEEDS' => 'Você pode carregar um tamanho máximo de somente 1MB', + 'LBL_NO_LOGO_SELECTED' => 'Nenhuma logo selecionada', + 'JS_CONFIGURATION_DETAILS_SAVED' => 'Os Detalhes da Configuração foram Salvos', + 'JS_TERMS_AND_CONDITIONS_SAVED' => 'Termos e Condições salvas', + 'JS_DEFAULT_TAX_MODE_SET_AS' => 'Modo do Imposto Padrão definido como', + 'JS_INVALID_URL' => 'URL Inválida', + 'JS_LBL_TAX_REGION_EXIST' => 'Nome da Região já existe', + 'JS_LOGO_IMAGE_DIMENSIONS_WRONG' => 'A dimensão da imagem da Logo não está de acordo com as dimensões permitidas. Redimensione sua imagem e tente novamente.', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Webforms.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Webforms.php index c29b9bbe28878904a36dc9d1c7aaebe05765c232..b732b6c77fa147885150c210930e9ef667199312 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Webforms.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Webforms.php @@ -1,56 +1,65 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. + * All Rights Reserved. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'SINGLE_Settings:Webforms' => 'Webform' , // TODO: Review - 'WebForm Name' => 'Webform Name' , // TODO: Review - 'Public Id' => 'Public Id' , // TODO: Review - 'Enabled' => 'Status' , // TODO: Review - 'Module' => 'Module' , // TODO: Review - 'Return Url' => 'Return Url' , // TODO: Review - 'Post Url' => 'Post Url' , // TODO: Review - 'Captcha Enabled' => 'Captcha habilitado' , - 'SINGLE_Webforms' => 'Webform' , // TODO: Review - 'LBL_SHOW_FORM' => 'Show Form' , // TODO: Review - 'LBL_DUPLICATES_EXIST' => 'Webform Name already exists' , // TODO: Review - 'LBL_WEBFORM_INFORMATION' => 'Webform Information' , // TODO: Review - 'LBL_FIELD_INFORMATION' => 'Field Information' , // TODO: Review - 'LBL_FIELD_NAME' => 'Field Name' , // TODO: Review - 'LBL_OVERRIDE_VALUE' => 'Override Value' , // TODO: Review - 'LBL_MANDATORY' => 'Mandatory' , // TODO: Review - 'LBL_WEBFORM_REFERENCE_FIELD' => 'Webforms reference Field' , // TODO: Review - 'LBL_SELECT_FIELDS_OF_TARGET_MODULE' => 'Select Fields for Target Module...', // TODO: Review - 'LBL_ALLOWS_YOU_TO_MANAGE_WEBFORMS' => 'Allows you to manage webforms', // TODO: Review - 'LBL_ADD_FIELDS' => 'Add Fields' , // TODO: Review - 'LBL_EMBED_THE_FOLLOWING_FORM_IN_YOUR_WEBSITE' => 'Embed the following form in your website', // TODO: Review - 'LBL_SELECT_VALUE' => 'Select Value' , // TODO: Review - 'LBL_LABEL' => 'label' , // TODO: Review - 'LBL_SAVE_FIELDS_ORDER' => 'Salve campos encomendar', - 'LBL_HIDDEN' => 'Escondido', - 'LBL_ENABLE_TARGET_MODULES_FOR_WEBFORM' => 'Habilitar módulos alvo para webform', - 'LBL_ASSIGN_USERS' => 'Atribuição de Usuário', - 'LBL_ASSIGN_ROUND_ROBIN' => 'Atribuir usuários em Round Robin', - 'LBL_ROUNDROBIN_USERS_LIST' => 'Lista Robin Usuários Rodada', + 'SINGLE_Settings:Webforms' => 'Webform', + //Basic Field Names + 'WebForm Name' => 'Nome do Webform', + 'Public Id' => 'ID Público', + 'Enabled' => 'Status', + 'Module' => 'Módulo', + 'Return Url' => 'URL de Retorno', + 'Post Url' => 'URL de Postagem', + 'Captcha Enabled' => 'Captcha Habilitado', + 'SINGLE_Webforms' => 'Webform', - 'LBL_ADD_RECORD' => 'Adicionar Formulário De Web', + //Actions + 'LBL_SHOW_FORM' => 'Exibir Formulário', + 'LBL_DUPLICATES_EXIST' => 'Nome do Webform já existe', + //Blocks + 'LBL_WEBFORM_INFORMATION' => 'Informação do Webform', + 'LBL_FIELD_INFORMATION' => 'Informação Campo', + 'LBL_FIELD_NAME' => 'Nome Campo', + 'LBL_OVERRIDE_VALUE' => 'Sobrescrever Valor', + 'LBL_MANDATORY' => 'Obrigatório', + 'LBL_WEBFORM_REFERENCE_FIELD' => 'Campo de referência de Webforms', + 'LBL_SELECT_FIELDS_OF_TARGET_MODULE' => 'Selecionar Campos para Módulo Alvo...', + 'LBL_ALLOWS_YOU_TO_MANAGE_WEBFORMS' => 'Permite que você gerencie os Webforms', + 'LBL_ADD_FIELDS' => 'Adicionar Campos', + 'LBL_EMBED_THE_FOLLOWING_FORM_IN_YOUR_WEBSITE' => 'Insira o seguinte formulário no seu website', + 'LBL_SELECT_VALUE' => 'Selecionar Valor', + 'LBL_LABEL' => 'rótulo', + 'LBL_SAVE_FIELDS_ORDER' => 'Salvar ordem dos campos', + 'LBL_HIDDEN' => 'Ocultar', + 'LBL_ENABLE_TARGET_MODULES_FOR_WEBFORM' => 'Habilitar módulos Alvo para Webform', + 'LBL_ASSIGN_USERS' => 'Usuário Responsável', + 'LBL_ASSIGN_ROUND_ROBIN' => 'Designar Usuários no Round Robin', + 'LBL_ROUNDROBIN_USERS_LIST' => 'Lista de Usuários do Round Robin', + 'LBL_ADD_RECORD' => 'Adicionar Webform', + 'LBL_UPLOAD_DOCUMENTS' => 'Carregar Documentos', + 'LBL_ADD_FILE_FIELD' => 'Campo de carregamento Arquivo', + 'LBL_FIELD_LABEL' => 'TÃtulo Documento', + 'LBL_FILE_FIELD_INFO' => 'Para cada arquivo carregado a partir do Webform, um novo Documento é criado como o arquivo anexado. O Documento também é vinculado para este %s criado recentemente.', + 'LBL_NO_FILE_FIELD' => 'Nenhum arquivo adicionado.', + 'LBL_COPY_TO_CLIPBOARD' => 'Copiar para área de transferência', ); $jsLanguageStrings = array( - 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'Webform deleted successfully', // TODO: Review - 'JS_LOADING_TARGET_MODULE_FIELDS' => 'Loadding Target Module Fields', // TODO: Review - 'JS_SELECT_VALUE' => 'Select Vlaue' , // TODO: Review - 'JS_MANDATORY_FIELDS_WITHOUT_OVERRIDE_VALUE_CANT_BE_HIDDEN' => 'Campos obrigatórios sem valores de substituição não pode ser escondido', - 'JS_REFERENCE_FIELDS_CANT_BE_MANDATORY_WITHOUT_OVERRIDE_VALUE' => 'Campos de referência não pode ser obrigatória, sem valor de substituição', - 'JS_TYPE_TO_SEARCH' => 'Digite para pesquisar', - "JS_WEBFORM_WITH_THIS_NAME_ALREADY_EXISTS" => 'Webform com este nome já existe', - - 'JS_SELECT_AN_OPTION' => 'Selecione uma Opção', - 'JS_LABEL' => 'rótulo', - -); \ No newline at end of file + 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'O Webform foi apagado com Sucesso', + 'JS_LOADING_TARGET_MODULE_FIELDS' => 'Carregando Campos do Módulo Alvo', + 'JS_SELECT_AN_OPTION' => 'Selecionar uma Opção', + 'JS_LABEL' => 'rótulo', + 'JS_MANDATORY_FIELDS_WITHOUT_OVERRIDE_VALUE_CANT_BE_HIDDEN' => 'Campos obrigatórios sem sobrescrever os valores, não podem ser ocultos', + 'JS_REFERENCE_FIELDS_CANT_BE_MANDATORY_WITHOUT_OVERRIDE_VALUE' => 'Campos de referência não podem ser obrigatórios sem sobrescrever o valor', + 'JS_TYPE_TO_SEARCH' => 'Tipo de pesquisa', + "JS_WEBFORM_WITH_THIS_NAME_ALREADY_EXISTS" => 'Já existe um Webform com este nome', + 'JS_MAX_FILE_FIELDS_LIMIT' => 'Maximum you can add %s file fields.', + 'JS_COPIED_SUCCESSFULLY' => 'Copied successfully.', + 'JS_COPY_FAILED' => 'Copy failed. Please copy manually.', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Workflows.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Workflows.php index e097848d6385cdb094a2cc145857ee9dc43e4fef..182941115e807e9813c494c010ba6859d50c9e6c 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Workflows.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Settings/Workflows.php @@ -1,166 +1,174 @@ -<?php -/*+********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - ************************************************************************************/ -$languageStrings = array( - 'LBL_NEW' => 'New' , // TODO: Review - 'LBL_WORKFLOW' => 'Workflow' , // TODO: Review - 'LBL_CREATING_WORKFLOW' => 'Creating WorkFlow' , // TODO: Review - 'LBL_NEXT' => 'Next' , // TODO: Review - 'LBL_STEP_1' => 'Step 1' , // TODO: Review - 'LBL_ENTER_BASIC_DETAILS_OF_THE_WORKFLOW' => 'Enter basic details of the Workflow', // TODO: Review - 'LBL_SPECIFY_WHEN_TO_EXECUTE' => 'Specify when to execute this Workflow', // TODO: Review - 'ON_FIRST_SAVE' => 'Only on the first save' , // TODO: Review - 'ONCE' => 'Until the first time the condition is true', // TODO: Review - 'ON_EVERY_SAVE' => 'Every time the record is saved', // TODO: Review - 'ON_MODIFY' => 'Every time a record is modified', // TODO: Review - 'MANUAL' => 'System' , // TODO: Review - 'SCHEDULE_WORKFLOW' => 'Schedule Workflow' , // TODO: Review - 'ADD_CONDITIONS' => 'Add Conditions' , // TODO: Review - 'ADD_TASKS' => 'Adicionar ações' , - 'LBL_EXPRESSION' => 'Expression' , // TODO: Review - 'LBL_FIELD_NAME' => 'Field' , // TODO: Review - 'LBL_SET_VALUE' => 'Set Value' , // TODO: Review - 'LBL_USE_FIELD' => 'Use Field' , // TODO: Review - 'LBL_USE_FUNCTION' => 'Use Function' , // TODO: Review - 'LBL_RAW_TEXT' => 'Raw text' , // TODO: Review - 'LBL_ENABLE_TO_CREATE_FILTERS' => 'Enable to create Filters' , // TODO: Review - 'LBL_CREATED_IN_OLD_LOOK_CANNOT_BE_EDITED' => 'This workflow was created in older look. Conditions created in older look cannot be edited. You can choose to recreate the conditions, or use the existing conditions without changing them.', // TODO: Review - 'LBL_USE_EXISTING_CONDITIONS' => 'Use existing conditions' , // TODO: Review - 'LBL_RECREATE_CONDITIONS' => 'Recreate Conditions' , // TODO: Review - 'LBL_SAVE_AND_CONTINUE' => 'Save & Continue' , // TODO: Review - 'LBL_ACTIVE' => 'Active' , // TODO: Review - 'LBL_TASK_TYPE' => 'Tipo de Ação' , - 'LBL_TASK_TITLE' => 'Ação TÃtulo' , - 'LBL_ADD_TASKS_FOR_WORKFLOW' => 'Adicionar Ação para fluxo de trabalho', - 'LBL_EXECUTE_TASK' => 'Executar Ação' , - 'LBL_SELECT_OPTIONS' => 'Select Options' , // TODO: Review - 'LBL_ADD_FIELD' => 'Add Field' , // TODO: Review - 'LBL_ADD_TIME' => 'Add time' , // TODO: Review - 'LBL_TITLE' => 'Title' , // TODO: Review - 'LBL_PRIORITY' => 'Priority' , // TODO: Review - 'LBL_ASSIGNED_TO' => 'Assigned to' , // TODO: Review - 'LBL_TIME' => 'Time' , // TODO: Review - 'LBL_DUE_DATE' => 'Due Date' , // TODO: Review - 'LBL_THE_SAME_VALUE_IS_USED_FOR_START_DATE' => 'The same value is used for the start date', // TODO: Review - 'LBL_EVENT_NAME' => 'Event Name' , // TODO: Review - 'LBL_TYPE' => 'Type' , // TODO: Review - 'LBL_METHOD_NAME' => 'Method Name' , // TODO: Review - 'LBL_RECEPIENTS' => 'Recepients' , // TODO: Review - 'LBL_ADD_FIELDS' => 'Add Fields' , // TODO: Review - 'LBL_SMS_TEXT' => 'Sms Text' , // TODO: Review - 'LBL_SET_FIELD_VALUES' => 'Set Field Values' , // TODO: Review - 'LBL_IN_ACTIVE' => 'In Active' , // TODO: Review - 'LBL_SEND_NOTIFICATION' => 'Send Notification' , // TODO: Review - 'LBL_START_TIME' => 'Start Time' , // TODO: Review - 'LBL_START_DATE' => 'Start Date' , // TODO: Review - 'LBL_END_TIME' => 'End Time' , // TODO: Review - 'LBL_END_DATE' => 'End Date' , // TODO: Review - 'LBL_ENABLE_REPEAT' => 'Enable Repeat' , // TODO: Review - 'LBL_NO_METHOD_IS_AVAILABLE_FOR_THIS_MODULE' => 'No method is available for this module', // TODO: Review - 'LBL_FINISH' => 'Finish' , // TODO: Review - 'LBL_NO_TASKS_ADDED' => 'Não há ações' , - 'LBL_CANNOT_DELETE_DEFAULT_WORKFLOW' => 'You Cannot delete default Workflow', // TODO: Review - 'LBL_MODULES_TO_CREATE_RECORD' => 'Criar um registro em' , - 'LBL_EXAMPLE_EXPRESSION' => 'Expression' , // TODO: Review - 'LBL_EXAMPLE_RAWTEXT' => 'Rawtext' , // TODO: Review - 'LBL_VTIGER' => 'Vtiger' , // TODO: Review - 'LBL_EXAMPLE_FIELD_NAME' => 'Field' , // TODO: Review - 'LBL_NOTIFY_OWNER' => 'notify_owner' , // TODO: Review - 'LBL_ANNUAL_REVENUE' => 'annual_revenue' , // TODO: Review - 'LBL_EXPRESSION_EXAMPLE2' => 'if mailingcountry == \'India\' then concat(firstname,\' \',lastname) else concat(lastname,\' \',firstname) end', // TODO: Review - 'LBL_FROM' => 'De', - 'Optional' => 'Opcional', - 'LBL_ADD_TASK' => 'Adicionar Ação' , - 'Portal Pdf Url' =>'Portal do Cliente ligação Pdf', - 'LBL_ADD_TEMPLATE' => 'Adicionar modelo', - 'LBL_LINEITEM_BLOCK_GROUP' => 'LineItems bloco para o imposto de Grupo', - 'LBL_LINEITEM_BLOCK_INDIVIDUAL' => 'LineItems bloco de imposto Individual', - 'LBL_ADD_PDF' => 'Adicionar pdf', - - //Translation for module - 'Calendar' => 'Que fazer' , - 'Send Mail' => 'Enviar e-mail', - 'Invoke Custom Function' => 'Chamar função personalizada', - 'Create Todo' => 'Criar Todo', - 'Create Event' => 'Criar Evento', - 'Update Fields' => 'Atualização de Campos', - 'Create Entity' => 'Criar Registro' , - 'SMS Task' => 'SMS Task', - 'Mobile Push Notification' => 'Móvel Push Notification', - 'LBL_ACTION_TYPE' => 'Tipo de Ação (Contagem Ativa)', - 'LBL_VTEmailTask' => 'O Email', - 'LBL_VTEntityMethodTask' => 'Função Personalizada', - 'LBL_VTCreateTodoTask' => 'Tarefa', - 'LBL_VTCreateEventTask' => 'Evento', - 'LBL_VTUpdateFieldsTask' => 'Campo Atualização', - 'LBL_VTSMSTask' => 'SMS', - 'LBL_VTPushNotificationTask' => 'Notificação móvel', - 'LBL_VTCreateEntityTask' => 'Criar Registro', - 'LBL_MAX_SCHEDULED_WORKFLOWS_EXCEEDED' => 'O número máximo (%s) de fluxos de trabalho programados foi excedido', - - 'LBL_EDITING_WORKFLOW' => 'Fluxo De Trabalho De Edição', - 'LBL_ADD_RECORD' => 'Novo Fluxo De Trabalho', - 'ON_SCHEDULE' => 'Programação', - 'LBL_RUN_WORKFLOW' => 'Executar Fluxo De Trabalho', - 'LBL_AT_TIME' => 'No Momento', - 'LBL_HOURLY' => 'De hora em hora', - 'ENTER_FROM_EMAIL_ADDRESS' => 'Introduza um endereço De email', - 'LBL_DAILY' => 'Diária', - 'LBL_WEEKLY' => 'Semanal', - 'LBL_ON_THESE_DAYS' => 'Por estes dias', - 'LBL_MONTHLY_BY_DATE' => 'Mensal por Data', - 'LBL_MONTHLY_BY_WEEKDAY' => 'Mensal por dia da Semana', - 'LBL_YEARLY' => 'Anual', - 'LBL_SPECIFIC_DATE' => 'Em Data EspecÃfica', - 'LBL_CHOOSE_DATE' => 'Escolha A Data', - 'LBL_SELECT_MONTH_AND_DAY' => 'Selecione o Mês e a Data', - 'LBL_SELECTED_DATES' => 'As Datas Escolhidas', - 'LBL_EXCEEDING_MAXIMUM_LIMIT' => 'Limite máximo excedido', - 'LBL_NEXT_TRIGGER_TIME' => 'Próximo perÃodo de tempo no', - 'LBL_MESSAGE' => 'Mensagem', - 'LBL_WORKFLOW_NAME' => 'Nome Do Fluxo De Trabalho', - 'LBL_TARGET_MODULE' => 'Módulo-Alvo', - 'LBL_WORKFLOW_TRIGGER' => 'Fluxo De Trabalho De Trigger', - 'LBL_TRIGGER_WORKFLOW_ON' => 'Trigger Fluxo De Trabalho Em', - 'LBL_RECORD_CREATION' => 'Criação Do Registro', - 'LBL_RECORD_UPDATE' => 'Atualização Do Registro De', - 'LBL_TIME_INTERVAL' => 'Intervalo De Tempo', - 'LBL_RECURRENCE' => 'Recorrência', - 'LBL_FIRST_TIME_CONDITION_MET' => 'Apenas a primeira vez que condições são atendidas', - 'LBL_EVERY_TIME_CONDITION_MET' => 'Cada vez que condições são atendidas', - 'LBL_WORKFLOW_CONDITION' => 'Condição De Fluxo De Trabalho', - 'LBL_WORKFLOW_ACTIONS' => 'Ações De Fluxo De Trabalho', - 'LBL_DELAY_ACTION' => 'Atraso De Ação', - 'LBL_FREQUENCY' => 'Frequência', - 'LBL_SELECT_FIELDS' => 'Selecione Os Campos', - 'LBL_INCLUDES_CREATION' => 'Inclui A Criação De', - 'LBL_ACTION_FOR_WORKFLOW' => 'Ação de Fluxo de trabalho', - 'LBL_WORKFLOW_SEARCH' => 'Procura por Nome', - -); -$jsLanguageStrings = array( - 'JS_STATUS_CHANGED_SUCCESSFULLY' => 'Status changed Successfully' , // TODO: Review - 'JS_TASK_DELETED_SUCCESSFULLY' => 'Ação excluÃdo com sucesso', - 'JS_SAME_FIELDS_SELECTED_MORE_THAN_ONCE' => 'Same fields selected more than once', // TODO: Review - 'JS_WORKFLOW_SAVED_SUCCESSFULLY' => 'Workflow saved successfully' , // TODO: Review - 'JS_CHECK_START_AND_END_DATE'=>'Data e hora final deve ser maior ou igual a Data de InÃcio e Hora', - - 'JS_TASK_STATUS_CHANGED' => 'Status da tarefa alterada com êxito.', - 'JS_WORKFLOWS_STATUS_CHANGED' => 'Status do fluxo de trabalho alterada com êxito.', - 'VTEmailTask' => 'Enviar E-Mail', - 'VTEntityMethodTask' => 'Invocar A Função Personalizada', - 'VTCreateTodoTask' => 'Criar Tarefa', - 'VTCreateEventTask' => 'Criar Evento', - 'VTUpdateFieldsTask' => 'Atualização De Campos', - 'VTSMSTask' => 'SMS de Tarefas', - 'VTPushNotificationTask' => 'Móveis De Notificação De Envio', - 'VTCreateEntityTask' => 'Criar Registo', - 'LBL_EXPRESSION_INVALID' => 'Expressão Inválido', - -); \ No newline at end of file +<?php +/*+*********************************************************************************** + * The contents of this file are subject to the vtiger CRM Public License Version 1.0 + * ("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. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ +$languageStrings = array( + //Basic Field Names + 'LBL_NEW' => 'Novo', + 'LBL_WORKFLOW' => 'Workflow', + 'LBL_CREATING_WORKFLOW' => 'Criando WorkFlow', + 'LBL_EDITING_WORKFLOW' => 'Editando Workflow', + 'LBL_ADD_RECORD' => 'Novo Workflow', + + //Edit view + 'LBL_STEP_1' => 'Passo 1', + 'LBL_ENTER_BASIC_DETAILS_OF_THE_WORKFLOW' => 'Digite os detalhes básico do Workflow', + 'LBL_SPECIFY_WHEN_TO_EXECUTE' => 'Especificar quando este Workflow será executado', + 'ON_FIRST_SAVE' => 'Somente a primeira vez que for salvo', + 'ONCE' => 'Até a primeira vez que a condição for verdadeira', + 'ON_EVERY_SAVE' => 'Todas as vezes que o registro for salvo', + 'ON_MODIFY' => 'Todas as vezes que o registro for modificado', + 'ON_SCHEDULE' => 'Agendar', + 'MANUAL' => 'Sistema', + 'SCHEDULE_WORKFLOW' => 'Agendar Workflow', + 'ADD_CONDITIONS' => 'Adicionar Condições', + 'ADD_TASKS' => 'Adicionar Ações', + + //Step2 edit view + 'LBL_EXPRESSION' => 'Expressão', + 'LBL_FIELD_NAME' => 'Campo', + 'LBL_SET_VALUE' => 'Definir Valor', + 'LBL_USE_FIELD' => 'Usar Campo', + 'LBL_USE_FUNCTION' => 'Usar Função', + 'LBL_RAW_TEXT' => 'Texto puro', + 'LBL_ENABLE_TO_CREATE_FILTERS' => 'Habilitar para criar Filtros', + 'LBL_CREATED_IN_OLD_LOOK_CANNOT_BE_EDITED' => 'Este workflow foi criado em uma forma antiga. As condições criadas na forma antiga não podem ser editadas. Você pode escolher recriar as condições ou utilizar uma condição existente sem alterá-las.', + 'LBL_USE_EXISTING_CONDITIONS' => 'Utilizar condições existentes', + 'LBL_RECREATE_CONDITIONS' => 'Recriar Condições', + 'LBL_SAVE_AND_CONTINUE' => 'Salvar e Continuar', + + //Step3 edit view + 'LBL_ACTIVE' => 'Ativo', + 'LBL_TASK_TYPE' => 'Tipo Ação', + 'LBL_TASK_TITLE' => 'TÃtulo Ação', + 'LBL_ADD_TASKS_FOR_WORKFLOW' => 'Adicionar Ação para Workflow', + 'LBL_EXECUTE_TASK' => 'Executar Ação', + 'LBL_SELECT_OPTIONS' => 'Selecionar Opções', + 'LBL_ADD_FIELD' => 'Adicionar campo', + 'LBL_ADD_TIME' => 'Adicionar hora', + 'LBL_TITLE' => 'TÃtulo', + 'LBL_PRIORITY' => 'Prioridade', + 'LBL_ASSIGNED_TO' => 'AtribuÃdo a', + 'LBL_TIME' => 'Hora', + 'LBL_DUE_DATE' => 'Data Vencimento', + 'LBL_THE_SAME_VALUE_IS_USED_FOR_START_DATE' => 'O mesmo valor é usado para data inicial', + 'LBL_EVENT_NAME' => 'Nome do Evento', + 'LBL_TYPE' => 'Tipo', + 'LBL_METHOD_NAME' => 'Nome Método', + 'LBL_RECEPIENTS' => 'Destinatários', + 'LBL_ADD_FIELDS' => 'Adicionar Campos', + 'LBL_SMS_TEXT' => 'Testo SMS', + 'LBL_SET_FIELD_VALUES' => 'Definir Valores do Campo', + 'LBL_ADD_FIELD' => 'Adiciona Campo', + 'LBL_IN_ACTIVE' => 'Inativo', + 'LBL_SEND_NOTIFICATION' => 'Enviar Notificação', + 'LBL_START_TIME' => 'Hora InÃcio', + 'LBL_START_DATE' => 'Data InÃcio', + 'LBL_END_TIME' => 'Hora Final', + 'LBL_END_DATE' => 'Data Final', + 'LBL_ENABLE_REPEAT' => 'Habilitar Repetir', + 'LBL_NO_METHOD_IS_AVAILABLE_FOR_THIS_MODULE' => 'Nenhum método está disponÃvel para este Módulo', + + 'LBL_NO_TASKS_ADDED' => 'Nenhuma Ação', + 'LBL_CANNOT_DELETE_DEFAULT_WORKFLOW' => 'Você não pode apagar um Workflow padrão', + 'LBL_MODULES_TO_CREATE_RECORD' => 'Criar um novo registro em', + 'LBL_EXAMPLE_EXPRESSION' => 'Expressão', + 'LBL_EXAMPLE_RAWTEXT' => 'Texto puro', + 'LBL_VTIGER' => 'Vtiger', + 'LBL_EXAMPLE_FIELD_NAME' => 'Campo', + 'LBL_NOTIFY_OWNER' => 'notify_owner', + 'LBL_ANNUAL_REVENUE' => 'annual_revenue', + 'LBL_EXPRESSION_EXAMPLE2' => "if mailingcountry == 'India' then concat(firstname,' ',lastname) else concat(lastname,' ',firstname) end", + 'LBL_FROM' => 'De', + 'LBL_RUN_WORKFLOW' => 'Executar Workflow', + 'LBL_AT_TIME' => 'Na Hora', + 'LBL_HOURLY' => 'A cada hora', + 'Optional' => 'Opcional', + 'ENTER_FROM_EMAIL_ADDRESS'=> 'Digite endereço de email do Remetente', + 'LBL_ADD_TASK' => 'Adicionar Ação', + 'Portal Pdf Url' =>'URL PDF Portal', + + 'LBL_DAILY' => 'Diariamente', + 'LBL_WEEKLY' => 'Semanalmente', + 'LBL_ON_THESE_DAYS' => 'Nesses dias', + 'LBL_MONTHLY_BY_DATE' => 'Mensalmente por Data', + 'LBL_MONTHLY_BY_WEEKDAY' => 'Mensalmente por Dias da Semana', + 'LBL_YEARLY' => 'Anualmente', + 'LBL_SPECIFIC_DATE' => 'Numa Data EspecÃfica', + 'LBL_CHOOSE_DATE' => 'Escolher Data', + 'LBL_SELECT_MONTH_AND_DAY' => 'Selecionar Data e Mês', + 'LBL_SELECTED_DATES' => 'Datas Selecionadas', + 'LBL_EXCEEDING_MAXIMUM_LIMIT' => 'Limite máximo excedido', + 'LBL_NEXT_TRIGGER_TIME' => 'Próximo hora de disparo em', + 'LBL_ADD_TEMPLATE' => 'Adicionar Modelo', + 'LBL_LINEITEM_BLOCK_GROUP' => 'Bloco Itens Linha para Imposto em Grupo', + 'LBL_LINEITEM_BLOCK_INDIVIDUAL' => 'Bloco Itens Linha para Imposto Individual', + 'LBL_MESSAGE' => 'Mensagem', + 'LBL_ADD_PDF' => 'Adicionar PDF', + + //Translation for module + 'Calendar' => 'Tarefa', + 'Send Mail' => 'Enviar Mensagem', + 'Invoke Custom Function' => 'Invocar Função Customizada', + 'Create Todo' => 'Criar Tarefa', + 'Create Event' => 'Criar Evento', + 'Update Fields' => 'Atualizar Campos', + 'Create Entity' => 'Criar Registro', + 'SMS Task' => 'Tarefa SMS', + 'Mobile Push Notification' => 'Notificação Push Celular', + + // v7 translations + 'LBL_WORKFLOW_NAME' => 'Nome Workflow', + 'LBL_TARGET_MODULE' => 'Módulo Alvo', + 'LBL_WORKFLOW_TRIGGER' => 'Disparo Workflow', + 'LBL_TRIGGER_WORKFLOW_ON' => 'Disparo do Workflow em', + 'LBL_RECORD_CREATION' => 'Criação Registro', + 'LBL_RECORD_UPDATE' => 'Atualizar Registro', + 'LBL_TIME_INTERVAL' => 'Intervalo de Tempo', + 'LBL_RECURRENCE' => 'Recorrência', + 'LBL_FIRST_TIME_CONDITION_MET' => 'Somente a primeira vez que a condição for atendida', + 'LBL_EVERY_TIME_CONDITION_MET' => 'Todas as vezes que a condição for atendida', + 'LBL_WORKFLOW_CONDITION' => 'Condição do Workflow', + 'LBL_WORKFLOW_ACTIONS' => 'Ações do Workflow', + 'LBL_DELAY_ACTION' => 'Atraso da Ação', + 'LBL_FREQUENCY' => 'Frequência', + 'LBL_SELECT_FIELDS' => 'Selecionar Campos', + 'LBL_INCLUDES_CREATION' => 'Incluir Criação', + 'LBL_ACTION_FOR_WORKFLOW' => 'Ação para o Workflow', + 'LBL_WORKFLOW_SEARCH' => 'Pesquisa por Nome', + 'LBL_ACTION_TYPE' => 'Tipo de Ação (Contagem Ativo)', + 'LBL_VTEmailTask' => 'Email', + 'LBL_VTEntityMethodTask' => 'Função Customizada', + 'LBL_VTCreateTodoTask' => 'Tarefa', + 'LBL_VTCreateEventTask' => 'Evento', + 'LBL_VTUpdateFieldsTask' => 'Atualizar Campo', + 'LBL_VTSMSTask' => 'SMS', + 'LBL_VTPushNotificationTask' => 'Notificação Celular', + 'LBL_VTCreateEntityTask' => 'Criar Registro', + 'LBL_MAX_SCHEDULED_WORKFLOWS_EXCEEDED' => 'O número máximo de (%s)workflows agendado foi excedido', +); + +$jsLanguageStrings = array( + 'JS_STATUS_CHANGED_SUCCESSFULLY' => 'Status alterado com Sucesso', + 'JS_TASK_DELETED_SUCCESSFULLY' => 'Ação apagada com Sucesso', + 'JS_SAME_FIELDS_SELECTED_MORE_THAN_ONCE' => 'O mesmo campo foi selecionado mais de uma vez', + 'JS_WORKFLOW_SAVED_SUCCESSFULLY' => 'Workflow salvo com Sucesso', + 'JS_CHECK_START_AND_END_DATE'=>'A Data e Hora Final devem ser maiores ou iguais a Data e Hora Inicial', + 'JS_TASK_STATUS_CHANGED' => 'O status da Tarefa foi alterado com Sucesso.', + 'JS_WORKFLOWS_STATUS_CHANGED' => 'O status do Workflow foi alterado com Sucesso.', + 'VTEmailTask' => 'Enviar Mensagem', + 'VTEntityMethodTask' => 'Invocar Função Customizada', + 'VTCreateTodoTask' => 'Criar Tarefa', + 'VTCreateEventTask' => 'Criar Evento', + 'VTUpdateFieldsTask' => 'Atualizar Campos', + 'VTSMSTask' => 'Tarefa SMS', + 'VTPushNotificationTask' => 'Notificação Push Celular', + 'VTCreateEntityTask' => 'Criar Registro', + 'LBL_EXPRESSION_INVALID' => 'Expressão Inválida' +); + diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Users.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Users.php index 571938b29f96ced1455913eccd09bcee6e19bd83..0ce926f0aa41f4d963ba66a5ad2e2a59e43a5909 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Users.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Users.php @@ -2,267 +2,284 @@ /*+********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("License"); You may not use this file except in compliance with the License - * The Original Code is: vtiger CRM Open Source + * 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. + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br ************************************************************************************/ $languageStrings = array( - 'LBL_ADD_RECORD' => 'Add User' , // TODO: Review - 'LBL_MY_PREFERENCES' => 'Minhas Preferências' , - 'LBL_MORE_INFORMATION' => 'Mais Informação' , - 'LBL_USERLOGIN_ROLE' => 'Login & Função do Usuário', - 'LBL_USER_IMAGE_INFORMATION' => 'Fotografia do Usuário' , - 'LBL_CURRENCY_CONFIGURATION' => 'Configuração Moeda' , - 'LBL_ADDRESS_INFORMATION' => 'Informação Endereço' , - 'LBL_USER_ADV_OPTIONS' => 'Opções para Usuários Avançados', - 'Asterisk Configuration' => 'Configuração Asterisk' , - 'LBL_HOME_PAGE_COMPONENTS' => 'Componentes Home Page' , - 'LBL_TAG_CLOUD_DISPLAY' => 'Tag Cloud Display' , // TODO: Review - 'Role' => 'Função' , - 'Admin' => 'Admin' , - 'User Name' => 'Nome Usuário' , - 'Default Activity View' => 'Padrão MyCalendar Ver', - 'Default Calendar View' => 'Padrão Visualização Agenda' , - 'Default Lead View' => 'Padrão Visualização Lead' , - 'Title' => 'TÃtulo' , - 'Office Phone' => 'Fone Escritório' , - 'Department' => 'Departamento' , - 'Reports To' => 'Reporta-se à ' , - 'Yahoo id' => 'ID Yahoo' , - 'Home Phone' => 'Fone Residencial' , - 'User Image' => 'Imagem Usuário' , - 'Date Format' => 'Formato Data' , - 'Tag Cloud' => 'Tag Cloud' , - 'Signature' => 'Assinatura' , - 'Street Address' => 'Endereço' , - 'Password' => 'Senha' , - 'Confirm Password' => 'Confirmar Senha' , - 'LBL_SHOWN' => 'Mostrar' , - 'LBL_HIDDEN' => 'Ocultar' , - 'LBL_SHOW' => 'Mostrar' , - 'LBL_HIDE' => 'Ocultar' , - 'LBL_HOME_PAGE_COMPO' => 'Componentes Home Page' , - 'LBL_LOGIN_HISTORY' => 'Histórico Login' , - 'LBL_USERDETAIL_INFO' => 'Visualizando detalhes sobre o Usuário', - 'LBL_DELETE_GROUP' => 'Apagar Grupo' , - 'LBL_DELETE_GROUPNAME' => 'Grupo a ser Apagado' , - 'LBL_TRANSFER_GROUP' => 'Transferir Propriedade para: ', - 'LBL_DELETE_USER' => 'Usuário a ser Apagado' , - 'LBL_TRANSFER_USER' => 'Transferir Propriedade para Usuário', - 'LBL_DELETE_PROFILE' => 'Apagar Perfil' , - 'LBL_TRANSFER_ROLES_TO_PROFILE' => 'Transferir Funções para o Perfil', - 'LBL_PROFILE_TO_BE_DELETED' => 'Perfil a ser Apagado' , - 'INTERNAL_MAIL_COMPOSER' => 'Editor Interno de Mensagens' , - 'Asterisk Extension' => 'Extensão Asterisk' , - ' Receive Incoming Calls' => 'Receive Incoming Calls' , // TODO: Review - 'Reminder Interval' => 'Intervalo Lembrete' , - 'Webservice Access Key' => 'Chave Acesso' , - 'Language' => 'Idioma' , - 'Theme' => 'Tema' , - 'Time Zone' => 'Fuso Horário' , - 'Decimal Separator' => 'Separador Decimal' , - 'Digit Grouping Pattern' => 'Padrão Agrupamento DÃgitos', - 'Digit Grouping Separator' => 'Separador Agrupamento DÃgitos', - 'Symbol Placement' => 'Localização SÃmbolo' , - 'Number Of Currency Decimals' => 'Number Of Currency Decimals' , - 'Truncate Trailing Zeros' => 'Truncate Trailing Zeros' , - 'Default Call Duration' => 'Default Call Duration (Mins)', // TODO: Review - 'Other Event Duration' => 'Other Event Duration (Mins)' , // TODO: Review - 'Calendar Hour Format' => 'Calendar Hour Format' , // TODO: Review - 'Kwajalein' => '(UTC-12:00) Data Internacional Linha Oeste', - 'Pacific/Midway' => '(UTC-11:00) Hora Coordenada Universal-11', - 'Pacific/Samoa' => '(UTC-11:00) Samoa' , - 'Pacific/Honolulu' => '(UTC-10:00) Hawai' , - 'America/Anchorage' => '(UTC-09:00) Alaska' , - 'America/Los_Angeles' => '(UTC-08:00) Hora do PacÃfico (US & Canada)', - 'America/Tijuana' => '(UTC-08:00) Tijuana, Baixa California', - 'America/Denver' => '(UTC-07:00) Hora Montanhas (US & Canada)', - 'America/Chihuahua' => '(UTC-07:00) Chihuahua, La Paz, Mazatlan', - 'America/Mazatlan' => '(UTC-07:00) Mazatlan' , - 'America/Phoenix' => '(UTC-07:00) Arizona' , - 'America/Regina' => '(UTC-06:00) Saskatchewan' , - 'America/Tegucigalpa' => '(UTC-06:00) América Central', - 'America/Chicago' => '(UTC-06:00) Hora Central (US & Canada)', - 'America/Mexico_City' => '(UTC-06:00) Cidade do México', - 'America/Monterrey' => '(UTC-06:00) Monterrey' , - 'America/New_York' => '(UTC-05:00) Hora do Leste (US & Canada)', - 'America/Bogota' => '(UTC-05:00) Bogotá, Lima, Quito', - 'America/Lima' => '(UTC-05:00) Lima' , - 'America/Rio_Branco' => '(UTC-05:00) Rio Branco' , - 'America/Indiana/Indianapolis' => '(UTC-05:00) Indiana (East)' , - 'America/Caracas' => '(UTC-04:30) Caracas' , - 'America/Halifax' => '(UTC-04:00) Hora Atlântico (Canada)', - 'America/Manaus' => '(UTC-04:00) Manaus' , - 'America/Santiago' => '(UTC-04:00) Santiago' , - 'America/La_Paz' => '(UTC-04:00) La Paz' , - 'America/Cuiaba' => '(UTC-04:00) Cuiaba' , - 'America/Asuncion' => '(UTC-04:00) Assunção' , - 'America/St_Johns' => '(UTC-03:30) Newfoundland' , - 'America/Argentina/Buenos_Aires' => '(UTC-03:00) Buenos Aires' , - 'America/Sao_Paulo' => '(UTC-03:00) Brasilia' , - 'America/Godthab' => '(UTC-03:00) Greenland' , - 'America/Montevideo' => '(UTC-03:00) Montevideo' , - 'Atlantic/South_Georgia' => '(UTC-02:00) Mid-Atlantic' , - 'Atlantic/Azores' => '(UTC-01:00) Azores' , - 'Atlantic/Cape_Verde' => '(UTC-01:00) Ilhas Cabo Verde', - 'Europe/London' => '(UTC) Londres, Edinburgh, Dublin, Lisboa', - 'UTC' => '(UTC) Tempo Universal Coordenado, Hora Média de Greenwich', - 'Africa/Monrovia' => '(UTC) Monrovia, Reykjavik' , - 'Africa/Casablanca' => '(UTC) Casablanca' , - 'Europe/Belgrade' => '(UTC+01:00) Belgrado, Bratislava, Budapeste, Ljubljana, Praga', - 'Europe/Sarajevo' => '(UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb', - 'Europe/Brussels' => '(UTC+01:00) Bruxelas, Copenhague, Madrid, Paris', - 'Africa/Algiers' => '(UTC+01:00) Ãfrica Central Oeste', - 'Europe/Amsterdam' => '(UTC+01:00) Amsterdam, Berlin, Bern, Roma, Estocolmo, Viena', - 'Europe/Minsk' => '(UTC+02:00) Minsk' , - 'Africa/Cairo' => '(UTC+02:00) Cairo' , - 'Europe/Helsinki' => '(UTC+02:00) Helsinki, Riga, Sofia, Tallinn, Vilnius', - 'Europe/Athens' => '(UTC+02:00) Atenas, Bucareste', - 'Europe/Istanbul' => '(UTC+02:00) Istanbul' , - 'Asia/Jerusalem' => '(UTC+02:00) Jerusalém' , - 'Asia/Amman' => '(UTC+02:00) Amman' , - 'Asia/Beirut' => '(UTC+02:00) Beirute' , - 'Africa/Windhoek' => '(UTC+02:00) Windhoek' , - 'Africa/Harare' => '(UTC+02:00) Harare' , - 'Asia/Kuwait' => '(UTC+03:00) Kuwait, Riyadh' , - 'Asia/Baghdad' => '(UTC+03:00) Bagdad' , - 'Africa/Nairobi' => '(UTC+03:00) Nairobi' , - 'Asia/Tehran' => '(UTC+03:30) Tehran' , - 'Asia/Tbilisi' => '(UTC+04:00) Tbilisi' , - 'Europe/Moscow' => '(UTC+04:00) Moscou, Volgograd', - 'Asia/Muscat' => '(UTC+04:00) Abu Dhabi, Muscat', - 'Asia/Baku' => '(UTC+04:00) Baku' , - 'Asia/Yerevan' => '(UTC+04:00) Yerevan' , - 'Asia/Karachi' => '(UTC+05:00) Islamabad, Karachi', - 'Asia/Tashkent' => '(UTC+05:00) Tashkent' , - 'Asia/Kolkata' => '(UTC+05:30) Chennai, Kolkata, Mumbai, Nova Deli', - 'Asia/Colombo' => '(UTC+05:30) Sri Jayawardenepura', - 'Asia/Katmandu' => '(UTC+05:45) Kathmandu' , - 'Asia/Dhaka' => '(UTC+06:00) Dhaka' , - 'Asia/Almaty' => '(UTC+06:00) Almaty' , - 'Asia/Yekaterinburg' => '(UTC+06:00) Ekaterinburg' , - 'Asia/Rangoon' => '(UTC+06:30) Yangon (Rangoon)', - 'Asia/Novosibirsk' => '(UTC+07:00) Novosibirsk' , - 'Asia/Bangkok' => '(UTC+07:00) Bangkok, Jakarta', - 'Asia/Brunei' => '(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi', - 'Asia/Krasnoyarsk' => '(UTC+08:00) Krasnoyarsk' , - 'Asia/Ulaanbaatar' => '(UTC+08:00) Ulaan Bataar' , - 'Asia/Kuala_Lumpur' => '(UTC+08:00) Kuala Lumpur, Singapore', - 'Asia/Taipei' => '(UTC+08:00) Taipei' , - 'Australia/Perth' => '(UTC+08:00) Perth' , - 'Asia/Irkutsk' => '(UTC+09:00) Irkutsk' , - 'Asia/Seoul' => '(UTC+09:00) Seoul' , - 'Asia/Tokyo' => '(UTC+09:00) Toquio' , - 'Australia/Darwin' => '(UTC+09:30) Darwin' , - 'Australia/Adelaide' => '(UTC+09:30) Adelaide' , - 'Australia/Canberra' => '(UTC+10:00) Canberra, Melbourne, Sydney', - 'Australia/Brisbane' => '(UTC+10:00) Brisbane' , - 'Australia/Hobart' => '(UTC+10:00) Hobart' , - 'Asia/Vladivostok' => '(UTC+10:00) Vladivostok' , - 'Pacific/Guam' => '(UTC+10:00) Guam, Port Moresby', - 'Asia/Yakutsk' => '(UTC+10:00) Yakutsk' , - 'Etc/GMT-11' => '(UTC+11:00) Solomon Is., New Caledonia', - 'Pacific/Fiji' => '(UTC+12:00) Fiji' , - 'Asia/Kamchatka' => '(UTC+12:00) Kamchatka' , - 'Pacific/Auckland' => '(UTC+12:00) Auckland' , - 'Asia/Magadan' => '(UTC+12:00) Magadan' , - 'Pacific/Tongatapu' => '(UTC+13:00) Nukualofa' , - 'Summary' => 'Summary' , // TODO: Review - 'Detail' => 'Detail' , // TODO: Review - 'LBL_USER_LIST_DETAILS' => 'Details' , // TODO: Review - 'LBL_USER_DELETED_SUCCESSFULLY' => 'Usuário excluÃdo com sucesso', - 'LBL_ACTIVE_USERS' => 'Usuários ativos', - 'LBL_INACTIVE_USERS' => 'Usuários inativos', - 'LBL_DELETE_USER_PERMANENTLY' => 'Excluir usuário permanentemente', - 'LBL_RESTORE' => 'Restaurar', - 'LBL_USER_RESTORED_SUCCESSFULLY' => 'Usuário restaurado com sucesso', + 'LBL_ADD_RECORD' => 'Adicionar Usuário', + + //MyPreference Blocks + 'LBL_MY_PREFERENCES' => 'Minhas Preferências', + 'LBL_MORE_INFORMATION' => 'Mais Informação' , + 'LBL_USERLOGIN_ROLE' => 'Acesso & Função do Usuário', + 'LBL_USER_IMAGE_INFORMATION' => 'Foto do Usuário', + 'LBL_CURRENCY_CONFIGURATION' => 'Configuração Moeda', + 'LBL_ADDRESS_INFORMATION'=> 'Informação Endereço', + 'LBL_USER_ADV_OPTIONS' => 'Opções para Usuários Avançados', + 'Asterisk Configuration' => 'Configuração Asterisk' , + 'LBL_HOME_PAGE_COMPONENTS' => 'Componentes Home Page' , + 'LBL_TAG_CLOUD_DISPLAY' => 'Exibir Tag Cloud', + + //MyPreference Fields + 'Role' => 'Função', + 'Admin'=> 'Admin' , + 'User Name'=> 'Nome Usuário', + 'Default Activity View'=> 'Padrão Visualização Agenda', + 'Default Calendar View' => 'Visualização Padrão Agenda', + 'Default Lead View'=> 'Padrão Visualização Lead' , + 'Title' => 'Cargo', + 'Office Phone' => 'Fone Escritório', + 'Department' => 'Departamento', + 'Reports To' => 'Reporta-se a', + 'Yahoo id' => 'ID Yahoo', + 'Home Phone' => 'Fone Residencial', + 'User Image' => 'Imagem Usuário', + 'Date Format'=> 'Formato Data', + + 'Signature'=> 'Assinatura', + 'Street Address' => 'Endereço', + 'Password' => 'Senha', + 'Confirm Password' => 'Confirmar Senha', + 'LBL_SHOWN'=> 'Exibido', + 'LBL_HIDDEN' => 'Ocultar', + 'LBL_SHOW' => 'Exibir', + 'LBL_HIDE' => 'Ocultar' , + 'LBL_HOME_PAGE_COMPO'=> 'Componentes Home Page' , + 'LBL_LOGIN_HISTORY'=> 'Histórico Acesso', + 'LBL_USERDETAIL_INFO' => 'Visualizar detalhes Usuário', + 'LBL_DELETE_GROUP' => 'Apagar Grupo', + 'LBL_DELETE_GROUPNAME' => 'Grupo a ser Apagado', + 'LBL_TRANSFER_GROUP' => 'Transferir Propriedade para:', + 'LBL_DELETE_USER'=> 'Usuário a ser Apagado', + 'LBL_REMOVE_USER' => 'Apagar', + 'LBL_MORE_OPTIONS' => 'Mais Opções', + 'LBL_TRANSFER_USER'=> 'Transferir Propriedade para Usuário', + 'LBL_RESTORE_USER' => 'Restaurar Usuário', + 'LBL_DELETE_PROFILE' => 'Apagar Perfil' , + 'LBL_TRANSFER_ROLES_TO_PROFILE' => 'Transferir Funções para o Perfil', + 'LBL_PROFILE_TO_BE_DELETED'=> 'Perfil a ser Apagado', + 'INTERNAL_MAIL_COMPOSER' => 'Editor Interno de Mensagens', + 'Asterisk Extension' => 'Extensão Asterisk', + 'Receive Incoming Calls' => 'Receber Chamadas', + 'Webservice Access Key'=> 'Chave Acesso', + 'Language' => 'Idioma', + 'Theme'=> 'Tema', + 'Time Zone'=> 'Fuso Horário', + 'Decimal Separator'=> 'Separador Casas Decimais', + 'Digit Grouping Pattern' => 'Padrão de Agrupamento de DÃgitos', + 'Digit Grouping Separator' => 'Separador de Casas Milhar', + 'Symbol Placement' => 'Localização SÃmbolo', + 'Number Of Currency Decimals'=> 'Número Casas Decimais Moeda', + 'Truncate Trailing Zeros'=> 'Truncar Zeros à Direita', + 'Default Call Duration' => 'Duração Padrão da Chamada (Min)', + 'Other Event Duration' => 'Duração Outro Evento (Min)', + 'Calendar Hour Format' => 'Formato Hora Agenda', + 'Tag Cloud'=> 'Tag Cloud', + + //Time zones-Dont change any value + 'Kwajalein'=> '(UTC-12:00) Data Internacional Linha Oeste', + 'Pacific/Midway' => '(UTC-11:00) Hora Coordenada Universal-11', + 'Pacific/Samoa'=> '(UTC-11:00) Samoa' , + 'Pacific/Honolulu' => '(UTC-10:00) Hawai' , + 'America/Anchorage'=> '(UTC-09:00) Alaska', + 'America/Los_Angeles'=> '(UTC-08:00) Hora do PacÃfico (US & Canada)', + 'America/Tijuana'=> '(UTC-08:00) Tijuana, Baixa California', + 'America/Denver' => '(UTC-07:00) Hora Montanhas (US & Canada)', + 'America/Chihuahua'=> '(UTC-07:00) Chihuahua, La Paz, Mazatlan', + 'America/Mazatlan' => '(UTC-07:00) Mazatlan', + 'America/Phoenix'=> '(UTC-07:00) Arizona' , + 'America/Regina' => '(UTC-06:00) Saskatchewan', + 'America/Tegucigalpa'=> '(UTC-06:00) América Central', + 'America/Chicago'=> '(UTC-06:00) Hora Central (US & Canada)', + 'America/Mexico_City'=> '(UTC-06:00) Cidade do México', + 'America/Monterrey'=> '(UTC-06:00) Monterrey' , + 'America/New_York' => '(UTC-05:00) Hora do Leste (US & Canada)', + 'America/Bogota' => '(UTC-05:00) Bogotá, Lima, Quito', + 'America/Lima' => '(UTC-05:00) Lima', + 'America/Rio_Branco' => '(UTC-05:00) Rio Branco', + 'America/Indiana/Indianapolis' => '(UTC-05:00) Indiana (East)', + 'America/Caracas'=> '(UTC-04:30) Caracas' , + 'America/Halifax'=> '(UTC-04:00) Hora Atlântico (Canada)', + 'America/Manaus' => '(UTC-04:00) Manaus', + 'America/Santiago' => '(UTC-04:00) Santiago', + 'America/La_Paz' => '(UTC-04:00) La Paz', + 'America/Cuiaba' => '(UTC-04:00) Cuiaba', + 'America/Asuncion' => '(UTC-04:00) Assunção', + 'America/St_Johns' => '(UTC-03:30) Newfoundland', + 'America/Argentina/Buenos_Aires' => '(UTC-03:00) Buenos Aires', + 'America/Sao_Paulo'=> '(UTC-03:00) Brasilia', + 'America/Godthab'=> '(UTC-03:00) Greenland' , + 'America/Montevideo' => '(UTC-03:00) Montevideo', + 'Atlantic/South_Georgia' => '(UTC-02:00) Mid-Atlantic', + 'Atlantic/Azores'=> '(UTC-01:00) Azores', + 'Atlantic/Cape_Verde'=> '(UTC-01:00) Ilhas Cabo Verde', + 'Europe/London'=> '(UTC) Londres, Edinburgh, Dublin, Lisboa', + 'UTC'=> '(UTC) Tempo Universal Coordenado, Hora Média de Greenwich', + 'Africa/Monrovia'=> '(UTC) Monrovia, Reykjavik' , + 'Africa/Casablanca'=> '(UTC) Casablanca', + 'Europe/Belgrade'=> '(UTC+01:00) Belgrado, Bratislava, Budapeste, Ljubljana, Praga', + 'Europe/Sarajevo'=> '(UTC+01:00) Sarajevo, Skopje, Warsaw, Zagreb', + 'Europe/Brussels'=> '(UTC+01:00) Bruxelas, Copenhague, Madrid, Paris', + 'Africa/Algiers' => '(UTC+01:00) Ãfrica Central Oeste', + 'Europe/Amsterdam' => '(UTC+01:00) Amsterdam, Berlin, Bern, Roma, Estocolmo, Viena', + 'Europe/Minsk' => '(UTC+02:00) Minsk' , + 'Africa/Cairo' => '(UTC+02:00) Cairo' , + 'Europe/Helsinki'=> '(UTC+02:00) Helsinki, Riga, Sofia, Tallinn, Vilnius', + 'Europe/Athens'=> '(UTC+02:00) Atenas, Bucareste', + 'Europe/Istanbul'=> '(UTC+02:00) Istanbul', + 'Asia/Jerusalem' => '(UTC+02:00) Jerusalém', + 'Asia/Amman' => '(UTC+02:00) Amman' , + 'Asia/Beirut'=> '(UTC+02:00) Beirute' , + 'Africa/Windhoek'=> '(UTC+02:00) Windhoek', + 'Africa/Harare'=> '(UTC+02:00) Harare', + 'Asia/Kuwait'=> '(UTC+03:00) Kuwait, Riyadh', + 'Asia/Baghdad' => '(UTC+03:00) Bagdad', + 'Africa/Nairobi' => '(UTC+03:00) Nairobi' , + 'Asia/Tehran'=> '(UTC+03:30) Tehran', + 'Asia/Tbilisi' => '(UTC+04:00) Tbilisi' , + 'Europe/Moscow'=> '(UTC+04:00) Moscou, Volgograd', + 'Asia/Muscat'=> '(UTC+04:00) Abu Dhabi, Muscat', + 'Asia/Baku'=> '(UTC+04:00) Baku', + 'Asia/Yerevan' => '(UTC+04:00) Yerevan' , + 'Asia/Karachi' => '(UTC+05:00) Islamabad, Karachi', + 'Asia/Tashkent'=> '(UTC+05:00) Tashkent', + 'Asia/Kolkata' => '(UTC+05:30) Chennai, Kolkata, Mumbai, Nova Deli', + 'Asia/Colombo' => '(UTC+05:30) Sri Jayawardenepura', + 'Asia/Katmandu'=> '(UTC+05:45) Kathmandu' , + 'Asia/Dhaka' => '(UTC+06:00) Dhaka' , + 'Asia/Almaty'=> '(UTC+06:00) Almaty', + 'Asia/Yekaterinburg' => '(UTC+06:00) Ekaterinburg', + 'Asia/Rangoon' => '(UTC+06:30) Yangon (Rangoon)', + 'Asia/Novosibirsk' => '(UTC+07:00) Novosibirsk' , + 'Asia/Bangkok' => '(UTC+07:00) Bangkok, Jakarta', + 'Asia/Brunei'=> '(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi', + 'Asia/Krasnoyarsk' => '(UTC+08:00) Krasnoyarsk' , + 'Asia/Ulaanbaatar' => '(UTC+08:00) Ulaan Bataar', + 'Asia/Kuala_Lumpur'=> '(UTC+08:00) Kuala Lumpur, Singapore', + 'Asia/Taipei'=> '(UTC+08:00) Taipei', + 'Australia/Perth'=> '(UTC+08:00) Perth' , + 'Asia/Irkutsk' => '(UTC+09:00) Irkutsk' , + 'Asia/Seoul' => '(UTC+09:00) Seul' , + 'Asia/Tokyo' => '(UTC+09:00) Tóquio', + 'Australia/Darwin' => '(UTC+09:30) Darwin', + 'Australia/Adelaide' => '(UTC+09:30) Adelaide', + 'Australia/Canberra' => '(UTC+10:00) Canberra, Melbourne, Sydney', + 'Australia/Brisbane' => '(UTC+10:00) Brisbane', + 'Australia/Hobart' => '(UTC+10:00) Hobart', + 'Asia/Vladivostok' => '(UTC+10:00) Vladivostok' , + 'Pacific/Guam' => '(UTC+10:00) Guam, Port Moresby', + 'Asia/Yakutsk' => '(UTC+10:00) Yakutsk' , + 'Etc/GMT-11' => '(UTC+11:00) Ilhas Salomão, Nova Caledonia', + 'Pacific/Fiji' => '(UTC+12:00) Fiji', + 'Asia/Kamchatka' => '(UTC+12:00) Kamchatka' , + 'Pacific/Auckland' => '(UTC+12:00) Auckland', + 'Asia/Magadan' => '(UTC+12:00) Magadan' , + 'Pacific/Tongatapu'=> '(UTC+13:00) Nukualofa' , + + 'Summary' => 'Resumo', + 'Detail' => 'Detalhe', + 'LBL_USER_LIST_DETAILS' => 'Detalhes', + + 'LBL_OLD_PASSWORD' => 'Senha Antiga', + 'LBL_CHANGE_PASSWORD' => 'Mudar Senha', + 'LBL_NEW_PASSWORD' => 'Nova Senha', + 'LBL_CONFIRM_PASSWORD' => 'Confirmar Senha', + 'LBL_CHANGE_ACCESS_KEY' => 'Mudar Chave de Acesso', + 'LBL_ACCESS_KEY_UPDATED_SUCCESSFULLY' => 'Chave de Acesso atualizada com sucesso', + 'LBL_FAILED_TO_UPDATE_ACCESS_KEY' => 'Falha ao atualizar a Chave de Acesso', + 'LBL_TRANSFER_OWNERSHIP' => 'Transferir Proprietário', + 'LBL_LOGIN_AS' => 'Acessar como ', + 'LBL_USER_DELETED_SUCCESSFULLY' => 'Usuário apagado com sucesso', + 'LBL_ACTIVE_USERS' => 'Usuários Ativos', + 'LBL_INACTIVE_USERS' => 'Usuários Inativos', + 'LBL_CREATE_USER' => 'Criar Usuário', + 'LBL_DELETE_USER_PERMANENTLY' => 'Apagar Usuário Permanentemente', + 'LBL_DELETE_USER_PERMANENTLY_INFO' => 'Ao apagar um Usuário permanentemente irá transferir todos os registros, incluindo Comentários e Histórico para o novo Usuário.', + 'LBL_RESTORE' => 'Restaurar', + 'LBL_USER_RESTORED_SUCCESSFULLY' => 'Usuário restaurado com sucesso', + //Login strings + 'LBL_TO_CRM' => 'Acessar o Vtiger CRM', + 'LBL_INVALID_USER_OR_PASSWORD' => 'Nome Usuário ou Senha inválida.', + 'LBL_INVALID_USER_OR_EMAIL' => 'Nome Usuário ou Email Inválido.', + 'LBL_EMAIL_SEND' => 'Enviamos-lhe email para que você possa redefinir sua senha.', + 'ForgotPassword' => 'Esqueceu Senha', + 'LBL_CONNECT_WITH_US' => 'Conecte-se a Nós', + 'LBL_GET_MORE' => 'Saiba mais sobre o Vtiger', + + 'LBL_TRANSFER_RECORDS_TO_USER' => 'Transferir registros para o Usuário', + 'LBL_USER_TO_BE_DELETED' => 'Usuário a ser Apagado', 'LBL_ALMOST_THERE' => 'Quase lá!', - 'LBL_ABOUT_ME' => 'Quem sou eu', - 'LBL_WE_PROMISE_TO_KEEP_THIS_PRIVATE' => '(Prometemos manter este particular)', - 'LBL_ALL_FIELDS_BELOW_ARE_REQUIRED' => '(São necessários Todos os campos)', - 'LBL_GET_STARTED' => 'Começar', - 'LBL_YOUR_CONTACT_NUMBER' => 'Seu Número de contato', + 'LBL_ABOUT_ME' => 'Sobre Mim', + 'LBL_WE_PROMISE_TO_KEEP_THIS_PRIVATE' => '(Nos comprometemos a manter a privacidade)', + 'LBL_ALL_FIELDS_BELOW_ARE_REQUIRED' => '(Todos os fildes abaixo são obrigatórios)', + 'LBL_GET_STARTED' => 'Iniciar', + 'LBL_YOUR_CONTACT_NUMBER' => 'Seu Telefone de Contato', 'LBL_WHERE_ARE_YOU_FROM' => 'De onde você é?', - 'LBL_SELECT_COUNTRY' => 'Selecione o PaÃs', - 'LBL_COMPANY_SIZE' => 'Tamanho da empresa', - 'LBL_JOB_TITLE' => 'Cargo', + 'LBL_SELECT_COUNTRY' => 'Selecionar o PaÃs', + 'LBL_COMPANY_SIZE' => 'Tamanho Empresa', + 'LBL_JOB_TITLE' => 'Cargo no Trabalho', 'LBL_DEPARTMENT' => 'Departamento', - 'LBL_BASE_CURRENCY' => 'Moeda Base', - 'LBL_CHOOSE_BASE_CURRENCY' => 'Escolha Moeda Base', - 'LBL_OPERATING_CURRENCY' => 'Divisa do fundo não podem ser modificados posteriormente. Seleccione a sua moeda operacional', - 'LBL_LANGUAGE' => 'LÃngua', - 'LBL_CHOOSE_LANGUAGE' => 'Escolha o Idioma', - 'LBL_CHOOSE_TIMEZONE' => 'Escolha o fuso horário', - 'LBL_DATE_FORMAT' => 'Formato de data', - 'LBL_CHOOSE_DATE_FORMAT'=> 'Escolha Formato de data', + 'LBL_BASE_CURRENCY' => 'Moeda Padrão', + 'LBL_CHOOSE_BASE_CURRENCY' => 'Escolher Moeda Padrão', + 'LBL_OPERATING_CURRENCY' => 'A moeda padrão não pode ser alterada depois. Selecionar sua moeda operacional', + 'LBL_LANGUAGE' => 'Idioma', + 'LBL_CHOOSE_LANGUAGE' => 'Escolher Idioma', + 'LBL_CHOOSE_TIMEZONE' => 'Escolher Fuso Horário', + 'LBL_DATE_FORMAT' => 'Formata Data', + 'LBL_CHOOSE_DATE_FORMAT'=> 'Escolher Formato Data', 'LBL_PHONE' => 'Telefone', - 'Space' => 'Espaço', + 'Space' => 'Espaço', //picklist values for Default Calendar View field in MyPreference Page - 'ListView' => 'Ver Lista', - 'MyCalendar' => 'Meu Calendário', - 'SharedCalendar' => 'Calendário Compartilhado', - - 'LBL_CHANGE_OWNER' => 'Alterar proprietário', - 'LBL_TRANSFER_OWNERSHIP' => 'Transferir a propriedade', - 'LBL_TRANSFER_OWNERSHIP_TO_USER' => 'Transferir a propriedade para usuário', - 'LBL_OWNERSHIP_TRANSFERRED_SUCCESSFULLY' => 'Proprietário CRM alterada com sucesso', - 'LBL_OWNERSHIP_TRANSFERRED_FAILED' => 'Proprietário CRM mudando Falha', - 'Account Owner' => 'Conta Proprietário', - 'Starting Day of the week' => 'A partir do dia da semana', - 'Day starts at' => 'Dia começa à s', - 'Default Event Status' => 'Padrão Estado de eventos', - 'Default Activity Type' => 'Padrão Tipo de Atividade', - 'Default Record View' => 'Padrão Vista Registo', - 'Left Panel Hide' => 'Painel esquerdo Ocultar', - 'Row Height' => 'Altura da linha', - 'LBL_RESTORE_USER_FAILED' => 'Falha ao restaurar usuário. Já existe um usuário CRM com este nome de usuário.', - - 'LBL_DUPLICATE_USER_EXISTS' => 'Usuário já existe', + 'ListView' => 'Lista Visualização', + 'MyCalendar' => 'Minha Agenda', + 'SharedCalendar' => 'Agenda Compartilhada', + 'LBL_CHANGE_OWNER' => 'Mudar Proprietário', + 'LBL_TRANSFER_OWNERSHIP' => 'Transferir Propriedade', + 'LBL_TRANSFER_OWNERSHIP_TO_USER' => 'Transferir Propriedade para Usuário', + 'LBL_OWNERSHIP_TRANSFERRED_SUCCESSFULLY' => 'Proprietário do CRM alterado com sucesso', + 'LBL_OWNERSHIP_TRANSFERRED_FAILED' => 'Falha ao mudar o proprietário do CRM', + 'Account Owner' => 'Proprietário Conta', + 'Starting Day of the week' => 'Dia de inÃcio da Semana', + 'Day starts at' => 'O Dia inicia as', + 'Default Event Status' => 'Status Padrão do Evento', + 'Default Activity Type' => 'Tipo de Atividade Padrão', + 'Default Record View' => 'Visualização Registro Padrão', + 'Left Panel Hide' => 'Ocultar Painel Esquerdo', + 'Row Height' => 'Altura da Linha', - 'LBL_CHANGE_USERNAME' => 'Alterar Nome de utilizador' , - 'LBL_USERNAME_CHANGED' => 'Nome de usuário alterado com sucesso', - 'ERROR_CHANGE_USERNAME' => 'Erro na mudança de nome de usuário. Por favor tente mais tarde', + //Change Username labels + 'LBL_CHANGE_USERNAME' => 'Mudar Nome Usuário', + 'LBL_USERNAME_CHANGED' => 'O Nome do Usuário foi alterado com sucesso', + 'ERROR_CHANGE_USERNAME' => 'Erro ao mudar o Nome do Usuário. Por favor, tente mais tarde', - 'LBL_REMOVE_USER' => 'Apagar', - 'LBL_MORE_OPTIONS' => 'Mais Opções', - 'LBL_RESTORE_USER' => 'Restauração De Usuário', - 'LBL_OLD_PASSWORD' => 'Senha Antiga', - 'LBL_CHANGE_PASSWORD' => 'Alteração De Senha', - 'LBL_NEW_PASSWORD' => 'Nova Palavra-Passe', - 'LBL_CONFIRM_PASSWORD' => 'Confirmar Senha', - 'LBL_CHANGE_ACCESS_KEY' => 'Alterar Chave de Acesso', - 'LBL_ACCESS_KEY_UPDATED_SUCCESSFULLY' => 'chave de acesso atualizado com sucesso', - 'LBL_FAILED_TO_UPDATE_ACCESS_KEY' => 'Falha ao atualizar a chave de acesso', - 'LBL_LOGIN_AS' => 'InÃcio de sessão como ', - 'LBL_CREATE_USER' => 'Criar Usuário', - 'LBL_DELETE_USER_PERMANENTLY_INFO' => 'A exclusão de um usuário permanentemente irá transferir todos os registros, incluindo comentários e histórico para o novo usuário.', - 'LBL_TO_CRM' => 'InÃcio de sessão para Vtiger CRM', - 'LBL_INVALID_USER_OR_PASSWORD' => 'Nome de usuário inválido ou senha.', - 'LBL_INVALID_USER_OR_EMAIL' => 'Nome de utilizador inválido ou endereço de e-Mail.', - 'LBL_EMAIL_SEND' => 'Enviamos e-mail para redefinir sua senha.', - 'ForgotPassword' => 'Esqueci Minha Senha', - 'LBL_CONNECT_WITH_US' => 'Ligue-se a NÓS', - 'LBL_GET_MORE' => 'Obtenha mais do Vtiger', - 'LBL_TRANSFER_RECORDS_TO_USER' => 'Transferência de registros para o usuário', - 'LBL_USER_TO_BE_DELETED' => 'Usuário a ser ExcluÃdo', - 'LBL_USERS_SETTINGS' => 'CONFIGURAÇÕES DE USUÃRIOS', - 'LBL_TEMPLATES' => 'Modelos', + 'LBL_RESTORE_USER_FAILED' => 'Falha ao restaurar Usuário. Já existe um Usuário do CRM com este Nome de Usuário.', + + 'LBL_DUPLICATE_USER_EXISTS' => 'O Usuário já Existe', + + /* For Vtiger7*/ + 'LBL_USERS_SETTINGS' => 'CONFIGURAÇÕES USUÃRIOS', + 'LBL_TEMPLATES' => 'Modelos', + + //Missing Fields + 'New Username '=>'Novo Nome Usuário', ); + $jsLanguageStrings = array( - + //Curency seperator validation messages - 'JS_ENTER_OLD_PASSWORD'=>'Please enter your old password.', - 'JS_ENTER_NEW_PASSWORD'=>'Please enter your new password.', - 'JS_ENTER_CONFIRMATION_PASSWORD'=>'Please enter your password confirmation.', - 'JS_REENTER_PASSWORDS'=>'Please re-enter passwords. The \"new password\" and \"confirm password\" values do not match.', - 'JS_INVALID_PASSWORD'=>'You must specify a valid username and password.', - 'JS_PASSWORD_CHANGE_FAILED_1'=>'User password change failed for ', - 'JS_PASSWORD_CHANGE_FAILED_2'=>' failed. The new password must be set.', - 'JS_PASSWORD_INCORRECT_OLD'=>'Incorrect old password specified. Re-enter password information.', - 'JS_ENTERED_CURRENT_USERNAME_MSG' => 'Você digitou o nome de usuário atual. Por favor, insira o novo nome de usuário.', - 'JS_NEW_ACCESS_KEY_REQUESTED' => 'chave New Access solicitado', - 'JS_CHANGE_ACCESS_KEY_CONFIRMATION' => 'Você pediu para uma nova chave de acesso. <br><br>Com a nova disposição fundamental Access, você tem que substituir a chave de acesso antigo com o novo, em todas as extensões instaladas. <br><br>Do você quer continuar?', -); \ No newline at end of file + 'JS_ENTER_OLD_PASSWORD'=>'Por favor, digite sua senha antiga.', + 'JS_ENTER_NEW_PASSWORD'=>'Por favor, digite sua nova senha.', + 'JS_ENTER_CONFIRMATION_PASSWORD'=>'Por favor, digite confirmação da senha.', + 'JS_REENTER_PASSWORDS'=>'Por favor, redigite suas senhas. Os valores da \"nova senha\" e \"senha de confirmação\" não combinam.', + 'JS_INVALID_PASSWORD'=>'Você deve especificar um nome de usuário e senha válidos.', + 'JS_PASSWORD_CHANGE_FAILED_1'=>'A mudança de senha do Usuário para ', + 'JS_PASSWORD_CHANGE_FAILED_2'=>' falhou. Uma nova senha deve ser definida.', + 'JS_PASSWORD_INCORRECT_OLD'=>'A senha antiga está incorreta. Redigite a senha.', + 'JS_ENTERED_CURRENT_USERNAME_MSG' => 'Você digitou o Nome de Usuário atual. Digite o novo Nome de Usuário.', + 'JS_NEW_ACCESS_KEY_REQUESTED' => 'Nova Chave de Acesso solicitada', + 'JS_CHANGE_ACCESS_KEY_CONFIRMATION' => 'Você solicitou uma nova Chave de Acesso. Com a nova disposição da Chave de Acesso, você deve substituir a Chave de Acesso antiga pela nova em todas as extensões instaladas. Deseja continuar?', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Vendors.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Vendors.php index 6f87fb6e482d079f4b66fb6634cf9dd9aa956abc..9261c4d66178f8638d68102ce0bfa74707af75eb 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Vendors.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Vendors.php @@ -1,39 +1,46 @@ <?php -/*+********************************************************************************** +/*+*********************************************************************************** * The contents of this file are subject to the vtiger CRM Public License Version 1.0 * ("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. - ************************************************************************************/ + * Portions created by vtiger are Copyright (C) vtiger. All Rights Reserved. + * Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + *************************************************************************************/ $languageStrings = array( - 'Vendors' => 'Fornecedores' , - 'SINGLE_Vendors' => 'Fornecedor' , - 'LBL_ADD_RECORD' => 'Add Vendor' , - 'LBL_RECORDS_LIST' => 'Vendors List' , - 'LBL_VENDOR_INFORMATION' => 'Informação Fornecedor:' , - 'LBL_VENDOR_ADDRESS_INFORMATION' => 'Informação Endereço:' , - 'Vendor Name' => 'Nome Fornecedor' , - 'Vendor No' => 'Cod. Fornecedor' , - 'Website' => 'Website' , - 'GL Account' => 'Conta Plano Contas' , - '300-Sales-Software' => '300-Vendas-Software' , - '301-Sales-Hardware' => '301-Vendas-Hardware' , - '302-Rental-Income' => '302-Locação-Renda' , - '303-Interest-Income' => '303-Juro-Renda' , - '304-Sales-Software-Support' => '304-Vendas-Software-Suporte' , - '305-Sales Other' => '305-Outras Vendas' , - '306-Internet Sales' => '306-Vendas Internet' , - '307-Service-Hardware Labor' => '307-Serviço-Lab Hardware' , - '308-Sales-Books' => '308-Vendas-Livros' , + // Basic Strings + 'Vendors' => 'Fornecedores', + 'SINGLE_Vendors' => 'Fornecedor', + 'LBL_ADD_RECORD' => 'Adicionar Fornecedor', + 'LBL_RECORDS_LIST' => 'Lista de Fornecedores', - 'Phone' => 'Telefone Principal', - 'Email' => 'E-Mail Principal', + // Blocks + 'LBL_VENDOR_INFORMATION' => 'Detalhes Fornecedor', + 'LBL_VENDOR_ADDRESS_INFORMATION' => 'Detalhes Endereço', + //Field Labels + 'Vendor Name' => 'Nome Fornecedor', + 'Vendor No' => 'No. Fornecedor', + 'Website' => 'Website', + 'GL Account' => 'Plano Contas', + 'Phone' => 'Telefone Principal', + 'Email' => 'Email Principal', + + //Added for existing Picklist entries + + '300-Sales-Software' => '300-Vendas-Software' , + '301-Sales-Hardware' => '301-Vendas-Hardware' , + '302-Rental-Income'=> '302-Locação-Renda' , + '303-Interest-Income'=> '303-Juro-Renda', + '304-Sales-Software-Support' => '304-Vendas-Software-Suporte' , + '305-Sales Other'=> '305-Outras Vendas' , + '306-Internet Sales' => '306-Vendas Internet' , + '307-Service-Hardware Labor' => '307-Serviço-Lab Hardware' , + '308-Sales-Books'=> '308-Vendas-Livros' , ); + $jsLanguageStrings = array( - 'LBL_RELATED_RECORD_DELETE_CONFIRMATION' => 'Are you sure you want to delete?', - 'LBL_DELETE_CONFIRMATION' => 'Deleting this Vendor will remove its related PurchaseOrders. Are you sure you want to delete this Vendor?', - 'LBL_MASS_DELETE_CONFIRMATION' => 'Deleting this vendor(s) will remove its related Purchase Orders. Are you sure you want to delete the selected Records?', -); \ No newline at end of file + 'LBL_RELATED_RECORD_DELETE_CONFIRMATION' => 'Você tem certeza que deseja apagar?', + 'LBL_DELETE_CONFIRMATION' => 'Ao apagar este Fornecedor serão removidos os Pedidos de Compras relacionados. Tem certeza que deseja apagar este Fornecedor?', + 'LBL_MASS_DELETE_CONFIRMATION' => 'Ao apagar este(s) Fornecedor(s), os Pedidos de Compras relacionados serão removidos. Tem certeza que deseja apagar os Registros selacionados?', +); diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Vtiger.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Vtiger.php index 4690eb69636f88a0da6273670427ad7ff9a25080..c07800290df246355a833f7eeeb78d0733236de1 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Vtiger.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Vtiger.php @@ -1,1480 +1,1925 @@ <?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. - ************************************************************************************/ +/* +********************************************************************************** +* The contents of this file are subject to the vtiger CRM Public License Version 1.0 +* ("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. +* Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br +************************************************************************************/ $languageStrings = array( - 'APPTITLE' => 'Vtiger CRM' , - 'POWEREDBY' => 'Powered by vtiger CRM' , - 'LBL_READ_LICENSE' => 'Ler a Licença' , - 'LBL_PRIVACY_POLICY' => 'PolÃtica de Privacidade' , - 'LBL_SELECT_ALL' => 'Selecionar Tudo' , - 'LBL_SELECT_TO_LOAD_LIST' => 'Select to Load List' , // TODO: Review - 'LBL_CREATING_NEW' => 'Creating New' , - 'LBL_EDITING' => 'Editando' , - 'LBL_SAVE' => 'Salvar' , - 'LBL_CANCEL' => 'Cancelar' , - 'LBL_BACK' => 'Voltar' , - 'LBL_IMPORT' => 'Importar' , - 'LBL_EXPORT' => 'Exportar' , - 'LBL_FIND_DUPLICATES' => 'Localizar Duplicados' , - 'LBL_MORE' => 'Mais' , - 'LBL_ACTIONS' => 'Ações' , - 'LBL_ADD' => 'Adicionar' , - 'LBL_EDIT' => 'Editar' , - 'LBL_DELETE' => 'Apagar' , - 'LBL_SETTINGS' => 'Configurações' , - 'LBL_ADD_COMMENT' => 'Add Comment' , - 'LBL_EDIT_FIELDS' => '%s Campos e Layout' , - 'LBL_EDIT_WORKFLOWS' => 'Workflows %s' , - 'LBL_EDIT_PICKLIST_VALUES' => 'Picklists Valores' , - 'LBL_EDIT_MAILSCANNER' => 'Convert Emails' , - 'LBL_RECORD_DELETE' => 'O registro que você está tentando visualizar foi apagado.', - 'LBL_RECORD_NOT_FOUND' => 'Os registros que você está tentando acessar não foram econtrados', - 'LBL_SELECT' => 'Selecionar' , - 'LBL_CLEAR' => 'Limpar' , - 'LBL_YES' => 'Sim' , - 'LBL_NO' => 'Nenhum(a)' , - 'LBL_SHOW_COMPLETE_DETAILS' => 'Complete Details' , // TODO: Review - 'LBL_MASS_EDITING' => 'Mass Editing' , - 'LBL_DESELECT_ALL_RECORDS' => 'Cancelar tudo' , - 'LBL_QUICK_CREATE' => 'Criar Rápido' , - 'LBL_SEND_EMAIL' => 'Send Email' , - 'LBL_ALL_EMAILS' => 'All email accounts' , - 'LBL_MUTIPLE_EMAIL_SELECT_ONE' => 'This record stores multiple email accounts. Please select the accounts to which the email should be sent to', - 'LBL_GO_TO_FULL_FORM' => 'Go to full form' , - 'LBL_SEND_SMS' => 'Enviar SMS' , - 'LBL_FOUND' => 'Encontrado(a)' , - 'LBL_CLICK_ADD' => 'Clique para adicionar' , - 'LBL_ADD_MORE_FIELDS' => 'Adicionar more fields' , - 'LBL_ADD_NOTE' => 'Adicionar Nota' , - 'LBL_CREATE_NEW' => 'Create New' , - 'LBL_ADD_EVENT' => 'Adicionar Event' , - 'LBL_ADD_TASK' => 'Adicionar tarefa' , - 'LBL_MARKETING_AND_SALES' => 'MARKETING & SALES' , - 'LBL_TOOLS_HEADER' => 'TOOLS' , - 'LBL_SUPPORT' => 'SUPPORT' , - 'LBL_INVENTORY' => 'INVENTORY' , - 'LBL_ANALYTICS' => 'ANALYTICS' , - 'LBL_HOME' => 'Casa' , - 'LBL_LAST_VIEWED_RECORDS' => 'Last Viewed Records' , - 'LBL_DASHBOARD' => 'Painel' , - 'LBL_USER_SETTINGS' => 'User Settings' , - 'LBL_MY_PREFERENCES' => 'Minhas Preferências' , - 'LBL_SIGN_OUT' => 'Desconectar' , - 'LBL_HELP' => 'Ajuda' , - 'LBL_DOCUMENTATION' => 'Documentation' , // TODO: Review - 'LBL_VIDEO_TUTORIAL' => 'Video Tutorial' , // TODO: Review - 'LBL_FEEDBACK' => 'Feedback' , - 'LBL_CHAT_SUPPORT' => 'Suporte chat', - 'LBL_CRM_SETTINGS' => 'Configurações CRM' , - 'LBL_ON_DEMAND_ADMIN' => 'Add / Delete Users' , // TODO: Review - 'LBL_ANNOUNCEMENT' => 'Announcement' , - 'LBL_CALENDAR' => 'Agenda' , - 'LBL_POST' => 'Post' , - 'LBL_GUIDER' => 'Guider' , // TODO: Review - 'LBL_DISPLAY_TYPE' => 'Display Type' , // TODO: Review - 'LBL_DISPLAY_WIDETYPE' => 'Wide' , // TODO: Review - 'LBL_DISPLAY_MEDIUMTYPE' => 'Medium' , // TODO: Review - 'LBL_DISPLAY_NARROWTYPE' => 'Narrow' , // TODO: Review - 'LBL_TAG_THIS_RECORD' => 'Tag this Record' , // TODO: Review - 'LBL_PAGE' => 'Page' , // TODO: Review - 'LBL_LISTVIEW_PAGE_JUMP' => 'Page Jump' , // TODO: Review - 'LBL_USER' => 'Usuário' , - 'LBL_GROUP' => 'Grupo' , - 'Last Modified By' => 'Last Modified By' , - 'Created Time' => 'Data Criação' , - 'Modified Time' => 'Hora Modificação' , - 'Description' => 'Descrição' , - 'Assigned To' => 'Responsável' , - 'LBL_LOADING' => 'Carregando...' , - 'LBL_LOADING_WIDGET' => 'Loading Widget' , - 'LBL_LOADING_LISTVIEW_CONTENTS' => 'Loading, Please wait.' , - 'LBL_UPDATES' => 'Atualizações' , - 'LBL_SHOW_FULL_DETAILS' => 'Show Full Details' , // TODO: Review - 'LBL_SUMMARY_DETAILS' => 'Summary Details' , - 'LBL_ADD_NEW_COMMENT' => 'Add New Comment' , - 'LBL_NO_UPDATES' => 'No Updates' , - 'LBL_ACTIVITIES' => 'Activities' , // TODO: Review - 'LBL_NO_PENDING_ACTIVITIES' => 'No pending activities' , // TODO: Review - 'LBL_SUMMARY' => 'Summary' , // TODO: Review - 'LBL_DETAILS' => 'Details' , // TODO: Review - 'LBL_SEARCH_FOR' => 'Pesquisar por' , - 'LBL_IN' => 'Em' , - 'LBL_TYPE_SEARCH' => 'Type to search' , - 'LBL_SEARCH_BUTTON' => 'Search Button' , - 'LBL_ADVANCE_SEARCH' => 'Pesquisa Avançada' , - 'LBL_LOADING_PLEASE_WAIT' => 'Loading, Please wait.' , - 'LBL_USERS' => 'Usuários' , - 'LBL_GROUPS' => 'Groups' , - 'LBL_FULL_FORM' => 'Full Form' , - 'LBL_SIMPLE_FORM' => 'Simple Form' , - 'LBL_ADD_YOUR_COMMENT_HERE' => 'Add your comment here...' , - 'LBL_REPLY' => 'Reply' , - 'LBL_VIEW_THREAD' => 'View Thread' , - 'LBL_NO_COMMENTS' => 'No Comments' , - 'LBL_REPLIES' => 'replies' , - 'LBL_REPLY_ALL' => 'Responder todos' , - 'Accounts' => 'Organizações' , - 'Assets' => 'Assets' , - 'Calendar' => 'Agenda' , - 'Campaigns' => 'Campanhas' , - 'Contacts' => 'Contatos' , - 'Documents' => 'Documentos' , - 'Leads' => 'Leads' , - 'ModComments' => 'Comentários' , - 'Potentials' => 'Oportunidade' , - 'PriceBooks' => 'Listas Preços' , - 'Products' => 'Produto' , - 'Project' => 'Projetos' , - 'ProjectMilestone' => 'Project Milestones' , - 'ProjectTask' => 'Project Tasks' , - 'ServiceContracts' => 'Contratos Serviço' , - 'Services' => 'Serviços' , - 'Vendors' => 'Fornecedores' , - 'Rss' => 'RSS' , - 'Quotes' => 'Cotações' , - 'PurchaseOrder' => 'Ordens de compra' , - 'SalesOrder' => 'Pedidos de Vendas' , - 'Invoice' => 'Facturas' , - 'MailManager' => 'Mail Manager' , // TODO: Review - 'Activities' => 'Activities' , - 'Portal' => 'Nossos Sites' , - 'Email Templates' => 'Email Template' , - 'Print Templates' => 'Imprimir Template' , - 'Recycle Bin' => 'Recycle Bin' , // TODO: Review - 'LBL_ADD_RECORD' => 'Add Record' , - 'LBL_RECENTLY_MODIFIED' => 'Recently Modified' , - 'LBL_RECORDS_LIST' => 'Records List' , - 'LBL_RECORD_SUMMARY' => 'Module Summary' , - 'LBL_ACCESS_DENIED_FOR' => 'Access Denied for' , - 'LBL_GO_BACK' => 'Voltar' , - 'LBL_NO_DATA_AVAILABLE' => 'No data available' , - 'LBL_GLOBAL_SEARCH' => 'Type keyword and press enter', - 'LBL_ALL_RECORDS' => 'All Records' , // TODO: Review - 'LBL_NO_RECORDS_FOUND' => 'No records found' , // TODO: Review - 'LBL_AND' => 'e' , - 'LBL_OR' => 'ou' , - 'LBL_NONE' => '--Nada--' , - 'LBL_APPROVE' => 'Approve' , - 'LBL_HAS_CHANGED' => 'mudou', - 'LBL_HAS_CHANGED_TO' => 'mudou para', - 'LBL_HAS_CHANGED_FROM' => 'foi alterado de', - 'LBL_LESS_THAN_OR_EQUAL_TO' => 'menos que ou igual a', - 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'maior do que ou igual a', - 'LBL_IS_NOT' => 'não é', - 'LBL_IS_ADDED' => 'Está adicionado', - 'LBL_IS_TODAY' => 'é hoje', - 'LBL_IS_TOMORROW' => 'é amanhã', - 'LBL_IS_YESTERDAY' => 'é ontem', - 'LBL_LESS_THAN_DAYS_LATER' => 'menos dias depois', - 'LBL_MORE_THAN_DAYS_LATER' => 'mais do que dias depois', - 'LBL_DENY' => 'Deny' , - 'LBL_EQUALS' => 'equals' , - 'LBL_NOT_EQUAL_TO' => 'not equal to' , - 'LBL_STARTS_WITH' => 'starts with' , - 'LBL_ENDS_WITH' => 'termina com' , - 'LBL_CONTAINS' => 'contem' , - 'LBL_DOES_NOT_CONTAIN' => 'does not contains' , - 'LBL_LESS_THAN' => 'menor que' , - 'LBL_GREATER_THAN' => 'maior que' , - 'LBL_LESS_THAN_OR_EQUAL' => 'menor ou igual' , - 'LBL_GREATER_OR_EQUAL' => 'maior ou igual' , - 'LBL_BEFORE' => 'before' , - 'LBL_AFTER' => 'after' , - 'LBL_BETWEEN' => 'between' , - 'LBL_IS_NOT_EMPTY' => 'não está vazia' , - 'LBL_SEARCH' => 'Pesquisar' , - 'LBL_SEARCH_IN' => 'Search In' , - 'LBL_ADD_CONDITION' => 'Add Condition' , - 'LBL_ADD_GROUP' => 'Add Group' , - 'LBL_FILTER_CONDITIONS' => 'Condições Lista' , - 'LBL_ALL_CONDITIONS' => 'All Conditions' , - 'LBL_ALL_CONDITIONS_DESC' => 'All conditions must be met' , - 'LBL_ANY_CONDITIONS' => 'Any Conditions' , - 'LBL_ANY_CONDITIONS_DESC' => 'At least one of the conditions must be met', - 'LBL_SELECT_FIELD' => 'Select Field' , - 'LBL_SELECT_MODULE' => 'Select Module' , - 'LBL_CREATE_NEW_FILTER' => 'Criar nova lista' , - 'All' => 'Todos' , - 'Others' => 'Outros' , - 'Pending' => 'Pendente' , - 'Public' => 'Público' , - 'LBL_SAVE_FILTER' => 'Salvar Lista' , - 'LBL_SAVE_MODIFY_FILTER' => 'Salvar / Modificar lista' , - 'LBL_SEARCH_RESULTS' => 'Search Results' , - 'LBL_SAVE_AS_FILTER' => 'Salvar como Lista' , - 'LBL_NOT_ACCESSIBLE' => 'Não Acessivel' , - 'LBL_ITEM_DETAILS' => 'Detalhes do Item' , - 'LBL_CURRENCY' => 'Moeda' , - 'LBL_TAX_MODE' => 'Tributação' , - 'LBL_INDIVIDUAL' => 'Individual' , - 'LBL_TOOLS' => 'Ferramentas' , - 'LBL_ITEM_NAME' => 'Nome do Item' , - 'LBL_QTY_IN_STOCK' => 'Qde em Estoque' , - 'LBL_QTY' => 'Qde' , - 'LBL_LIST_PRICE' => 'Lista de Preço' , - 'LBL_TOTAL' => 'Total' , - 'LBL_NET_PRICE' => 'Preço LÃquido' , - 'LBL_DISCOUNT' => 'Desconto' , - 'LBL_TOTAL_AFTER_DISCOUNT' => 'Total após Desconto' , - 'LBL_TAX' => 'Imposto' , - 'LBL_ADD_PRODUCT' => 'Adicionar Produto' , - 'LBL_ADD_SERVICE' => 'Adicionar Serviço' , - 'LBL_ITEMS_TOTAL' => 'Items Total' , // TODO: Review - 'LBL_SHIPPING_AND_HANDLING_CHARGES' => 'Frete' , - 'LBL_PRE_TAX_TOTAL' => 'Pre Tax Total' , // TODO: Review - 'LBL_TAX_FOR_SHIPPING_AND_HANDLING' => 'Impostos s/ Frete' , - 'LBL_SET_SHIPPING_AND_HANDLING_TAXES_FOR' => 'Set S&H Taxes For' , - 'LBL_ADJUSTMENT' => 'Ajuste' , - 'LBL_DEDUCT' => 'Deduzir' , - 'LBL_GRAND_TOTAL' => 'Total Geral' , - 'LBL_ZERO_DISCOUNT' => 'Sem Desconto' , - 'LBL_OF_PRICE' => 'de Preço' , - 'LBL_DIRECT_PRICE_REDUCTION' => 'Redução Direta Preço' , - 'LBL_SET_DISCOUNT_FOR' => 'Set Discount For' , - 'LBL_STOCK_NOT_ENOUGH' => 'Not enough stock' , - 'LBL_MAX_QTY_SELECT' => 'Maxmimum value is' , - 'LBL_DRAG' => 'Drag' , - 'LBL_TOTAL_TAX_AMOUNT' => 'Total Imposto' , - 'LBL_DIRECT_AMOUNT_DISCOUNT' => 'Total Desconto Direto' , - 'LBL_FINAL_DISCOUNT_AMOUNT' => 'Soma Final Desconto' , - 'LBL_MORE_CURRENCIES' => 'outras moedas' , - 'LBL_SET_TAX_FOR' => 'Set Tax for' , // TODO: Review - 'LBL_GROUP_TAX' => 'Group Tax' , // TODO: Review - 'LBL_OVERALL_DISCOUNT' => 'Desconto global', + + // Footer + 'APPTITLE' => 'Vtiger CRM', + 'POWEREDBY' => 'Suportado por Vtiger CRM', + 'LBL_READ_LICENSE' => 'Ler a Licença', + 'LBL_PRIVACY_POLICY' => 'PolÃtica de Privacidade', + + // Common Actions + 'LBL_NEW' => 'Novo', + 'LBL_LINKED' => 'Relacionado', + 'LBL_SELECT_ALL' => 'Selecionar Tudo', + 'LBL_SELECT_TO_LOAD_LIST' => 'Selecione Carregar Lista', + 'LBL_CREATING_NEW' => 'Criando Novo(a)', + 'LBL_ADDING_NEW' => 'Adicionando novo', + 'LBL_EDITING' => 'Editando', + 'LBL_SAVE' => 'Salvar', + 'LBL_CANCEL' => 'Cancelar', + 'LBL_BACK' => 'Voltar', + 'LBL_IMPORT' => 'Importar', + 'LBL_EXPORT' => 'Exportar', + 'LBL_FIND_DUPLICATES' => 'Localizar Duplicados', + 'LBL_MORE' => 'Mais', + 'LBL_LESS' => 'Menos', + 'LBL_ACTIONS' => 'Ações', + 'LBL_ADD' => 'Adicionar', + 'LBL_EDIT' => 'Editar', + 'LBL_DELETE' => 'Apagar', + 'LBL_COMMENT' => 'Comentário', + 'LBL_STARRED' => 'Deixar de Seguir', + 'LBL_NOT_STARRED' => 'Clique para Seguir', + 'LBL_QUICK_VIEW' => 'Visualização Rápida', + 'LBL_NOTIFICATION_CENTER' => 'Centro de Notificação', + 'LBL_NOTIFICATION' => 'Notificação', + 'LBL_STARRED_RECORD_TO' => '%s para %s', + 'LBL_STARRED_RECORD_UPDATED' => '%s atualizado %s', + 'LBL_SETTINGS' => 'Configurações', + 'LBL_ADD_COMMENT' => 'Adicionar Comentário', + 'LBL_EDIT_FIELDS' => '%s Layout e Campos', + 'LBL_EDIT_WORKFLOWS' => '%s Workflows', + 'LBL_EDIT_PICKLIST_VALUES' => 'Valores Lista Opções', + 'LBL_EDIT_MAILSCANNER' => 'Escâner Mensagens', + 'LBL_RECORD_DELETE' => 'O registro que Você esta tentando visualizar foi apagado.', + 'LBL_RECORD_NOT_FOUND' => 'Os registros que Você esta tentando acessar não foram encontrados', + 'LBL_EDIT_REASON' => 'Editar motivo', + //'LBL_EDIT_CURRENT_FILTER' => 'Edit Current Filter', + //'LBL_DELETE_CURRENT_FILTER' => 'Delete Current Filter', + 'LBL_SELECT' => 'Selecionar', + 'LBL_CLEAR' => 'Limpar', + 'LBL_YES' => 'Sim', + 'LBL_NO' => 'Não', + 'LBL_SHOW_COMPLETE_DETAILS' => 'Detalhes Completos', + 'LBL_MINILIST_FIELDS_ARE_NOT_AVAILABLE_FOR_YOU' => 'Desculpe! Os campos da Minilista não estão disponÃveis para você.', + 'LBL_MASS_EDITING' => 'Editar em Massa', + 'LBL_DESELECT_ALL_RECORDS' => 'Remover Seleção Todos Registros', + 'LBL_QUICK_CREATE' => 'Criar Rápido', + 'LBL_QUICK_EDIT' => 'Editar Rápido', + 'LBL_SEND_EMAIL' => 'Enviar Email', + //SEND EMAIL translations + 'LBL_ALL_EMAILS' => 'Todas Contas email', + 'LBL_MUTIPLE_EMAIL_SELECT_ONE' => 'Por favor, selecione uma das opções abaixo', + //SEND EMAIL translations + 'LBL_GO_TO_FULL_FORM' => 'Forma Completa', + 'LBL_SEND_SMS' => 'Enviar SMS', + 'LBL_FOUND' => 'Encontrado(a)', + 'LBL_CLICK_ADD' => 'Clique adicionar', + 'LBL_ADD_MORE_FIELDS' => 'Adicionar mais campos', + 'LBL_ADD_NOTE' => 'Adicionar Nota', + 'LBL_CREATE_NEW' => 'Criar Novo', + 'LBL_ADD_EVENT' => 'Adicionar Evento', + 'LBL_ADD_TASK' => 'Adicionar Tarefa', + 'LBL_MARKETING_AND_SALES' => 'MARKETING/VENDAS', + 'LBL_TOOLS_HEADER' => 'FERRAMENTAS', + 'LBL_SUPPORT' => 'SUPORTE', + 'LBL_INVENTORY' => 'ESTOQUE', + 'LBL_ANALYTICS' => 'ANALÃTICOS', + 'LBL_CONTACT' => 'GESTÃO DE CONTATOS', + 'LBL_HOME' => 'Principal', + 'LBL_NO_ATTACHMENTS' => 'Nenhum Anexo', + 'LBL_COMPOSE_EMAIL_WARNING' => ' Aviso: Seu email pode ir para Spam. Adicione o Vtiger como um remetente autorizado para seu dominio. Leia mais', + // Common Link Labels + 'LBL_REARRANGE_DASHBOARD_TABS' => 'Reorganizar Abas', + 'LBL_DONE' => 'Pronto', + 'LBL_DELETE_DASHBOARD_TAB' => 'Apagar Aba', + 'LBL_DASHBOARD_TAB_ALREADY_EXIST' => 'Nome Aba já Existe', + 'LBL_TABS_LIMIT_EXCEEDED' => 'Desculpe! Não é possÃvel adicionar mais que 10 Abas', + 'LBL_TODOS' => 'Tarefas', + 'LBL_LAST_VIEWED_RECORDS' => 'Últimos Registros Visualizados', + 'LBL_DASHBOARD' => 'Painel', + 'LBL_USER_SETTINGS' => 'Configurações Usuários', + 'LBL_MY_PREFERENCES' => 'Minhas Preferências', + 'LBL_SIGN_OUT' => 'Desconectar', + 'LBL_HELP' => 'Ajuda', + 'LBL_DOCUMENTATION' => 'Documentação', + 'LBL_VIDEO_TUTORIAL' => 'Tutorial VÃdeo', + 'LBL_FEEDBACK' => 'Feedback', + 'LBL_CHAT_SUPPORT' => 'Suporte por Chat', + 'LBL_CRM_SETTINGS' => 'Configurações CRM', + 'LBL_ON_DEMAND_ADMIN' => 'Adicionar / Excluir Usuários', + 'LBL_ANNOUNCEMENT' => 'Anúncio', + 'LBL_CALENDAR' => 'Agenda', + 'LBL_POST' => 'Postar', + 'LBL_GUIDER' => 'Guia', + 'LBL_VIDEOS' => 'Videos', + 'LBL_DISPLAY_TYPE' => 'Mostrar Tipo', + 'LBL_DISPLAY_WIDETYPE' => 'Largo', + 'LBL_DISPLAY_MEDIUMTYPE' => 'Médio', + 'LBL_DISPLAY_NARROWTYPE' => 'Estreito', + 'LBL_TAG_THIS_RECORD' => 'Etiquetar este Registro', + 'LBL_SAME_TAG_EXISTS' => 'Existe Aba duplicada', + 'LBL_MAKE_PUBLIC' => 'Marcar com Público', + 'LBL_PAGE' => 'Página', + 'LBL_LISTVIEW_PAGE_JUMP' => 'Ir para Página', + 'LBL_LISTVIEW_JUMP_TO' => 'Ir para', + 'LBL_PROFILE_PASSWORD' => 'Perfil / Senha', + 'LBL_INFO' => 'Info', + 'LBL_CANT_MOVE_FROM_PUBLIC_TO_PRIVATE' => 'Não é possÃvel mover de Tag Pública para Tag Privada.', + 'LBL_EDIT_TAG' => 'Editar Tag', + 'LBL_NO_TAG_EXISTS' => 'Não Existe Tag', + 'LBL_RELATED_USERS' => 'Usuários Relacionados', + + // Common Fields + 'LBL_USER' => 'Usuário', + 'LBL_GROUP' => 'Grupo', + 'Last Modified By' => 'Última Modificação por', + 'Created Time' => 'Data Criação', + 'Modified Time' => 'Hora Modificação', + 'Description' => 'Descrição', + 'Assigned To' => 'Responsável', + + //Loading Labels + 'LBL_LOADING' => 'Carregando...', + 'LBL_LOADING_WIDGET' => 'Carregando Widget', + 'LBL_LOADING_LISTVIEW_CONTENTS' => 'Carregando ... por favor, aguarde.', + + // Detail View + 'LBL_HISTORY' => 'Pontos de Contato', + 'LBL_UPDATES' => 'Atualizações', + 'LBL_SHOW_FULL_DETAILS' => 'Exibir Detalhes', + 'LBL_SUMMARY_DETAILS' => 'Detalhes Resumido', + 'LBL_ADD_NEW_COMMENT' => 'Adicionar Novo Comentário', + 'LBL_NO_UPDATES' => 'Nenhuma Atualização', + 'LBL_ACTIVITIES' => 'Atividades', + 'LBL_NO_PENDING_ACTIVITIES' => 'Nenhuma atividade pendente', + 'LBL_SUMMARY' => 'Resumo', + 'LBL_KEY_FIELD' => 'Campo Chave', + 'LBL_DETAILS' => 'Detalhes', + 'LBL_NAME_EMAIL' => 'Nome e Email', + + // Popup window + 'LBL_SEARCH_FOR' => 'Pesquisar por', + 'LBL_IN' => 'Em', + 'LBL_TYPE_SEARCH' => 'Digite para pesquisar', + 'LBL_SEARCH_BUTTON' => 'Botão Pesquisa', + 'LBL_ADVANCE_SEARCH' => 'Avançado', + 'LBL_LOADING_PLEASE_WAIT' => 'Carregando, por favor, aguarde.', + 'LBL_PLEASE_SELECT_MODULE' => 'Por favor, selecione o módulo', + + //DropDown Category + 'LBL_USERS' => 'Usuários', + 'LBL_GROUPS' => 'Grupos', + + //EditView Form Links + 'LBL_FULL_FORM' => 'Forma Completa', + 'LBL_SIMPLE_FORM' => 'Forma Simples', + + //Recent Comments + 'LBL_IS_REMOVED' => 'foi Removido', + 'LBL_ADD_YOUR_COMMENT_HERE' => 'Adicionar seu comentário aqui...', + 'LBL_REASON_FOR_CHANGING_COMMENT' => 'Motivo para mudar o comentário', + 'LBL_REPLY' => 'Responder', + 'LBL_VIEW_THREAD' => 'Visualizar Tópico', + 'LBL_NO_COMMENTS' => 'Sem Comentários', + 'LBL_REPLIES' => 'respostas', + 'LBL_REPLY_ALL' => 'Responder a todos', + + //Translation for all modules + 'Accounts' => 'Organizações', + 'Assets' => 'Ativos', + 'Calendar' => 'Agenda', + 'Campaigns' => 'Campanhas', + 'Contacts' => 'Contatos', + 'Documents' => 'Documentos', + 'Leads' => 'Leads', + 'ModComments' => 'Comentários', + 'Potentials' => 'Oportunidades', + 'PriceBooks' => 'Listas Preços', + 'Products' => 'Produtos', + 'Project' => 'Projetos', + 'ProjectMilestone' => 'Milestones Projeto', + 'ProjectTask' => 'Tarefas Projeto', + 'ServiceContracts' => 'Contratos', + 'Services' => 'Serviços', + 'Vendors' => 'Fornecedores', + 'Rss' => 'RSS', + 'Quotes' => 'Cotações', + 'PurchaseOrder' => 'Pedidos Compra', + 'SalesOrder' => 'Pedidos Venda', + 'Invoice' => 'Faturas', + 'MailManager' => 'Gestor Mensagens', + 'Activities' => 'Atividades', + 'Portal' => 'Nossos Sites', + 'Email Templates' => 'Modelo de Email', + 'Recycle Bin' => 'Lixeira', + + //Basic String Translation + 'LBL_ADD_RECORD' => 'Adicionar Registro', + 'LBL_RECENTLY_MODIFIED' => 'Últimas Alterações', + 'LBL_RECORDS_LIST' => 'Lista Registros', + 'LBL_RECORD_SUMMARY' => 'Resumo Módulo', + 'LBL_RECORD_SUMMARY' => 'Detalhes Módulo', + 'LBL_ACCESS_DENIED_FOR' => 'Acesso Negado para', + 'LBL_GO_BACK' => 'Voltar', + 'LBL_NO_DATA_AVAILABLE' => 'Nenhum dado disponÃvel', + 'LBL_GLOBAL_SEARCH' => 'Digite palavra chave e pressione Enter', + + // Global Search + 'LBL_ALL_RECORDS' => 'Todos os Registros', + 'LBL_NO_RECORDS_FOUND' => 'Nenhum registro encontrado', + + //Filters & Advance Filter + 'LBL_AND' => 'e', + 'LBL_OR' => 'ou', + 'LBL_APPLBL_NONEROVE' => 'Aprovar', + 'LBL_DENY' => 'Negar', + 'LBL_EQUALS' => 'iguais', + 'LBL_NOT_EQUAL_TO' => 'diferente de', + 'LBL_STARTS_WITH' => 'inicia com', + 'LBL_ENDS_WITH' => 'final com', + 'LBL_CONTAINS' => 'contém', + 'LBL_DOES_NOT_CONTAIN' => 'não contém', + 'LBL_LESS_THAN' => 'menor que', + 'LBL_GREATER_THAN' => 'maior que', + 'LBL_LESS_THAN_OR_EQUAL' => 'menor ou igual', + 'LBL_GREATER_OR_EQUAL' => 'maior ou igual', + 'LBL_BEFORE' => 'antes', + 'LBL_AFTER' => 'depois', + 'LBL_BETWEEN' => 'entre', + 'LBL_SEARCH' => 'Pesquisar', + 'LBL_SEARCH_IN' => 'Pesquisar em', + 'LBL_ADD_CONDITION' => 'Adicionar Condição', + 'LBL_ADD_GROUP' => 'Adicionar Grupo', + 'LBL_FILTER_CONDITIONS' => 'Condições de Filtro', + 'LBL_ALL_CONDITIONS' => 'Todas as Condições', + 'LBL_ALL_CONDITIONS_DESC' => 'Todas as condições devem ser satisfeitas', + 'LBL_ANY_CONDITIONS' => 'Quaisquer Condições', + 'LBL_ANY_CONDITIONS_DESC' => 'Ao menos uma das condições deve ser satisfeita', + 'LBL_SELECT_FIELD' => 'Selecionar Campo', + 'LBL_SELECT_MODULE' => 'Selecionar Módulo', + 'LBL_CREATE_NEW_FILTER' => 'Criar Novo Filtro', + 'All' => 'Todos', + 'Others' => 'Outros', + 'Pending' => 'Pendente', + 'Public' => 'Público', + + //Advance Search + 'LBL_SAVE_FILTER' => 'Salvar Filtro', + 'LBL_SAVE_MODIFY_FILTER' => 'Salvar/Modificar Filtro', + 'LBL_SEARCH_RESULTS' => 'Resultados Pesquisa', + 'LBL_SAVE_AS_FILTER' => 'Salvar como Filtro', + + //Exception String Translation + 'LBL_NOT_ACCESSIBLE' => 'Acesso Negado', + + //Line Items + 'LBL_ITEM_DETAILS' => 'Detalhes do Item', + 'LBL_CURRENCY' => 'Moeda', + 'LBL_TAX_MODE' => 'Tributação', + 'LBL_INDIVIDUAL' => 'Individual', + 'LBL_GROUP' => 'Grupo', + 'LBL_TOOLS' => 'Ferramentas', + 'LBL_ITEM_NAME' => 'Nome do Item', + 'LBL_QTY_IN_STOCK' => 'Estoque', + 'LBL_QTY' => 'Quantidade', + 'LBL_LIST_PRICE' => 'Lista de Preço', + 'LBL_TOTAL' => 'Total', + 'LBL_NET_PRICE' => 'Preço LÃquido', + 'LBL_DISCOUNT' => 'Desconto', + 'LBL_TOTAL_AFTER_DISCOUNT' => 'Total após Desconto', + 'LBL_TAX' => 'Imposto', + 'LBL_ADD_PRODUCT' => 'Adicionar Produto', + 'LBL_ADD_SERVICE' => 'Adicionar Serviço', + 'LBL_LI_ADD_PRODUCT' => 'Produto', + 'LBL_LI_ADD_SERVICE' => 'Serviço', + 'LBL_ITEMS_TOTAL' => 'Valor Total Itens', + 'LBL_SHIPPING_AND_HANDLING_CHARGES' => 'Frete', + 'LBL_PRE_TAX_TOTAL' => 'Total Antes Imposto', + 'LBL_TAX_FOR_SHIPPING_AND_HANDLING' => 'Impostos s/ Frete', + 'LBL_SET_SHIPPING_AND_HANDLING_TAXES_FOR' => 'Definir Imposto Frete para', + 'LBL_ADJUSTMENT' => 'Ajuste', + 'LBL_DEDUCT' => 'Deduzir', + 'LBL_GRAND_TOTAL' => 'Total Geral', + 'LBL_ZERO_DISCOUNT' => 'Sem Desconto', + 'LBL_OF_PRICE' => 'de Preço', + 'LBL_DIRECT_PRICE_REDUCTION' => 'Redução Direta Preço', + 'LBL_SET_DISCOUNT_FOR' => 'Definir Desconto para', + 'LBL_STOCK_NOT_ENOUGH' => 'Estoque insuficiente', + 'LBL_MAX_QTY_SELECT' => 'O valor máximo é', + 'LBL_DRAG' => 'Arrastar', + 'LBL_TOTAL_TAX_AMOUNT' => 'Total Imposto', + 'LBL_DIRECT_AMOUNT_DISCOUNT' => 'Total Desconto Direto', + 'LBL_FINAL_DISCOUNT_AMOUNT' => 'Soma Final Desconto', + 'LBL_MORE_CURRENCIES' => 'outras moedas', + 'LBL_SET_TAX_FOR' => 'Definir Imposto para', + 'LBL_GROUP_TAX' => 'Grupo Imposto', + 'LBL_BILLING_ADDRESS_FROM' => 'Copiar Endereço Faturamento de', + 'LBL_SHIPPING_ADDRESS_FROM' => 'Copiar Endereço Entrega de', + 'LBL_COPY_SHIPPING_ADDRESS' => 'Endereço Entrega', + 'LBL_COPY_BILLING_ADDRESS' => 'Endereço Faturamento', + 'LBL_OVERALL_DISCOUNT' => 'Desconto Total', 'LBL_CHARGES' => 'Encargos', - 'LBL_CHARGES_TOTAL' => 'Encargos totais', - 'LBL_TAXES_ON_CHARGES' => 'Impostos por acusações', - 'LBL_DEDUCTED_TAXES' => 'Impostos Deducted', - 'LBL_DEDUCTED_TAXES_TOTAL' => 'Impostos Deducted total', - 'LBL_DEFAULT' => 'Omissão', + 'LBL_CHARGES_TOTAL' => 'Total Encargos', + 'LBL_TAXES_ON_CHARGES' => 'Impostos sobre Encargos', + 'LBL_DEDUCTED_TAXES' => 'Impostos Deduzidos', + 'LBL_DEDUCTED_TAXES_TOTAL' => 'Total Impostos Deduzidos', + 'LBL_DEFAULT' => 'Padrão', 'LBL_ITEM' => 'Item', - 'LBL_BILLING_ADDRESS_FROM' => 'Copiar endereço da facturação de' , // TODO: Review - 'LBL_SHIPPING_ADDRESS_FROM' => 'Copiar Endereço para envio de' , // TODO: Review - 'LBL_COPY_SHIPPING_ADDRESS' => 'Endereço para envio' , // TODO: Review - 'LBL_COPY_BILLING_ADDRESS' => 'Endereço de Cobrança' , // TODO: Review - 'LBL_CREATE' => 'Criar' , - 'LBL_GENERATE' => 'Gerar' , - 'LBL_DUPLICATE' => 'Duplicar' , - 'LBL_ADD_WIDGET' => 'Add Widget' , - 'LBL_COMMENTS' => 'COMENTÃRIOS' , - 'LBL_REFRESH' => 'Atualizar' , - 'LBL_CLOSE' => 'Fechar' , - 'LBL_ALL' => 'Todos' , - 'LBL_UPDATED' => 'Atualizado' , - 'LBL_FROM' => 'from' , - 'LBL_TO' => 'to' , - 'LBL_ON' => 'on' , - 'LBL_OF' => 'de' , - 'LBL_BY' => 'Por ' , - 'LBL_ADDED' => 'added' , - 'LBL_FOR' => 'para' , - 'LBL_CREATED' => 'Criado' , - 'LBL_DELETED' => 'deleted' , - 'LBL_RESTORED' => 'restored' , - 'LBL_COMMENTED' => 'commented' , - 'LBL_REMOVED' => 'removed' , - 'LBL_REMOVE' => 'Remove' , - 'LBL_AT' => 'at' , - 'LBL_MINE' => 'Mine' , - 'History' => 'Histórico' , - 'Upcoming Tasks' => 'Upcoming Tasks' , - 'LBL_YEAR' => 'year' , - 'LBL_YEARS' => 'years' , - 'LBL_MONTH' => 'month' , - 'LBL_MONTHS' => 'months' , - 'LBL_DAY' => 'day' , - 'LBL_DAYS' => 'days' , - 'LBL_HOUR' => 'hour' , - 'LBL_HOURS' => 'hours' , - 'LBL_MINUTE' => 'minute' , - 'LBL_MINUTES' => 'Minutes' , - 'LBL_SECOND' => 'second' , - 'LBL_SECONDS' => 'seconds' , - 'LBL_JUSTNOW' => 'just now' , - 'LBL_CUSTOM_INFORMATION' => 'Informação Customizada' , - 'LBL_NO_RECENT_UPDATES' => 'No recent updates' , - 'LBL_NO_DATA' => 'Nenhum dado encontrado' , - 'LBL_PERMISSION_DENIED' => 'Permission denied' , - 'LBL_HANDLER_NOT_FOUND' => 'Handler not found' , - 'LBL_FILTER' => 'Lista' , - 'LBL_DUE' => 'due' , - 'LBL_COMPLETED' => 'completed' , - 'LBL_AGO' => 'ago' , - 'LBL_CHANGED' => 'changed' , - 'Single_Users' => 'Usuário' , - 'LBL_MATCHED_THIS_CRITERIA' => 'matched this criteria' , - 'LBL_NO_SCHEDULED_ACTIVITIES' => 'No scheduled activities' , - 'LBL_NO_OVERDUE_ACTIVITIES' => 'No overdue activities' , - 'LBL_NO_UPDATES_OR_COMMENTS' => 'No updates or comments' , - 'LBL_MINI_LIST' => 'Mini List' , // TODO: Review - 'Mini List' => 'Mini List' , // TODO: Review - 'LBL_RESULT_FOR_THE_TAG' => 'Results for the tag' , // TODO: Review - 'LBL_ALL_USERS' => 'Todos os usuários', - 'LBL_BOTH' => 'Tanto', - 'LBL_SHOW' => 'Exposição', - 'LBL_SELECT_DATE_RANGE' => 'Escolha um intervalo de datas', - 'LBL_VIEW_NAME' => 'Lista de nomes' , - 'LBL_CREATE_VIEW' => 'Creating new View' , - 'LBL_BASIC_DETAILS' => 'Basic Details' , - 'LBL_CHOOSE_COLUMNS' => 'Choose Columns and Order' , - 'LBL_MAX_NUMBER_FILTER_COLUMNS' => 'Max 15' , - 'LBL_FILTER_ON_DATE' => 'Lista on date' , - 'LBL_CHOOSE_FILTER_CONDITIONS' => 'Escolha condições Lista' , - 'LBL_SET_AS_DEFAULT' => 'Set as Default' , - 'LBL_LIST_IN_METRICS' => 'List in Metrics' , - 'LBL_SET_AS_PUBLIC' => ' Set as Public' , - 'LBL_ADD_MORE_COLUMNS' => 'Clique para selecionar os campos' , - 'LBL_CUSTOM' => 'Custom' , - 'LBL_PREVIOUS_FY' => 'Previous FY' , - 'LBL_CURRENT_FY' => 'Current FY' , - 'LBL_NEXT_FY' => 'Next FY' , - 'LBL_PREVIOUS_FQ' => 'Previous FQ' , - 'LBL_CURRENT_FQ' => 'Current FQ' , - 'LBL_NEXT_FQ' => 'Next FQ' , - 'LBL_YESTERDAY' => 'Yesterday' , - 'LBL_TODAY' => 'Hoje' , - 'LBL_TOMORROW' => 'Tomorrow' , - 'LBL_LAST_WEEK' => 'Última Semana' , - 'LBL_CURRENT_WEEK' => 'Current Week' , - 'LBL_NEXT_WEEK' => 'Next Week' , - 'LBL_LAST_MONTH' => 'Last Month' , - '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_30_DAYS' => 'Last 30 Days' , - 'LBL_LAST_60_DAYS' => 'Last 60 Days' , - 'LBL_LAST_90_DAYS' => 'Last 90 Days' , - 'LBL_LAST_120_DAYS' => 'Last 120 Days' , - 'LBL_NEXT_30_DAYS' => 'Next 30 Days' , - 'LBL_NEXT_60_DAYS' => 'Next 60 Days' , - 'LBL_NEXT_90_DAYS' => 'Next 90 Days' , - 'LBL_NEXT_120_DAYS' => 'Next 120 Days' , - 'LBL_OWNER' => 'Owner' , - 'LBL_CREATED_ON' => 'Created On' , - 'LBL_MODIFIED_ON' => 'Modified On' , - 'LBL_BEFORE_EVENT' => ' Before Event' , - 'Upcoming Activities' => 'Próximas Atividades' , - 'Overdue Activities' => 'Overdue Activities' , - 'Funnel' => 'Funnel' , - 'Potentials by Stage' => 'Opportunities by Stage' , - 'Pipelined Amount' => 'Sales Pipeline' , - 'Total Revenue' => 'Total Revenue' , - 'Top Potentials' => 'Top Potentials' , - 'Forecast' => 'Forecast' , - 'Leads Created' => 'Leads Created' , - 'Leads by Status' => 'Leads by Status' , - 'Leads by Source' => 'Leads by Source' , - 'Leads by Industry' => 'Leads by Industry' , - 'Tickets by Status' => 'Tickets by Status' , // TODO: Review - 'Open Tickets' => 'Open Tickets' , // TODO: Review - 'LBL_EXPORT_ALL_DATA' => 'Exportar todos os dados' , + 'LBL_ADD_DASHBOARD' => 'Adicional Painel', + + //DetailView Actions + 'LBL_CREATE' => 'Criar', + 'LBL_GENERATE' => 'Gerar', + 'LBL_DUPLICATE' => 'Duplicar', + 'Add Note' => 'Adicionar Documento', + + //Dashboard String + 'LBL_ADD_WIDGET' => 'Adicionar Widget', + 'LBL_COMMENTS' => 'Comentários', + 'LBL_REFRESH' => 'Atualizar', + 'LBL_CLOSE' => 'Fechar', + 'LBL_ALL' => 'Todos', + 'LBL_UPDATED' => 'Atualizado', + 'LBL_VIA_TASK' => 'via Tarefa', + 'LBL_form' => 'de', + 'LBL_FROM' => 'de', + 'LBL_TO' => 'Para', + 'LBL_to' => 'para', + 'LBL_ON' => 'em', + 'LBL_OF' => 'de', + 'LBL_BY' => 'Por ', + 'LBL_ADDED' => 'adicionado', + 'LBL_FOR' => 'para', + 'LBL_CREATED' => 'Criado', + 'LBL_DELETED' => 'apagado', + 'LBL_RESTORED' => 'restaurado', + 'LBL_COMMENTED' => 'comentado', + 'LBL_REMOVED' => 'removido', + 'LBL_REMOVE' => 'Remover', + 'LBL_AT' => 'em', + 'LBL_MINE' => 'Minha(s)', + 'LBL_ME' => 'Eu', + 'History' => 'Histórico', + 'Upcoming Tasks' => 'Próximas Tarefas', + 'LBL_YEAR' => 'ano', + 'LBL_YEARS' => 'anos', + 'LBL_MONTH' => 'mês', + 'LBL_MONTHS' => 'meses', + 'LBL_DAY' => 'dia', + 'LBL_DAYS' => 'dias', + 'LBL_DAY(S)' => 'dia(s)', + 'LBL_HOUR' => 'hora', + 'LBL_HOURS' => 'horas', + 'LBL_HOUR(S)' => 'hora(s)', + 'LBL_MINUTE' => 'minuto', + 'LBL_MINUTES' => 'Minutos', + 'LBL_SECOND' => 'segundo', + 'LBL_SECONDS' => 'segundos', + 'LBL_JUSTNOW' => 'agora', + 'LBL_CUSTOM_INFORMATION' => 'Informação Customizada', + 'LBL_NO_RECENT_UPDATES' => 'Nenhuma atualização recente', + 'LBL_NO_DATA' => 'Nenhum dado', + 'LBL_PERMISSION_DENIED' => 'Permissão negada', + 'LBL_HANDLER_NOT_FOUND' => 'Nenhum Almoxarife encontrado', + 'LBL_FILTER' => 'Filtro', + 'LBL_DUE' => 'Faltam', + 'LBL_DAYS' => 'dias', + 'LBL_COMPLETED' => 'concluÃdo', + 'LBL_AGO' => 'atrás', + 'LBL_CHANGED' => 'alterado', + 'SINGLE_Users' => 'Usuário', + 'LBL_MATCHED_THIS_CRITERIA' => 'corresponde a este critério', + 'LBL_NO_SCHEDULED_ACTIVITIES' => 'Nenhuma atividade agendada', + 'LBL_NO_OVERDUE_ACTIVITIES' => 'Nenhuma atividade atrasada', + 'LBL_NO_UPDATES_OR_COMMENTS' => 'Nenhuma atualização ou comentário', + 'LBL_MINI_LIST' => 'Mini Lista', + 'LBL_NOTEPAD' => 'Bloco de Notas', + 'LBL_NOTEPAD_NAME' => 'Nome Bloco Notas', + 'LBL_NOTEPAD_CONTENT' => 'Conteúdo Bloco Notas', + 'LBL_LAST_SAVED_ON' => 'Última salvo em', + 'Mini List' => 'Mini Lista', + 'Notebook' => 'Bloco de Notas', + 'LBL_RESULT_FOR_THE_TAG' => 'Resultados para Tag', + 'LBL_ALL_USERS' => 'Todos os Usuários', + 'LBL_BOTH' => 'Ambos', + 'LBL_SHOW' => 'Exibir', + 'LBL_MY' => 'Meu', + 'LBL_SELECT_DATE_RANGE' => 'Selecionar Intervalo Data', + + // Basic Strings- custom view + 'LBL_VIEW_NAME' => 'Visualizar Nome', + 'LBL_CREATE_VIEW' => 'Criação nova Visualização', + 'LBL_BASIC_DETAILS' => 'Detalhes Básicos', + 'LBL_CHOOSE_COLUMNS' => 'Escolha as Colunas e Ordem', + 'LBL_MAX_NUMBER_FILTER_COLUMNS' => 'Máx 12', + 'LBL_FILTER_ON_DATE' => 'Filtrar data', + 'LBL_CHOOSE_FILTER_CONDITIONS' => 'Escolha as Condições do Filtro', + 'LBL_ADD_CONDITION' => 'Adicionar Condição', + 'LBL_SET_AS_DEFAULT' => 'Definir como Padrão', + 'LBL_LIST_IN_METRICS' => 'Listar em Métricas', + 'LBL_SET_AS_PUBLIC' => 'Definir como Público', + 'LBL_AND' => 'e', + 'LBL_OR' => 'ou', + 'LBL_ADD_MORE_COLUMNS' => 'Adicionar mais Colunas', + 'LBL_ADD_GROUP' => 'Adicionar Grupo', + + //DateFilter Conditions + 'LBL_CUSTOM' => 'Customização', + 'LBL_PREVIOUS_FY' => 'Ano Anterior', + 'LBL_CURRENT_FY' => 'Ano Atual', + 'LBL_NEXT_FY' => 'Próximo Ano', + 'LBL_PREVIOUS_FQ' => 'Semestre Anterior', + 'LBL_CURRENT_FQ' => 'Semestre Atual', + 'LBL_NEXT_FQ' => 'Próximo Semestre', + 'LBL_YESTERDAY' => 'Ontem', + 'LBL_TODAY' => 'Hoje', + 'LBL_TOMORROW' => 'Amanhã', + 'LBL_LAST_WEEK' => 'Última Semana', + 'LBL_CURRENT_WEEK' => 'Semana Atual', + 'LBL_NEXT_WEEK' => 'Próxima Semana', + 'LBL_LAST_MONTH' => 'Último Mês', + 'LBL_CURRENT_MONTH' => 'Mês Atual', + 'LBL_NEXT_MONTH' => 'Próximo Mês', + 'LBL_LAST_7_DAYS' => 'Últimos 7 Dias', + 'LBL_LAST_14_DAYS' => 'Last 14 Days', + 'LBL_LAST_30_DAYS' => 'Últimos 30 Dias', + 'LBL_LAST_60_DAYS' => 'Últimos 60 Dias', + 'LBL_LAST_90_DAYS' => 'Últimos 90 Dias', + 'LBL_LAST_120_DAYS' => 'Últimos 120 Dias', + 'LBL_NEXT_30_DAYS' => 'Próximos 30 Dias', + 'LBL_NEXT_60_DAYS' => 'Próximos 60 Dias', + 'LBL_NEXT_90_DAYS' => 'Próximos 90 Dias', + 'LBL_NEXT_120_DAYS' => 'Próximos 120 Dias', + + //advanced Filter Options + 'LBL_NONE' => 'Nada', + 'LBL_EQUALS' => 'igual', + 'LBL_NOT_EQUAL_TO' => 'diferente', + 'LBL_STARTS_WITH' => 'inicia com', + 'LBL_ENDS_WITH' => 'termina com', + 'LBL_CONTAINS' => 'contém', + 'LBL_DOES_NOT_CONTAIN' => 'não contém', + 'LBL_LESS_THAN' => 'menor que', + 'LBL_GREATER_THAN' => 'maior que', + 'LBL_LESS_THAN_OR_EQUAL' => 'menor ou igual', + 'LBL_GREATER_OR_EQUAL' => 'maior ou igual', + 'LBL_BEFORE' => 'antes', + 'LBL_AFTER' => 'depois', + 'LBL_BETWEEN' => 'entre', + 'LBL_IS_EMPTY' => 'vazio', + 'LBL_IS_NOT_EMPTY' => 'não vazio', + 'LBL_APPROVE' => 'Aprovar', + 'LBL_HAS_CHANGED' => 'alterado', + 'LBL_HAS_CHANGED_TO' => 'alterado para', + 'LBL_HAS_CHANGED_FROM' => 'alterado a partir', + 'LBL_LESS_THAN_OR_EQUAL_TO' => 'menor que ou igual a', + 'LBL_GREATER_THAN_OR_EQUAL_TO' => 'maior que ou igual a', + 'LBL_IS_NOT' => 'não é', + 'LBL_IS_ADDED' => 'foi adicionado', + 'LBL_IS_TODAY' => 'hoje', + 'LBL_IS_TOMORROW' => 'amanhã', + 'LBL_IS_YESTERDAY' => 'ontem', + 'LBL_LESS_THAN_DAYS_LATER' => 'menos que dias depois', + 'LBL_MORE_THAN_DAYS_LATER' => 'mais que dias depois', + + //Detail view summary widgets + 'LBL_OWNER' => 'Proprietário', + 'LBL_CREATED_ON' => 'Criado em', + 'LBL_MODIFIED_ON' => 'Modificado em', + 'LBL_MODIFIED' => 'Modificado', + 'LBL_COMMENTED' => 'Comentado', + + //calender set-reminder + 'LBL_BEFORE_EVENT' => 'Evento Anterior', + + //Dashboard widgets + 'History' => 'História', + 'Upcoming Activities' => 'Atividades Programadas', + 'Overdue Activities' => 'Atividades Atrasadas', + 'Funnel' => 'Funil', + 'Potentials by Stage' => 'Oportunidades por Estágio', + 'Pipelined Amount' => 'Funil de Vendas', + 'Total Revenue' => 'Receita Total', + 'Top Potentials' => 'Principais Oportunidades', + 'Forecast' => 'Previsão', + 'Leads Created' => 'Leads Criados', + 'Leads by Status' => 'Leads por Status', + 'Leads by Source' => 'Leads por Fonte', + 'Leads by Industry' => 'Leads por Atividade', + 'Tickets by Status' => 'Chamados por Status', + 'Open Tickets' => 'Chamados Abertos', + 'Funnel Amount' => 'Valor Total por Estágio de Vendas', + 'Key Metrics' => 'Métricas Chave', + 'Mini List' => 'Mini Lista', + 'Tag Cloud' => 'Tag Cloud', + 'Notebook' => 'Bloco Notas', + + //Exports strings + 'LBL_EXPORT_ALL_DATA' => 'Exportar todos os dados', 'LBL_EXPORT_DATA_IN_CURRENT_PAGE' => 'Exportar dados na página atual', - 'LBL_EXPORT_SELECTED_RECORDS' => 'Export Selected Records' , - 'LBL_EXPORT_RECORDS' => 'Tipos Registros para Exportar', - 'LBL_NO_RECORD_SELECTED' => 'No record selected.' , - 'LBL_CAN_NOT_REMOVE_DEFAULT_WIDGET' => 'Cannot remove default widget', - 'LBL_CUSTOM_VIEW_NAME_DUPLICATES_EXIST' => 'Lista já exista' , - 'LBL_EXPORT_CURRENCY_TOOLTIP_TEXT'=>'Para exportar valores Moeda em itens de linha, Vtiger vai usar essa configuração para exportar como essa moeda. Quaisquer valores de moeda fora das mesas de itens de linha, será exportado como em Usuários moeda preferida (selecionado em Minhas preferências)', - 'LBL_EXPORT_LINEITEM_CURRENCY'=>'Escolha Moeda (para valores de linha de item)', - 'LBL_EXPORT_USER_CURRENCY' =>'Minha moeda preferida', - 'LBL_EXPORT_RECORD_CURRENCY'=>'Moeda especificado no registro', - 'LBL_EXPORT_FORMAT' => 'Formato de exportação', - 'LBL_EXPORT_DATA' => 'Data Export', - - 'LBL_ADD_MANAGE_MODULES' => 'Add / Manage Modules' , - 'Account Name' => 'Nome Organização' , - 'Add Comment' => 'Add Comment' , - 'Adjustment' => 'Ajuste' , - 'Annual Revenue' => 'Receita Anual' , - 'Apparel' => 'Apparel' , - 'Banking' => 'Banking' , - 'Billing Address' => 'Endereço Facturasmento' , - 'Billing City' => 'Billing Cidade' , - 'Billing Code' => 'Código de faturamento' , - 'Billing Country' => 'Billing PaÃs' , - 'Billing Po Box' => 'Billing Po Box' , - 'Billing State' => 'Billing Estado' , - 'Biotechnology' => 'Biotechnology' , - 'FedEx' => 'FedEx' , - 'UPS' => 'UPS' , - 'USPS' => 'USPS' , - 'DHL' => 'DHL' , - 'BlueDart' => 'BlueDart' , - 'Carrier' => 'Transportador' , - 'Category' => 'Categoria' , - 'Chemicals' => 'Chemicals' , - 'City' => 'Cidade' , - 'Cold Call' => 'Cold Call' , - 'Existing Customer' => 'Existing Customer' , - 'Self Generated' => 'Self Generated' , - 'Employee' => 'Employee' , - 'Partner' => 'Partner' , - 'Public Relations' => 'Public Relations' , - 'Direct Mail' => 'Direct Mail' , - 'Conference' => 'Conference' , - 'Trade Show' => 'Trade Show' , - 'Web Site' => 'Web Site' , - 'Word of mouth' => 'Word of mouth' , - 'Other' => 'Other' , - '--None--' => '--Nada--' , - 'Acquired' => 'Acquired' , - 'Active' => 'Ativo' , - 'Market Failed' => 'Market Failed' , - 'Project Cancelled' => 'Project Cancelled' , - 'Shutdown' => 'Shutdown' , - 'Communications' => 'Communications' , - 'Construction' => 'Construction' , - 'Consulting' => 'Consulting' , - 'Education' => 'Education' , - 'Electronics' => 'Electronics' , - 'Energy' => 'Energy' , - 'Engineering' => 'Engineering' , - 'Entertainment' => 'Entertainment' , - 'Environmental' => 'Environmental' , - 'Finance' => 'Finance' , - 'Food & Beverage' => 'Food & Beverage' , - 'Government' => 'Government' , - 'Healthcare' => 'Healthcare' , - 'Hospitality' => 'Hospitality' , - 'Insurance' => 'Insurance' , - 'Machinery' => 'Machinery' , - 'Manufacturing' => 'Manufacturing' , - 'Media' => 'Media' , - 'Not For Profit' => 'Not For Profit' , - 'Recreation' => 'Recreation' , - 'Retail' => 'Retail' , - 'Shipping' => 'Shipping' , - 'Technology' => 'Technology' , - 'Telecommunications' => 'Telecommunications' , - 'Transportation' => 'Transportation' , - 'Utilities' => 'Utilities' , - 'Contact Name' => 'Contato' , - 'Conversion Rate' => 'Conversion Rate' , - 'Shipping Address' => 'Endereço Entrega' , - 'Shipping City' => 'O envio da Cidade' , - 'Shipping State' => 'Estado de envio' , - 'Shipping Code' => 'Código da Marinha' , - 'Shipping Country' => 'O envio PaÃs' , - 'Shipping Po Box' => 'Expedição Po Box' , - 'Country' => 'PaÃs' , - 'Created' => 'Criado' , - 'Approved' => 'Approved' , - 'Delivered' => 'Delivered' , - 'Cancelled' => 'Cancelled' , - 'Currency' => 'Moeda' , - 'LBL_BASE_CURRENCY' => 'Moeda predefinida' , - 'Discount Percent' => 'Discount Percent' , - 'Discount Amount' => 'Discount Amount' , - 'Item Discount Amount' => 'Item Discount Amount' , - 'Item Discount Percent' => 'Item Discount Percent' , - 'Due Date' => 'Vencimento' , - 'Due Date & Time' => 'Due Date & Time' , - 'Email' => 'Email' , - 'Secondary Email' => 'Secondary Email' , - 'Other Email' => 'Other Email' , - 'Email Opt Out' => 'Recusa E-mail' , - 'Is Converted From Lead' => 'É convertido de chumbo' , - 'Expected Close Date' => 'Previsão Fechamento' , - 'Fax' => 'Fax' , - 'Last Name' => 'Sobrenome' , - 'First Name' => 'Nome' , - 'High' => 'High' , - 'Low' => 'Low' , - 'In Progress' => 'Em Andamento' , - 'Subject' => 'Assunto' , - 'Terms & Conditions' => 'Prazos & Condições' , - 'Item Name' => 'Nome do Item' , - 'Quantity' => 'Quantidade' , - 'List Price' => 'Preço de Venda' , - 'Image' => 'Imagem' , - 'Purchase Cost' => 'Custo de Compra' , - 'Margin' => 'Margem' , - 'Item Comment' => 'Item Comment' , - 'Tax1' => 'Tax1' , - 'Tax2' => 'Tax2' , - 'Tax3' => 'Tax3' , - 'Excise Duty' => 'IPI' , - 'Total' => 'Total' , - 'Sub Total' => 'Sub Total' , - 'Tax Type' => 'Tax Type' , - 'S&H Amount' => 'S&H Amount' , - 'Status' => 'Status' , - 'Vendor Name' => 'Fornecedor' , - 'LBL_ADDRESS_INFORMATION' => 'Address Details' , - 'LBL_DESCRIPTION_INFORMATION' => 'Description Details' , - 'LBL_TERMS_INFORMATION' => 'Prazos & Condições' , - 'LBL_PRICING_INFORMATION' => 'Informação Preço Venda' , - 'LBL_RELATED_PRODUCTS' => 'Detalhes do Produto' , - 'LBL_REMINDER_INFORMATION' => 'Reminder Details' , - 'LBL_FOLDER_SAVED' => 'Folder saved' , - 'LBL_FOLDER_EXISTS' => 'Folder already exists' , - 'LBL_FOLDER_DELETED' => 'Folder deleted' , - 'LBL_EDIT_FOLDER' => 'Editar pasta', - 'Lead Source' => 'Fonte Lead' , - 'Mobile' => 'Celular' , - 'Notify Owner' => 'Notificar Proprietário' , - 'Other Phone' => 'Telefone Alternativo' , - 'Phone' => 'Telefone' , - 'State' => 'Estado' , - 'Po Box' => 'P.O. Box' , - 'Postal Code' => 'Postal Code' , - 'Potential Name' => 'Nome Oportunidade' , - 'Priority' => 'Prioridade' , - 'Product Name' => 'Nome Produto' , - 'Rating' => 'Avaliação' , - 'Related To' => 'Relacionado à ' , - 'Type' => 'Tipo' , - 'Reviewed' => 'Reviewed' , - 'Salutation' => 'Saudação' , - 'Street' => 'Rua' , - 'Support Start Date' => 'InÃcio Suporte' , - 'Support Expiry Date' => 'Support Expiry Date' , - 'Sales Start Date' => 'Sales Start Date' , - 'Sales End Date' => 'Sales End Date' , - 'Open Ticktes' => 'Open Tickets' , // TODO: Review - 'LBL_SELECT_STATUS' => 'Selecione Status' , - 'LBL_VTIGER_CRM_HONEST_OPEN_SOURCE' => 'vtiger CRM On Demand' , - 'SINGLE_Accounts' => 'Organization' , // TODO: Review - 'SINGLE_Contacts' => 'Contact' , // TODO: Review - 'LBL_Sun' => 'Sun' , // TODO: Review - 'LBL_Mon' => 'Mon' , // TODO: Review - 'LBL_Tue' => 'Tue' , // TODO: Review - 'LBL_Wed' => 'Wed' , // TODO: Review - 'LBL_Thu' => 'Thu' , // TODO: Review - 'LBL_Fri' => 'Fri' , // TODO: Review - 'LBL_Sat' => 'Sat' , // TODO: Review - 'LBL_Jan' => 'Jan' , // TODO: Review - 'LBL_Feb' => 'Feb' , // TODO: Review - 'LBL_Mar' => 'Mar' , // TODO: Review - 'LBL_Apr' => 'Apr' , // TODO: Review - 'LBL_May' => 'May' , // TODO: Review - 'LBL_Jun' => 'Jun' , // TODO: Review - 'LBL_Jul' => 'Jul' , // TODO: Review - 'LBL_Aug' => 'Aug' , // TODO: Review - 'LBL_Sep' => 'Sep' , // TODO: Review - 'LBL_Oct' => 'Oct' , // TODO: Review - 'LBL_Nov' => 'Nov' , // TODO: Review - 'LBL_Dec' => 'Dec' , // TODO: Review - 'LBL_CALENDAR_SETTINGS' => 'Calendar Settings' , // TODO: Review - 'HelpDesk' => 'Tickets' , // TODO: Review - 'LBL_TAG_CLOUD' => 'Tag Cloud' , // TODO: Review - 'LBL_NO_RECORDS' => 'No Records' , // TODO: Review - 'LBL_NO_RELATED' => 'No Related' , // TODO: Review - 'LBL_GLOBAL_SEARCH_MAX_MESSAGE' => 'Only the first 100 results of all modules are shown below. For module specific results, please select respective module and search', // TODO: Review - 'LBL_GLOBAL_SEARCH_MAX_MESSAGE_FOR_MODULE' => 'Only the first 100 results are shown below. Please do Advanced Search if you are not satisfied with the result', // TODO: Review - 'LBL ACTION' => 'Action' , // TODO: Review - 'LBL_NOTE' => 'Note' , // TODO: Review - 'LBL_SELECT_OPTION' => 'Select an Option' , // TODO: Review - 'LBL_TOOLTIP' => 'Tooltip Management' , // TODO: Review - 'LBL_MODULE_SEQUENCE_NUMBERING' => '%s Numeração' , // TODO: Review - 'LBL_CUSTOM_FIELD_MAPPING' => 'Custom Field Mapping' , // TODO: Review - 'LBL_WEBFORMS' => 'WebForms' , // TODO: Review - 'SINGLE_Emails' => 'Email' , // TODO: Review - 'Emails' => 'Emails' , // TODO: Review - 'LBL_SELECT_EMAIL_IDS' => 'Select Email Addresses' , // TODO: Review - 'LBL_SUBJECT' => 'Subject' , // TODO: Review - 'LBL_ATTACHMENT' => 'Attachment' , // TODO: Review - 'LBL_BROWSE_CRM' => 'Browse CRM' , // TODO: Review - 'LBL_SEND' => 'Send' , // TODO: Review - 'LBL_SAVE_AS_DRAFT' => 'Save as Draft' , // TODO: Review - 'LBL_GO_TO_PREVIEW' => 'Go to Preview' , // TODO: Review - 'LBL_SELECT_EMAIL_TEMPLATE' => 'Select Email Template' , // TODO: Review - 'LBL_COMPOSE_EMAIL' => 'Compose Email' , // TODO: Review - 'LBL_CC' => 'Cc' , // TODO: Review - 'LBL_BCC' => 'Bcc' , // TODO: Review - 'LBL_ADD_CC' => 'Add Cc' , // TODO: Review - 'LBL_ADD_BCC' => 'Add Bcc' , // TODO: Review - 'LBL_MAX_UPLOAD_SIZE' => 'Maximum upload size is' , // TODO: Review - 'LBL_EXCEEDED' => 'Exceeded' , // TODO: Review + 'LBL_EXPORT_SELECTED_RECORDS' => 'Exportar Registros Selecionados', + 'LBL_EXPORT_RECORDS' => 'Exportar Registros', + 'LBL_NO_RECORD_SELECTED' => 'Nenhum registro selecionado.', + 'LBL_CAN_NOT_REMOVE_DEFAULT_WIDGET' => 'Não é possÃvel remover widget padrão', + 'LBL_CUSTOM_VIEW_NAME_DUPLICATES_EXIST' => 'filtro já existente', + 'LBL_TYPE_AND_SEARCH' => 'Type and Search', + 'LBL_EXPORT_CURRENCY_TOOLTIP_TEXT' => 'Para exportar os valores da Moeda para os itens da Linha, o Vtiger utilizará estas configurações para exportar esta moeda. Qualquer valor de moeda fora da tabela de itens, será exportado conforme definido nas preferências do Usuário (selecionado em \'Minhas Preferências\')', + 'LBL_EXPORT_LINEITEM_CURRENCY' => 'Escolha a Moeda (para Valores de Item da linha)', + 'LBL_EXPORT_USER_CURRENCY' => 'Minha Moeda preferida', + 'LBL_EXPORT_RECORD_CURRENCY' => 'Moeda especificada no Registro', + 'LBL_EXPORT_FORMAT' => 'Formato Exportação', + 'LBL_EXPORT_DATA' => 'Exportar Dados', + + 'LBL_CUSTOMIZE' => 'Customizar', + 'LBL_ADD_MANAGE_MODULES' => 'Adicionar/Administrar Módulos', + 'LBL_CUSTOMIZE_MAIN_MENU' => 'Customizar Menu Principal', + 'LBL_LABELS' => 'Etiquetas', + 'LBL_WORKFLOWS' => 'Workflows', + 'LBL_PICKLIST' => 'Lista de Opções', + + // Added Common Keys for all modules + 'Account Name' => 'Nome Organização', + 'Add Comment' => 'Adicionar Comentário', + 'Adjustment' => 'Ajuste', + 'Annual Revenue' => 'Receita Anual', + 'Apparel' => 'Vestuário', + 'Banking' => 'Banco', + 'Billing Address' => 'Endereço Faturamento', + 'Billing City' => 'Cidade Faturamento', + 'Billing Code' => 'CEP Faturamento', + 'Billing Country' => 'PaÃs Faturamento', + 'Billing Po Box' => 'Cx Postal Faturamento', + 'Billing State' => 'Estado Faturamento', + 'Biotechnology' => 'Biotecnologia', + + //for SO PO and Quotes + 'FedEx' => 'FedEx', + 'UPS' => 'ECT', + 'USPS' => 'Braspress', + 'DHL' => 'DHL', + 'BlueDart' => 'Cometa', + 'Carrier' => 'Transportador', + 'Category' => 'Categoria', + 'Chemicals' => 'QuÃmica', + 'City' => 'Cidade', + + 'Cold Call' => 'Cold Call', + 'Existing Customer' => 'Cliente Existente', + 'Self Generated' => 'Auto Gerado', + 'Employee' => 'Empregado', + 'Partner' => 'Parceiro', + 'Public Relations' => 'Relações Públicas', + 'Direct Mail' => 'Mala Direta', + 'Conference' => 'Conferência', + 'Trade Show' => 'Feira Negócios', + 'Web Site' => 'Web Site', + 'Word of mouth' => 'Boca a Boca', + 'Other' => 'Outro', + + //for leads and accounts + '--None--' => '--Nada--', + 'Acquired' => 'Adquirido', + 'Active' => 'Ativo', + 'Market Failed' => 'Perdido', + 'Project Cancelled' => 'Projeto Cancelado', + 'Shutdown' => 'Encerrado', + 'Apparel'=>'Vestuário', + 'Banking'=>'Banco', + 'Biotechnology'=>'Biotecnologia', + 'Chemicals'=>'QuÃmica', + 'Communications' => 'Comunicações', + 'Construction' => 'Construção', + 'Consulting' => 'Consultoria', + 'Education' => 'Educação', + 'Electronics' => 'Eletrônicos', + 'Energy' => 'Energia', + 'Engineering' => 'Engenharia', + 'Entertainment' => 'Entretenimento', + 'Environmental' => 'Meio Ambiente', + 'Finance' => 'Finanças', + 'Food & Beverage' => 'Alimentação e Bebidas', + 'Government' => 'Governo', + 'Healthcare' => 'Saúde', + 'Hospitality' => 'Hotéis', + 'Insurance' => 'Seguros', + 'Machinery' => 'Maquinaria', + 'Manufacturing' => 'Indústria', + 'Media' => 'MÃdia', + 'Not For Profit' => 'ONG', + 'Recreation' => 'Recreação', + 'Retail' => 'Varejo', + 'Shipping' => 'Entrega', + 'Technology' => 'Tecnologia', + 'Telecommunications' => 'Telecomunicações', + 'Transportation' => 'Transportes', + 'Utilities' => 'Serviço Público', + + 'Contact Name' => 'Nome Contato', + 'Conversion Rate' => 'Taxa Câmbio', + + 'Shipping Address' => 'Endereço Entrega', + 'Shipping City' => 'Cidade Entrega', + 'Shipping State' => 'Estado Entrega', + 'Shipping Code' => 'CEP Entrega', + 'Shipping Country' => 'PaÃs Entrega', + 'Shipping Po Box' => 'Cx Postal Entrega', + 'Country' => 'PaÃs', + 'Description' => 'Descrição', + + 'Created' => 'Criado', + 'Approved' => 'Aprovado', + 'Delivered' => 'Entregue', + 'Cancelled' => 'Cancelado', + + 'Currency' => 'Moeda', + 'LBL_BASE_CURRENCY' => 'Moeda Base', + + 'Discount Percent' => 'Percentual Desconto', + 'Discount Amount' => 'Valor Desconto', + 'Item Discount Amount' => 'Valor Desconto Item', + 'Net Price' => 'Preço LÃquido', + 'Item Discount Percent' => 'Percentual Desconto Item', + + 'Due Date' => 'Vencimento', + 'Due Date & Time' => 'Data e Hora Vencimento', + 'Email' => 'Email Principal', + 'Secondary Email' => 'Email Secundário', + 'Other Email' => 'Email Alternativo', + 'Email Opt Out' => 'Recusa Email', + 'Is Converted From Lead' => 'Convertido a partir do Lead', + 'Expected Close Date' => 'Previsão Fechamento', + 'Fax' => 'Fax', + + 'Last Name' => 'Sobrenome', + 'First Name' => 'Nome', + + 'High' => 'Alto', + 'Low' => 'Baixo', + 'In Progress' => 'Em Andamento', + + 'Subject' => 'Assunto', + 'Shipping Address'=>'Endereço Entrega', + 'Shipping Po Box'=>'Cx. Postal Entrega', + 'Shipping City'=>'Cidade Entrega', + 'Shipping State'=>'Etado Entrega', + 'Shipping Code'=>'CEP Entrega', + 'Shipping Country'=>'PaÃs Entrega', + 'Terms & Conditions' => 'Prazos e Condições', + 'Item Name' => 'Nome do Item', + 'Quantity' => 'Quantidade', + 'List Price' => 'Lista de Preço', + 'Image' => 'Image', + 'Purchase Cost' => 'Custo Compra', + 'Margin' => 'Margem', + 'Item Comment' => 'Comentário do Item', + 'Tax1' => 'Imposto1', + 'Tax2' => 'Imposto2', + 'Tax3' => 'Imposto3', + 'Excise Duty' => 'IPI', + 'Total' => 'Total', + 'Sub Total' => 'Sub Total', + 'Tax Type' => 'Tipo Imposto', + 'S&H Amount' => 'Valor Frete', + 'Status' => 'Status', + 'Vendor Name' => 'Fornecedor', + + 'LBL_ADDRESS_INFORMATION' => 'Detalhes Endereço', + 'LBL_DESCRIPTION_INFORMATION' => 'Descrição Detalhada', + 'LBL_TERMS_INFORMATION' => 'Prazos e Condições', + 'LBL_PRICING_INFORMATION' => 'Informação Preço Venda', + 'LBL_RELATED_PRODUCTS' => 'Detalhes do Produto', + 'LBL_REMINDER_INFORMATION' => 'Detalhes Lembrete', + + 'LBL_FOLDER_SAVED' => 'Pasta salva', + 'LBL_FOLDER_EXISTS' => 'Pasta já existente', + 'LBL_FOLDER_DELETED' => 'Pasta apagada', + 'LBL_EDIT_FOLDER' => 'Editar Pasta', + + 'Lead Source' => 'Fonte Lead', + 'Mobile' => 'Celular', + + 'Notify Owner' => 'Notificar Proprietário', + 'Other Phone' => 'Fone Alternativo', + 'Phone' => 'Telefone Principal', + + 'State' => 'Estado', + 'Po Box' => 'Cx Postal', + 'Postal Code' => 'CEP', + + 'Potential Name' => 'Nome Oportunidade', + 'Priority' => 'Prioridade', + + 'Product Name' => 'Nome Produto', + 'Rating' => 'Avaliação', + + 'Related To' => 'Relacionado à ', + 'Type' => 'Tipo', + + 'Reviewed' => 'Revisado', + 'Salutation' => 'Saudação', + 'Street' => 'Rua', + 'Support Start Date' => 'InÃcio Suporte', + 'Support Expiry Date' => 'Data Final Suporte', + 'Sales Start Date' => 'Data InÃcio Vendas', + 'Sales End Date' => 'Data Final Vendas', + + //Dashboard list of widgets translation + 'Open Ticktes' => 'Chamados Abertos', + 'LBL_SELECT_STATUS' => 'Selecionar Status', + 'LBL_BLANK' => '-Em branco-', + + //PageTitle translations + 'LBL_VTIGER_CRM_HONEST_OPEN_SOURCE' => 'Vtiger CRM Open Source', + + //Translations used in inventory modules for sopy address + 'SINGLE_Accounts' => 'Organização', + 'SINGLE_Contacts' => 'Contato', + + //Weekdays in 3 letters translations + 'LBL_Sun' => 'Dom', + 'LBL_Mon' => 'Seg', + 'LBL_Tue' => 'Ter', + 'LBL_Wed' => 'Qua', + 'LBL_Thu' => 'Qui', + 'LBL_Fri' => 'Sex', + 'LBL_Sat' => 'Sab', + + //Months in 3 letters translations + 'LBL_Jan' => 'Jan', + 'LBL_Feb' => 'Fev', + 'LBL_Mar' => 'Mar', + 'LBL_Apr' => 'Abr', + 'LBL_May' => 'Mai', + 'LBL_Jun' => 'Jun', + 'LBL_Jul' => 'Jul', + 'LBL_Aug' => 'Ago', + 'LBL_Sep' => 'Set', + 'LBL_Oct' => 'Out', + 'LBL_Nov' => 'Nov', + 'LBL_Dec' => 'Dez', + + 'LBL_CALENDAR_SETTINGS' => 'Configurações Agenda', + 'Reminder Interval' => 'Popup Intervalo Lembrete', + + //Translations used in inventory modules for address + 'SINGLE_Accounts' => 'Organização', + 'SINGLE_Contacts' => 'Contato', + 'HelpDesk' => 'Chamados', + 'LBL_TAG_CLOUD' => 'Tag Cloud', + + 'LBL_NO_RECORDS' => 'Nenhum Registro', + 'LBL_NO_RELATED' => 'Nenhum Relacionado', + 'LBL_GLOBAL_SEARCH_MAX_MESSAGE' => 'Somente os 100 primeiros resultados, de todos os módulos, serão exibidos abaixo. Para resultados especÃficos do módulo, por favor, selecione o respectivo módulo e pesquisa', + 'LBL_GLOBAL_SEARCH_MAX_MESSAGE_FOR_MODULE' => 'Somente os 100 primeiros resultados serão exibidos abaixo. Por favor, faça uma Pesquisa Avançada se você não está satisfeito com o resultado', + + // used in reports detail view + 'LBL_ACTION' => 'Ação', + 'LBL_NOTE' => 'Nota', + 'LBL_SELECT_OPTION' => 'Selecionar uma Opção', + + //Module Manager + 'LBL_TOOLTIP' => 'Gestão Dicas de Contexto', + 'LBL_MODULE_SEQUENCE_NUMBERING' => 'Numeração Sequencial', + 'LBL_CUSTOM_FIELD_MAPPING' => 'Mapeamento Campo Customizado', + 'LBL_WEBFORMS' => 'WebForms', + + //Compose Email Strings + 'SINGLE_Emails' => 'Email', + 'Emails' => 'Emails', + 'LBL_SELECT_EMAIL_IDS' => 'Selecionar Endereços de Email', + 'LBL_SUBJECT' => 'Assunto', + 'LBL_ATTACHMENT' => 'Anexo', + 'LBL_BROWSE_CRM' => 'Localizar CRM', + 'LBL_SEND' => 'Enviar', + 'LBL_SAVE_AS_DRAFT' => 'Salvar como Rascunho', + 'LBL_GO_TO_PREVIEW' => 'Ir para Visualização', + 'LBL_SELECT_EMAIL_TEMPLATE' => 'Selecionar Modelo Email', + 'LBL_COMPOSE_EMAIL' => 'Novo Email', + 'LBL_CC' => 'Cc', + 'LBL_BCC' => 'Bcc', + 'LBL_ADD_CC' => 'Adicionar Cc', + 'LBL_ADD_BCC' => 'Adicionar Bcc', + 'LBL_MAX_UPLOAD_SIZE' => 'Tamanho máximo de upload é', + 'LBL_EXCEEDED' => 'Excedido', + 'LBL_OPERATION_NOT_PERMITTED' => 'Operação não permitida', + 'LBL_MERGE' => 'Mesclar', + 'LBL_FIND_DUPLICATES' => 'Encontrar Duplicados', + 'LBL_MERGING_CRITERIA_SELECTION' => 'Selecionar Critérios Mesclagem', + 'LBL_AVAILABLE_FIELDS' => 'Campos DisponÃveis', + 'LBL_MERGE_RECORDS_DESCRIPTION' => 'O registro original será mantido após mesclagem. Você pode selecionar a coluna para manter o valor. + O outro registro será excluÃdo, mas a informação relacionada será mesclada.', + 'LBL_MERGE_RECORDS_IN' => 'Mesclar Registros em', + 'LBL_FIELDS' => 'Campos', + 'LBL_RECORD' => 'Registro', + 'LBL_NO_DUPLICATED_FOUND' => 'Nenhuma registro duplicado foi encontrado', + 'LBL_MERGE_SELECT' => 'Selecionar Mesclagem', + + //sbproducts translation + 'LBL_BACK_TO_PRODUCTS' => 'Retornar para Produtos', //Translations used for Export to Pdf - 'Valid Date' => 'Válido até', + 'Valid Date' => 'Data Validade', + 'Phone: ' => 'Telefone: ', + 'Issued Date' => 'Data Vencimento', + 'Shipping & Handling Charges' => 'Fretes', + 'Shipping & Handling Tax:' => 'Imposto Frete:', 'Discount' => 'Desconto', + 'Net Total' => 'Total LÃquido', 'Product Code' => 'Código Produto', - 'Customer Name' => 'Cliente', + 'Customer Name' => 'Nome Cliente', 'Price' => 'Preço', 'Tax:' => 'Imposto:', 'Contact Name' => 'Nome Contato', - 'Phone: ' => 'Telefone: ', + 'Grand Total:' => 'Total Geral:', 'Fax: ' => 'Fax: ', 'Website: ' => 'Website: ', - 'Issued Date' => 'Data Emissão', - 'Quantity' => 'quantidade', - 'Net Total' => 'total LÃquido', - 'Shipping & Handling Charges' => 'Frete', - 'Shipping & Handling Tax:' => 'Imposto Frete:', - 'Grand Total:' => 'Total Geral:', 'Tax' => 'Imposto', - 'LBL_ALPHABETS' => 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', + 'LBL_ALPHABETS' => 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z', //Realted tab strings - 'Service Contracts' => 'Contratos Serviço', + 'Service Contracts' => 'Contratos', 'Projects' => 'Projetos', - 'Sales Order' => 'Pedidos de Vendas', - 'Purchase Order' => 'Ordens de compra', - 'Payments' => 'Payments', - 'List and Campaigns' => 'List and Campaigns', - 'Project Tasks' => 'Project Tasks', - 'Project Milestones' => 'Project Milestones', + 'Sales Order' => 'Pedidos Vendas', + 'Purchase Order' => 'Pedidos Compra', + 'Payments' => 'Pagamentos', + 'List and Campaigns' => 'Lista e Campanhas', + 'Project Tasks' => 'Tarefas Projeto', + 'Project Milestones' => 'Milestone Projeto', - 'Labels Editor' => 'Labels Editor', + 'Labels Editor' => 'Editor Etiqueta', + 'LBL_IGNORE_EMPTY_VALUES' => 'Ignorar valores vazios', //Related tabs of Products - 'Product Bundles' => 'Product Bundles', - 'Parent Product' => 'Parent Product', - 'LBL_PRODUCT_BUNDLE' => 'Bundle produto', + 'Product Bundles' => 'Produto Composto', + 'Parent Product' => 'Produto Principal', + 'LBL_PRODUCT_BUNDLE' => 'Pacote Produto', 'LBL_EDIT_QUANTITY' => 'Editar Quantidade', 'LBL_ADD_TO_PRODUCTS' => 'Adicionar Produtos', - 'LBL_CUSTOMIZE_MAIN_MENU' => 'Personalize o Menu Principal',//TODO REVIEW - //PrintTemplate Links - 'Print' => 'Imprimir / exportar para PDF', - 'Print Templates' => 'Print Templates', //Todo Review - + 'LBL_MANAGE_USERS' => 'Gerenciar Usuários', + 'LBL_TRANSFER_OWNERSHIP' => 'Transferir Propriedade', + 'LBL_SELECT_RELATED_MODULES' => 'Selecionar Módulos Relacionados', + 'LBL_ASSIGNED_TO' => 'Designado a', //Comments Field Labels for Workflow - 'Comment' => 'Comentar', + 'Comment' => 'Comentário', 'Last Comment' => 'Último Comentário', - 'Last 5 Comments' => 'Últimos 5 comentários', - 'All Comments' => 'Todos os comentários', + 'Last 5 Comments' => 'Últimos 5 Comentários', + 'All Comments' => 'Todos os Comentários', //Feedback on removing old version - 'LBL_OLD_VERSION_REMOVED_SOON' => 'Nota importante no olhar Velho', - 'LBL_FEEDBACK_ON_REMOVING_OLD_VERSION' => 'Estamos felizes em compartilhar essa aparência antiga estará disponÃvel até fevereiro de 2014. Nós adicionamos os seguintes recursos para o novo visual recentemente <br><br> 1. Relatórios Pivot <br> 2. Gráficos feitos sob encomenda <br> 3. Busca Rápida em listas <br><br> Se você tiver sugestões sobre novo visual, por favor, compartilhe com a gente abaixo.', - 'LBL_FEEDBACK_PLACEHOLDER' => 'Compartilhe suas sugestões aqui ..', - 'LBL_SUBMIT_FEEDBACK' => 'Enviar resposta', - 'LBL_DONT_SHOW_AGAIN' => 'Não mostrar novamente', - 'LBL_CONTINUE_TO_OLD_LOOK' => 'Continue a olhar velho', - - 'LBL_TRANSFER_OWNERSHIP' => 'transferência de propriedade', - - //Products Popup View - 'NOT_A_BUNDLE' => 'Não é um pacote', - 'LBL_SUB_PRODUCTS' => 'Subprodutos', - 'LBL_MARK_AS_HELD' => 'Marcar como Realizada', - 'LBL_SMS_MAX_CHARACTERS_ALLOWED' => 'São permitidos no máximo 160 caracteres por mensagem de texto', - 'LBL_HIDE_COMPLETED_EVENTS' => 'Ocultar concluÃdas Calendário de Eventos', - 'LBL_SETUP_WEBFORMS' => 'Setup Webfroms' , - 'LBL_SPECIAL_OPTIONS' => 'Opções especiais', - 'LBL_PARENT_OWNER' => 'Pai Registro proprietário', - - // Recurring Invoice - 'Half-Yearly' => 'Semestral', - 'LBL_FULLSCREEN' => 'Ecrã Inteiro', - 'LBL_MODULE_DISABLED' => ' Módulo é desativada', - 'Organization Name' => 'Nome da Organização', - 'LBL_WEEK' => 'Semana', - //Convert Lead and Potential - 'LBL_CONVERT_ERROR_TITLE' => 'Modules Disabled' , - 'CANNOT_CONVERT' => 'Não pode ser Convertido' , - 'LBL_FOLLOWING_ARE_POSSIBLE_REASONS' => 'O seguinte pode ser uma das possÃveis razões', - 'LBL_MANDATORY_FIELDS_ARE_EMPTY' => 'Alguns dos valores dos campos obrigatórios estão vazios', - - 'LBL_ORIGIN' => 'Origem', - 'SENT' => 'CRM', - 'SAVED' => 'Rascunho', - 'MailManager' => 'Mail Manager', - 'MAILSCANNER' => 'Converter Correio', - 'LBL_SENDER_NAME' => 'Nome do remetente', - - 'Mobile Call' => 'Telefonar para celular', - 'Related To' => 'Relacionado a', - - - // SMSNotifier Phone Format Warning - 'LBL_PHONE_FORMAT_WARNING' => 'certifique-se que o número de telefone está no formato E.164 internacional', - 'LBL_PHONEFORMAT_WARNING_CONTENT' => 'O número E.164 formatação pode ter um máximo de quinze dÃgitos e são geralmente escrito da seguinte forma: [+] [código do paÃs] [número de assinantes, incluindo código de área] -                                          Por exemplo, para converter um número de telefone dos EUA (415 599 2671) para o formato E.164, seria preciso acrescentar o prefixo \'+\' eo código do paÃs (que é 1) na frente do número (+1 415 599 2671 ). No Reino Unido e muitos outros paÃses internacionalmente, discagem local exige a adição de um 0 na frente do número do assinante. No entanto, ao utilizar a formatação E.164, isto 0 deve ser removido. Um número, como 020 7183 8750 no Reino Unido seria formatado como +44 20 7183 8750.', - 'LBL_WARNING' => 'aviso', - - // Date Conditions - 'LBL_LESS_THAN_DAYS_AGO' => 'Menos de dias atrás', - 'LBL_MORE_THAN_DAYS_AGO' => 'Mais do que dias atrás', - 'LBL_IN_LESS_THAN' => 'Em menos de', - 'LBL_IN_MORE_THAN' => 'Em mais de', - 'LBL_DAYS_AGO' => 'Dias atrás', - 'LBL_DAYS_LATER' => 'Days Later', - 'LBL_LESS_THAN_HOURS_BEFORE' => 'Menos de horas antes', - 'LBL_LESS_THAN_HOURS_LATER' => 'Menos de horas depois', - 'LBL_MORE_THAN_HOURS_BEFORE' => 'Mais de horas antes', - 'LBL_MORE_THAN_HOURS_LATER' => 'Mais de Horas mais tarde', - 'LBL_INTERNAL_COMMENT' => 'Comentário interno', - 'LBL_NOTE_EXISTING_ATTACHMENTS_WILL_BE_REPLACED' => 'Nota: Os anexos existentes (imagens / arquivos) será substituÃdo', - //common standard fields - 'Created By' => 'Criado por', - 'LBL_SEND_PDF_FOR_SIGNING' => 'Enviar PDF por assinatura', - 'LBL_INCLUDE_SIGNATURE_INFO' => 'Conjunto de assinaturas em Minhas preferências será anexado à parte inferior do e-mail', - 'LBL_INCLUDE_SIGNATURE' => 'Incluir assinatura', - 'LBL_CLICK_HERE'=>'Clique aqui', - - // Social Module Strings - 'LBL_TWEETS' => 'Tweets', - 'LBL_FAVOURITES' => 'Favoritos', - 'LBL_FOLLOWING' => 'Seguinte', - 'LBL_FOLLOWERS' => 'Seguidores', - 'LBL_VIEW_FULL_PROFILE' => 'Visualizar perfil completo', - 'LBL_LOCATION' => 'Localização', - 'LBL_DESCRIPTION' => 'Descrição', - 'LBL_JOINED' => 'Cadastrado', - 'LBL_SEARCH_PROFILES_IN_TWITTER' => 'Perfis de pesquisa no Twitter', - 'LBL_CHOOSE_ANOTHER_PROFILE' => 'Escolha outro perfil', - 'LBL_ADD_TICKET' => 'Adicionar Ticket', - 'LBL_ADD_OPPORTUNITY' => 'Adicionar Opportunity', - 'LBL_RETWEET' => 'Retweetar', - 'LBL_RETWEETS' => 'Retweets', - 'LBL_UNDO_RETWEET' => 'Undo de Retweet', - 'LBL_FAVOURITE' => 'Favourite', - 'LBL_UNDO_FAVOURITE' => 'Undo favorito', - 'LBL_TWITTER_HANDLER_MSG' => 'Para ver resumo do perfil do contato e da história adicionar suas Twitter manipulador ou perfis de busca usando o link abaixo.', - 'LBL_ADD_EVENT_OR_TODO' => 'Adicionar Evento / Tarefa', - 'LBL_ADD_TICKET_CONTACT' => 'Adicionar Ticket + Contato', - 'LBL_ADD_OPPORTUNITY_CONTACT' => 'Adicionar Opportunity + Contato', - 'LBL_SOCIAL_TWITTER_WIDGET' => 'Twitter Atividade', - 'LBL_TWITTER_HANDLER_DETAILS' => 'Twitter Handler Detalhes', - 'LBL_PRIMARY_TWITTER' => 'Twitter Primária', - 'LBL_ADD_TWITTER_HANDLER' => 'Adicionar Twitter Handler', - 'LBL_VIEW_TICKET' => 'Ver Ticket', - 'LBL_VIEW_OPPORTUNITY' => 'Ver Opportunity', - 'LBL_CLICK_TO_SELECT_PROFILE' => 'Clique para selecionar o perfil', - // Module field to store Source of Record - 'Source' => 'Fonte', - - 'LBL_SELCT_EMAIL_RECIPIENTS' => 'Selecione E-mail Destinatários', - 'LBL_REMEMBER_MY_PREF' => 'Lembre-se de minha preferência', - 'LBL_RECIPIENT_PREFS' => 'Preferências destinatário' , - 'LBL_EMAIL_RECIPIENT_PREFS' => 'Preferências de e-mail do destinatário', - 'LBL_ERROR_SAVING_PREF' => 'Erro nas preferências de poupança. Por favor, tente mais tarde!', - 'LBL_NO_PREF_GIVEN' => 'Sem preferências dado!' , - 'LBL_PLEASE_ADD_EMAIL_FIELDS' => 'Por favor, adicionar campos de e-mail e tente novamente', - 'LBL_RECIPIENT_SAVE_MESSAGE' => 'Salvar preferências successful.These será tratado como endereços de email do destinatário quando você envia e-mail a partir deste módulo.', - - 'LBL_DEFAULT_REPLY_TO' => 'Padrão Responder a para Emails', - 'outgoing_server_from_email' => 'Servidor de saÃda de e-mail', - 'hepldesk_support_email' => 'Suporte Helpdesk Email-Id', - 'user_primary_email' => 'Usuário Principal Email', - 'LBL_DEFAULT_REPLY_TO_INFO' => "Esta definição é aplicável somente para e-mails diretos de CRM. Ela não afeta e-mails enviados a partir de fluxos de trabalho, campanhas de e-mail, etc.", - - 'LBL_INVALID_IMAGE' => 'Imagem inválido' , - 'LBL_NEXT' => 'Next' , - 'LBL_FINISH' => 'Acabamento' , - - 'VAT' => 'VAT', - 'Sales' => 'De vendas', + 'LBL_OLD_VERSION_REMOVED_SOON' => 'Nota importante sobre a versão antiga', + 'LBL_FEEDBACK_ON_REMOVING_OLD_VERSION' => 'Nós estamos felizes em informar que a versão antiga estará disponÃvel até Fevereiro de 2014. Adicionamos as seguintes funcionalidades na nova versão<br><br>1. Relatórios Pivot<br>2. Gráficos Customizados<br>3. Pesquisa Rápida em Listas<br><br>Se você tem sugestões de novo visual, por favor, compartilhe conosco abaixo.', + 'LBL_FEEDBACK_PLACEHOLDER' => 'Compartilha suas sugestões aqui..', + 'LBL_SUBMIT_FEEDBACK' => 'Enviar feedback', + 'LBL_DONT_SHOW_AGAIN' => 'Não exibir isto novamente', + 'LBL_CONTINUE_TO_OLD_LOOK' => 'Continuar com o visual Antigo', + 'LBL_LEFT_PANEL_SHOW_HIDE' => 'Painel Esquerdo Exibir/Ocultar', + + //Products Popup View + 'NOT_A_BUNDLE' => 'Não é um Pacote', + 'LBL_SUB_PRODUCTS' => 'Sub Produtos', + 'LBL_MARK_AS_HELD' => 'Marcar como Realizado', + 'LBL_MARK_AS_COMPLETED' => 'Marcar como ConcluÃdo', + 'LBL_SMS_MAX_CHARACTERS_ALLOWED' => 'São permitidos no máximo 160 caracteres para mensagens de texto', + 'LBL_HIDE_COMPLETED_EVENTS' => 'Ocultar Eventos ConcluÃdos', + 'LBL_SETUP_WEBFORMS' => 'Configurar Webforms', + 'LBL_SPECIAL_OPTIONS' => 'Opções Especiais', + 'LBL_PARENT_OWNER' => 'Proprietário Registro Pai', + 'LBL_PASSWORD_LINK_EXPIRED_OR_INVALID_PASSWORD' => 'O link da Senha experiou ou você digitou uma senha inválida', + + // Recurring Invoice + 'Half-Yearly' => 'Semestral', + 'LBL_FULLSCREEN' => 'Tela Cheia', + 'LBL_SETUP_WEBFORMS' => 'Configuração Webforms', + 'LBL_MODULE_DISABLED' => ' O Módulo está desabilitado', + 'Organization Name' => 'Nome Organização', + 'LBL_SOCIAL_TWITTER_WIDGET' => 'Atividade Twitter', + 'LBL_WEEK' => 'Semana', + //Convert Lead and Potential + 'CANNOT_CONVERT' => 'Não é possÃvel Converter', + 'LBL_CONVERT_ERROR_TITLE' => 'Módulos Desabilitados', + 'LBL_FOLLOWING_ARE_POSSIBLE_REASONS' => 'PossÃveis motivos inclusão:', + 'LBL_MANDATORY_FIELDS_ARE_EMPTY' => 'Os campos obrigatórios estão vazios', + + // SMSNotifier Phone Format Warning + 'LBL_PHONE_FORMAT_WARNING' => 'Por favor, certifique-se que o número esteja no formato internacional E.164', + 'LBL_PHONEFORMAT_WARNING_CONTENT' => 'O formato de número E.164 pode ter no máximo 15 dÃgitos e são usualmente escritos da seguinte forma: [+][código do paÃs][Número de assinante, incluindo código de área]. + Por exemplo, para converter um número de telefone dos EUA (415 599 2671) para o formato E.164, seria necessário adicionar o prefixo \'+\' e o código do paÃs (no caso 1) em frente ao número (+1 415 599 2671). No Reino Unido e muitos outros paÃses, para ligação local exige-se a adição do 0 na frente do número do assinante. Contudo, para utilizar o formato E.164, este 0 deve ser removido. Um número como 020 7183 8750 do Reino Unido, deveria ser formatado como +44 20 7183 8750.', + 'LBL_WARNING' => 'Atenção', + 'LBL_ORIGIN' => 'Origem', + 'SENT' => 'Enviado', + 'RECEIVED' => 'Recebido', + 'QUEUED' => 'Fila', + 'FAILED' => 'Falha', + 'SAVED' => 'Rascunho', + 'MailManager' => 'Gerenciador Mensagem', + 'MAILSCANNER' => 'Escâner Mensagem', + 'LBL_SENDER_NAME' => 'Nome Remetente', + 'SMSNotifier' => 'Notificador SMS', + + 'Mobile Call' => 'Chamada Celular', + 'LBL_NO_MORE_RESULTS' => 'Não há mais resultados!', + 'Related To' => 'Relacionado à ', + + // Date Conditions + 'LBL_LESS_THAN_DAYS_AGO' => 'Menos dias atrás', + 'LBL_MORE_THAN_DAYS_AGO' => 'Mais dias atrás', + 'LBL_IN_LESS_THAN' => 'É menos do que', + 'LBL_IN_MORE_THAN' => 'É mais do que', + 'LBL_DAYS_AGO' => 'Dias atrás', + 'LBL_DAYS_LATER' => 'Dias depois', + 'LBL_LESS_THAN_HOURS_BEFORE' => 'Menos de horas antes', + 'LBL_LESS_THAN_HOURS_LATER' => 'Menos de horas depois', + 'LBL_MORE_THAN_HOURS_BEFORE' => 'Mais do que horas antes', + 'LBL_MORE_THAN_HOURS_LATER' => 'Mais do que horas depois', + 'LBL_INTERNAL_COMMENT' => 'Comentário Interno', + 'LBL_NOTE_EXISTING_ATTACHMENTS_WILL_BE_REPLACED' => 'Nota: Caso exista anexos (imagens/arquivos) os mesmos serão substituÃdos', + + //common standard fields + 'Created By' => 'Criado Por', + 'LBL_SEND_PDF_FOR_SIGNING' => 'Enviar PDF para assinatura', + 'LBL_CLICK_TO_EDIT' => 'Clique para editar', + 'LBL_SIGNATURE_BLOCK' => 'Assinatura', + 'LBL_INCLUDE_SIGNATURE_INFO' => 'A configuração da Assinatura em Minhas Preferências será fixada no final do email', + 'LBL_INCLUDE_SIGNATURE' => 'Incluir Assinatura', + + // module builder created module first block label + 'LBL_BASIC_INFORMATION' => 'Informação Básica', + 'LBL_CLICK_HERE' => 'clique aqui', + + //Recipient preferences labels + 'LBL_SELCT_EMAIL_RECIPIENTS' => 'Selecionar Destinatários Email', + 'LBL_REMEMBER_MY_PREF' => 'Lembrar minha preferência', + 'LBL_RECIPIENT_PREFS' => 'Preferências Destinatário', + 'LBL_EMAIL_RECIPIENT_PREFS' => 'Preferências Destinatário Email', + 'LBL_ERROR_SAVING_PREF' => 'Erro ao salvar as preferências. Por favor, tente mais tarde!', + 'LBL_NO_PREF_GIVEN' => 'Nenhuma preferência dada!', + 'LBL_PLEASE_ADD_EMAIL_FIELDS' => 'Por favor, adicione campos de e-mail e tente novamente', + 'LBL_RECIPIENT_SAVE_MESSAGE' => 'Salva com sucesso. Essas preferências serão tratadas como endereços de e-mail do destinatário, quando você envia e-mails deste módulo.', + 'LBL_PREF_RESET_MESSAGE' => 'As preferências de e-mail do destinatário foram redefinidas!', + + 'LBL_COMPANY_DETAILS' => 'Detalhes da Empresa', + 'COMPANY_LOGO_HELP_TEXT' => 'Por favor, faça o upload da logo de sua empresa. <br>Além de exibir o logotipo da sua empresa no seu CRM,<br> + o nome de sua empresa e os detalhes do endereço serão utilizados nas <br>Campanhas de Email (obrigatório para atender regulamentações referentes a spam)<br> + e nas Cotações.', + 'COMPANY_LOGO_HELP_TEXT_2' => "Você poderá editar os detalhes da empresa depois a partir de <br> + 'Configurações CRM > Modelos > página Detalhes da Empresa' ", + 'LBL_CHOOSE_PREFERENCES' => 'Escolhas suas Preferências', + 'PREFERENCES_HELP_TEXT' => 'Moeda Base - Escolha sua Moeda principal. Se você utiliza múltiplas<br> + moedas, todos os valores serão convertidos para a moeda base e armazenados,<br> + utilizando a taxa de câmbio configurada no CRM.', + 'PREFERENCES_HELP_TEXT_2' => 'As preferências pessoais podem ser configuradas por cada Usuário em sua equipe.<br> + Estes incluem o Fuso Horário, Idioma, Formato de Data, Formato de Número.<br> + As referências do Formato de Número são utilizados para Moeda e outros <br> + campos de número no CRM<br> + Você pode editar suas preferência depois a partir de \'Nome Usuário > Minhas Preferências \'', + 'LBL_CANNOT_BE_CHANGED_LATER' => 'Não pode ser alterado depois', + 'IMPORT_CONTACTS_GOOGLE_HELP_TEXT' => 'Podemos capturar os Contatos do Google e <br> ativar a sincronização bidirecional para manter nossos<br> + Contatos do Vtiger e Contatos do Google (no grupo selecionado) atualizados.<br> + Clique sobre o botão para autorizar e obter os Contatos a partir do Google.', + 'IMPORT_CONTACTS_CSV_HELP_TEXT' => 'Você pode importar Contatos a partir de um arquivo CSV.', + 'IMPORT_CONTACTS_CSV_HELP_TEXT2' => 'Para importar Oportunidades, Leads e Chamados, por favor, acesse Ações > botão Importar em qualquer uma das + listas de visualização.', + 'LBL_DOEST_FIRST_ROW_HEADER' => 'A primeira linha do seu arquivo contém cabeçalhos nas colunas?', + 'LBL_SELECT_CSV_FILE' => 'Selecionar arquivo CSV', + 'LBL_START_IMPORTING' => 'Iniciar importação', + 'LBL_PRIMARY' => 'Primeiro', + 'LBL_GOOGLE_SYNC_INTIATED_MSG' => 'Sua importação foi agendada, seus Contatos serão importados em breve.<br> Ao seguir para a próxima etapa não interromperá a importação.', + 'LBL_IMPORT_SYNC_INTIATED_MSG' => 'Sua importação está em andamento. Você receberá um email assim que a importação for concluÃda.<br> Ao seguir para a próxima etapa não interromperá a importação.', + 'LBL_TELL_US_ABOUT_YOU' => 'Ajude-nos falando mais sobre sua Empresa', + 'TELL_US_ABOUT_YOU_HELP_TEXT' => 'Continuamos realizando melhorias no CRM, e <br> + sabendo melhor sobre nossos usuários ajuda-nos a priorizar as melhorias.', + 'TELL_US_ABOUT_YOU_HELP_TEXT_2' => 'Os dados enviados não serão revelados a ninguém <Br> + além do Vtiger.', + 'LBL_INVALID_IMAGE' => 'Imagem inválida', + 'LBL_IMPORT_CONTACTS' => 'Importar Contatos', + 'LBL_FROM_GOOGLE' => 'A partir do Google', + 'LBL_FROM_CSV' => 'A partir de arquivo CSV', + 'LBL_NEXT' => 'Próximo', + 'LBL_FINISH' => 'Final', + 'LBL_GET_CONTACTS_FROM_GOOGLE' => 'Obter Contatos do Google', + 'LBL_PHONE_NUMBER' => 'Número Telefone', + 'LBL_NUMBER_OF_EMPLOYEES' => 'Número de Empregados', + 'LBL_INDUSTRY' => 'Atividade', + 'LBL_HELP_DESK_EMAIL_HELP_TEXT' => 'As Notificações relacionadas ao Chamado serão enviadas a partir deste endereço de Email', + 'LBL_SOCIAL_DETAILS' => 'Link para redes sociais para encontrar novos clientes e responder a consultas', + 'LBL_SOCIAL_AUTHORIZE_HELP' => 'Conectar com sua conta twitter empresarial para postar suas mensagens e acompanhar engajamento', + 'LBL_SOCIAL_AUTHORIZE' => 'Conectar com Twitter', + 'LBL_SOCIAL_LINKED' => 'Seu Vtiger agora está vinculado', + 'LBL_ENTER_KEYWORDS_HELP' => 'O Vtiger escaneará e irá encontrar mensagens com estas palavras', + 'LBL_ENTER_KEYWORDS' => 'Digite Palavras Chave', + + // Social Module Strings + 'LBL_TWEETS' => 'Tweets', + 'LBL_FAVOURITES' => 'Favoritos', + 'LBL_FOLLOWING' => 'Seguindo', + 'LBL_FOLLOWERS' => 'Seguidores', + 'LBL_VIEW_FULL_PROFILE' => 'Visualizar Perfil completo', + 'LBL_LOCATION' => 'Localização', + 'LBL_DESCRIPTION' => 'Descrição', + 'LBL_JOINED' => 'Cadastrado', + 'LBL_SEARCH_PROFILES_IN_TWITTER' => 'Pesquisar Perfil no Twitter', + 'LBL_CHOOSE_ANOTHER_PROFILE' => 'Escolha Outro Perfil', + 'LBL_ADD_TICKET' => 'Adicionar Chamado', + 'LBL_ADD_OPPORTUNITY' => 'Adicionar Oportunidade', + 'LBL_RETWEET' => 'Retweet', + 'LBL_RETWEETS' => 'Retweets', + 'LBL_UNDO_RETWEET' => 'Desfazer Retweet', + 'LBL_FAVOURITE' => 'Favorito', + 'LBL_UNDO_FAVOURITE' => 'Desfazer Favorito', + 'LBL_TWITTER_HANDLER_MSG' => 'Para ver o resumo e histórico do Perfil deste Contato, adicione o Nome de Usuário do Twitter ou pesquise perfis utilizando o link abaixo.', + 'LBL_ADD_EVENT_OR_TODO' => 'Adicionar Evento/Tarefa', + 'LBL_ADD_TICKET_CONTACT' => 'Adicionar Chamado + Contato', + 'LBL_ADD_CASE_CONTACT' => 'Adicionar Caso + Contato', + 'LBL_ADD_OPPORTUNITY_CONTACT' => 'Adicionar Oportunidade + Contato', + 'LBL_TWITTER_HANDLER_DETAILS' => 'Detalhes do Nome Usuário Twitter', + 'LBL_PRIMARY_TWITTER' => 'Nome Usuário Twitter', + 'LBL_ADD_TWITTER_HANDLER' => 'Adicionar Nome Usuário Twitter', + 'LBL_VIEW_TICKET' => 'Visualizar Chamado', + 'LBL_VIEW_CASE' => 'Visualizar Caso', + 'LBL_VIEW_OPPORTUNITY' => 'Visualizar Oportunidade', + 'LBL_CLICK_TO_SELECT_PROFILE' => 'Clique para selecionar Perfil', + 'LBL_INVALID_IMAGE' => 'Imagem inválida', + 'LBL_NEXT' => 'Próximo', + 'LBL_FINISH' => 'Final', + // Module field to store Source of Record + 'Source' => 'Fonte', + + 'LBL_DEFAULT_REPLY_TO' => 'Responder para padrão para Emails', + 'outgoing_server_from_email' => 'Servidor Envio Email ', + 'hepldesk_support_email' => 'Email Suporte Helpdesk', + 'user_primary_email' => 'Email Principal do Usuário', + 'LBL_DEFAULT_REPLY_TO_INFO' => 'Esta configuração aplica-se somente para emails direto do CRM. Não terá impacto nos emails enviados a partir de workflows, campanhas de e-mail etc.', + 'search_in_all_fields' => 'Pesquisar Todos os Campos', + 'search_in_name_field' => 'Pesquisar no Nome do Campo', + 'LBL_LOOKUP_SEARCH_MODE_INFO' => 'Ex: No formulário de criação de Contatos, quando digitar texto na caixa do nome da organização, esta configuração irá controlar quais campos da Organização deverão ser pesquisados', + + 'VAT' => 'Imposto', + 'Sales' => 'Vendas', 'Service' => 'Serviço', - 'Pre Tax Total' => 'Pré fiscal total', + 'Pre Tax Total' => 'Total Antes Imposto', 'Received' => 'Recebido', - 'Balance' => 'EquilÃbrio', - 'S&H Amount' => 'Cobranças', - 'S&H Percent' => 'Impostos sobre os encargos', + 'Balance' => 'Saldo', + 'S&H Amount' => 'Encargos', + 'S&H Percent' => 'Impostos sobre Taxas', 'Tax Region' => 'Região Fiscal', - - 'SINGLE_Potentials' => 'Oportunidade', - 'SINGLE_HelpDesk' => 'Bilhete', + + //Singular Modulenames + 'SINGLE_Potentials' => 'Oportunidade', + 'SINGLE_HelpDesk' => 'Chamado', 'SINGLE_Accounts' => 'Organização', - 'SINGLE_Contacts' => 'Entre Em Contato', + 'SINGLE_Contacts' => 'Contato', 'SINGLE_Project' => 'Projeto', - 'LBL_ROLLUP_COMMENTS_INFO' => "Se roll up é definido como 'On' comentários sobre registros relacionados serão mostrados. Por exemplo, se você está vendo comentários sobre um registro de Organização, os comentários adicionados a Contatos relacionados, Oportunidades, Ingressos, .etc também seria exibido.", - 'LBL_ROLLUP_COMMENTS' => "Rollup Comments", - 'group' => 'Grupo', - 'individual' => 'Individual', - 'LBL_DOWNLOAD_FILE' => 'Baixar arquivo', - 'LBL_VIEW_FILE' => 'Ver ficheiro', - 'LBL_PREVIEW_NOT_AVAILABLE' => 'Pré-visualização não disponÃvel', - 'LBL_PREVIEW_SUPPORTED_FILES' => '<b> <strong> Tipos de arquivo suportados: </strong> </b> <br> <b> arquivos PDF </b> <br> <b> arquivos de texto - </b> txt, csv, ics<br> <b> Abrir arquivos de documentos - </b> texto do documento aberto (odt), documento aberto planilha (ODS) e apresentação documento aberto (ODP) <br> <b> arquivos multimÃdia - </b> arquivos de imagem, áudio e vÃdeo <br>', - 'Mailing Address' => 'Endereço De Correspondência', - 'Other Address' => 'Outro endereço', - 'LBL_PREVIOUS' => 'Anterior', - 'LBL_NEXT' => 'Próximo', - 'Workflows' => 'Os fluxos de trabalho', - 'Primary Twitter' => 'Twitter Primária', - - 'Engagement Score' => 'Engagement Pontuação' , - 'Click Count' => 'Clique Conde' , + 'LBL_ROLLUP_COMMENTS_INFO' => 'Se Rolar estiver definido como \'Ativo\', os Comentários em registros relacionados serão exibidos. + Por exemplo, se você estiver visualizando Comentários em um registro da Organização, os Comentários adicionados em Contatos, Oportunidades, Chamados,...etc. relacionados, também seriam exibidos.', + 'LBL_ROLLUP_COMMENTS' => 'Comentário Acumulados', + + //others + 'Engagement Score' => 'Pontuação Engajamento', + 'group' => 'grupo', + 'individual' => 'Individual', + 'LBL_VIEW_FILE' => 'Visualizar arquivo', + 'LBL_DOWNLOAD_FILE' => 'Download arquivo', + 'LBL_PREVIEW_NOT_AVAILABLE' => 'Visualização IndisponÃvel', + 'LBL_PREVIEW_SUPPORTED_FILES' => '<b><strong>Tipos de Arquivos Suportados: </strong></b><br><br><b>arquivos PDF</b><br><b>arquivos Texto - </b>txt,csv,ics<br><b>Arquivos Open Document - </b>texto open document (odt), planilha open document (ods) e apresentação open document (odp)<br><b>arquivos MultimÃdia - </b>arquivos imagem, áudio e video<br>', + 'Mailing Address' => 'Endereço Correspondência', + 'Other Address' => 'Outro Endereço', + 'LBL_PREVIOUS' => 'Anterior', + 'LBL_NEXT' => 'Próximo', + 'Workflows' => 'Workflows', + 'Primary Twitter' => 'Usuário Twitter', + + /* Vtiger7 Language Strings */ + 'LBL_CLICK_HERE_TO_SELECT_ALL_RECORDS' => 'Selecionar todos os registros nesta página', + 'LBL_CLICK_HERE_TO_MANAGE_LIST_COLUMNS' => 'Clique aqui para gerenciar colunas da Lista', + 'LBL_SHOW_MORE' => 'Exibir mais', + 'LBL_DISPLAYING_RESULTS' => 'Exibindo Resultados', + 'LBL_ADD_STAR' => 'Adicionar Estrela', + 'LBL_REMOVE_STAR' => 'Remover Estrela', + 'LBL_UPDATE_LIST' => 'Lista de Atualizações', + 'LBL_SHARE_THIS_LIST' => 'Compartilhar Lista', + 'LBL_ADD_USERS_ROLES' => 'Adicionar Usuários, Funções...', + 'LBL_LISTS' => 'Listas', + 'LBL_SEARCH_FOR_LIST' => 'Pesquisar Lista', + 'LBL_MY_LIST' => 'Minha Lista', + 'LBL_SHARED_LIST' => 'Lista Compartilhada', + 'LBL_MERGE_SELECTED_RECORDS' => 'Mesclar registros selecionados', + 'LBL_MATCH_CRITERIA' => 'Critério Busca Duplicados', + 'LBL_MATCH_FIELDS' => 'Campos de correspondência', + 'LBL_EDIT_CUSTOM' => 'Edita Lista', + 'LBL_SHOW_MAP' => 'Exibir Mapa', + 'LBL_ADD_TAB' => 'Adicionar Aba', + 'LBL_TAB_NAME' => 'Nome Painel', + 'LBL_SHARED_TAGS_ACCESS' => 'As Tags compartilhadas são acessÃveis por todos os Usuários no Vtiger', + 'LBL_GOTO_TAGS' => 'Vá para Configurações > Minhas Preferências > Minhas Tags, para Editar ou Apagar suas tags particulares', + 'LBL_UNLINK' => 'Remover link', + 'LBL_SWITCH_TO_OLD' => 'Alterar para versão antiga', + 'LBL_SLA_INFORMATION' => 'Informação SLA', + + //configure columns + 'LBL_UPDATE_LIST' => 'Lista Atualização', + 'LBL_CONFIG_COLUMNS' => 'Configurar Colunas', + 'LBL_SELECTED_FIELDS' => 'Campos selecionados', + 'LBL_AVAILABLE_FIELDS' => 'Campos disponÃveis', + 'LBL_SEARCH_FIELDS' => 'Campos de Pesquisa', + // Extensions - 'LBL_SYNC_LOG' => 'Sincronização Log', - 'LBL_SYNC_SETTINGS' => 'Configurações de Sincronização', - 'LBL_SYNC_NOW' => 'Sync Now', + 'ExtensionStore' => 'Loja Extensões', + 'LBL_EXTENSIONS' => 'Extensões', + 'LBL_SYNC_LOG' => 'Log Sincronização', + 'LBL_SYNC_SETTINGS' => 'Configurações Sincronização', + 'LBL_SYNC_NOW' => 'Sincronizar Agora', 'LBL_DATE' => 'Data', - 'LBL_TIME' => 'Tempo', - 'LBL_SKIPPED' => 'Ignorados', - 'vt_create' => 'Criado Vtiger', - 'vt_update' => 'Vtiger Atualizado', - 'vt_delete' => 'Vtiger Deleted', - 'vt_skip' => 'Vtiger Ignorados', - 'app_create' => 'Aplicativo Criado', - 'app_update' => 'Aplicativo Atualizado', - 'app_delete' => ' Aplicação Deleted', - 'app_skip' => 'Aplicação Ignorados', - 'LBL_DOWNLOAD_AS_CSV' => 'Baixar como CSV', - 'LBL_SOURCE_MODULE' => 'Módulo Fonte', - 'LBL_RECORD_NAME' => 'Registro de nome', - 'LBL_REASON' => 'Razão', - 'LBL_SELECT_MODULES_TO_SYNC' => 'Selecione os módulos para sincronizar', + 'LBL_TIME' => 'Hora', + 'LBL_SKIPPED' => 'Ignorado', + 'vt_create' => 'Registros Criados no Vtiger', + 'vt_update' => 'Registros Atualizados no Vtiger', + 'vt_delete' => 'Registros Apagados no Vtiger', + 'vt_skip' => 'Registros Ignorados no Vtiger', + 'app_create' => 'Registros Criados no %s', + 'app_update' => 'Registros Atualizados no %s', + 'app_delete' => 'Registros Apagados no %s', + 'app_skip' => 'Registros Ignorados no %s', + 'LBL_DOWNLOAD_AS_CSV' => 'Download como CSV', + 'LBL_SOURCE_MODULE' => 'Módulo fonte', + 'LBL_RECORD_NAME' => 'Nome Registro', + 'LBL_REASON' => 'Motivo', + 'LBL_SELECT_MODULES_TO_SYNC' => 'Selecionar módulos para sincronizar', 'LBL_DATA' => 'Dados', - 'LBL_ENABLE_SYNC' => 'Ativar sincronização', - 'LBL_FIELD_MAPPING' => 'Mapeamento de Campo', - 'LBL_SYNC_DIRECTION' => 'Sincronização Direction', - 'LBL_SYNC_BOTH_WAYS' => 'Sincronize Both Ways', - 'LBL_SAVE_SETTINGS' => 'Salvar configurações', - 'LBL_CONFIGURE' => 'Configurar', - 'LBL_VIEW' => 'Vista', - 'LBL_CHANGE_USER' => 'Alterar Usuário', - 'LBL_SELECT_COLOR' => 'selecione a cor', - 'LBL_CREATION' => 'Schaffung', - 'LBL_STARRED' => 'Estrelou', - 'LBL_UNSTARRED' => 'Removida a estrela', - 'LBL_EDIT_EMAIL_PREFERENCE_TOOLTIP' => 'Edite essas preferências de Configurações suspensa em detalhes ou lista de vista do módulo', - 'LBL_SYSTEM' =>'Sistema', + 'LBL_ENABLE_SYNC' => 'Habilitar Sincronização', + 'LBL_FIELD_MAPPING' => 'Mapeamento Campos', + 'LBL_SYNC_DIRECTION' => 'Direção Sincronização', + 'LBL_SYNC_BOTH_WAYS' => 'Sincronização Duas Vias', + 'LBL_SAVE_SETTINGS' => 'Salvar Configurações', + 'LBL_CONFIGURE' => 'Configurar', + 'LBL_VIEW' => 'Visualizar', + 'LBL_CHANGE_USER' => 'Mudar Usuário', + + 'LBL_CREATE_LIST' => 'Criar Nova Lista', + 'sent' => 'Enviado', + 'accepted' => 'Aceito', + 'SINGLE_Users' => 'Usuário', + 'LBL_RECENT_COMMENTS' => 'Comentários Recentes', + 'LBL_ENGAGEMENT_HISTORY' => 'Histórico Ponto Contato', + 'LBL_NO_ENGAGEMENTS_FOUND' => 'Nenhum Ponto Contato relacionado', + 'LBL_MARKETING' => 'MARKETING', + 'LBL_SALES' => 'VENDAS', + 'LBL_PROJECT' => 'PROJETOS', + 'LBL_TOOLS' => 'FERRAMENTAS', + 'LBL_TAGS' => 'Tags', + 'LBL_SHARE_TAGS' => 'Tags Pública', + 'LBL_SHARE_TAG' => 'Tag(s) Campartilhada(s)', + 'private' => 'particular', + 'Tags' => 'Tags', + 'public' => 'compartilhada', + 'Private/Shared' => 'Particular/Compartilhada', + 'LBL_TAG_FOR' => 'Tags para %s', + 'LBL_CURRENT_TAGS' => 'Tags Atuais', + 'LBL_CREATE_NEW_TAG' => 'Criar Nova Tag', + 'LBL_ADD_TAG' => 'Adicionar Tag', + 'LBL_REMOVE_TAG' => 'Remover Tag', + 'LBL_TAG_SEPERATOR_DESC' => 'Utilize vÃrgula para separar múltiplas tags', + 'LBL_ENTER_TAG_NAME' => 'Digite o nome da tag', + + 'LBL_SELECT_COLOR' => 'Selecionar Cor', + 'LBL_NO_TAG_EXISTS' => 'Nenhuam Tag existente', + 'LBL_ADD_NEW_TAG' => 'Adicionar Tag', + 'LBL_SELECT_EXISTING_TAG' => 'Digite aqui para selecionar uma tag existente', + 'LBL_CREATE_NEW_TAG' => 'Criar nova Tag', + 'LBL_ADD_OR_SELECT_TAG' => 'Adicionar/Selecionar Tag', + 'LBL_SELECT_FROM_AVAIL_TAG' => 'Selecionar a partir das tags disponÃveis', + 'LBL_MARKET_PLACE' => 'Mercado', + + 'LBL_SHARE_THIS_LIST' => 'Compartilhar a lista', + 'LBL_ADD_USERS_ROLES' => 'Adicionar Usuáros, Funções...', + 'EmailTemplates' => 'Modelos de Email', + 'LBL_BILLING' => 'Faturamento', + 'LBL_ENABLED' => 'Habilitado', + + //Title added for buttons + 'LBL_CREATE_FILTER' => 'Criar Filtro', + 'LBL_IS' => 'é', + 'LBL_CREATION' => 'criação', + 'LBL_UPLOAD' => 'Enviar', + 'LBL_ATTACH_FILES' => 'Arquivos anexos', + 'LBL_KEY_FIELDS' => 'Campos Chave', + 'LBL_ADD_TODO' => 'Adicionar Tarefa', + + 'LBL_VIEW_DETAILS' => 'Visualizar Detalhes', + + //Engagements History + 'LBL_HAPPENED_ON' => 'Aconteceu em', + 'LBL_HAPPENED' => 'Aconteceu', + 'LBL_TYPE' => 'Tipo', + 'LBL_STATUS' => 'Status', + 'LBL_CUSTOMER' => 'Relacionado a', + "LBL_SUMMARY" => "Resumo", + 'LBL_ENGAGEMENTS' => 'Pontos Contato', + + 'LBL_PLEASE_SELECT_ATLEAST_ONE_OPTION' => 'Selecione ao menos uma opção', + 'LBL_STARRED' => 'Deixar seguir', + 'LBL_UNSTARRED' => 'Seguir', + 'LBL_EDIT_EMAIL_PREFERENCE_TOOLTIP' => 'Editar estas preferências a partir do menu suspenso Configurações, no detalhes do módulo ou lista de visualização', + 'LBL_SYSTEM' => 'Sistema', + 'LBL_SHOW_MAP' => 'Exibir Mapa', + 'LBL_GOOGLE_MAP' => 'Mapa Google', + 'LBL_CREATION' => 'criação', + 'LBL_ADD_TODO' => 'Adicionar Tarefa', + + 'LBL_KEY_METRICS' => 'Métricas Chave', + + //Print template strings + 'LBL_TEMPLATE_NAME' => 'Nome Modelo', + 'LBL_MODULE' => 'Módulo', + 'LBL_IS_DEFAULT' => 'Módulo Padrão', + 'LBL_SELECT_RECORD_FIELD' => 'Selecionar Campo Registro', 'LBL_PREVIEW' => 'Visualização', - 'LBL_UNLINKED' => 'Unlinked', - 'Any' => 'Qualquer', + 'LBL_UNLINKED' => 'Link Removido', + + 'LBL_FOLLOW' => 'Seguir', + 'LBL_UNFOLLOW' => 'Deixar Seguir', + 'Any' => 'Nenhum', 'LBL_NA' => '-NA-', - 'LBL_DISABLED' => 'Desativado', - 'LBL_SHOW_MAP'=>'Visualizar Mapa', - - 'LBL_LINKED' => 'Ligado', - 'LBL_ADDING_NEW' => 'A adição de novos', - 'LBL_LESS' => 'Menos', - 'LBL_COMMENT' => 'Comentário', - 'LBL_NOT_STARRED' => 'Siga', - 'LBL_QUICK_VIEW' => 'Visualização Rápida', - 'LBL_NOTIFICATION_CENTER' => 'Centro De Notificação', - 'LBL_EDIT_REASON' => 'Editar razão', - 'LBL_CONTACT' => 'GESTÃO DE CONTACTOS', - 'LBL_NO_ATTACHMENTS' => 'Não Anexos', - 'LBL_REARRANGE_DASHBOARD_TABS' => 'Reorganizar As Guias', - 'LBL_DONE' => 'Feito', - 'LBL_DELETE_DASHBOARD_TAB' => 'Guia Excluir', - 'LBL_DASHBOARD_TAB_ALREADY_EXIST' => 'Guia Nome Já Existe', - 'LBL_TABS_LIMIT_EXCEEDED' => 'Desculpe! Não é possÃvel adicionar mais de 10 abas', - 'LBL_TODOS' => 'Tarefas', - 'LBL_VIDEOS' => 'VÃdeos', - 'LBL_SAME_TAG_EXISTS' => 'Duplicados de marca existe', - 'LBL_MAKE_PUBLIC' => 'Tornar Público', - 'LBL_PROFILE_PASSWORD' => 'Perfil / Senha', - 'LBL_CANT_MOVE_FROM_PUBLIC_TO_PRIVATE' => 'Não é capaz de mover de Público marca Privados de etiqueta.', - 'LBL_EDIT_TAG' => 'Editar Tag', - 'LBL_NO_TAG_EXISTS' => 'Nenhuma Marca Existe', - 'LBL_HISTORY' => 'Pontos de contato', - 'LBL_KEY_FIELD' => 'Campo Chave', - 'LBL_NAME_EMAIL' => 'Nome e e-Mail', - 'LBL_PLEASE_SELECT_MODULE' => 'Por favor, selecione qualquer módulo de pesquisa', - 'LBL_IS_REMOVED' => 'é Removido', - 'LBL_REASON_FOR_CHANGING_COMMENT' => 'Razão para alterar comentário', - 'LBL_APPLBL_NONEROVE' => 'Aprovar', - 'Add Note' => 'Adicionar Documento', - 'LBL_form' => 'a partir de', - 'LBL_to' => 'para', - 'LBL_DAY(S' => 'dia(s', - 'LBL_HOUR(S' => 'hora(s', - 'SINGLE_Users' => 'Utilizador', - 'LBL_NOTEPAD' => 'O bloco de notas', - 'LBL_NOTEPAD_NAME' => 'O Bloco De Notas Nome', - 'LBL_NOTEPAD_CONTENT' => 'Bloco De Notas De Conteúdo', - 'LBL_LAST_SAVED_ON' => 'Salvo pela última vez em', - 'Notebook' => 'O bloco de notas', - 'LBL_MY' => 'Meu', - 'LBL_IS_EMPTY' => 'está vazia', - 'LBL_MODIFIED' => 'Modificado', - 'Funnel Amount' => 'Valor Total por estágio de Vendas', - 'LBL_TYPE_AND_SEARCH' => 'Tipo de Pesquisa e', - 'LBL_CUSTOMIZE' => 'Personalizar:', - 'LBL_LABELS' => 'Etiquetas', - 'LBL_WORKFLOWS' => 'Fluxos de trabalho', - 'LBL_PICKLIST' => 'Listas de opções', - 'LBL_BLANK' => '-Em branco-', - 'Reminder Interval' => 'Pop-Up De Lembrete Intervalo', - 'LBL_ACTION' => 'Ação', - 'LBL_OPERATION_NOT_PERMITTED' => 'A operação não permitida', - 'LBL_MERGE' => 'Série', - 'LBL_MERGING_CRITERIA_SELECTION' => 'Mesclando Critérios De Seleção', - 'LBL_AVAILABLE_FIELDS' => 'Campos DisponÃveis', - 'LBL_MERGE_RECORDS_DESCRIPTION' => 'O registo primário será mantido após a fusão. Você pode selecionar a coluna para manter os valores. -O outro registro será excluÃdo, mas as informações relacionadas serão mescladas.', - 'LBL_MERGE_RECORDS_IN' => 'Mesclar Registros No', - 'LBL_FIELDS' => 'Campos', - 'LBL_RECORD' => 'Registro', - 'LBL_NO_DUPLICATED_FOUND' => 'Duplicatas não encontrado', - 'LBL_MERGE_SELECT' => 'Selecione Mesclar', - 'LBL_BACK_TO_PRODUCTS' => 'Voltar para produtos', - 'LBL_IGNORE_EMPTY_VALUES' => 'Ignorar valores vazios', - 'LBL_MANAGE_USERS' => 'Gerenciar Usuários', - 'LBL_SELECT_RELATED_MODULES' => 'Selecione Módulos Relacionados', - 'LBL_ASSIGNED_TO' => 'AtribuÃdo A', - 'LBL_LEFT_PANEL_SHOW_HIDE' => 'No Painel Esquerdo Mostrar/Ocultar', - 'LBL_PASSWORD_LINK_EXPIRED_OR_INVALID_PASSWORD' => 'Palavra-passe de ligação expirou ou você digitou palavra-passe inválida', - 'SMSNotifier' => 'SMS Notifier', - 'LBL_NO_MORE_RESULTS' => 'Sem mais resultados!', - 'LBL_CLICK_TO_EDIT' => 'Clique para editar', - 'LBL_SIGNATURE_BLOCK' => 'Assinatura', - 'LBL_BASIC_INFORMATION' => 'Informações Básicas', - 'LBL_PREF_RESET_MESSAGE' => 'Seu destinatário preferências de e-mail tiver sido reposto a zero!', - 'LBL_COMPANY_DETAILS' => 'Detalhes Da Empresa', - 'COMPANY_LOGO_HELP_TEXT' => 'Por favor, upload sua linda logotipo da empresa. <br>Além de mostrar o logotipo de sua empresa no CRM,<br> -o nome da empresa e detalhes de endereço são usadas em <br>Campanhas de e-Mail (necessário para atender span regulamentos<br> -e entre Aspas.', - 'COMPANY_LOGO_HELP_TEXT_2' => 'Você pode editar os detalhes da empresa, mais tarde, a partir de <br> -\'CRM Configurações > Modelos > Detalhes da Empresa\' página', - 'LBL_CHOOSE_PREFERENCES' => 'Escolha as suas Preferências', - 'PREFERENCES_HELP_TEXT' => 'A Moeda Base - Escolha a sua moeda principal. Se você usar vários<br> -moedas, todos os valores são convertidos para a moeda base e armazenados,<br> -usando a taxa de conversão configurado no CRM.', - 'PREFERENCES_HELP_TEXT_2' => 'Preferências pessoais podem ser configuradas por cada usuário em sua equipe.<br> -Estes incluem Fuso horário, Idioma, Formato de Data, o Formato de Número.<br> -O Formato de número de referências são usadas para Moedas e outros <br> -número de campos no CRM<br> -Você pode editar suas preferências, mais tarde, a partir de \'Nome de Usuário > Minhas Preferências \'', - 'LBL_CANNOT_BE_CHANGED_LATER' => 'Não pode ser alterado mais tarde', - 'IMPORT_CONTACTS_GOOGLE_HELP_TEXT' => 'Podemos trazer os contatos do Google e <br> você pode também habilitar o bi-sentido de sincronização para manter nosso<br> -Vtiger contatos e os contatos do Google no grupo selecionado atualizada.<br> -Clique no botão para autorizar e obter Contatos do Google.', - 'IMPORT_CONTACTS_CSV_HELP_TEXT' => 'Você pode importar Contatos de um arquivo CSV.', - 'IMPORT_CONTACTS_CSV_HELP_TEXT2' => 'Para as Oportunidades de Importação, Leva, Bilhetes, por favor, olhe para Ações > botão Importar em qualquer um dos -modos de exibição de lista.', - 'LBL_DOEST_FIRST_ROW_HEADER' => 'Faz primeira linha no seu arquivo contém cabeçalhos de coluna?', - 'LBL_SELECT_CSV_FILE' => 'Selecione o arquivo CSV', - 'LBL_START_IMPORTING' => 'Iniciar A Importação', - 'LBL_PRIMARY' => 'Principal', - 'LBL_GOOGLE_SYNC_INTIATED_MSG' => 'A importação for agendada, Seus contatos serão importados em breve.<br> de Prosseguir para a Próxima etapa, não irá interromper a importação.', - 'LBL_IMPORT_SYNC_INTIATED_MSG' => 'Sua importação está em andamento. Você receberá um e-mail quando a importação estiver concluÃda.<br> de Prosseguir para a Próxima etapa, não irá interromper a importação.', - 'LBL_TELL_US_ABOUT_YOU' => 'Ajude-nos a nos dizer sobre a sua Empresa', - 'TELL_US_ABOUT_YOU_HELP_TEXT' => 'Continuamos a fazer melhorias para o CRM, e <br> -sabendo de nossos clientes melhor irá ajudar-nos a priorizar melhorias.', - 'TELL_US_ABOUT_YOU_HELP_TEXT_2' => 'Os dados apresentados aqui não será revelada a ninguém <Br> -fora Vtiger.', - 'LBL_IMPORT_CONTACTS' => 'Importação De Contatos', - 'LBL_FROM_GOOGLE' => 'A Partir Do Google', - 'LBL_FROM_CSV' => 'A partir do Arquivo CSV', - 'LBL_GET_CONTACTS_FROM_GOOGLE' => 'Para Acessar Os Contatos Do Google', - 'LBL_PHONE_NUMBER' => 'Número De Telefone', - 'LBL_NUMBER_OF_EMPLOYEES' => 'Número de Funcionários', - 'LBL_INDUSTRY' => 'Indústria', - 'LBL_HELP_DESK_EMAIL_HELP_TEXT' => 'Bilhete relacionados com as notificações serão enviadas a partir deste endereço de e-Mail', - 'LBL_SOCIAL_DETAILS' => 'Link para redes sociais para encontrar novos clientes e responder a consultas', - 'LBL_SOCIAL_AUTHORIZE_HELP' => 'Conecte-se com sua empresa conta do twitter para postar mensagens e acompanhar o engajamento', - 'LBL_SOCIAL_AUTHORIZE' => 'Conectar com o Twitter', - 'LBL_SOCIAL_LINKED' => 'O Vtiger é agora associado à ', - 'LBL_ENTER_KEYWORDS_HELP' => 'Vtiger irá analisar o twitter e encontrar mensagens com estas palavras', - 'LBL_ENTER_KEYWORDS' => 'Introduza Palavras-Chave', - 'LBL_ADD_CASE_CONTACT' => 'Adicionar + Contacto', - 'LBL_VIEW_CASE' => 'Visualizar O Caso', - 'LBL_CLICK_HERE_TO_SELECT_ALL_RECORDS' => 'Selecionar todos os registros desta página', - 'LBL_CLICK_HERE_TO_MANAGE_LIST_COLUMNS' => 'Clique aqui para gerenciar a Lista de colunas', - 'LBL_SHOW_MORE' => 'Mostrar mais', - 'LBL_DISPLAYING_RESULTS' => 'Exibindo Resultados', - 'LBL_ADD_STAR' => 'Adicionar Estrelas', - 'LBL_REMOVE_STAR' => 'Remover Estrelas', - 'LBL_UPDATE_LIST' => 'Lista De Atualização', - 'LBL_SHARE_THIS_LIST' => 'Compartilhar lista', - 'LBL_ADD_USERS_ROLES' => 'Adicionar Usuários, Papéis...', - 'LBL_LISTS' => 'Listas', - 'LBL_SEARCH_FOR_LIST' => 'Pesquise Lista', - 'LBL_MY_LIST' => 'Minha Lista', - 'LBL_SHARED_LIST' => 'Lista Compartilhada', - 'LBL_MERGE_SELECTED_RECORDS' => 'Mesclar registros selecionados', - 'LBL_MATCH_CRITERIA' => 'Duplicar Critérios De Pesquisa', - 'LBL_MATCH_FIELDS' => 'Campos De Correspondência', - 'LBL_EDIT_CUSTOM' => 'Editar Lista', - 'LBL_ADD_TAB' => 'Adicionar Guia', - 'LBL_TAB_NAME' => 'Nome Da Guia', - 'LBL_SHARED_TAGS_ACCESS' => 'Compartilhado tags são acessÃveis por todos os usuários no Vtiger', - 'LBL_GOTO_TAGS' => 'Vá para Configurações > Minhas preferências > Minha Tags para Editar ou Apagar as suas marcas particulares', - 'LBL_UNLINK' => 'Desvincular', - 'LBL_SWITCH_TO_OLD' => 'Mudar para a versão antiga', - 'LBL_CONFIG_COLUMNS' => 'Configurar Colunas', - 'LBL_SELECTED_FIELDS' => 'Campos Selecionados', - 'LBL_SEARCH_FIELDS' => 'Campos De Busca', - 'ExtensionStore' => 'Extensões De Armazenamento', - 'LBL_EXTENSIONS' => 'Extensões', - 'LBL_CREATE_LIST' => 'Criar uma Nova Lista', - 'sent' => 'Enviado', - 'accepted' => 'Aceito', - 'LBL_RECENT_COMMENTS' => 'Comentários Recentes', - 'LBL_ENGAGEMENT_HISTORY' => 'Touchpoint História', - 'LBL_NO_ENGAGEMENTS_FOUND' => 'Não há pontos de contato relacionadas', - 'LBL_MARKETING' => 'MARKETING', - 'LBL_SALES' => 'VENDAS', - 'LBL_PROJECT' => 'PROJETOS', - 'LBL_TAGS' => 'Tags', - 'LBL_SHARE_TAGS' => 'As Marcas Públicas', - 'LBL_SHARE_TAG' => 'De Ações Com Tag', - 'LBL_TAG_FOR' => 'Tag Para %s', - 'LBL_CURRENT_TAGS' => 'Tags Atuais', - 'LBL_CREATE_NEW_TAG' => 'Criar nova tag', - 'LBL_ADD_TAG' => 'Adicionar A Etiqueta', - 'LBL_REMOVE_TAG' => 'Remover Marca', - 'LBL_TAG_SEPARATOR_DESC' => 'Use vÃrgula para separar tags', - 'LBL_ENTER_TAG_NAME' => 'Insira nome da marca', - 'LBL_ADD_NEW_TAG' => 'Adicionar A Etiqueta', - 'LBL_SELECT_EXISTING_TAG' => 'Digite aqui para selecionar uma tag existente', - 'LBL_ADD_OR_SELECT_TAG' => 'Adicionar/Tag Seleccionar', - 'LBL_SELECT_FROM_AVAIL_TAG' => 'Selecione a partir de tags disponÃveis', - 'LBL_MARKET_PLACE' => 'Mercado', - 'EmailTemplates' => 'Modelos De E-Mail', - 'LBL_BILLING' => 'Faturamento', - 'LBL_ENABLED' => 'Habilitado', - 'LBL_CREATE_FILTER' => 'Criar Filtro', - 'LBL_IS' => 'é', - 'LBL_UPLOAD' => 'Upload', - 'LBL_ATTACH_FILES' => 'Anexar Arquivos', - 'LBL_KEY_FIELDS' => 'Campos De Chave', - 'LBL_ADD_TODO' => 'Adicionar Tarefa', - 'LBL_VIEW_DETAILS' => 'Ver Detalhes', - 'LBL_HAPPENED_ON' => 'Aconteceu No', - 'LBL_HAPPENED' => 'Aconteceu', - 'LBL_TYPE' => 'Tipo', - 'LBL_STATUS' => 'Estado', - 'LBL_CUSTOMER' => 'Relacionados', - 'LBL_ENGAGEMENTS' => 'Pontos de contato', - 'LBL_PLEASE_SELECT_ATLEAST_ONE_OPTION' => 'Por favor seleccione pelo menos uma opção', - 'LBL_GOOGLE_MAP' => 'Google Mapa', - 'LBL_KEY_METRICS' => 'Principais Métricas', - 'LBL_TEMPLATE_NAME' => 'Nome Do Modelo', - 'LBL_MODULE' => 'Módulo', - 'LBL_IS_DEFAULT' => 'Modelo Padrão', - 'LBL_SELECT_RECORD_FIELD' => 'Selecione O Campo De Registro', - 'LBL_FOLLOW' => 'Siga', - 'LBL_UNFOLLOW' => 'Deixar de seguir', - 'LBL_HELP_ANSWERS' => 'Respostas', - 'LBL_HELP_ARTICLES' => 'Artigos', - 'LBL_HELP_TOUR' => 'Passeio', - 'LBL_NO_HELP_ARTICLE_FOUND' => 'Desculpe, não há nenhum Artigo encontrado', - 'LBL_HELP_SEARCH' => 'Procurar Ajuda', - 'LBL_HELP_BROWSE_ALL' => 'Procurar todos os', - 'LBL_EXPORT_FILE_NAME' => 'Nome De Ficheiro De Exportação', - 'LBL_EXTENSION_NOT_ALLOWED_FOR_NONADMIN' => '%s Sync é permitida apenas para usuários admin', - 'SINGLE_Invoice' => 'Fatura', - 'SINGLE_SalesOrder' => 'Ordem De Venda', - 'SINGLE_PurchaseOrder' => 'Ordem De Compra', - 'SINGLE_Quotes' => 'Cotação', - 'LBL_POST_YOUR_COMMENT_HERE' => 'Enviar seu comentário aqui', - 'LBL_CLICK_TO_CALL' => 'Clique-para-Chamar', - 'LBL_SHOW_TOTAL_NUMBER_OF_RECORDS' => 'Clique para obter o total de contagens de registro', - 'LBL_GENERAL_FIELDS' => 'Campos Gerais', - 'LBL_ROLL_UP' => 'Roll-up', - 'LBL_TOUCH_POINTS' => 'Pontos de contato', - 'LBL_EMAIL_SUPPORT' => 'Suporte Por E-Mail' , - 'LBL_NO_ENTITIES_FOUND' => 'Não, %s não encontrado' , - - 'LBL_DAY' => 'dia', - 'LBL_HOUR' => 'hora', - 'LBL_LIST_VIEW' => 'Modo De Exibição De Lista', - 'LBL_THUMBNAIL_VIEW' => 'A Vista De Miniatura', - 'LBL_CHART_VIEW' => 'Modo De Exibição De Gráfico', - - - 'LBL_DAY(S)' => 'dia(s)', - 'LBL_HOUR(S)' => 'hora(s)', - 'LBL_SLA_INFORMATION' => 'SLA Informações', - 'LBL_TO_USE_SWITCH_TO_NEW_LOOK' => 'Para usar o <b>%s</b>, recomendamos que você mude para olhar novo.', - 'LBL_DELETE_USER_CONFIRMATION' => 'Quando um usuário é excluÃdo, o usuário será marcado como "inativo" e não há novos registros pode ser atribuÃdo ao usuário, eo usuário não será capaz de login. Tem certeza de que deseja excluir?', + 'LBL_DISABLED' => 'Desabilitado', + + //help + 'LBL_HELP_ANSWERS' => 'Respostas', + 'LBL_HELP_ARTICLES' => 'Artigos', + 'LBL_HELP_TOUR' => 'Tour', + 'LBL_NO_HELP_ARTICLE_FOUND' => 'Desculpe, nenhum Artigo foi encontrado', + 'LBL_HELP_SEARCH' => 'Busca Ajuda', + 'LBL_HELP_BROWSE_ALL' => 'Procurar tudo', + + 'LBL_EXPORT_FILE_NAME' => 'Exportar Nome Arquivo', + 'LBL_EXTENSION_NOT_ALLOWED_FOR_NONADMIN' => '%s Sincronização permitida somente para Usuáros admin', + 'SINGLE_Invoice' => 'Fatura', + 'SINGLE_SalesOrder' => 'Pedido Vendas', + 'SINGLE_PurchaseOrder' => 'Pedido Compras', + 'SINGLE_Quotes' => 'Cotação', + 'LBL_POST_YOUR_COMMENT_HERE' => 'Publique seu Comentário aqui', + // Phone Calls + 'LBL_CLICK_TO_CALL' => 'Click-to-Call', + 'LBL_SHOW_TOTAL_NUMBER_OF_RECORDS' => 'Clique para este tamanho de lista', + + 'LBL_GENERAL_FIELDS' => 'Campos Gerais', + 'LBL_ROLL_UP' => 'Rolar', + + 'LBL_TOUCH_POINTS' => 'Pontos Contatos', + 'LBL_HISTORY' => 'Pontos Contatos', + 'LBL_ENGAGEMENT_HISTORY' => 'Histórico Pontos Contatos', + 'LBL_SETTINGS' => 'Configurações', + + //List View and thumbnail view button labels + 'LBL_LIST_VIEW' => 'Lista Visualização', + 'LBL_THUMBNAIL_VIEW' => 'Visualização Miniatura', + 'LBL_CHART_VIEW' => 'Visualização Gráfico', + 'LBL_EMAIL_SUPPORT' => 'Suporte Email', + 'LBL_NO_ENTITIES_FOUND' => 'Nenhum(a) %s encontrado(a)', + 'LBL_TRANSFER_ALL_CASES_TO' => 'Transferir Todos os Casos para', + 'LBL_SLA_TO_BE_DELETED' => 'SLA a ser Apagada', + 'LBL_TO_USE_SWITCH_TO_NEW_LOOK' => 'Para utilizar <b>%s</b>, recomendamos que mude para novo visual.', + 'LBL_INTERNAL_COMMENT_INFO' => 'Se a caixa de seleção do Comentário interno estiver habilitada, o Comentário será visualizado somente por Usuários do CRM. Para notificar clientes (através de workflows configurados ou Portal do Cliente), deixe esta caixa de seleção desabilitada', + 'LBL_CHANGE' => 'Mudar', + 'LBL_REVOKE_ACCESS' => 'Revogar Acesso', + 'GOOGLE_REVOKE_ACCESS_MESSAGE' => 'Ao clicar aqui será removida a autenticação do Google existente para Contatos e Agenda. Este procedimento não irá apagar nenhum dos registros já sincronizado.', + 'OFFICE_REVOKE_ACCESS_MESSAGE' => 'Ao clicar aqui serão removida a autenticação do Office365 existente para Contatos, Agenda de Emails. Este procedimento não irá apagar nenhum dos registros já sincronizado.', + 'LBL_MENU' => 'Menu', + 'LBL_EMAIL_DOMAIN_HELPTEXT' => 'O campo DomÃnio Email será utilizado para combinar Casos e Contatos criados a partir de emails.' + . 'Por exemplo, se chegar um novo e-mail para o Suporte, vindo de john@apple.com, o mesmo seria relacionado à Organização que tivesse' + . 'apple.com no campo domÃnio email. Múltiplos domÃnios deveriam ser separados por virgulas', + 'LBL_START_GUIDED_TOUR' => 'Iniciar Tour Guiado', + 'LBL_SHARED_LIST_NON_ADMIN_MESSAGE' => 'Este é uma Lista Compartilhada. Entre em contato com o Administrado do CRM para configurar as colunas para a lista Todos', + 'LBL_SHARED_LIST_OWNER_MESSAGE' => 'Esta é uma lista compartilhada. Contate %s para alterar as coluas desta lista', + 'LBL_SHARED_LIST_NON_ADMIN_MESSAGE' => 'This is a Shared list. Please contact your CRM Administrator to configure columns for All list', + + 'Mr.' => 'Sr.', + 'Ms.' => 'Sra.', + 'Mrs.' => 'Srta.', + 'Dr.' => 'Dr.', + 'Prof.' => 'Prof.', + 'SINGLE_Cases' => 'Caso', + 'LBL_TAX_MODE_INFO' => 'Se Individual, os Impostos serão aplicados a partir do cadastro do Produto. Se Grupo, os Impostos serão aplicados a partir das configurações Globais.', + 'LBL_CURRENCY_INFO' => 'O valores serão alterados para a moeda selecionada com base na taxa de câmbio configurada.', + 'LBL_TAX_REGION_INFO' => 'Para Impostos variáveis, a alÃquota do Imposto será baseada na Região Fiscal selecionada.', + 'LBL_TAX_CONFIGURE' => 'Configuração da Região Fiscal', + 'LBL_SEND_MSG_TO_SUPPORT' => 'Enviar email para Suporte', + 'LBL_CHAT_WITH_SUPPORT' => 'Chat Online com Suporte CRM', + + 'LBL_ROLES' => 'Funções', + 'LBL_ROLEANDSUBORDINATE' => 'Função e Subordinados', + 'LBL_YOUR_LEARNING_SCORE' => 'Pontuação do seu conhecimento CRM', + 'LBL_SWITCH_TO_VTIGER7_NOW' => 'Mude para Vtiger 7 até 15 de Fevereiro', + 'LBL_VTIGER6_RETIREMENT_NOTICE' => 'Esta versão será descontinuada em 15 de Fevereiro de 2016', + 'ModTracker' => 'Atualizações', + 'LBL_MAIL_SENT_SUCCESSFULLY' => 'Mensagem Enviada com Sucesso', + 'LBL_FAILED_TO_SEND' => 'Falha ao Enviar', + + 'LBL_ESSENTIALS' => 'Essenciais', + 'LBL_ALL_SETTINGS' => 'Todas as Configurações', + 'On' => 'Ativo', + 'LBL_OPEN_IN_NEW_TAB' => 'Abrir em nova aba', + 'LBL_DELETE_FOREVER' => 'Apara para sempre', + 'LBL_PLEASE_CLICK_ON_EDIT_TO_ADD_NOTE' => 'Clique em editar para adicionar notas aqui..', + 'LBL_PLEASE_ENTER_YOUR_NOTE' => 'Digite suas notas aqui..', + 'LBL_PORTAL' => 'Portal', + 'LBL_SESSION' => 'Sessão', + 'LBL_SESSIONS' => 'Sessões', + 'week days later' => 'dias úteis depois', + 'more than week days later' => 'mais do que dias úteis depois', + 'less than week days later' => 'menos do que dias úteis depois', + 'week days ago' => 'dias úteis atrás', + 'more than week days ago' => 'mais do que dias úteis atrás', + 'less than week days ago' => 'menos do que dias úteis atrás', + + 'LBL_DUPLICATES' => 'Duplicados', + 'LBL_DUPLICATES_DETECTED' => 'Duplicado(s) apagados!', + 'LBL_DUPLICATES_FOUND_MESSAGE' => 'Este %s não pode ser salvo um vez que existe duplicado %s no Vtiger com valores correspondentes para %s.', + 'LBL_VTIGER_NOTIFICATION' => 'Mensagem de: Notificações Sistema Vtiger', + 'LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS' => 'Os seguintes %s não podem ser salvos a partir do "%s" Workflow, como outro %s existe com os mesmos valores.', + 'LBL_DUPLICATION_FAILURE_FROM_WEBFORMS' => 'Os seguintes %s não podem ser salvos a partir do "%s" Webform, como outro %s existe com os mesmos valores.', + 'LBL_DUPLICATION_FAILURE_FOR_ADMIN' => 'Você pode %s para modificar as regras de prevenção de duplicados.', + 'LBL_DUPLICATION_FAILURE_FOR_NON_ADMIN' => 'Entre em contato com seu Administrador para revisar as regras de duplicados', + 'LBL_DUPLICATE_RECORD_LISTS' => 'Duplicado %s :', + 'LBL_COLUMNS_ADDED' => 'de %s colunas adicionadas', + 'LBL_SHOW_ALL' => 'Exibir todos', + 'LBL_LanguageEditor_WEBTITLE' => 'Editor etiquetas', + 'LBL_TAX_CALCULATIONS_WEBTITLE' => 'Gerenciamento Impostos', + 'LBL_Tags_WEBTITLE' => 'Minhas Tags', + 'LBL_HIDE' => 'Ocultar', + 'LBL_PRINT' => 'Imprimir', + 'LBL_FORWARD' => 'Avançar', + 'LBL_NO_DEDUCTED_TAX' => 'Sem impostos deduzidos', + 'LBL_CLICK_TO_CONFIGURE' => 'Clique aqui para configurar', + 'LBL_KANBAN_VIEW_INFO' => 'A exibição Kanban mostra somente as Oportunidades que combinam as condições desta lista', + 'LBL_CUSTOM_FIELDS_MAX_LIMIT' => 'Você pode adicionar somente o máximo de %s campos customizados', + 'LBL_EXCEEDED_MODULE_RECORD_LIMIT' => '%s limite (%s) registros excedeu', + 'LBL_EXCEEDED_MODULE_RECORD_LIMIT_TEXT' => 'Verificamos que você tem mais do que %s registro em %s. <br> Excedeu o limite máximo desta edição. <br>Remova os registros excedidos e tente novamente', + 'LBL_TEMPLATE_INFO_PART1' => 'Para visualizar todos os modelos ou modelos de outros módulos, digite o nome do módulo ou "Todos" na caixa de pesquisa Nome do Módulo.', + 'LBL_TEMPLATE_INFO_PART2' => 'Se os Destinatários no campo PARA não forem do mesmo Módulo que o Modelo, o rastreamento não será habilitado para esses Destinatários e os campos de mesclagem não serão mesclados.', + 'LBL_HIDDEN_BECAUSE_OF_DEPENDENCY' => 'O campo está oculto por causa de regra de dependência', + 'MAILCHIMP_REVOKE_ACCESS_MESSAGE' => 'Ao clicar, será removida a autenticação MailChimp existente. Este procedimento não irá apagar nenhum registro já sincronizado.', + // Added for Event Forms + 'LBL_VIEW_ANSWERS' => 'Visualizar respostas', + 'LBL_ANSWERS' => 'Respostas', + + //Default sort order translations + 'LBL_DEFAULT_SORT_ORDER' => 'Coluna de ordenação padrão e ordem de classificação', + 'LBL_SELECT_COLUMN' => 'Selecionar Coluna', + 'LBL_SELECT_SORT_ORDER' => 'Selecionar Ordem de Classificação', + 'LBL_ASCENDING' => 'Ascendente', + 'LBL_DESCENDING' => 'Descendente', + 'LBL_DEFAULT_SORT_MESSAGE' => 'A lista é sempre classifica nesta coluna por padrão, para cada nova sessão do usuário.', + 'LBL_QUEUED' => 'Enfileiradas', + // End + //Added for Inbox + 'LBL_EMAILS' => 'Emails', + 'LBL_CONVERSATIONS' => 'Conversação', + 'LBL_FROM_DISABLED_MESSAGE' => 'O servidor de correio selecionado na página de configurações do Servidor Envio Mensagens, não permite que o endereço De seja alterado.', + // End + 'LBL_MODULE_MANDATORY' => 'O Módulo é obrigatório', + 'Online' => 'Online', + 'Busy' => 'Ocupado', + 'LBL_BETA' => 'BETA', + 'JS_SHARED_WITH' => 'Compartilhado com', + 'LBL_REPLY_TO' => 'Responder para', + 'LBL_MODULE_ASSIGNMENT_RULES' => '%s Regras de Atribuição', + + 'LBL_RECENT_UPDATES' => 'Atualizações recentes', + 'LBL_VIEW_UPDATES_IN_DETAIL' => 'Ler Mais...', + 'LBL_DEFAULT_DASHBOARD_TOOLTIP' => 'Tornar este Painel como padrão, reordenando-o como primeira aba!', + ); $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', - '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 values', - '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', // TODO: Review - 'JS_PLEASE_ENTER_VALID_DATE' => 'Please Enter Valid Date' , // TODO: Review - 'JS_PLEASE_ENTER_VALID_TIME' => 'Please Enter Valid Time' , // TODO: Review - 'JS_INVALID_PAGE_NUMBER' => 'Invalid Page Number' , // TODO: Review - 'INVALID_NUMBER_OF' => 'Invalid number' , - 'INVALID_NUMBER' => 'Invalid number' , // TODO: Review - 'JS_LBL_ARE_YOU_SURE_YOU_WANT_TO_DELETE' => 'Are you sure that you want to delete?', - 'OVERWRITE_EXISTING_MSG1' => 'Overwrite the existing address with the selected address?', - 'OVERWRITE_EXISTING_MSG2' => 'Address Details' , - 'SINGLE_Accounts' => 'Organization' , - 'SINGLE_Contacts' => 'Contact' , - 'LBL_DELETE_CONFIRMATION' => 'Tem certeza de que deseja excluir?', - 'LBL_MASS_DELETE_CONFIRMATION' => 'Are you sure you want to delete the selected Records?', - 'JS_LBL_SAVE' => 'Save' , - 'JS_LBL_CANCEL' => 'Cancel' , - 'SHOULD_BE_LESS_THAN_TODAY' => 'Must occur before today' , - 'JS_PLEASE_SELECT_ATLEAST_ONE_OPTION' => 'Please select atleast one option', - 'JS_SELECT_MODULE' => 'Please Select Module' , - 'JS_PLEASE_SELECT_ATLEAST_ONE_MANDATORY_FIELD' => 'Please select atleast one Mandatory Field', - 'JS_PLEASE_ENTER_INTEGER_VALUE' => 'Please enter integer value' , - 'JS_PLEASE_ENTER_DECIMAL_VALUE' => 'Please enter decimal value' , - 'JS_PLEASE_ENTER_POSITIVE_DECIMAL_VALUE' => 'Por favor, indique o valor decimal positivo', - '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' => 'deve ser superior ou igual a', - 'JS_SHOULD_BE_LESS_THAN_OR_EQUAL_TO' => 'should be less than or equal to', // TODO: Review - 'JS_CURRENT_DATE' => 'Data atual', - 'JS_PERCENTAGE_VALUE_SHOULD_BE_LESS_THAN_100' => 'Percentage value should be less than 100', // TODO: Review - 'JS_ACCEPT_ONLY_NUMBER' => 'Accepts only numbers' , // TODO: Review - 'JS_THIS_FILE_HAS_ALREADY_BEEN_SELECTED' => 'This File has already been selected', // TODO: Review - 'JS_MAX_FILE_UPLOAD_EXCEEDS' => 'max file Upload exceeds' , // TODO: Review - 'JS_THIS_DOCUMENT_HAS_ALREADY_BEEN_SELECTED' => 'This Document has already been attached', // TODO: Review - 'JS_FAILED_TO_SAVE' => 'Failed to save changes on server', - '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_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:', - 'JS_UPLOADED_FILE_SIZE_SHOULD_BE_LESS_THAN' => 'Upload file size should be less than', // TODO: Review - 'JS_UPLOADED_FILE_SIZE_EXCEEDS' => 'Uploaded file size exceeds' , // TODO: Review - 'JS_PLEASE_SPLIT_FILE_AND_IMPORT_AGAIN' => 'Please split the file into smaller files and import again.', // TODO: Review - 'JS_FIELD_MAPPED_MORE_THAN_ONCE' => 'Field mapped more than once' , - 'JS_MAP_MANDATORY_FIELDS' => 'Please map mandatory fields' , - 'JS_PLEASE_ENTER_SOME_VALUE' => 'Please enter some value to search', - 'JS_YOU_CAN_SELECT_ONLY' => 'You can select only' , - 'JS_ITEMS' => 'items' , - 'JS_LBL_PERMISSION' => 'Permissions' , - 'JS_CHECK_FILE_INTEGRITY' => 'Check File Integrity' , - 'JS_DUPLICATE_RECORD' => 'Duplicate Record' , - 'JS_IS_ENABLED' => 'is enabled' , - 'JS_IS_DISABLED' => 'is disabled' , - 'JS_PLEASE_ENTER_SOME_TEXT_FOR_COMMENT' => 'Please enter some text for comment', - 'JS_LBL_COMMENT_VALUE_CANT_BE_EMPTY' => 'Comment value cannot be empty', - 'JS_REQUIRED_FIELD' => '* This field is required' , - 'JS_CAN_NOT_REMOVE_DEFAULT_WIDGET' => 'Cannot remove Default Widget', - 'JS_NO_CREATE_OR_NOT_QUICK_CREATE_ENABLED' => 'No create permissions or not enabled for quick create', - 'LBL_IMAGE_DELETED_SUCCESSFULLY' => 'Image Deleted Successfully' , - 'LBL_IMAGE_NOT_DELETED' => 'Image Not Deleted' , - 'LBL_YES' => 'Yes' , - 'LBL_NO' => 'No' , - 'AM' => 'AM' , - 'PM' => 'PM' , - 'JS_ERROR' => 'Error' , // TODO: Review - 'JS_INFORMATION' => 'Information' , // TODO: Review - 'JS_DO_NOT_HAVE_AN_EMAIL_ID' => 'does not have an email address', // TODO: Review - 'NONE_OF_THE_FIELD_VALUES_ARE_CHANGED_IN_MASS_EDIT' => 'None of the field values are changed in Mass Edit', // TODO: Review - 'JS_PLEASE_SELECT_AN_ACCOUNT_TO_COPY_ADDRESS' => 'Please select an Organization to copy address', // TODO: Review - 'JS_PLEASE_SELECT_AN_CONTACT_TO_COPY_ADDRESS' => 'Please select a Contact to copy address', // TODO: Review - 'JS_SELECTED_ACCOUNT_DOES_NOT_HAVE_AN_ADDRESS' => 'Selected Organization does not contain address to copy', // TODO: Review - 'JS_SELECTED_CONTACT_DOES_NOT_HAVE_AN_ADDRESS' => 'Selected Contact does not contain address to copy', // TODO: Review - 'JS_PLEASE_ENTER_PRIMARY_EMAIL_VALUE_TO_ENABLE_PORTAL_USER' => 'Please enter Primary email address to enable portal user', // TODO: Review - 'JS_PRIMARY_EMAIL_FIELD_DOES_NOT_EXISTS' => 'Primary email field does not exist to enable portal user', // TODO: Review - 'JS_PLEASE_ENTER_A_TAG' => 'Please enter a tag' , // TODO: Review - 'JS_TAG_NAME_ALREADY_EXIST' => 'Tag name already exist' , // TODO: Review - 'JS_MAX_TAG_LENGTH_EXCEEDS' => 'Tag length exceeds max size' , // TODO: Review - 'JS_NO_VIEW_PERMISSION_AFTER_SAVE' => 'You will not have permissions to view this record after save. Would you like to continue?', // TODO: Review - 'JS_NO_RECORDS_RELATED_TO_THIS_FILTER' => 'No Records Related to this Lista', // TODO: Review - 'JS_START_DATE_TIME' => 'Start Date & Time' , // TODO: Review - 'JS_END_DATE_TIME' => 'End Date & Time' , // TODO: Review - 'JS_POSTPONE' => 'Postpone' , // TODO: Review - 'JS_MESSAGE' => 'Message' , // TODO: Review - 'JS_MASS_EDIT_LIMIT' => 'Operação de edição em massa pode ser feito em 500 ou menos registos de cada vez', - 'JS_SUCCESSFULLY_PINNED' => 'Shortcut added successfully' , // TODO: Review - 'JS_SUCCESSFULLY_UNPINNED' => 'Shortcut removed successfully', // TODO: Review - 'JS_SHORTCUT_ALREADY_ADDED' => 'This shortcut is already added', // TODO: Review - 'JS_MODULE_ENABLED' => 'Module Enabled' , // TODO: Review - 'JS_MODULE_DISABLED' => 'Module Disabled' , // TODO: Review - 'JS_VALUE_SHOULD_NOT_BE_LESS_THAN' => 'Frequency of any cron job configured should not be less than', // TODO: Review - 'JS_MINUTES' => 'mins' , // TODO: Review - 'JS_ITEM_RENAMED_SUCCESSFULLY' => 'Item Renamed Successfully' , // TODO: Review - 'JS_ITEM_ADDED_SUCCESSFULLY' => 'Item added Successfully' , // TODO: Review - 'JS_NO_ITEM_SELECTED' => 'No item Selected' , // TODO: Review - 'JS_MORE_THAN_ONE_ITEM_SELECTED' => 'More than one Item selected' , // TODO: Review - 'JS_ITEMS_DELETED_SUCCESSFULLY' => 'Items Deleted Successfully' , // TODO: Review - 'JS_DUPLICATE_ENTRIES_FOUND_FOR_THE_VALUE' => 'Duplicate entries found for the value', // TODO: Review - 'JS_USER_EXISTS' => 'User Already Exists',//TODO Review - 'JS_REENTER_PASSWORDS' => 'Renter Passwords',//TODO Review - 'LBL_SIGN_IN_AS_USER'=>'Logging in as another user will terminate the current session. Are you sure want to continue?', - //For Print Templates - 'JS_MAX_RECORDS_LIMIT' => 'Maximum Records for Print is :', //Todo Review - 'JS_NONE' => 'None', // Todo Review - 'SINGLE_Vendors' => 'Fornecedor', + 'JS_EMAIL_SERVER_CONFIGURATION' => 'Por favor, ajuste as configurações do Servidor Envio Mensagens a partir do menu Configurações', + 'JS_SMS_SERVER_CONFIGURATION' => 'Por favor, configure seu Notificador SMS na página de configuração do Notificar SMS', + 'JS_PLEASE_SELECT_ONE_RECORD' => 'Por favor, selecione ao menos um registro', + //dropdown categary + 'JS_USERS' => 'Usuários', + 'JS_GROUPS' => 'Grupos', + 'JS_ALL' => 'Todos', + //Validation Error Message + 'JS_PLEASE_ENTER_VALID_VALUE' => 'Digite uma valor válido', + 'JS_PLEASE_ENTER_VALID_TAG_NAME' => 'Digite um nome de tag válido', + 'JS_TAG_SAVED_SUCCESSFULLY' => 'Tag Salva com sucesso', + 'JS_PLEASE_ENTER_VALID_EMAIL_ADDRESS' => 'Por favor, digite um endereço de email válido', + 'JS_CONTAINS_ILLEGAL_CHARACTERS' => 'contém caracteres não permitidos', + 'JS_PHONE_NUMBER_LENGTH_EXCEEDED' => 'comprimento do número de telefone excedeu o limite', + 'JS_ACCEPT_POSITIVE_NUMBER' => 'aceita somente valores positivos', + 'JS_ACCEPT_WHOLE_NUMBERS' => 'Aceitos somente números inteiros', + 'JS_VALUE_SHOULD_BE_GREATER_THAN_ZERO' => 'o valor deve ser maior que zero', + 'JS_NUMBER_SHOULD_BE_LESS_THAN_32' => 'O número deve ser menor que 32', + 'JS_PLEASE_ENTER_VALID_DATE' => 'Por favor, digite uma data válida', + 'JS_PLEASE_ENTER_VALID_TIME' => 'Por favor, digite uma hora válida', + 'JS_INVALID_PAGE_NUMBER' => 'Número de Página Inválido', + 'JS_SUBJECT_VALUE_CANT_BE_EMPTY' => 'O Assunto não pode estar vazio', + 'JS_PERCENTAGE_SHOULD_BE_LESS_THAN_100' => 'O percentual deve ser menor que 100', + + 'INVALID_NUMBER_OF' => 'Número inválido de', + 'INVALID_NUMBER' => 'Número inválido', + 'JS_LBL_ARE_YOU_SURE_YOU_WANT_TO_DELETE' => 'Tem certeza que deseja apagar?', + + 'OVERWRITE_EXISTING_MSG1' => 'Sobrescrever o endereço existente pelo endereço selecionado? ', + 'OVERWRITE_EXISTING_MSG2' => 'Detalhes do Endereço', + 'SINGLE_Accounts' => 'Organização', + 'SINGLE_Contacts' => 'Contato', + 'SINGLE_Project' => 'Projeto', + 'SINGLE_ProjectMilestone' => 'Milestone Projeto', + + 'LBL_DELETE_CONFIRMATION' => 'Tem certeza que deseja Apagar?', // This is added as duplicate as we need to show different message for different modules. Ex:Accounts has different message + 'LBL_UNLINK_CONFIRMATION' => 'Tem certeza que deseja remover o link?', + 'LBL_DELETE_USER_CONFIRMATION' => 'Quando um Usuário é apagado, o mesmo será marcado como "Inativo", nenhum novo registro poderá ser designado a ele e não poderá acessar o Sistema. Você tem certeza que deseja apagar?', + 'LBL_DELETE_CONFIRMATION_NOTE' => 'Nota: Os registros excluÃdos serão mantido na Lixeira e serão limpos após %s dias', + 'LBL_MASS_DELETE_CONFIRMATION' => 'Tem certeza que deseja apagar os Registros selecionados?', + 'JS_LBL_SAVE' => 'Salvar', + 'JS_LBL_CANCEL' => 'Cancelar', + 'JS_DUPLICTAE_CREATION_CONFIRMATION' => 'O nome da Organização já existe. Deseja criar um registro duplicado?', + + 'SHOULD_BE_LESS_THAN_TODAY' => 'Deve ocorrer antes de hoje', + 'JS_PLEASE_SELECT_ATLEAST_ONE_OPTION' => 'Por favor, selecione ao menos uma opção', + 'JS_SELECT_MODULE' => 'Por favor, selecione o Módulo', + 'JS_PLEASE_SELECT_ATLEAST_ONE_MANDATORY_FIELD' => 'Por favor, selecione ao menos um Campo Obrigatório', + 'JS_SELECT_MODULE' => 'Por favor, selecione um módulo', + 'JS_PLEASE_ENTER_INTEGER_VALUE' => 'Por favor, digite um valor inteiro', + 'JS_PLEASE_ENTER_DECIMAL_VALUE' => 'Por favor, digite um valor decimal', + 'JS_PLEASE_ENTER_POSITIVE_DECIMAL_VALUE' => 'Por favor, digite um valor decimal positivo', + + 'JS_START_TIME_SHOULD_BE_GREATER_THAN_CURRENT_TIME' => 'Hora de inÃcio deverá ser maior do que a Hora Atual', + 'JS_SHOULD_BE_LESS_THAN_CURRENT_DATE' => 'deve ser menor que a Data Atual', + 'JS_SHOULD_BE_GREATER_THAN_CURRENT_DATE' => 'deve ser maior que a Data Atual', + 'JS_SHOULD_BE_GREATER_THAN_OR_EQUAL_TO' => 'deve ser maior ou igual a', + 'JS_SHOULD_BE_LESS_THAN_OR_EQUAL_TO' => 'deve ser menor que ou igual a', + 'JS_CURRENT_DATE' => 'Data Atual', + 'JS_PERCENTAGE_VALUE_SHOULD_BE_LESS_THAN_100' => 'O valor percentual deve ser menor que 100', + 'JS_ACCEPT_ONLY_NUMBER' => 'Aceita somente números', + 'JS_THIS_FILE_HAS_ALREADY_BEEN_SELECTED' => 'Este arquivo já foi selecionado', + 'JS_MAX_FILE_UPLOAD_EXCEEDS' => 'Transferência máxima de arquivo excedeu', + 'JS_THIS_DOCUMENT_HAS_ALREADY_BEEN_SELECTED' => 'Este Documento já foi anexado', + 'JS_LIST_EXIST' => 'A Lista já existe', + + + //Roles + 'JS_FAILED_TO_SAVE' => 'Falha ao salvar as mudanças no Servidor', + + //Import Translations + 'JS_IMPORT_FILE_CAN_NOT_BE_EMPTY' => 'O Arquivo a ser Importado não pode estar Vazio', + 'JS_PLEASE_SELECT_ONE_FIELD_FOR_MERGE' => 'Selecionar ao menos um campo para definir o critério para mesclagem', + 'JS_MAP_NAME_CAN_NOT_BE_EMPTY' => 'O Nome do Mapa não pode estar vazio', + 'JS_MAP_NAME_ALREADY_EXISTS' => 'Nome do Mapa já existente', + 'JS_SELECT_FILE_EXTENSION' => 'Por favor, selecione um arquivo com a seguinte extensão:', + 'JS_UPLOADED_FILE_SIZE_SHOULD_BE_LESS_THAN' => 'O tamanho do arquivo deve ser inferior a', + 'JS_UPLOADED_FILE_SIZE_EXCEEDS' => 'Tamanho do arquivo excedeu', + 'JS_PLEASE_SPLIT_FILE_AND_IMPORT_AGAIN' => 'Por favor, divida o arquivo em arquivos menores e importe novamente.', + 'JS_FIELD_MAPPED_MORE_THAN_ONCE' => 'Campo mapeado mais de um vez', + 'JS_MAP_MANDATORY_FIELDS' => 'Por favor, mapear campos obrigatórios', + 'JS_MAP_MERGE_CRITERIA_FIELDS' => 'Por favor, mapeie os campos de correspondência', + 'JS_PLEASE_ENTER_SOME_VALUE' => 'Por favor, digite ao menos um valor para pesquisa', + 'JS_VCF_FILE_IMPORT_WARNING' => 'Você selecionou uma arquivo VCF. Somente Contatos podem ser importados a partir de arquivos VCF. Para importar este arquivo, inicie a importação a partir do módulo de Contatos', + 'JS_ICS_FILE_IMPORT_WARNING' => 'Você selecionou uma arquivo ICS. Somente Agenda pode ser importada a partir de arquivos ICS. Para importar este arquivo, inicie a importação a partir do módulo de Agenda', + //Select2 elements validation message + 'JS_YOU_CAN_SELECT_ONLY' => 'Você pode selecionar somente', + 'JS_ITEMS' => 'itens', + + 'JS_LBL_PERMISSION' => 'Permissões', + 'JS_CHECK_FILE_INTEGRITY' => 'Checar Integridade do Arquivo', + 'JS_DUPLICATE_RECORD' => 'Registro Duplicado', + + //advance filter checkbox type condition values + 'JS_IS_ENABLED' => 'está habilitado', + 'JS_IS_DISABLED' => 'está desabilitado', + + 'JS_PLEASE_ENTER_SOME_TEXT_FOR_COMMENT' => 'Por favor, digite algum texto para Comentário', + 'JS_LBL_COMMENT_VALUE_CANT_BE_EMPTY' => 'O valor do Comentário não pode estar vazio', + 'JS_REQUIRED_FIELD' => '* Este campo é obrigatório', + 'JS_CAN_NOT_REMOVE_DEFAULT_WIDGET' => 'Não é possÃvel remover o Widget Padrão', + 'JS_SHOULD_BE_LESS_THAN_CURRENT_DATE' => 'deve ser menor que a Data Atual', + 'JS_NO_CREATE_OR_NOT_QUICK_CREATE_ENABLED' => 'Nenhuma permissão criada ou não está habilitado para Criar Rápido', + + //Image Action + 'LBL_IMAGE_DELETED_SUCCESSFULLY' => 'A imagem foi apagada com Sucesso', + 'LBL_IMAGE_NOT_DELETED' => 'A imagem não foi Apagada', + 'LBL_YES' => 'Sim', + 'LBL_NO' => 'Não', + 'AM' => 'AM', + 'PM' => 'PM', + 'JS_ERROR' => 'Erro', + 'JS_INFORMATION' => 'Informação', + 'JS_DO_NOT_HAVE_AN_EMAIL_ID' => 'não existe um endereço de email', + 'NONE_OF_THE_FIELD_VALUES_ARE_CHANGED_IN_MASS_EDIT' => 'Nenhum dos valores de campos são alterados na Edição em Massa', + + //Notification messages for inventory module + 'JS_PLEASE_SELECT_AN_ACCOUNT_TO_COPY_ADDRESS' => 'Por favor, selecione uma Organização para copiar o endereço', + 'JS_PLEASE_SELECT_AN_CONTACT_TO_COPY_ADDRESS' => 'Por favor, selecione um Contato para copiar o endereço', + 'JS_SELECTED_ACCOUNT_DOES_NOT_HAVE_AN_ADDRESS' => 'A Organização selecionada não possui um endereço para copiar', + 'JS_SELECTED_CONTACT_DOES_NOT_HAVE_AN_ADDRESS' => 'O Contato selecionado não possui um endereço para copiar', + 'JS_PLEASE_ENTER_PRIMARY_EMAIL_VALUE_TO_ENABLE_PORTAL_USER' => 'Por favor, digite o email principal para habilitar o acesso do Usuário do Portal', + 'JS_PRIMARY_EMAIL_FIELD_DOES_NOT_EXISTS' => 'Falta o email principal para habilitar acesso do Usuário ao Portal', + + //Tag Cloud validation messages + 'JS_PLEASE_ENTER_A_TAG' => 'Por favor, digite uma etiqueta', + 'JS_TAG_NAME_ALREADY_EXIST' => 'O nome da etiqueta já existe', + 'JS_MAX_TAG_LENGTH_EXCEEDS' => 'O comprimento da etiqueta excedeu o tamanho máximo', + + 'JS_NO_VIEW_PERMISSION_AFTER_SAVE' => 'Após salvar você não terá permissão para visualizar este registro. Deseja continuar?', + 'JS_NO_RECORDS_RELATED_TO_THIS_FILTER' => 'Nenhum Registro Relacionado para este Filtro', + + // Calendar Reminder popup + 'JS_START_DATE_TIME' => 'Data e Hora InÃcio', + 'JS_END_DATE_TIME' => 'Data e Hora Final', + 'JS_POSTPONE' => 'Adiar', + 'JS_MESSAGE' => 'Mensagem', + + 'JS_NO_VIEW_PERMISSION_AFTER_SAVE'=> 'Você não terá permissão para visualizar este registro após salvar. Deseja continuar?', + + //Settings page translations + 'JS_SUCCESSFULLY_PINNED' => 'Atalho adicionado com sucesso', + 'JS_SUCCESSFULLY_UNPINNED' => 'Atalho removido com sucesso', + 'JS_SHORTCUT_ALREADY_ADDED' => 'Este atalho já foi adicionado', + 'JS_MESSAGE' => 'Mensagem', + 'JS_MASS_EDIT_LIMIT' => 'A operação de Editar em Massa pode ser realizada somente para até 500 registros por vez', + + //Module Manager + 'JS_MODULE_ENABLED' => 'Módulo Habilitado', + 'JS_MODULE_DISABLED' => 'Módulo Desabilitado', + + //Crom tasks + 'JS_VALUE_SHOULD_NOT_BE_LESS_THAN' => 'A frequência de qualquer tarefa configurada no Cron não deve ser inferior a', + 'JS_MINUTES' => 'min', + + //PickList + 'JS_ITEM_RENAMED_SUCCESSFULLY' => 'Item Renomeado com Sucesso', + 'JS_ITEM_ADDED_SUCCESSFULLY' => 'Item adicionado com Sucesso', + 'JS_NO_ITEM_SELECTED' => 'Nenhum item Selecionado', + 'JS_MORE_THAN_ONE_ITEM_SELECTED' => 'Mais de um Item selecionado', + 'JS_ITEMS_DELETED_SUCCESSFULLY' => 'Itens Apagados com sucesso', + 'JS_DUPLICATE_ENTRIES_FOUND_FOR_THE_VALUE' => 'Foram encontradas entradas duplicadas para o valor', + 'JS_SELECT_RECORDS_TO_MERGE_FROM_SAME_GROUP' => 'Você tem que selecionar os registros no mesmo grupo para mesclar', + 'JS_SELECT_ATLEAST_TWO_RECORD_FOR_MERGING' => 'Selecionar pelo menos dois registros para mesclar', + 'JS_ALLOWED_TO_SELECT_MAX_OF_THREE_RECORDS' => 'Você tem permissão para selecionar no máximo três registros', + //Notification message for dashboard widget delete + 'JS_ARE_YOU_SURE_TO_DELETE_WIDGET' => 'Tem certeza que deseja excluir o widget', + 'JS_ARE_YOU_SURE_TO_DELETE_DASHBOARDTAB' => 'Você tem certeza que deseja apagar esta aba do Painel - %s?', + 'JS_TABS_LIMIT_EXCEEDED' => 'Desculpe! Não é possÃvel adicionar mais de 10 abas', + 'JS_DUPLICATE_ENTRIES_FOUND_FOR_THE_VALUE' => 'Foram encontradas entradas duplicadas para o valor', + 'JS_SELECT_RECORDS_TO_MERGE_FROM_SAME_GROUP' => 'Voce deve selecionar os registros nos mesmos grupos para mesclar', + 'JS_SELECT_ATLEAST_TWO_RECORD_FOR_MERGING' => 'Selecionar ao menos dois registros para mesclar', + 'JS_ALLOWED_TO_SELECT_MAX_OF_THREE_RECORDS' => 'Você pode selecionar no máximo três registros', + 'JS_TOTAL_RECORDS' => 'Total registros', + 'JS_PAGE_NOT_EXIST' => 'Página não existe', + 'JS_YOU_ARE_IN_PAGE_NUMBER' => 'Você está na página número', + + //More currencies message + 'JS_PLEASE_ENABLE_BASE_CURRENCY_FOR_PRODUCT' => 'Por favor, habilite a moeda padrão para o Produto', + 'JS_PLEASE_SELECT_BASE_CURRENCY_FOR_PRODUCT' => 'Por favor, selecione a moeda padrão para o Produto', + 'JS_BASE_CURRENCY_CHANGED_TO_DISABLE_CURRENCY' => 'A Moeda Base deve ser alterada para ser desativada', + + //Delete Records message + 'JS_RECORDS_ARE_GETTING_DELETED' => 'O registros estão sendo excluÃdos', + 'JS_RECORD_GETTING_DELETED' => 'Os registros foram excluÃdos', + 'JS_NO_RESULTS_FOUND' => 'Nenhum resultado encontrado', + + 'JS_RECORDS TRANSFERRED SUCCESSFULLY' => 'A propriedade dos registros foram transferidos com sucesso', + + //TextSearch Language String + 'LBL_SEARCHING' => 'Pesquisando em ', + 'JS_RECORDS_TRANSFERRED_SUCCESSFULLY' => 'A propriedade dos registros foram transferidos com sucesso.', + 'JS_USER_DELETED_SUCCESSFULLY' => 'O Usuário foi apagado com sucesso.', + + 'JS_MAX_RECORDS_LIMIT' => 'O número máximo de Registros para Impressão é:', + 'JS_USER_EXISTS' => 'O Usuário já Existe', + 'LBL_SIGN_IN_AS_USER' => 'Ao acessar com outro Usuários terminará a sessão atual. Você tem certeza que deseja continuar?', + 'JS_REENTER_PASSWORDS' => 'Redigite as Senhas', + 'SINGLE_Vendors' => 'Fornecedor', + //Feedback on removing old version - 'JS_PLEASE_GIVE_YOUR_FEEDBACK' => 'Por favor, preencha o seu Feedback', - - //For PhoneCalls - 'JS_PBX_CALL_FROM' => 'chamar de', - 'JS_PBX_INCOMING_CALL' => 'Chamada recebida', - 'JS_PBX_OUTGOING_SUCCESS' => 'Pegue o aparelho de extensão para discar o número', - 'JS_PBX_OUTGOING_FAILURE' => 'Ligação Perdida', - 'JS_PBX_FILL_ALL_FIELDS' => 'Por favor, preencha todos os campos', - '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', - 'JS_NO_EDIT_PERMISSION' => 'Você não tem permissão para editar este evento', - 'HelpDesk' => 'Tickets', - 'Potentials' => 'Opportunities', - - //Google Synchronization - 'SYNC_REMOVED_SUCCESSFULLY' => 'Sincronização Google removeu com sucesso.', - 'REMOVE_SYNCHRONIZATION_MESSAGE' => "Clicando sobre isto irá remover a autenticação Gmail existente. Não vai apagar todos os registros que já estão sincronizados.", - 'REMOVE_SYNCHRONIZATION' => 'Remover Sincronização', - 'FIELD_MAPPING' => 'Mapeamento de campo', - 'LBL_SYNC_BUTTON' => 'Sincronizar Agora', - 'LBL_SYNCRONIZING' => 'Sincronizando ....', - 'LBL_NOT_SYNCRONIZED' => 'Você ainda não sincronizado', - 'LBL_FIELD_MAPPING' => 'Mapeamento de campo', - - 'LBL_RESTORE_CONFIRMATION' => 'Registros previamente designados para este usuário não será restaurada. Tem certeza de que deseja restaurar este usuário?', - 'LBL_DELETE_USER_PERMANENT_CONFIRMATION' => 'Uma vez excluÃdo este usuário não pode ser restaurado. Você tem certeza que deseja deletar esse usuário de forma permanente?', - - 'LBL_LANGUAGE_LABEL_VALIDATION' => 'Valor da etiqueta não pode ser vazio. Você deve digitar algum valor.', - 'JS_CHANGES_WILL_BE_LOST' => 'Suas alterações serão perdidas!', - 'JS_RECORD_DELETED' => 'Registro excluÃdo', - 'JS_NO_DELETE_PERMISSION' => 'Sem permissão de exclusão', - 'JS_CONFIRM_MARK_AS_HELD' => 'Você tem certeza que quer marcar Evento / Todo como Mantidos?', - 'JS_TODO_MARKED_AS_COMPLETED' => 'Todo marcada como concluÃda', - 'JS_EVENT_MARKED_AS_HELD' => 'Evento marcado como Mantidos', - 'JS_FUTURE_EVENT_CANNOT_BE_MARKED_AS_HELD' => 'Evento futuro não pode ser marcado como Mantidos', - 'JS_PERMISSION_DENIED' => 'Permissão negada', - 'LBL_SMS_MAX_CHARACTERS_ALLOWED' => 'São permitidos no máximo 160 caracteres por mensagem de texto', - 'JS_VIEWNAME_ALERT' => 'São permitidos no máximo 40 caracteres para o nome do filtro', - 'JS_EXCEEDS_MAX_UPLOAD_SIZE' => 'Excedido tamanho máximo de carregamento', - 'JS_FUTURE_EVENT_CANNOT_BE_HELD' => 'Não pode ser detida para futuro', - 'LBL_WARNING' => 'Aviso', - 'DELETE_USER_PERMANENT_WARNING' => 'A exclusão de um usuário permanentemente irá transferir todos os registros, incluindo comentários e história para novo usuário.', - 'JS_CLOSE' => 'Perto', - 'JS_DECIMAL_SEPARATOR_AND_GROUPING_SEPARATOR_CANT_BE_SAME' => 'Decimal separator e Agrupamento separador não pode ser o mesmo', - // For Line Iteam Currency Symbol select while Import - 'JS_CURRENCY_TOOLTIP_CONTENT_TITLE' => 'Itens de linha de Moedas', - 'JS_CURRENCY_TOOLTIP_CONTENT_MESSAGE' => 'Valores de moeda em linha para a importação de itens, Vtiger vai usar essa configuração para identificar a moeda. Quaisquer valores de moeda fora das mesas de itens de linha, estão a ser assumidas nos Usuários moeda preferida (selecionado em Minhas preferências)', - 'LBL_CANT_SELECT_CONTACT_FROM_LEADS' => 'Não é possÃvel selecionar contatos relacionados para Leads', - 'JS_FILE_NAME' => 'Nome do Arquivo', - 'JS_EXTERNAL_FILE_URL' => 'Url do Arquivo', - 'JS_PLEASE_SELECT_A_FILE' => 'Selecione um arquivo', - - // SMSNotifier Phone Format Warning - 'JS_PHONEFORMAT_ERROR' => 'Por favor, verifique o número de telefone está no formato E.164 internatonal com \'+\' prefixo eo código do paÃs Ex +1 415 599 2671', - - // Leads and Potentials Field Mapping - 'JS_NONE' => 'None' , // TODO: Review - 'JS_IS_ALREADY_BEEN_MAPPED' => 'is already been mapped' , // TODO: Review - 'JS_CANT_MAP' => 'Cant map' , // TODO: Review - 'JS_WITH' => 'with' , // TODO: Review - 'JS_MAPPING_DELETED_SUCCESSFULLY' => 'Mapping Deleted Successfully', // TODO: Review - 'JS_phone' => 'Phone' , // TODO: Review - 'JS_picklist' => 'Pick List' , // TODO: Review - 'JS_email' => 'Email' , // TODO: Review - 'JS_text' => 'String' , // TODO: Review - 'JS_currency' => 'Currency' , // TODO: Review - 'JS_multiSelectCombo' => 'Multi-Select Combo Box' , // TODO: Review - 'JS_time' => 'Time' , // TODO: Review - 'JS_textArea' => 'Text Area' , // TODO: Review - 'JS_url' => 'Url' , // TODO: Review - 'JS_string' => 'String' , // TODO: Review - 'JS_checkBox' => 'Check Box' , // TODO: Review - 'JS_date' => 'Date' , // TODO: Review - 'JS_decimal' => 'Decimal' , // TODO: Review - 'JS_percent' => 'Percent' , // TODO: Review - 'JS_skype' => 'Skype' , // TODO: Review - 'JS_None' => 'None' , // TODO: Review - 'JS_integer' => 'Integer' , - 'JS_double' => 'decimal' , - 'JS_reference' => 'referência' , + 'JS_PLEASE_GIVE_YOUR_FEEDBACK' => 'Por favor, preencha seu Feedback', + 'JS_PBX_CALL_FROM' => 'Chamada de', + 'JS_PBX_INCOMING_CALL' => 'Chamada Recebida', + 'JS_PBX_OUTGOING_SUCCESS' => 'Pegue o telefone ou softfone para discar o número', + 'JS_PBX_OUTGOING_FAILURE' => 'A Chamada Falhou', + 'JS_PBX_FILL_ALL_FIELDS' => 'Por favor, preencha todos os campos', + 'JS_PBX_CAMPAIGN_NAME' => 'Nome da Campanha', + 'JS_PBX_CAMPAIGN_NUMBER' => 'Número da Campanha', + 'JS_MIN_SEARCH_KEY_LENGTH' => 'A palavra chave de pesquisa deve ter pelo menos e caracteres', + 'JS_NO_MATCH' => 'Nenhum Registro Correspondente foi Encontrado', + 'JS_PBX_OUTGOING_CALL' => 'Chamada Sainte', + 'JS_PBX_CALL_TO' => 'Ligar para', + 'JS_REQUIRED' => 'Obrigatório', + 'JS_PHONE_NUMBER' => 'Número Telefone', + 'JS_NO_CREATE_PERMISSION' => 'A Chamada precisa ser respondida antes de criar um registro', + 'HelpDesk' => 'Chamados', + 'Potentials' => 'Oportunidades', + 'JS_CALL_NOT_ANSWERED_UPDATE_PERMISSION' => 'A Chamada precisa ser respondida antes de lincar o registro', + 'JS_CALL_NOT_ANSWERED' => 'A Chamada precisa ser respondida antes de executar a ação', + // ends + 'JS_NO_EDIT_PERMISSION' => 'Você não tem permissão para editar este evento', + + //Google Synchronization + 'SYNC_REMOVED_SUCCESSFULLY' => 'A Sincronização com o Google foi removida com sucesso.', + 'REMOVE_SYNCHRONIZATION_MESSAGE' => 'Ao clicar aqui removerá a autenticação Gmail existente. Este procedimento não apagará quaisquer registros já sincronizados.', + 'REMOVE_SYNCHRONIZATION' => 'Remover Sincronização', + 'FIELD_MAPPING' => 'Mapeamento Campo', + 'LBL_SYNC_BUTTON' => 'Sincronizar', + 'LBL_SYNCRONIZING' => 'Sincronizando', + 'LBL_NOT_SYNCRONIZED' => 'Você não sincronizou ainda', + 'LBL_FIELD_MAPPING' => 'Mapeamento Campo', + + 'LBL_RESTORE_CONFIRMATION' => 'Você tem certeza que deseja restaurar este Usuário?', + 'LBL_DELETE_USER_PERMANENT_CONFIRMATION' => 'Uma vez que este Usuário, o mesmo não poderá ser restaurado. Você tem certeza de que deseja excluir este Usuário de forma permanente?', + + 'LBL_LANGUAGE_LABEL_VALIDATION' => 'O valor do Rótulo não pode estar vazio. Você deve digitar algum valor.', + 'JS_CHANGES_WILL_BE_LOST' => 'As mudanças realizadas serão perdidas!', + 'JS_RECORD_DELETED' => 'Registro apagado', + 'JS_NO_DELETE_PERMISSION' => 'Sem permissão para apagar', + 'JS_CONFIRM_MARK_AS_HELD' => 'Você tem certeza que deseja marcar o Evento como Realizado?', + 'JS_CONFIRM_MARK_AS_COMPLETED' => 'Você tem certeza que deseja marcar a Tarefa como ConcluÃda?', + 'JS_TODO_MARKED_AS_COMPLETED' => 'A Tarefa foi marcada como ConcluÃda', + 'JS_EVENT_MARKED_AS_HELD' => 'O Evento foi marcado como Realizado', + 'JS_FUTURE_EVENT_CANNOT_BE_MARKED_AS_HELD' => 'Um Evento futuro não pode ser marcado como Realizado', + 'JS_PERMISSION_DENIED' => 'Permissão negada', + 'LBL_SMS_MAX_CHARACTERS_ALLOWED' => 'Para mensagens de texto são permitidos no máximo 160 caracteres', + 'JS_VIEWNAME_ALERT' => 'Para nome da lista são permitidos no máximo 40 caracteres', + 'JS_EXCEEDS_MAX_UPLOAD_SIZE' => 'O tamanho máximo para upload excedeu', + 'JS_FUTURE_EVENT_CANNOT_BE_HELD' => 'Não pode ser Realizado para o Futuro', + 'LBL_WARNING' => 'Atenção', + 'DELETE_USER_PERMANENT_WARNING' => 'Ao apagar um Usuário permanentemente, serão transferidos todos os registros, incluindo os Comentários e Histórico, para o novo Usuário.', + 'JS_DECIMAL_SEPERATOR_AND_GROUPING_SEPERATOR_CANT_BE_SAME' => 'O separador de casas decimal e o separador de casas de milhar não podem ser os mesmos', + 'JS_CLOSE' => 'Fechar', + + // For Line Iteam Currency Symbol select while Import + 'JS_CURRENCY_TOOLTIP_CONTENT_TITLE' => 'Moeda dos itens de linha', + 'JS_CURRENCY_TOOLTIP_CONTENT_MESSAGE' => 'Para importar valores de moeda nos itens de linha, o Vtiger utilizará esta configuração para identificar a Moeda. Qualquer valor de moeda fora das tabelas de itens de linha, são assumidas como a moeda preferida pelo Usuário (selecionado em \'Minhas Preferências\')', + 'LBL_CANT_SELECT_CONTACT_FROM_LEADS' => 'Não é possÃvel selecionar Contatos relacionado para Leads', + 'JS_TRY_LATER' => 'Por favor, tente mais tarde!', + 'JS_FILE_NAME' => 'Nome Arquivo', + 'JS_EXTERNAL_FILE_URL' => 'URL do Arquivo', + 'JS_PLEASE_SELECT_A_FILE' => 'Por favor, selecione um arquivo', + // SMSNotifier Phone Format Warning + 'JS_PHONEFORMAT_ERROR' => 'Por favor, verifique se o número do telefone está no formato internacional E.164, com o prefixo \'+\' e o código do paÃs (ex. +1 415 599 2671)', + + // Leads and Potentials Field Mapping + 'JS_NONE' => 'Nada', + 'JS_IS_ALREADY_BEEN_MAPPED' => 'já está mapeado', + 'JS_CANT_MAP' => 'Não pode mapear', + 'JS_WITH' => 'com', + 'JS_MAPPING_DELETED_SUCCESSFULLY' => 'Mapeamento Apagado com Sucesso', + + //JS Field Type Translation + 'JS_phone' => 'Telefone', + 'JS_picklist' => 'Lista de Opções', + 'JS_email' => 'Email', + 'JS_text' => 'String', + 'JS_currency' => 'Moeda', + 'JS_multiSelectCombo' => 'Caixa de Multiseleção', + 'JS_time' => 'Hora', + 'JS_textArea' => 'Ãrea de Texto', + 'JS_url' => 'URL', + 'JS_string' => 'String', + 'JS_checkBox' => 'Caixa de Seleção', + 'JS_date' => 'Data', + 'JS_decimal' => 'Decimal', + 'JS_percent' => 'Percentual', + 'JS_skype' => 'Skype', + 'JS_None' => 'Nada', + 'JS_integer' => 'Inteiro', + 'JS_double' => 'Decimal', + 'JS_reference' => 'referência', 'JS_image' => 'Imagem', - // AutoFill Overwriting message - 'JS_OVERWRITE_AUTOFILL_MSG1' => 'Gostaria de substituir existente', - 'JS_OVERWRITE_AUTOFILL_MSG2' => 'com selecionado', - 'JS_PRINT' => 'Impressão', - 'JS_SAVE_AS_IMAGE' => 'Salvar como Imagem', - - //Demo Data Module Translatios - 'JS_ADD_DEMO_DATA_CONFIRMATION'=> 'Tem certeza de que deseja adicionar registros de demonstração para todos os módulos?', - 'JS_ADD_DEMO_DATA_INFO'=> 'Registros de demonstração pode ser excluÃda, clicando no botão "Limpar dados Demo".', - 'JS_CLEAR_DEMO_DATA_CONFIRMATION'=> 'Tem certeza de que deseja apagar dados de demonstração em todos os módulos?', - 'JS_CLEAR_DEMO_DATA_INFO'=> 'Registros de demonstração podem ser adicionados clicando no botão "Adicionar dados Demo".', - 'JS_DEMO_DATA_GETTING_POPULATED'=> 'Os dados de demonstração está sendo adicionado, por favor aguarde ...', - 'JS_DEMO_DATA_GETTING_CLEARED'=> 'Dados de demonstração estiver sendo apagada, por favor aguarde ...', - 'JS_DEMO_DATA_ADDED' => 'Dados Demo adicionado a todos os módulos.', - 'JS_DEMO_DATA_CLEARED' => 'Dados Demo desmatadas a partir de todos os módulos.', - 'JS_HOME_DASH_BOARD_CLEAR_INFO'=>'Nota: Você pode reativar dados de demonstração de.', - 'JS_SETTINGS_PATH'=>'Configurações> Outras Configurações> Editor de Configuração.', - 'JS_DIRECTORY_IS_EMPTY' => 'Diretório está vazia', - 'JS_PLEASE_SELECT_AN_RELATED_TO_COPY_ADDRESS' => 'Por favor seleccione um chumbo / Contato Módulo para copiar endereço', - 'SINGLE_Leads' => 'Chumbo', - 'JS_SELECTED_LEAD_DOES_NOT_HAVE_AN_ADDRESS' => 'VOCE PODE reativar Dados de Demonstração de', - 'JS_INVALID_EMAILS' => 'Os e-mails inválidos', - 'JS_INTERNAL_COMMENT' => 'Comentário interno', - 'JS_INTERNAL_COMMENT_INFO' => 'O comentário só será visto por usuários de CRM, se a caixa de seleção interna comentário está ativada. Para notificar os clientes (por meio de fluxos de trabalho configuráveis ​​ou portal do cliente) deixar esta opção desabilitada', - 'JS_NO_LINE_ITEM' =>'Os itens de linha não pode ser vazio.', + // AutoFill Overwriting message + 'JS_OVERWRITE_AUTOFILL_MSG1' => 'Você gostaria de sobrescrever o existente', + 'JS_OVERWRITE_AUTOFILL_MSG2' => 'com o selecionado', + + //Demo Data Module Translatios + 'JS_ADD_DEMO_DATA_CONFIRMATION' => 'Você tem certeza que deseja adicionar registros de demonstração para todos os módulos?', + 'JS_ADD_DEMO_DATA_INFO' => 'Os registros de demonstração podem ser apagados clicando no botão "Limpar dados de Demonstração".', + 'JS_CLEAR_DEMO_DATA_CONFIRMATION' => 'Você tem certeza que deseja limpar os dados de demonstração em todos os módulos?', + 'JS_CLEAR_DEMO_DATA_INFO' => 'Os registros de demonstração podem ser adicionados clicando no botão "Adicionar Dados de Demonstração".', + 'JS_DEMO_DATA_GETTING_POPULATED' => 'Os dados de demonstração está sendo adicionado, por favorm aguarde...', + 'JS_DEMO_DATA_GETTING_CLEARED' => 'Os dados de demonstração está sendo apagados, por favor, aguarde...', + 'JS_DEMO_DATA_ADDED' => 'Os dados de demonstração foram adicionados para todos os módulos.', + 'JS_DEMO_DATA_CLEARED' => 'Os dados de demonstração foram apagados para todos os módulos.', + 'JS_HOME_DASH_BOARD_CLEAR_INFO' => 'Nota: Você pode reativar os dados de demonstração', + 'JS_SETTINGS_PATH' => 'Configurações CRM > Configuração > Editor de Configuração.', + 'JS_PRINT' => 'Imprimir', + 'JS_SAVE_AS_IMAGE' => 'Salvar como Imagem', + 'JS_DIRECTORY_IS_EMPTY' => 'O diretório está vazio', + 'JS_PLEASE_SELECT_AN_RELATED_TO_COPY_ADDRESS' => 'Por favor, selecione um módulo de Lead/Contato para copiar o endereço', + 'SINGLE_Leads' => 'Lead', + 'JS_SELECTED_LEAD_DOES_NOT_HAVE_AN_ADDRESS' => 'O Lead selecionado não contem endereço para copiar', + 'JS_INVALID_EMAILS' => 'Emails Inválidos', + 'JS_DIRECTORY_IS_EMPTY' => 'O diretório está vazio', + 'JS_INTERNAL_COMMENT' => 'Comentários Internos', + 'JS_INTERNAL_COMMENT_INFO' => 'O Comentário só será visto pelos Usuários de CRM, se a caixa de seleção do Comentário interno estiver ativada. Para notificar Clientes (através de Workflows ou Portal do Cliente) mantenha esta caixa de seleção desativada.', + 'JS_NO_LINE_ITEM' => 'Os itens da linha não podem estar vazios.', + + 'JS_NO_TAXES_EXISTS' => 'Não existe impostos', + 'JS_CONFIRM_TAXES_AND_CHARGES_REPLACE' => 'Deseja atualizar os valores dos Impostos e Taxas correspondentes à região selecionada?', + 'JS_PRINTTEMPLATEMODULE_DISABLED' => 'O módulo Imprimir Modelos está desabilitado. Não é possÃvel executar a operação', + 'JS_SENT_FOR_SIGNATURE' => 'Enviado para assinatura', + 'JS_FAILED_TO_SEND_FOR_SIGNATURE' => 'Falha ao enviar para assinatura', + 'JS_SUITABLE_VTIGER_FIELD_NOT_AVAILABLE_FOR_MAPPING' => 'Campo vtiger não está disponÃvel para mapeamento', + 'JS_SAVED_SUCCESSFULLY' => 'Configurações salvas com sucesso', + 'phone' => 'Telefone', + 'email' => 'Email', + 'url' => 'URL', + 'home' => 'Residência', + 'work' => 'Trabalho', + 'custom' => 'Cliente', + 'mobile' => 'Celular', + 'main' => 'Principal', + 'work_fax' => 'Fax', + 'home_fax' => 'Fax Residencial', + 'pager' => 'Pager', + 'profile' => 'Perfil', + 'blog' => 'Blog', + 'home-page' => 'Homepage', + 'address' => 'Endereço', - //More currencies message - 'JS_BASE_CURRENCY_CHANGED_TO_DISABLE_CURRENCY' => 'Moeda predefinida tem que ser mudado para desativar ', - 'JS_INTERNAL_COMMENT' => 'Comentário interno', - 'JS_INTERNAL_COMMENT_INFO' => 'O comentário só será visto por usuários de CRM, se a caixa de seleção interna comentário está ativada. Para notificar os clientes (por meio de fluxos de trabalho configuráveis ​​ou portal do cliente) deixar esta opção desabilitada', - - 'JS_NO_TAXES_EXISTS' => 'Não existem impostos', - 'JS_CONFIRM_TAXES_AND_CHARGES_REPLACE' => 'Você quer atualizar valores de impostos e de carga correspondentes a região selecionada?', - 'JS_PRINTTEMPLATEMODULE_DISABLED' => 'Módulo PrintTemplates está desativado. Não é possÃvel executar a operação', - 'JS_SENT_FOR_SIGNATURE' => 'Enviado por assinatura', - 'JS_FAILED_TO_SEND_FOR_SIGNATURE' => 'Não foi possÃvel enviar para a assinatura', // Cron - 'JS_NONE_OF_THE_VALUES_ARE_CHANGED' => 'Nenhum dos valores são alterados', - - 'JS_SUITABLE_VTIGER_FIELD_NOT_AVAILABLE_FOR_MAPPING' => 'Campo Vtiger adequado não está disponÃvel para o mapeamento', - 'JS_SAVED_SUCCESSFULLY' => 'Configurações salvas com sucesso', - 'phone' => 'Telefone', - 'email' => 'Email', - 'url' => 'Url', - 'home' => 'Casa', - 'work' => 'Trabalho', - 'custom' => 'Personalizado', - 'mobile' => 'Móvel', - 'main' => 'Principal', - 'work_fax' => 'Fax', - 'home_fax' => 'InÃcio Fax', - 'pager' => 'Pager', - 'profile' => 'Perfil', - 'blog' => 'Blog', - 'home-page' => 'Homepage', - 'address' => 'Endereço', - 'JS_REMOVE_SYNC_CONFIRMATION' => 'Remova a sincronização só irá remover autenticação existente, não vai apagar registros sincronizados. Se você sincronizar com mesma conta Google mais uma vez, será criado registros duplicados. Tem certeza de que deseja remover a sincronização?', - - // Social Module Strings - 'JS_PLEASE_WAIT' => 'Por favor, aguarde ...', - 'JS_SOCIAL_FIELD_ERROR' => 'campo é obrigatório', - // Twitter Specific - 'JS_ADD_FAVOURITE_SUCCESS_MSG' => 'Adicionado Tweet a lista de favoritos com sucesso', - 'JS_UNDO_FAVOURITE_SUCCESS_MSG' => 'Tweet removido da lista de favoritos com sucesso', - 'JS_UNDO_RETWEET_SUCCESS_MSG' => 'UndoRetweet com sucesso', - 'JS_STATUS_UPDATE_SUCCESS_MSG' => 'Atualizado com sucesso', - 'JS_TWEET_DELETE_MSG' => 'Estado apagada com sucesso', - 'JS_INVALID_TWITTER_HANDLER_NAME' => 'Nome inválido Twitter Handler', - 'JS_RELATION_ADDED_SUCESSFULLY' => 'Relação adicionada com sucesso', - 'JS_FAILED_TO_ADD_RELATION' => 'Falha ao adicionar Relação', - 'JS_SOCIAL_POST_DELETE_CONFIRMATION' => 'Tem certeza de que deseja excluir?', - 'JS_EVENT_OR_TODO_ADDED_SUCCESS_MSG' => 'Evento / Todo adicionados com sucesso', - 'JS_LEAD_ADDED_SUCCESS_MSG' => 'Chumbo adicionada com sucesso', - 'JS_OPPORTUNITY_ADDED_SUCESS_MSG' => 'Oportunidade adicionada com sucesso', - 'JS_TICKET_ADDED_SUCESS_MSG' => 'Ticket adicionada com sucesso', - - 'JS_LBL_GETTING_RECIPIENT_PREFS' => 'Obtendo as preferências do destinatário ..', - 'JS_LBL_SAVING_PREFERENCES' => 'Salvando preferências ..', - //Office365 - 'LBL_REMOVE_SYNC_CONFIRMATION' => 'Remove Autorização para contatos, calendários e e-mails. Tem certeza de que deseja remover a sincronização?', - 'OFFICE365_SYNC_REMOVED_SUCCESSFULLY' => 'Office365 sync removido com sucesso', - 'OFFICE365_REMOVE_SYNCHRONIZATION_MESSAGE' => 'Ao clicar neste removerá autenticação Office365 existente. Não vai apagar todos os registros que já estão sincronizados. Ele não vai cancelar o registro do app Vtiger de você Office365 conta, para cancelar o registro visitar https://myapps.microsoft.com/', - 'JS_SELECT_OPTION' => 'Select an Option', - - 'JS_REMOVE_SYNC_CONFIRMATION' => 'Remova a sincronização só irá remover autenticação existente, não vai apagar registros sincronizados. Se você sincronizar com mesma conta Google mais uma vez, será criado registros duplicados. Tem certeza de que deseja remover a sincronização?', - 'JS_PASSWORD_MISMATCH_ERROR' => 'Por favor, volte a introduzir senhas. A "nova senha" e "password confirmar" valores não coincidem.', - 'JS_COMMA_NOT_ALLOWED_USERS' => 'Caracteres especiais como ,"<> não são permitidos no Nome e Sobrenome.', - 'JS_LOADING_COMMENTS' => 'Buscando Comentários ...', - 'Payment Failure!' => 'Falha de pagamento!', - 'We could not process the payment for your last invoice. Please update payment info to continue using the service without disruption.' => 'Não foi possÃvel processar o pagamento para a sua última fatura. Por favor, atualize informações de pagamento para continuar a utilizar o serviço sem interrupções.', - 'For assistance, please send email to' => 'Para obter assistência, por favor, envie um email para', - 'JS_MAX_ALLOWED_CHARACTERS' => 'Caracteres máximo permitido é de', + 'JS_NONE_OF_THE_VALUES_ARE_CHANGED' => 'Nenhum dos valores são alterados', + 'JS_REMOVE_SYNC_CONFIRMATION' => 'Ao remover a sincronização somente removerá a autenticação existente isto não apagará os registros sincronizados. Se você sincronizar com a mesma conta Google novamente, serão criados registros duplicados. Você tem certeza que deseja remover a sincronização?', + + //Recipient preferences labels + 'JS_LBL_GETTING_RECIPIENT_PREFS' => 'Obtendo as preferências do destinatário..', + 'JS_LBL_SAVING_PREFERENCES' => 'Salvando preferências..', + // Social Module Strings + 'JS_PLEASE_WAIT' => 'Por favor, aguarde...', + 'JS_SOCIAL_FIELD_ERROR' => 'campo é obrigatório', + // Twitter Specific + 'JS_ADD_FAVOURITE_SUCCESS_MSG' => 'Adicionado Tweet para lista de favoritos com sucesso', + 'JS_UNDO_FAVOURITE_SUCCESS_MSG' => 'Removido o Tweet da lista de favoritos com sucesso', + 'JS_UNDO_RETWEET_SUCCESS_MSG' => 'Desfazer Retweet com sucesso', + 'JS_STATUS_UPDATE_SUCCESS_MSG' => 'Atualizado com sucesso', + 'JS_TWEET_DELETE_MSG' => 'Status Apagado com sucesso', + 'JS_INVALID_TWITTER_HANDLER_NAME' => 'Nome Usuário Twitter Inválido', + 'JS_RELATION_ADDED_SUCESSFULLY' => 'Relação Adicionado com Sucesso', + 'JS_FAILED_TO_ADD_RELATION' => 'Falha ao Adicionar Relação', + 'JS_SOCIAL_POST_DELETE_CONFIRMATION' => 'Você tem certeza que deseja apagar?', + 'JS_EVENT_OR_TODO_ADDED_SUCCESS_MSG' => 'Evento/Tarefa adicionado com sucesso', + 'JS_LEAD_ADDED_SUCCESS_MSG' => 'Lead adicionado com sucesso', + 'JS_OPPORTUNITY_ADDED_SUCESS_MSG' => 'Oportunidade adicionado com sucesso', + 'JS_TICKET_ADDED_SUCESS_MSG' => 'Chamado adicionado com sucesso', + 'JS_CASE_ADDED_SUCESS_MSG' => 'Caso adicionado com sucesso', + 'JS_SELECT_OPTION' => 'Selecionar uma Opção', + + 'JS_LOADING_PLEASE_WAIT' => 'Carregando... Por favor, aguarde..', + 'JS_SAVING_PLEASE_WAIT' => 'Salvando.. Por favor, aguarde..', + 'JS_DUPLICATE_EMAILS_PLEASE_CHECK' => 'Endereço de email duplicado. Por favor, verifique', + 'JS_ALERT' => 'Alerta', + 'JS_SUCCESS' => 'Successo', + 'JS_REMOVE_MASS_TAG_WARNING' => 'Você tem certeza que deseja remover %s tag para o registro selecionado', + 'JS_VIEW_ALREADY_EXISTS' => 'Visualização já existe', + 'JS_PLEASE_ENTER_NUMBER_IN_RANGE' => 'Por favor, digite valor no intervalo', + 'JS_UPLOAD' => 'Upload', + 'JS_TODO_ADDED_SUCCESS_MSG' => 'Tarefa adicionada com sucesso', + 'JS_EVENT_ADDED_SUCCESS_MSG' => 'Evento adicionado com sucesso', + 'JS_ACTIVE' => 'Ativo', + 'JS_SNOOZED' => 'Adormecido', + 'JS_INVALID_URL' => 'URL Inválida', + 'JS_MAX_ALLOWED_CHARACTERS' => 'O número máximo de caracteres permitido é', + 'JS_ARE_YOU_SURE_YOU_WANT_TO_DELETE' => 'Você tem certeza que deseja apagar?', + 'JS_TAB_LABEL_EXCEEDS_CHARS' => 'O comprimento do rótulo da Aba deve ser inferior a %s caracteres', + 'JS_STARRED' => 'Deixar de Seguir', + 'JS_NOT_STARRED' => 'Seguir', + //Tags + 'JS_NO_TAG_EXISTS' => 'Não existe Aba', + //help wizard + 'JS_HELP_AND_SUPPORT' => 'Ajuda e Suporte', + 'JS_WHAT_DO_YOU_NEED_HELP_WITH' => 'O que você precisa de ajuda?', + 'JS_SUBMIT' => 'Enviar', + + /** Vtiger7 translations **/ + 'JS_ADD_MAX_15_ITEMS' => 'Você pode adicionar somente 15 itens', + 'SINGLE_SLA' => 'SLA', 'JS_DEFAULT_ENABLED' => 'Padrão habilitado', - 'JS_DEFAULT_DISABLED' => 'Padrão desativado', - - 'JS_PLEASE_ENTER_VALID_VALUE' => 'Por favor insira um valor válido', - 'JS_PLEASE_ENTER_VALID_TAG_NAME' => 'Por favor insira um nome de marca válido', - 'JS_TAG_SAVED_SUCCESSFULLY' => 'Guardada A Etiqueta Com Sucesso', - 'JS_SUBJECT_VALUE_CANT_BE_EMPTY' => 'Sujeito valor não pode ser vazio', - 'JS_PERCENTAGE_SHOULD_BE_LESS_THAN_100' => 'Porcentagem deve ser menor que 100', - 'LBL_DELETE_USER_CONFIRMATION' => 'Quando um Usuário for excluÃdo, o usuário será marcado como "Inativo", e não de novos registros podem ser atribuÃdas ao Usuário, e o usuário não será capaz de fazer o login. Faturamento irá parar para este usuário.Se você precisa de reativar um usuário excluÃdo, você precisará enviar e-mail para support@vtiger.com.Are tem certeza que deseja excluir?', - 'JS_DUPLICATE_CREATION_CONFIRMATION' => 'Nome da organização já Existe.Você deseja criar um registro duplicado?', - 'JS_SELECT_RECORDS_TO_MERGE_FROM_SAME_GROUP' => 'Você tem que selecionar os registros no mesmo grupos de fusão', - 'JS_SELECT_ATLEAST_TWO_RECORD_FOR_MERGING' => 'Selecione pelo menos dois registros de fusão', - 'JS_ALLOWED_TO_SELECT_MAX_OF_THREE_RECORDS' => 'Você está autorizado a selecionar um máximo de três registros', - 'JS_ARE_YOU_SURE_TO_DELETE_WIDGET' => 'Tem certeza de que deseja excluir widget', - 'JS_ARE_YOU_SURE_TO_DELETE_DASHBOARDTAB' => 'Tem certeza de que deseja excluir guia', - 'JS_TABS_LIMIT_EXCEEDED' => 'Desculpe! Não é possÃvel adicionar mais de 10 abas', - 'JS_TOTAL_RECORDS' => 'Total de registros', - 'JS_PAGE_NOT_EXIST' => 'A página não existe', - 'JS_YOU_ARE_IN_PAGE_NUMBER' => 'Você está na página número', - 'JS_PLEASE_ENABLE_BASE_CURRENCY_FOR_PRODUCT' => 'Por favor, habilite a moeda base por produto', - 'JS_PLEASE_SELECT_BASE_CURRENCY_FOR_PRODUCT' => 'Por favor, selecione uma moeda base por produto', - 'JS_RECORDS_ARE_GETTING_DELETED' => 'Registros estão ficando excluÃdos', - 'JS_RECORD_GETTING_DELETED' => 'Registro de ficar excluÃdo', - 'JS_NO_RESULTS_FOUND' => 'Nenhum Resultado Encontrado', - 'JS_RECORDS TRANSFERRED SUCCESSFULLY' => 'Registros de propriedade tem sido tranferred com sucesso', - 'LBL_SEARCHING' => 'Procurar em ', - 'JS_RECORDS_TRANSFERRED_SUCCESSFULLY' => 'Registros de propriedade transferidos com êxito.', - 'JS_USER_DELETED_SUCCESSFULLY' => 'Usuário excluÃdo com êxito.', - 'JS_TRY_LATER' => 'Por favor, tente mais tarde!', - 'JS_CANCEL_SUBSCRIPTION_CONFIRMATION' => 'Tem certeza de que deseja cancelar a SUBSCRIÇÃO?', - 'JS_PLAN_CHANGED_SUCCESSFULLY' => 'Novo Plano De Ativado Com Sucesso.', - 'JS_SUBSCRIPTION_CANCELLED_SUCCESSFULLY' => 'Inscrição cancelada com sucesso.', - 'JS_REACTIVATED_SUCCESSFULLY' => 'Vtiger Assinatura reativado com sucesso', - 'JS_PAYMENTMETHOD_ADDED_SUCCESSFULLY' => 'Obrigado por subscrever. O seu método de pagamento adicionado com sucesso', - 'JS_EXCLUSIVE_MONTH_PLAN_TO_UPGRADE_CONFIRMATION' => 'Exclusivo plano de assinatura mensal (us$12 por usuário. A sua conta será cobrada a diferença no preço, para a parte restante do perÃodo de faturamento atual. Por favor, confirme se você gostaria de prosseguir para o Exclusivo Plano Mensal.', - 'JS_ULTIMATE_MONTH_PLAN_TO_UPGRADE_CONFIRMATION' => 'Ultimate plano de assinatura mensal (us$36 por usuário. A sua conta será cobrada a diferença no preço, para a parte restante do perÃodo de faturamento atual. Por favor, confirme se você gostaria de prosseguir para o Plano Final Mensal.', - 'JS_SALESPREMIUM_MONTH_PLAN_TO_UPGRADE_CONFIRMATION' => 'Vendas de plano Premium taxa de assinatura mensal (us$24 por usuário. A sua conta será cobrada a diferença no preço, para a parte restante do perÃodo de faturamento atual. Por favor, confirme se você gostaria de prosseguir para Vendas de Plano Premium Mensal.', - 'JS_SUPPORT_MONTH_PLAN_TO_UPGRADE_CONFIRMATION' => 'Plano de apoio taxa de assinatura mensal (us$12 por usuário. A sua conta será cobrada a diferença no preço, para a parte restante do perÃodo de faturamento atual. Por favor, confirme se você gostaria de prosseguir para o Plano de Suporte Mensal.', - 'JS_SALES_MONTH_PLAN_TO_UPGRADE_CONFIRMATION' => 'Plano de vendas taxa de assinatura mensal (us$12 por usuário. A sua conta será cobrada a diferença no preço, para a parte restante do perÃodo de faturamento atual. Por favor, confirme se você gostaria de prosseguir para o Plano de Vendas Mensal.', - 'JS_CONTACT_MONTH_PLAN_TO_UPGRADE_CONFIRMATION' => 'Contacte o plano de Gestão de taxa de assinatura mensal (us$9 por usuário. A sua conta será cobrada a diferença no preço, para a parte restante do perÃodo de faturamento atual. Por favor, confirme se você deseja prosseguir o Contacto do Plano de Gestão Mensal.', - 'JS_EXCLUSIVE_ANNUAL_PLAN_TO_UPGRADE_CONFIRMATION' => 'Exclusivo plano anual de taxa de inscrição (r$132 por usuário. A sua conta será cobrada a diferença no preço, para a parte restante do perÃodo de faturamento atual. Por favor, confirme se você gostaria de prosseguir para o Exclusivo Plano Anual.', - 'JS_ULTIMATE_ANNUAL_PLAN_TO_UPGRADE_CONFIRMATION' => 'Final do plano anual de taxa de inscrição (r$360 por usuário. A sua conta será cobrada a diferença no preço, para a parte restante do perÃodo de faturamento atual. Por favor, confirme se você gostaria de prosseguir para o Final do Plano Anual.', - 'JS_SALESPREMIUM_ANNUAL_PLAN_TO_UPGRADE_CONFIRMATION' => 'Vendas de plano Premium taxa de assinatura anual (us$240 por usuário. A sua conta será cobrada a diferença no preço, para a parte restante do perÃodo de faturamento atual. Por favor, confirme se você gostaria de prosseguir para Vendas de Plano Premium Anual.', - 'JS_SUPPORT_ANNUAL_PLAN_TO_UPGRADE_CONFIRMATION' => 'Plano de suporte anual da taxa de inscrição (r$120 por usuário. A sua conta será cobrada a diferença no preço, para a parte restante do perÃodo de faturamento atual. Por favor, confirme se você gostaria de prosseguir para o Plano de Apoio Anual.', - 'JS_SALES_ANNUAL_PLAN_TO_UPGRADE_CONFIRMATION' => 'Plano de vendas anual da taxa de inscrição (r$120 por usuário. A sua conta será cobrada a diferença no preço, para a parte restante do perÃodo de faturamento atual. Por favor, confirme se você gostaria de prosseguir para o Plano de Vendas Anual.', - 'JS_CONTACT_ANNUAL_PLAN_TO_UPGRADE_CONFIRMATION' => 'Contacte o plano de Gestão de taxa de assinatura mensal (us$99 por usuário. A sua conta será cobrada a diferença no preço, para a parte restante do perÃodo de faturamento atual. Por favor, confirme se você deseja prosseguir o Contacto do Plano de Gestão Anual.', - 'JS_CASE_ADDED_SUCESS_MSG' => 'Caso adicionado com sucesso', - 'JS_ENTERED_CURRENT_USERNAME_MSG' => 'Você digitou o nome de usuário atual. Por favor, introduza o novo nome de usuário.', - 'JS_LOADING_PLEASE_WAIT' => 'A carregar... por Favor aguarde..', - 'JS_SAVING_PLEASE_WAIT' => 'Verão.. aguarde..', - 'JS_DUPLICATE_EMAILS_PLEASE_CHECK' => 'Duplicar endereços de e-mail. Por favor, verifique', - 'JS_ALERT' => 'Alerta', - 'JS_SUCCESS' => 'Sucesso', - 'JS_REMOVE_MASS_TAG_WARNING' => 'Tem certeza de que deseja remover %s de marca para os registros selecionados', - 'JS_VIEW_ALREADY_EXISTS' => 'Vista já existe', - 'JS_PLEASE_ENTER_NUMBER_IN_RANGE' => 'Por favor insira um valor no intervalo', - 'JS_UPLOAD' => 'Upload', - 'JS_TODO_ADDED_SUCCESS_MSG' => 'Tarefa adicionada com sucesso', - 'JS_EVENT_ADDED_SUCCESS_MSG' => 'Evento adicionado com sucesso', - 'JS_ACTIVE' => 'Active', - 'JS_SNOOZED' => 'Snoozed', - 'JS_INVALID_URL' => 'URL inválido', - 'JS_ARE_YOU_SURE_YOU_WANT_TO_DELETE' => 'Tem certeza que deseja excluir?', - 'JS_TAB_LABEL_EXCEEDS_CHARS' => 'Guia do comprimento da etiqueta deve ser menor do que %s caracteres', - 'JS_STARRED' => 'Estrela', - 'JS_NOT_STARRED' => 'Não Marcados Com Estrela', - 'JS_NO_TAG_EXISTS' => 'Nenhuma Marca Existe', - 'JS_HELP_AND_SUPPORT' => 'Ajuda E Suporte', - 'JS_WHAT_DO_YOU_NEED_HELP_WITH' => 'Que tipo de ajuda você precisa?', - 'JS_SUBMIT' => 'Enviar', - 'JS_ADD_MAX_15_ITEMS' => 'Você pode adicionar apenas 15 itens', - 'SINGLE_SLA' => 'SLA', - 'JS_EDIT_FIELDS' => '%s Campos & Layout', - 'JS_MORE_VTIGER' => 'Há mais registros a serem sincronizados no vtiger', - 'JS_MORE_GOOGLE' => 'Há mais registros a serem sincronizados no Google', - 'JS_MORE_OFFICE365' => 'Há mais registros a serem sincronizados em Office365', - 'JS_TOKEN_EXPIRED' => 'Office365 Autenticação expirou. Clique em iniciar sessão com o Office365 botão para voltar a autorizar.', - 'JS_WISH_TO_PROCEED' => 'Tem certeza de que deseja continuar?', - 'JS_SWITCH_TO_OLD_LOOK_CONFIRMATION_MESSAGE' => 'Alguns recursos, incluindo notificações, de lista de opções de cores, siga registro, não estão disponÃveis na versão antiga. Você pode alternar de volta para a nova versão escolhendo nova versão do superior direita do menu.', - 'JS_PROCEED_OLD_VERSION' => 'Prossiga para a versão antiga', - 'JS_STAY_WITH_NEW_VERSION' => 'Ficar com a nova versão', - 'JS_AGO' => 'atrás', - 'JS_FROM_NOW' => 'a partir de agora', - 'JS_LESSTHAN_A_MINUTE' => 'menos de um minuto', - 'JS_A_MINUTE' => 'um minuto', - 'JS_AN_HOUR' => 'uma hora', - 'JS_HOURS' => 'horas', - 'JS_A_DAY' => 'um dia', - 'JS_DAYS' => 'dias', - 'JS_A_MONTH' => 'um mês', - 'JS_MONTHS' => 'meses', - 'JS_A_YEAR' => 'um ano', - 'JS_YEARS' => 'anos', - 'JS_TODAY' => 'hoje', - 'JS_TOMORROW' => 'amanhã', - 'JS_YESTERDAY' => 'ontem', - 'JS_CREATE_TASK' => 'Criar Tarefa', - - - 'JS_SUPPORTPREMIUM_MONTH_PLAN_TO_UPGRADE_CONFIRMATION' => 'Suporte Premium plano de assinatura mensal (us$24 por usuário. A sua conta será cobrada a diferença no preço, para a parte restante do perÃodo de faturamento atual. Por favor, confirme se você gostaria de prosseguir para o Suporte Premium Plano Mensal.', - 'JS_SUPPORTPREMIUM_ANNUAL_PLAN_TO_UPGRADE_CONFIRMATION' => 'Suporte Premium plano anual de taxa de inscrição (r$240 por usuário. A sua conta será cobrada a diferença no preço, para a parte restante do perÃodo de faturamento atual. Por favor, confirme se você gostaria de prosseguir para o Suporte Premium Plano Anual.', - - - 'JS_MENTION_ATLEAST_ONE_USER' => 'Mencionar pelo menos um usuário', - 'JS_LOADING' => 'A carregar...', - - 'JS_UPLOAD_SUCCESSFUL' => 'Arquivo enviado com sucesso', - 'JS_UPLOAD_FAILED' => 'Carregar arquivo falhou', + 'JS_DEFAULT_DISABLED' => 'Padrão desabilitado', + 'JS_EDIT_FIELDS' => '%s Campos e Layout', + 'JS_MORE_VTIGER' => 'Existem mais registros para serem sincronizados no Vtiger', + 'JS_MORE_GOOGLE' => 'Existem mais registros para serem sincronizados no Google', + 'JS_MORE_OFFICE365' => 'Existem mais registros para serem sincronizados no Office365', + 'JS_TOKEN_EXPIRED' => 'A autenticação do Office365 expirou. Clique no botão Iniciar sessão no Office365 para reautorizar.', + 'JS_WISH_TO_PROCEED' => 'Você tem certeza que deseja prosseguir?', + 'JS_SWITCH_TO_OLD_LOOK_CONFIRMATION_MESSAGE' => 'Alguns recursos, incluindo notificações, lista de opções coloridas, registro Seguir, não disponÃveis na versão antiga. Você deve mudar para nova versão escolhendo nova versão a partir do menu no topo a direita.', + 'JS_PROCEED_OLD_VERSION' => 'Prosseguir com a versão antiga', + 'JS_STAY_WITH_NEW_VERSION' => 'Manter-se com a nova versão', + + //TimeAgo plugin Strings + 'JS_AGO' => 'atrás', + 'JS_FROM_NOW' => 'a partir de agora', + 'JS_LESSTHAN_A_MINUTE' => 'menos de um minuto', + 'JS_A_MINUTE' => 'um minuto', + 'JS_AN_HOUR' => 'uma hora', + 'JS_HOURS' => 'horas', + 'JS_A_DAY' => 'um mdia', + 'JS_DAYS' => 'dias', + 'JS_A_MONTH' => 'um mês', + 'JS_MONTHS' => 'meses', + 'JS_A_YEAR' => 'um ano', + 'JS_YEARS' => 'anos', + 'JS_TODAY' => 'hoje', + 'JS_TOMORROW' => 'amanhã', + 'JS_YESTERDAY' => 'ontem', + + 'JS_CREATE_TASK' => 'Criar Tarefa', + + //Notifications + 'JS_MENTION_ATLEAST_ONE_USER' => 'Mencionar ao menos um Usuário', + 'JS_LOADING' => 'Carregando...', + 'JS_CASE_ACCEPTED_SUCCESSFULLY' => 'O Caso foi aceito com sucesso', + + 'JS_UPLOAD_SUCCESSFUL' => 'O arquivo foi carregado com sucesso', + 'JS_UPLOAD_FAILED' => 'Falhou ao transferir arquivo', + 'JS_FAILED_TO_UPLOAD_FILE' => 'Falha ao transferir arquivo', + 'JS_DOCUMENT_CREATED' => 'Documento criado', + 'JS_DOCUMENT_CREATION_FAILED' => 'A criação do Documento falhou', + + 'JS_TEMPLATE_TEXT_EXCEEDS_LIMIT' => 'O tamanho do modelo excedeu o máximo permitido de 100 KB. Remova algum texto no modelo e tente novamente', + 'JS_PLEASE_SELECT_IMAGE' => 'Por favor, selecione uma imagem', + + 'JS_LBL_MY_PREFERENCES' => 'Minhas Preferências', + 'JS_LBL_MY_PREFERENCES_TEXT' => 'Configure suas preferências pessoais incluindo Fuso Horário, Moeda e Formato de Data. Você pode ainda carregar imagem do Perfil a partir das Minhas Preferências.', + 'JS_LBL_HELP' => 'Ajuda', + 'JS_LBL_HELP_TEXT' => 'Clique no botão Ajuda para encontrar Guias e FAQ. Utilize o menu Ajuda para obter apoio do pessoal de suporte do Vtiger', + 'JS_LBL_RESTART_TOUR' => 'Reiniciar Tour Guiado', + 'JS_LBL_RESTART_TOUR_TEXT' => 'Clique aqui para iniciar este tour novamente', + 'JS_GOOGLE_REMOVE_SYNC_CONFIRMATION' => 'Ao revogar o acesso, será revogada somente a autenticação do Google existente para Contatos e Agenda, ou seja, os registros sincronizados não serão apagados. Se você sincronizar com a mesma conta Google novamente, os registros serão duplicados. Você tem certeza que deseja revogar o acesso?', + 'JS_OFFICE_REMOVE_SYNC_CONFIRMATION' => 'Ao revogar o acesso, será revogada somente a autenticação do Google existente para Contatos e Agenda, ou seja, os registros sincronizados não serão apagados. Se você sincronizar com a mesma conta Office365 novamente, os registros serão duplicados. Você tem certeza que deseja revogar o acesso?', + 'JS_FOLLOW_RECORD' => 'Seguindo o registro', + 'JS_FOLLOWING' => 'Seguindo', + 'JS_UNFOLLOW_RECORD' => 'Parar de seguir registro', + 'JS_UNFOLLOWING' => 'Parar de seguir', + 'JS_RECORD_CREATED' => 'Registro criado', + 'JS_RECORD_UPDATED' => 'Registro atualizado', + 'JS_LIST_SAVED' => 'Lista salva', + 'JS_RECIPIENT_PREFERENCES_SAVED' => 'Preferências do Destinatário salva', + 'JS_TASK_ADDED' => 'Tarefa adicionada', + 'JS_MARKED_COMPLETED' => 'Marcado como concluÃda', + 'JS_TASK_PRIORITY_CHANGED' => 'Prioridade da Tarefa alterada', + 'JS_NO_PERMISSION_TO_MARK_AS_HELD' => 'Você não tem permissão para marcar este evento como realizado', + 'JS_TAG_ADDED' => 'Tag adicionada', + 'JS_TAB_DELETED' => 'Apagada', + 'JS_TAB_RENAMED' => 'Renomeada', + 'JS_TAB_REORDERED' => 'Reordenada', + //Convert Lead + 'JS_CONVERT_LEAD_ERROR' => 'Você precisa habilitar o módulo Organizações ou Contatos para converter o Lead.', + + 'JS_CHECK_START_AND_END_DATE' => 'A Data e Hora deve ser maior ou igual que a Data e Hora inicial', + 'JS_CHECK_START_AND_END_DATE_SHOULD_BE_GREATER' => 'A Data e Hora final deve ser maior que a Data e Hora inicial', + 'JS_HOLD_FOLLOW_UP_SHOULD_BE_LESS_THAN_CURRENT_DATE' => 'O acompanhamento deve ser maior ou igual que a Data e Hora inicial', + 'JS_DUPLICATES_DETECTED' => 'Duplicidade(s) detectada(s)!', + + 'JS_IS' => 'é', + 'JS_IS_NOT' => 'não é', + 'JS_EQUALS' => 'iguais', + 'JS_NOT_EQUALS_TO' => 'não são iguais para', + 'JS_ONLY_LETTERS_AND_NUMBERS_ALLOWED' => 'Somente letras (a-z), números (0-9), e espaços são permitidos', + 'JS_WIDGET_RESIZING_WAIT_MSG' => 'O conteúdo do widget será carregado após redimensionamento.', + 'JS_SLA_FULFILLMENT_RATE' => 'SLA CUMPRIMENTO DE TAXA', + 'JS_TICKET_COUNT' => 'CONTEÚDO DO CASO', + 'JS_CASES_AGE_HOURS' => 'IDADE DO CONTEÚDO (horas)', + 'JS_BACKLOG' => 'Atraso', + 'JS_AND' => 'e', + 'JS_SEQUENCE_UPDATED_SUCCESSFULLY' => 'Sequencia atualizada com sucesso', + 'JS_VIEW_RECORD' => 'Ver Registro', + 'JS_HIDE' => 'Oculto', + 'JS_SHOW_ALL' => 'Mostrar tudo', + 'JS_SHOW_LESS' => 'Mostrar menos', + 'JS_SHOW_MORE' => 'Mostrar mais', + + 'JS_KANBAN_ANCHORS_LIMIT_MESSAGE' => 'Você pode selecionar somente acima de 10 estágios', + 'JS_KANBAN_NO_MORE_RECORDS' => 'Não foram encontrados mais registros', + 'JS_DELETED' => 'deletado', + 'JS_CLEAR_TEMPLATE_CONTENT_RECIPIENTS' => 'Alterando o módulo você irá limpar o modelo selecionado e os destinatários do campo TO. Você quer prosseguir?', + 'JS_WORKFLOW_ACTIONS_LIMIT_EXCEEDED' => 'Excedeu o limite máximo de ações nesta edição.', + 'JS_RECORD_CREATION_LIMIT_EXCEEDED' => 'Criar registro - Limite máximo desta edição excedido.', + 'JS_KANBAN_NO_ANCHORS_CONFIGURED' => 'Você não possui nenhum estágio de vendas definido para o seu pipeline de vendas.', + 'JS_KANBAN_NO_ANCHORS_CONFIGURED_NON_ADMIN' => 'Você não possui nenhum estágio de vendas definido para o seu pipeline de vendas. Por favor entre em contato com o administrador para definir os estágios de venda de acordo com seu processo de vendas.', + 'JS_UPDATE_MAPPING_CONFIRMATION' => 'Existem algumas colunas correspondentes no arquivo CSV que não são salvas neste mapeamento. Deseja atualizar esse mapeamento com novas colunas?', + 'JS_MAPPING_UPDATED' => 'Novo mapeamento atualizado.', + 'JS_MAILCHIMP_REMOVE_SYNC_CONFIRMATION' => 'A revogação do acesso irá remover a autenticação MailChimp já existente, mas não eliminará os registros sincronizados. Tem certeza de que deseja revogar o acesso?', + 'JS_WARNING' => 'Aviso', + 'JS_CANT_SELECT_LEAD' => 'Não pode selecionar Lead relacionado', + 'JS_CANT_SELECT_CONTACT' => 'Não pode selecionar Lead relacionado', + 'JS_MSG_EMPTY_RB_CONFIRMATION' => 'Tem certeza de que deseja remover permanentemente todos os registros excluÃdos do banco de dados?', + 'JS_LBL_RESTORE_RECORDS_CONFIRMATION' => 'Tem certeza de que deseja restaurar os registros?', + 'JS_COMMENT_POSTED_SUCCESSFULLY' => 'Comentários publicados com sucesso', + 'JS_SHARED_PUBLICLY_WITH' => 'Compartilhamento público com', + 'JS_SHARED_PRIVATELY_WITH' => 'Compartilhamento privado com', + 'JS_MAIL_SENT_SUCCESSFULLY' => 'Mensagem enviada com sucesso', + 'JS_SHARED_PUBLICLY_TITLE' => 'A conversa pública também pode ser visualizada por Usuários fora das caixas de correio vinculadas, se tiverem acesso ao Contato relacionado, Oportunidade ...etc', + 'JS_SHARED_PRIVATELY_TITLE' => 'A conversa privada só pode ser visualizada pelos membros das caixas de correio a que está vinculado..', + 'JS_LINKED_RECORDS_SUCCESS' => 'Os registros vinculados foram atualizados com sucesso', + 'JS_MAIL_DRAFTED_SUCCESSFULLY' => 'Mensagem elaborada com sucesso', + + //Custom view default sort translations. + 'JS_PLEASE_REMOVE_ONE_FIELD_FROM_CHOOSE_COLUMNS_LIST_TO_ADD_DEFAULT_SORT_FIELD' => 'Apenas 16 colunas são permitidas em uma exibição de lista, incluindo colunas de classificação.', + 'JS_DEFAULT_SORT_NOTIFY' => 'A lista agora está ordenada na coluna de classificação padrão', + 'JS_ENABLED' => 'Ativado', + 'JS_DISABLED' => 'Desativado', + 'JS_ONLY_ALLOWED_USERS_ARE_ALLOWED_TO_DO_ACTION' => 'Não foi possÃvel marcar a(s) conversa(s) como não lidas, lidas, excluÃdas, concluÃdas, privadas ou públicas, já que você não as possui.', + 'JS_SHARED_WITH' => 'Compartilhá-las', + 'JS_DEFAULT_DASHBOARD_TOOLTIP' => 'Faça este painel como padrão ao reordená-lo como a primeira guia!', + 'JS_SET_DEFAULT_TAB' => 'é definido como o painel de controle padrão', + 'JS_PASSWORD_MISMATCH_ERROR' => 'Por favor, redigite as senhas. Os valores da "nova senha" e "confirmação da senha" não combinam.', + 'LBL_LIST_DELETE_CONFIRMATION' => 'Você em certeza que deseja apagar?', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Webservices.php b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Webservices.php index b1515daf2af5899f05fc823602359d4541b9fec6..2ae95d7dd7c57d64ddc283dce3f6dc095f1bd56e 100644 --- a/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Webservices.php +++ b/pkg/vtiger/translations/BrazilianLanguagePack_bz_bz/modules/Webservices.php @@ -1,22 +1,17 @@ -<?php - -/* +*********************************************************************************** - * The contents of this file are subject to the vtiger CRM Public License Version 1.0 - * ("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. - * *********************************************************************************** */ -$languageStrings = array( - 'Invalid value given for old password.' => 'Valor inválido dado por senha antiga.', - "New Password and confirm password don't match" => 'Nova senha e confirme senha não correspondem', - 'Database error while performing requested operation' => 'Erro de banco de dados durante a execução de operação solicitada', - 'Failed to change password' => 'Falha ao alterar senha', +<?php +/********************************************************************************* + ** The contents of this file are subject to the vtiger CRM Public License Version 1.0 + * ("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. Contributor(s): Valmir C. Trindade - Brazilian Portuguese Translation - www.ttcasolucoes.com.br + * + ********************************************************************************/ - 'LBL_INVALID_OLD_PASSWORD' => 'Valor inválido dado para a palavra-passe antiga.', - 'LBL_NEW_PASSWORD_MISMATCH' => 'Nova palavra-Passe e confirmar palavra-passe não coincidem', - 'LBL_DATABASE_QUERY_ERROR' => 'Banco de dados de erro ao executar a operação solicitada', - 'LBL_CHANGE_PASSWORD_FAILURE' => 'Falha ao alterar a palavra-passe', - -); +$languageStrings = array( + 'LBL_CHANGE_PASSWORD_FAILURE' => 'Falha ao alterar a senha', + 'LBL_DATABASE_QUERY_ERROR' => 'Erro de banco de dados durante a execução da operação solicitada', + 'LBL_INVALID_OLD_PASSWORD' => 'Valor inválido fornecido para senha antiga.', + 'LBL_NEW_PASSWORD_MISMATCH' => "Nova Senha e Senha de Confirmação não são idênticas", +); diff --git a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Calendar.php b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Calendar.php index 233ceda0f44bf84b41d5a636e25d5dad27d1647e..bb11a0bc2cf186ed027aad6bd338b91a7097cd8d 100644 --- a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Calendar.php +++ b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Calendar.php @@ -147,6 +147,9 @@ $languageStrings = array( 'LBL_NOVEMBER' => 'November', 'LBL_DECEMBER' => 'December', 'LBL_CLICK_HERE_TO_VIEW' => 'Click here to view', + + 'LBL_TOTAL_EVENTS_DUPLICATED' => 'No. of duplicate Events skipped', + 'LBL_TOTAL_TASKS_DUPLICATED' => 'No. of duplicate Tasks skipped', ); $jsLanguageStrings = array( 'LBL_ADD_EVENT_TASK' => 'Add Event / To Do' , diff --git a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Contacts.php b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Contacts.php index d6da0c1c00a15c64a365582e0dcfd595854ffa71..b7147edfd8b2b1ecfdc5b4dc0a31f93f061db160 100644 --- a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Contacts.php +++ b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Contacts.php @@ -50,7 +50,6 @@ $languageStrings = array( 'Contact Id' => 'Contact Id', 'Support Start Date' => 'Support Start Date' , 'Support End Date' => 'Support End Date' , - 'LBL_TRANSACTIONS' => 'Transactions', 'Other Phone' => 'Secondary Phone', 'Email' => 'Primary Email', diff --git a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Google.php b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Google.php index e6b8ff88063d9fd7ebdfa24807813e54d60289cf..dbafdf4be50001b2d75f58fe748f0a6a8113b837 100644 --- a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Google.php +++ b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Google.php @@ -77,8 +77,9 @@ $languageStrings = array( 'LBL_SAVE_AND_IMPORT' => 'Save and Import', 'LBL_IMPORT_RESULTS_GOOGLE' => 'Google Import results', + 'LBL_REDIRECT_URL' => 'Redirect url', + 'LBL_REDIRECT_URL_MESSAGE' => 'Copy the following redirect url and paste in your google auth project as image shows', ); - $jsLanguageStrings = array( 'LBL_SYNC_BUTTON' => "Synchronize Now", 'LBL_SYNCRONIZING' => "Synchronizing....", diff --git a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Settings/LayoutEditor.php b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Settings/LayoutEditor.php index 31d927962f009e7b157c02d1455310651e965123..04fd7bd565121f3a9e318b611afb4abc05c5591e 100644 --- a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Settings/LayoutEditor.php +++ b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Settings/LayoutEditor.php @@ -147,8 +147,21 @@ $languageStrings = array( 'LBL_DETAIL_HEADER' => 'Record header', 'LBL_HEADER_FIELD' => 'Header View', + 'LBL_DUPLICATE_HANDLING' => 'Duplicate Prevention', + 'LBL_DUPLICATE_CHECK' => 'Enable duplicate check', + 'LBL_DUPLICATION_INFO_MESSAGE' => 'Duplicate prevention feature only prevents new duplicate records from getting created by users and external applications. Records created from Import', + 'LBL_SELECT_FIELDS_FOR_DUPLICATION' => 'Select the unique fields on which duplicate records are to be checked', + 'LBL_SELECT_FIELDS' => 'Select Fields', + 'LBL_MAX_3_FIELDS' => 'Max 3 Fields', + 'LBL_SELECT_RULE' => 'Select rule for handling duplicates', + 'LBL_ALLOW_DUPLICATES' => 'Allow Duplicates', + 'LBL_DO_NOT_ALLOW_DUPLICATES' => 'Do not allow Duplicates', + 'LBL_DUPLICATES_IN_SYNC_MESSAGE' => 'Action to take if duplicate record is found while syncing with external application', + 'LBL_PREFER_LATEST_RECORD' => 'Prefer latest record', + 'LBL_PREFER_INTERNAL_RECORD' => 'Prefer internal record', + 'LBL_PREFER_EXTERNAL_RECORD' => 'Prefer external record', + 'LBL_SYNC_TOOLTIP_MESSAGE' => 'Prefer latest record - Most recently modified record data will be retained<br>Prefer internal record - Existing record will be retained as it is<br>Prefer external record - Data from the external application will be copied', ); - $jsLanguageStrings = array( 'JS_BLOCK_VISIBILITY_SHOW' => 'Block show enabled', 'JS_BLOCK_VISIBILITY_HIDE' => 'Block hide enabled', @@ -208,4 +221,7 @@ $jsLanguageStrings = array( 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'Name fields appear in Header by default', 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'This Field is Header enabled for Vtiger7, It will appear in Summary View', -); + 'JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE' => 'Successfully updated to consider selected fields in duplicates prevention', + 'JS_DUPLICATE_HANDLING_FAILURE_MESSAGE' => 'Failed to consider selected fields in duplicates prevention', + 'JS_DUPLICATE_CHECK_DISABLED' => 'Duplicate check is disabled', +); \ No newline at end of file diff --git a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Settings/Vtiger.php b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Settings/Vtiger.php index ddf3550cfb86f2cae178145cc10948d1449c4ba8..f37d391b8493c9251e2330209a69b4d033d9310e 100644 --- a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Settings/Vtiger.php +++ b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Settings/Vtiger.php @@ -228,7 +228,7 @@ $languageStrings = array( 'twitter' => 'Twitter' , 'linkedin' => 'LinkedIn' , 'LBL_IMAGE_CORRUPTED' => 'Virus detected or Uploaded image corrupted', // TODO: Review - 'LBL_LOGO_RECOMMENDED_MESSAGE' => 'Recommended size 170X60 pixels( .jpeg , .jpg , .png , .gif , .pjpeg , .x-png format ).', // TODO: Review + 'LBL_LOGO_RECOMMENDED_MESSAGE' => 'Recommended size 150X40 pixels( .jpeg , .jpg , .png , .gif , .pjpeg , .x-png format ).', // TODO: Review 'LBL_COMPANY_INFORMATION' => 'Company Information' , // TODO: Review 'LBL_UPDATE' => 'Update' , // TODO: Review 'LBL_UPDATE_LOGO' => 'Update Logo' , // TODO: Review @@ -366,4 +366,4 @@ $jsLanguageStrings = array( 'JS_LBL_TAX_REGION_EXIST' => 'Region Name already exists', 'JS_LOGO_IMAGE_DIMENSIONS_WRONG' => 'Logo Image dimensions did not match the allowed dimension. Resize your image and try again.', -); \ No newline at end of file +); diff --git a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Settings/Webforms.php b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Settings/Webforms.php index ecc31956ae588c3bd7e19dcfd50be2f88907596b..cfb81f4b4897fddb866c716660165cd6cef722ad 100644 --- a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Settings/Webforms.php +++ b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Settings/Webforms.php @@ -40,6 +40,12 @@ $languageStrings = array( 'LBL_ADD_RECORD' => 'Add Webform', + 'LBL_UPLOAD_DOCUMENTS' => 'Upload Documents', + 'LBL_ADD_FILE_FIELD' => 'File Upload Field', + 'LBL_FIELD_LABEL' => 'Document Title', + 'LBL_FILE_FIELD_INFO' => 'For each file uploaded from web form a new Document is created with the attached file. Document is also linked to this newly created %s.', + 'LBL_NO_FILE_FIELD' => 'No file fields added.', + 'LBL_COPY_TO_CLIPBOARD' => 'Copy to clipboard', ); $jsLanguageStrings = array( 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'Webform deleted successfully', // TODO: Review @@ -53,4 +59,7 @@ $jsLanguageStrings = array( 'JS_SELECT_AN_OPTION' => 'Select an Option', 'JS_LABEL' => 'label', + 'JS_MAX_FILE_FIELDS_LIMIT' => 'Maximum you can add %s file fields.', + 'JS_COPIED_SUCCESSFULLY' => 'Copied successfully.', + 'JS_COPY_FAILED' => 'Copy failed. Please copy manually.', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Users.php b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Users.php index 879a08dc1f022537ccfb0394ec68fa305158cf29..f1ff5e849e560f07e4a2ecd1516355de6161d1de 100644 --- a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Users.php +++ b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Users.php @@ -129,7 +129,7 @@ $languageStrings = array( 'Africa/Nairobi' => '(UTC+03:00) Nairobi' , 'Asia/Tehran' => '(UTC+03:30) Tehran' , 'Asia/Tbilisi' => '(UTC+04:00) Tbilisi' , - 'Europe/Moscow' => '(UTC+04:00) Moscow, Volgograd', + 'Europe/Moscow' => '(UTC+03:00) Moscow, Volgograd', 'Asia/Muscat' => '(UTC+04:00) Abu Dhabi, Muscat', 'Asia/Baku' => '(UTC+04:00) Baku' , 'Asia/Yerevan' => '(UTC+04:00) Yerevan' , diff --git a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Vtiger.php b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Vtiger.php index 52c33fd77cb77b9ec3eb58cba7b231c05223aedc..2539c5099058d35a66ed701bf4a7319bec2ce297 100644 --- a/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Vtiger.php +++ b/pkg/vtiger/translations/BritishLanguagePack_br_br/modules/Vtiger.php @@ -638,7 +638,7 @@ $languageStrings = array( 'LBL_TRANSFER_OWNERSHIP' => 'Transfer Ownership', 'LBL_SELECT_RELATED_MODULES' => 'Select Related Modules', - 'LBL_CUSTOMIZE_MAIN_MENU' => 'Customize Main Menu', //TODO REVIEW + 'LBL_CUSTOMIZE_MAIN_MENU' => 'Customise Main Menu', //TODO REVIEW //Comments Field Labels for Workflow 'Comment' => 'Comment', @@ -832,6 +832,9 @@ $languageStrings = array( 'LBL_NOT_STARRED' => 'Follow', 'LBL_QUICK_VIEW' => 'Quick View', 'LBL_NOTIFICATION_CENTER' => 'Notification Center', + 'LBL_NOTIFICATION' => 'Notification', + 'LBL_STARRED_RECORD_TO' => '%s to %s', + 'LBL_STARRED_RECORD_UPDATED' => '%s updated %s', 'LBL_EDIT_REASON' => 'Edit reason', 'LBL_CONTACT' => 'CONTACT MANAGEMENT', 'LBL_NO_ATTACHMENTS' => 'No Attachments', @@ -871,7 +874,7 @@ $languageStrings = array( 'LBL_MODIFIED' => 'Modified', 'Funnel Amount' => 'Total Amount by Sales stage', 'LBL_TYPE_AND_SEARCH' => 'Type and Search', - 'LBL_CUSTOMIZE' => 'Customize:', + 'LBL_CUSTOMIZE' => 'Customise:', 'LBL_LABELS' => 'Labels', 'LBL_WORKFLOWS' => 'Workflows', 'LBL_PICKLIST' => 'Picklists', @@ -923,7 +926,7 @@ $languageStrings = array( '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.', + Click the button to authorise 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.', @@ -935,7 +938,7 @@ $languageStrings = array( '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.', + knowing our users better will help us prioritise enhancements.', 'TELL_US_ABOUT_YOU_HELP_TEXT_2' => 'The data you submitted here will not be revealed to anyone <Br> outside Vtiger.', 'LBL_IMPORT_CONTACTS' => 'Import Contacts', @@ -993,6 +996,7 @@ $languageStrings = array( 'LBL_MARKETING' => 'MARKETING', 'LBL_SALES' => 'SALES', 'LBL_PROJECT' => 'PROJECTS', + 'LBL_TOOLS' => 'TOOLS', 'LBL_TAGS' => 'Tags', 'LBL_SHARE_TAGS' => 'Public Tags', 'LBL_SHARE_TAG' => 'Share Tag', @@ -1071,6 +1075,16 @@ $languageStrings = array( 'LBL_SLA_INFORMATION' => 'SLA Information', 'LBL_TO_USE_SWITCH_TO_NEW_LOOK' => 'To use <b>%s</b>, we recommend you to Switch to new look.', 'LBL_DELETE_USER_CONFIRMATION' => 'When a User is deleted, 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. Are you sure you want to delete?', + + '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', + 'LBL_DUPLICATION_FAILURE_FROM_WEBFORMS' => 'The following %s could not be saved from "%s" webform', + '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(s) :', ); $jsLanguageStrings = array( 'JS_EMAIL_SERVER_CONFIGURATION' => 'Please configure your outgoing server settings from the settings page', @@ -1196,13 +1210,13 @@ $jsLanguageStrings = array( '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', + 'SYNC_REMOVED_SUCCESSFULLY' => 'Google synchronisation removed successfully.', + 'REMOVE_SYNCHRONIZATION_MESSAGE' => 'Clicking on this will remove existing Gmail authentication. It will not delete any records which are already synchronised.', + 'REMOVE_SYNCHRONIZATION' => 'Remove Synchronisation', 'FIELD_MAPPING' => 'Field Mapping', - 'LBL_SYNC_BUTTON' => 'Synchronize Now', - 'LBL_SYNCRONIZING' => 'Synchronizing....', - 'LBL_NOT_SYNCRONIZED' => 'You have not synchronized yet', + 'LBL_SYNC_BUTTON' => 'Synchronise Now', + 'LBL_SYNCRONIZING' => 'Synchronising....', + 'LBL_NOT_SYNCRONIZED' => 'You have not synchronised 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?', @@ -1320,7 +1334,7 @@ $jsLanguageStrings = array( 'blog' => 'Blog', 'home-page' => 'Homepage', 'address' => 'Address', - '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_REMOVE_SYNC_CONFIRMATION' => 'Remove synchronisation will only remove existing authentication, it will not delete synchronised records. If you synchronise with same Google account again, duplicate records will be created. Are you sure you want to remove synchronisation?', // Social Module Strings 'JS_PLEASE_WAIT' => 'Please Wait...', @@ -1344,7 +1358,7 @@ $jsLanguageStrings = array( //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 https://myapps.microsoft.com/', + 'OFFICE365_REMOVE_SYNCHRONIZATION_MESSAGE' => 'Clicking on this will remove existing Office365 authentication. It will not delete any records which are already synchronised. It will not unregister the Vtiger app from you office365 account, to unregister visit https://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.', @@ -1444,10 +1458,10 @@ $jsLanguageStrings = array( 'JS_ADD_MAX_15_ITEMS' => 'You can only add 15 items', 'SINGLE_SLA' => 'SLA', '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_MORE_VTIGER' => 'There are more records to be synchronised in vtiger', + 'JS_MORE_GOOGLE' => 'There are more records to be synchronised in Google', + 'JS_MORE_OFFICE365' => 'There are more records to be synchronised in Office365', + 'JS_TOKEN_EXPIRED' => 'Office365 Authentication has expired. Click on Sign in with Office365 button to re-authorise.', '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', @@ -1479,4 +1493,7 @@ $jsLanguageStrings = array( 'JS_UPLOAD_SUCCESSFUL' => 'File Uploaded Successfuly', 'JS_UPLOAD_FAILED' => 'File Upload Failed', -); \ No newline at end of file + 'JS_DUPLICATES_DETECTED' => 'Duplicate(s) detected!', + 'JS_PASSWORD_MISMATCH_ERROR' => 'Please re-enter passwords. The "new password" and "confirm password" values do not match.', + 'JS_LIST_DELETE_CONFIRMATION' => 'Are you sure you want to delete?', +); diff --git a/pkg/vtiger/translations/Deutsch/modules/Accounts.php b/pkg/vtiger/translations/Deutsch/modules/Accounts.php index a35427c6b95ecaf1e64dd19d76330c838d6d009a..72ea12e243fd5080e018ed9c2451026b07411b96 100644 --- a/pkg/vtiger/translations/Deutsch/modules/Accounts.php +++ b/pkg/vtiger/translations/Deutsch/modules/Accounts.php @@ -10,7 +10,7 @@ $languageStrings = array( 'Accounts' => 'Organisationen' , 'SINGLE_Accounts' => 'Organisation' , - 'LBL_ADD_RECORD' => 'Add Organization' , + 'LBL_ADD_RECORD' => 'Neue Organisation' , 'LBL_RECORDS_LIST' => 'Organisationen' , 'LBL_ACCOUNT_INFORMATION' => 'Organisation' , 'LBL_SHOW_ACCOUNT_HIERARCHY' => 'Zeige Organisationshierarchie', @@ -41,17 +41,19 @@ $languageStrings = array( 'Organization Image' => 'Organisation Bild', 'Type' => 'Typ' , + 'Other Phone' => 'Sekundäre Telefon', + 'Phone' => 'Primäre Telefon', + 'Email' => 'Primäre E-Mail', - 'Other Phone' => 'Sekundäre Telefon', - 'Phone' => 'Primäre Telefon', - 'Email' => 'Primäre E-Mail', - + 'LBL_END_DATE' => 'Enddatum' , + 'LBL_DUPLICATES_EXIST' => 'Organisation existiert bereits', + 'LBL_COPY_SHIPPING_ADDRESS' => 'Kopiere Lieferadresse' , + 'LBL_COPY_BILLING_ADDRESS' => 'Kopiere Rechnungsadresse' , ); $jsLanguageStrings = array( - 'LBL_RELATED_RECORD_DELETE_CONFIRMATION' => 'Are you sure you want to delete?', - 'LBL_DELETE_CONFIRMATION' => 'Deleting this Organization will remove its related Opportunities & Quotes. Are you sure you want to delete this Organization?', - 'LBL_MASS_DELETE_CONFIRMATION' => 'Deleting this Organization will remove its related Opportunities & Quotes. Are you sure you want to delete this Organization?', - - 'JS_DUPLICATE_CREATION_CONFIRMATION' => 'Name der Organisation bereits Vorhanden ist.Wollen Sie einen doppelten Datensatz erstellen?', + 'LBL_RELATED_RECORD_DELETE_CONFIRMATION' => 'Möchten Sie diese Organisation jetzt entfernen?', + 'LBL_DELETE_CONFIRMATION' => 'Durch das Entfernen der Organisation werden auch verknüpfte Verkaufschancen und Angebote entfernt. Jetzt dennoch entfernen?', + 'LBL_MASS_DELETE_CONFIRMATION' => 'Durch das Entfernen der Organisation werden auch verknüpfte Verkaufschancen und Angebote entfernt. Jetzt dennoch entfernen?', + 'JS_DUPLICATE_CREATION_CONFIRMATION' => 'Name der Organisation bereits Vorhanden ist.Wollen Sie einen doppelten Datensatz erstellen?', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Deutsch/modules/Assets.php b/pkg/vtiger/translations/Deutsch/modules/Assets.php index 098801958ffef8f12f4f81fe050a6f90f34b1c92..419642cad94d467787bb2735aa5609c85ec836f1 100644 --- a/pkg/vtiger/translations/Deutsch/modules/Assets.php +++ b/pkg/vtiger/translations/Deutsch/modules/Assets.php @@ -8,12 +8,12 @@ * All Rights Reserved. ************************************************************************************/ $languageStrings = array( - 'Assets' => 'Bestandsverwaltung' , - 'SINGLE_Assets' => 'Bestandsverwaltung' , - 'LBL_ADD_RECORD' => 'Add Bestandsverwaltung' , - 'LBL_RECORDS_LIST' => 'Bestandsverwaltung List' , - 'LBL_ASSET_INFORMATION' => 'Bestandsverwaltung Information', - 'Asset No' => 'Bestandsverwaltung Nr' , + 'Assets' => 'Bestände' , + 'SINGLE_Assets' => 'Bestand' , + 'LBL_ADD_RECORD' => 'Neuer Bestand' , + 'LBL_RECORDS_LIST' => 'Bestandsübersicht' , + 'LBL_ASSET_INFORMATION' => 'Bestandinformation', + 'Asset No' => 'Bestandnummer' , 'Serial Number' => 'Seriennummer' , 'Date Sold' => 'Verkaufsdatum' , 'Date in Service' => 'Servicedatum' , @@ -21,9 +21,9 @@ $languageStrings = array( 'Invoice Name' => 'Rechnung' , 'Shipping Method' => 'Versandmethode' , 'Shipping Tracking Number' => 'Sendungsverfolgungsnummer' , - 'Asset Name' => 'Titel Bestandsverwaltung' , + 'Asset Name' => 'Bestandname' , 'Customer Name' => 'Organisation' , 'Notes' => 'Beschreibung' , - 'In Service' => 'unterstützt' , - 'Out-of-service' => 'wird nicht mehr unterstützt', -); \ No newline at end of file + 'In Service' => 'Bestand aktiv' , + 'Out-of-service' => 'Bestand inaktiv', +); diff --git a/pkg/vtiger/translations/Deutsch/modules/Calendar.php b/pkg/vtiger/translations/Deutsch/modules/Calendar.php index 3c7c23f1338209e0ddf4c03fe68dde85d32222fa..1b4c7ed9084bba11411184412bbe3589f51f999b 100644 --- a/pkg/vtiger/translations/Deutsch/modules/Calendar.php +++ b/pkg/vtiger/translations/Deutsch/modules/Calendar.php @@ -147,6 +147,9 @@ $languageStrings = array( 'LBL_NOVEMBER' => 'November', 'LBL_DECEMBER' => 'Dezember', 'LBL_CLICK_HERE_TO_VIEW' => 'Klicke hier, um anzusehen', + + 'LBL_TOTAL_EVENTS_DUPLICATED' => 'Anzahl der doppelten Ereignisse übersprungen', + 'LBL_TOTAL_TASKS_DUPLICATED' => 'Anzahl der doppelten Aufgaben übersprungen', ); $jsLanguageStrings = array( 'LBL_ADD_EVENT_TASK' => 'Add Event / Aufgabe' , diff --git a/pkg/vtiger/translations/Deutsch/modules/Google.php b/pkg/vtiger/translations/Deutsch/modules/Google.php index bb790e4a7f646b97f3b7c5e42949fcc06fcc878b..7e49687c6493a857365c77f8298bd916776d17cb 100644 --- a/pkg/vtiger/translations/Deutsch/modules/Google.php +++ b/pkg/vtiger/translations/Deutsch/modules/Google.php @@ -77,8 +77,9 @@ $languageStrings = array( 'LBL_SAVE_AND_IMPORT' => 'Speichern und Importieren', 'LBL_IMPORT_RESULTS_GOOGLE' => 'Google Importieren Ergebnisse', + 'LBL_REDIRECT_URL' => 'Umleitungs-uRL', + 'LBL_REDIRECT_URL_MESSAGE' => 'Kopieren Sie die folgende Umleitungs-URL und fügen Sie ihn in Ihrem Google-Auth-Projekt als Bild zeigt', ); - $jsLanguageStrings = array( 'LBL_SYNC_BUTTON' => "Jetzt synchronisieren", 'LBL_SYNCRONIZING' => "Synchronisieren ....", diff --git a/pkg/vtiger/translations/Deutsch/modules/Invoice.php b/pkg/vtiger/translations/Deutsch/modules/Invoice.php index 318795f48c69a3143f2f3fc627279bb3fde95423..e94bf995fd1affca41173d61b395514371652a9d 100644 --- a/pkg/vtiger/translations/Deutsch/modules/Invoice.php +++ b/pkg/vtiger/translations/Deutsch/modules/Invoice.php @@ -10,19 +10,19 @@ $languageStrings = array( 'Invoice' => 'Rechnungen' , 'SINGLE_Invoice' => 'Rechnung' , - 'LBL_EXPORT_TO_PDF' => 'Export als PDF' , - 'LBL_SEND_MAIL_PDF' => 'Send Email with PDF' , - 'LBL_ADD_RECORD' => 'Add Invoice' , - 'LBL_RECORDS_LIST' => 'Rechnungsliste' , - 'LBL_INVOICE_INFORMATION' => 'Rechnungs Information' , + 'LBL_EXPORT_TO_PDF' => 'Als PDF exportieren' , + 'LBL_SEND_MAIL_PDF' => 'Als PDF per E-Mail senden' , + 'LBL_ADD_RECORD' => 'Neue Rechnung' , + 'LBL_RECORDS_LIST' => 'Rechnungsübersicht' , + 'LBL_INVOICE_INFORMATION' => 'Rechnungsinformation' , 'Sales Order' => 'Bestellung' , 'Customer No' => 'Kundenzeichen' , 'Invoice Date' => 'Rechnungsdatum' , 'Purchase Order' => 'Auftrag:' , 'Sales Commission' => 'Provision' , - 'Invoice No' => 'Rechnungsnr.' , - 'LBL_RECEIVED' => 'Received' , - 'LBL_BALANCE' => 'Balance' , + 'Invoice No' => 'Rechnungsnummer' , + 'LBL_RECEIVED' => 'Bereits bezahlt' , + 'LBL_BALANCE' => 'Endsumme' , 'Sent' => 'gesendet' , 'Credit Invoice' => 'Gutschrift' , 'Paid' => 'bezahlt' , @@ -32,8 +32,8 @@ $languageStrings = array( 'LBL_SUB_PRODUCTS' => 'Unter Produkte', 'LBL_ACTION' => 'Aktion', - 'LBL_THIS' => 'Diese', - 'LBL_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_OR_REPLACE_THIS_ITEM' => 'wird aus dem system gelöscht.bitte entfernen oder ersetzen Sie diesen Artikel', - 'LBL_THIS_LINE_ITEM_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_THIS_LINE_ITEM' => 'Diese Position wird aus dem system gelöscht,bitte entfernen Sie diese Zeile Elemente', + 'LBL_THIS' => 'Diese', + 'LBL_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_OR_REPLACE_THIS_ITEM' => 'wird aus dem system gelöscht.bitte entfernen oder ersetzen Sie diesen Artikel', + 'LBL_THIS_LINE_ITEM_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_THIS_LINE_ITEM' => 'Diese Position wird aus dem system gelöscht,bitte entfernen Sie diese Zeile Elemente', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Deutsch/modules/Products.php b/pkg/vtiger/translations/Deutsch/modules/Products.php index 9c92b3a4c27f3b77f57477704d5bd00e954e0dc7..fb2da5d4184d754b29e8ae2d28119a2edadfcab5 100644 --- a/pkg/vtiger/translations/Deutsch/modules/Products.php +++ b/pkg/vtiger/translations/Deutsch/modules/Products.php @@ -10,8 +10,8 @@ $languageStrings = array( 'Products' => 'Produkte' , 'SINGLE_Products' => 'Produkt' , - 'LBL_ADD_RECORD' => 'Produkt hinzufügen' , - 'LBL_RECORDS_LIST' => 'Products List' , + 'LBL_ADD_RECORD' => 'Neues Produkt' , + 'LBL_RECORDS_LIST' => 'Produktübersicht' , 'LBL_PRODUCT_INFORMATION' => 'Produkt' , 'LBL_IMAGE_INFORMATION' => 'Produktbilder:' , 'LBL_STOCK_INFORMATION' => 'Lager:' , @@ -21,7 +21,7 @@ $languageStrings = array( 'LBL_RESET_PRICE' => 'Preis zurücksetzen' , 'LBL_RESET' => 'zurücksetzen' , 'LBL_ADD_TO_PRICEBOOKS' => 'Add to PriceBooks' , - 'Product No' => 'Produkt Nr.' , + 'Product No' => 'Produktnummer.' , 'Part Number' => 'Produktcode' , 'Product Active' => 'Aktiv' , 'Manufacturer' => 'Hersteller' , @@ -77,8 +77,8 @@ $languageStrings = array( 'LBL_BUNDLE_TOTAL_COST' => 'Gesamtkosten des Bundle', 'LBL_UPDATE_BUNDLE_PRICE' => 'Update-Bundle Preis', - 'LBL_PRODUCT_NAME' => 'Produkt-Name', - 'LBL_PRICE_QUANTITY' => 'Preis x Menge', + 'LBL_PRODUCT_NAME' => 'Produkt-Name', + 'LBL_PRICE_QUANTITY' => 'Preis x Menge', ); diff --git a/pkg/vtiger/translations/Deutsch/modules/PurchaseOrder.php b/pkg/vtiger/translations/Deutsch/modules/PurchaseOrder.php index 3d8479102ea5f62a2447b278e7e6ca71363f3a83..1630a38474b7dbf1f10b14f538fcb9c5653a709c 100644 --- a/pkg/vtiger/translations/Deutsch/modules/PurchaseOrder.php +++ b/pkg/vtiger/translations/Deutsch/modules/PurchaseOrder.php @@ -9,23 +9,23 @@ ************************************************************************************/ $languageStrings = array( 'PurchaseOrder' => 'Kauforder' , - 'SINGLE_PurchaseOrder' => 'Kauforder' , - 'LBL_EXPORT_TO_PDF' => 'Export als PDF' , - 'LBL_SEND_MAIL_PDF' => 'Send Email with PDF' , - 'LBL_ADD_RECORD' => 'Add Purchase Order' , + 'SINGLE_PurchaseOrder' => 'Einkaufsbestellung' , + 'LBL_EXPORT_TO_PDF' => 'Als PDF exportieren' , + 'LBL_SEND_MAIL_PDF' => 'Als PDF per E-Mail senden' , + 'LBL_ADD_RECORD' => 'Neue Bestellung' , 'LBL_RECORDS_LIST' => 'Einkäufe' , - 'LBL_COPY_SHIPPING_ADDRESS' => 'Kopieren Versandadresse' , - 'LBL_COPY_BILLING_ADDRESS' => 'Kopieren Rechnungsadresse' , + 'LBL_COPY_SHIPPING_ADDRESS' => 'Kopiere Versandadresse' , + 'LBL_COPY_BILLING_ADDRESS' => 'Kopiere Rechnungsadresse' , 'LBL_PO_INFORMATION' => 'Einkauf' , - 'PurchaseOrder No' => 'Einkaufsbestellungen Nr.' , - 'Requisition No' => 'Bestellnummer' , + 'PurchaseOrder No' => 'Bestellnummer' , + 'Requisition No' => 'Anforderungsnummer' , 'Tracking Number' => 'Bedarfsnummer' , 'Sales Commission' => 'Provision' , 'LBL_PAID' => 'Paid' , 'LBL_BALANCE' => 'Balance' , 'Received Shipment' => 'Lieferung empfangen' , - 'LBL_LIST_PRICE' => 'Listenpreis', - 'List Price' => 'Listenpreis', + 'LBL_LIST_PRICE' => 'Listenpreis', + 'List Price' => 'Listenpreis', 'LBL_COPY_COMPANY_ADDRESS' => 'Kopieren Firma Adresse', 'LBL_COPY_ACCOUNT_ADDRESS' => 'Kopieren Organisation Adresse', 'LBL_SELECT_ADDRESS_OPTION' => 'Wählen Sie Adresse kopieren', @@ -52,6 +52,6 @@ $jsLanguageStrings = array( 'JS_CONTACT_NOT_FOUND' => 'Kontakt Leere', 'JS_CONTACT_NOT_FOUND_MESSAGE' => 'Bitte wählen Sie einen Kontakt, bevor Sie Adresse kopieren', - 'JS_PLEASE_REMOVE_LINE_ITEM_THAT_IS_DELETED' => 'Bitte entfernen Sie werbebuchung, die gelöscht wird', - + 'JS_PLEASE_REMOVE_LINE_ITEM_THAT_IS_DELETED' => 'Bitte entfernen Sie werbebuchung, die gelöscht wird', + 'LBL_COPY_COMPANY_ADDRESS' => 'Kopieren Firma Adresse', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Deutsch/modules/Services.php b/pkg/vtiger/translations/Deutsch/modules/Services.php index 83bf46889e4e1b145e6049bdb97cd7790a97a3a2..e338d88a9d8f708722c40d8225067b3757be3988 100644 --- a/pkg/vtiger/translations/Deutsch/modules/Services.php +++ b/pkg/vtiger/translations/Deutsch/modules/Services.php @@ -10,7 +10,7 @@ $languageStrings = array( 'Services' => 'Dienstleistungen' , 'SINGLE_Services' => 'Dienstleistung' , - 'LBL_ADD_RECORD' => 'Dienstleistung hinzufügen' , + 'LBL_ADD_RECORD' => 'Neue Dienstleistung' , 'LBL_RECORDS_LIST' => 'Services List' , 'LBL_SERVICE_INFORMATION' => 'Dienstleistung' , 'LBL_MORE_CURRENCIES' => 'weitere Währungen' , @@ -22,7 +22,7 @@ $languageStrings = array( 'Service Name' => 'Name der Dienstleistung' , 'Service Active' => 'aktiv' , 'Service Category' => 'Kategorie' , - 'Service No' => 'Dienstleistungsnr.' , + 'Service No' => 'Dienstleistungsnummer' , 'Owner' => 'Besitzer' , 'No of Units' => 'Anzahl der Einheiten' , 'Commission Rate' => 'Provision (%)' , @@ -30,4 +30,4 @@ $languageStrings = array( 'Usage Unit' => 'Einheit' , 'Tax Class' => 'Steuerklasse' , 'Website' => 'Webseite' , -); \ No newline at end of file +); diff --git a/pkg/vtiger/translations/Deutsch/modules/Settings/LayoutEditor.php b/pkg/vtiger/translations/Deutsch/modules/Settings/LayoutEditor.php index 89d5d6f67f3a1b267f6a91e5bf9a5ab687e99a0a..8edf290331d10c69e50d2d4cf76210a9d0bfe7d0 100644 --- a/pkg/vtiger/translations/Deutsch/modules/Settings/LayoutEditor.php +++ b/pkg/vtiger/translations/Deutsch/modules/Settings/LayoutEditor.php @@ -136,6 +136,20 @@ $languageStrings = array( 'LBL_DETAIL_HEADER' => 'Datensatz-header', 'LBL_HEADER_FIELD' => 'Header Anzeigen', + 'LBL_DUPLICATE_HANDLING' => 'doppelte Prävention', + 'LBL_DUPLICATE_CHECK' => 'Aktivieren Dublettenprüfung', + 'LBL_DUPLICATION_INFO_MESSAGE' => 'Duplizieren Prävention Funktion verhindert, dass nur neue doppelte Datensätze aus von Nutzern und externen Anwendungen erstellt zu werden. Aufzeichnungen von Import erstellt', + 'LBL_SELECT_FIELDS_FOR_DUPLICATION' => 'Wählen Sie die einzigartigen Felder, auf denen doppelte Datensätze überprüft werden', + 'LBL_SELECT_FIELDS' => 'Felder auswählen', + 'LBL_MAX_3_FIELDS' => 'Max 3 Felder', + 'LBL_SELECT_RULE' => 'Wählen Sie Regel für die Handhabung von Duplikaten', + 'LBL_ALLOW_DUPLICATES' => 'Fachnutzung', + 'LBL_DO_NOT_ALLOW_DUPLICATES' => 'Lassen Sie keine Dubletten', + 'LBL_DUPLICATES_IN_SYNC_MESSAGE' => 'Maßnahmen zu ergreifen, wenn doppelte Datensatz gefunden wird, während die Synchronisierung mit externer Anwendung', + 'LBL_PREFER_LATEST_RECORD' => 'Bevorzugen neuesten Rekords', + 'LBL_PREFER_INTERNAL_RECORD' => 'Bevorzugen internen Rekord', + 'LBL_PREFER_EXTERNAL_RECORD' => 'Bevorzugen externen Rekord', + 'LBL_SYNC_TOOLTIP_MESSAGE' => 'Bevorzugen neuesten Rekord - Zuletzt geändert Aufzeichnungsdaten werden beibehalten Die interne Aufzeichnung bevorzugen - Bestehende Datensatz wird beibehalten, wie es <br> bevorzugen externe Platte ist - Daten aus der externen Anwendung kopiert werden', ); $jsLanguageStrings = array( 'JS_BLOCK_VISIBILITY_SHOW' => 'Block Karte aktiviert' , @@ -196,4 +210,7 @@ Sind Sie sicher, dass Sie zum löschen dieses Feld?', 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'Name Felder im Header standardmäßig', 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'Dieses Feld ist Kopfzeile aktiviert Vtiger7, erscheint Es in der Zusammenfassung', + 'JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE' => 'Erfolgreich aktualisierte ausgewählte Felder in Duplikaten Prävention zu berücksichtigen', + 'JS_DUPLICATE_HANDLING_FAILURE_MESSAGE' => 'Fehler beim ausgewählten Feldern in Duplikaten Prävention berücksichtigen', + 'JS_DUPLICATE_CHECK_DISABLED' => 'Dublettenprüfung ist deaktiviert', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Deutsch/modules/Settings/Vtiger.php b/pkg/vtiger/translations/Deutsch/modules/Settings/Vtiger.php index 928d219c95412ea6e5375998167deb98fa24fb01..d109e5afcc89bc55ce47e9f809d2f13690faeacf 100644 --- a/pkg/vtiger/translations/Deutsch/modules/Settings/Vtiger.php +++ b/pkg/vtiger/translations/Deutsch/modules/Settings/Vtiger.php @@ -226,7 +226,7 @@ $languageStrings = array( 'linkedin' => 'LinkedIn' , 'LBL_IMAGE_CORRUPTED' => 'Virus detected or Uploaded image corrupted', - 'LBL_LOGO_RECOMMENDED_MESSAGE' => 'Zulässige Größe 170x45 Pixel (.jpeg, .jpg, .png, .gif, .pjpeg, .x-png-Format).', + 'LBL_LOGO_RECOMMENDED_MESSAGE' => 'Zulässige Größe 150x40 Pixel (.jpeg, .jpg, .png, .gif, .pjpeg, .x-png-Format).', 'LBL_COMPANY_INFORMATION' => 'Company Information' , 'LBL_UPDATE' => 'Update' , 'LBL_UPDATE_LOGO' => 'Update Logo' , @@ -362,4 +362,4 @@ $jsLanguageStrings = array( 'JS_LBL_TAX_REGION_EXIST' => 'Name der Region bereits vorhanden ist', 'JS_LOGO_IMAGE_DIMENSIONS_WRONG' => 'Logo Maße nicht mit den erlaubten dimension. Dein Bild verkleinern und versuchen Sie es erneut.', -); \ No newline at end of file +); diff --git a/pkg/vtiger/translations/Deutsch/modules/Settings/Webforms.php b/pkg/vtiger/translations/Deutsch/modules/Settings/Webforms.php index 4d58f2acdbabeeb6a3b35cced7276778f33967df..347516b488d73a3d34661aaf20d76f629716a287 100644 --- a/pkg/vtiger/translations/Deutsch/modules/Settings/Webforms.php +++ b/pkg/vtiger/translations/Deutsch/modules/Settings/Webforms.php @@ -40,6 +40,12 @@ $languageStrings = array( 'LBL_ADD_RECORD' => 'Hinzufügen Webform', + 'LBL_UPLOAD_DOCUMENTS' => 'hochladen von Dokumenten', + 'LBL_ADD_FILE_FIELD' => 'Datei-Upload-Feld', + 'LBL_FIELD_LABEL' => 'Dokumenttitel', + 'LBL_FILE_FIELD_INFO' => 'Für jede Datei von Web hochgeladen hat ein neues Dokument bildet, wird mit der angehängten Datei erstellt. Das Dokument wird auch auf dieses neu geschaffenen%s verbunden.', + 'LBL_NO_FILE_FIELD' => 'Keine Dateifelder hinzugefügt.', + 'LBL_COPY_TO_CLIPBOARD' => 'In die Zwischenablage kopieren', ); $jsLanguageStrings = array( 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'Webform deleted successfully', @@ -53,4 +59,7 @@ $jsLanguageStrings = array( 'JS_SELECT_AN_OPTION' => 'Wählen Sie eine Option', 'JS_LABEL' => 'label', + 'JS_MAX_FILE_FIELDS_LIMIT' => 'Maximal können Sie%s Dateifelder hinzufügen.', + 'JS_COPIED_SUCCESSFULLY' => 'erfolgreich kopiert.', + 'JS_COPY_FAILED' => 'Kopieren fehlgeschlagen. Bitte kopieren Sie manuell.', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Deutsch/modules/Users.php b/pkg/vtiger/translations/Deutsch/modules/Users.php index a6ca4b106fd14b27fd50adefd09325c19075a536..f919c9b1da71a0468bda360d530de776e13c69ed 100644 --- a/pkg/vtiger/translations/Deutsch/modules/Users.php +++ b/pkg/vtiger/translations/Deutsch/modules/Users.php @@ -130,7 +130,7 @@ $languageStrings = array( 'Africa/Nairobi' => '(UTC+03:00) Nairobi' , 'Asia/Tehran' => '(UTC+03:30) Teheran' , 'Asia/Tbilisi' => '(UTC+04:00) Tbilisi' , - 'Europe/Moscow' => '(UTC+04:00) Moskau, Wolgograd', + 'Europe/Moscow' => '(UTC+03:00) Moskau, Wolgograd', 'Asia/Muscat' => '(UTC+04:00) Abu Dhabi, Muskat', 'Asia/Baku' => '(UTC+04:00) Baku' , 'Asia/Yerevan' => '(UTC+04:00) Yerevan' , diff --git a/pkg/vtiger/translations/Deutsch/modules/Vtiger.php b/pkg/vtiger/translations/Deutsch/modules/Vtiger.php index c4b372838ae1ca80f89685187a01e3216ebc7476..68f4f6836aa708209b56d74fcf925a16cbc02d09 100644 --- a/pkg/vtiger/translations/Deutsch/modules/Vtiger.php +++ b/pkg/vtiger/translations/Deutsch/modules/Vtiger.php @@ -835,6 +835,9 @@ $languageStrings = array( 'LBL_NOT_STARRED' => 'Folgen', 'LBL_QUICK_VIEW' => 'Überblick', 'LBL_NOTIFICATION_CENTER' => 'Notification Center', + 'LBL_NOTIFICATION' => 'Benachrichtigung', + 'LBL_STARRED_RECORD_TO' => '%s to %s', + 'LBL_STARRED_RECORD_UPDATED' => '%s aktualisiert%s', 'LBL_EDIT_REASON' => 'Edit-Grund', 'LBL_CONTACT' => 'KONTAKT-MANAGEMENT', 'LBL_NO_ATTACHMENTS' => 'Keine Anhänge', @@ -993,6 +996,7 @@ außerhalb Vtiger.', 'LBL_MARKETING' => 'MARKETING', 'LBL_SALES' => 'UMSATZ', 'LBL_PROJECT' => 'PROJEKTE', + 'LBL_TOOLS' => 'WERKZEUGE', 'LBL_TAGS' => 'Tags', 'LBL_SHARE_TAGS' => 'Öffentliche Tags', 'LBL_SHARE_TAG' => 'Teilen Tag', @@ -1071,6 +1075,16 @@ außerhalb Vtiger.', 'LBL_SLA_INFORMATION' => 'SLA Informationen', 'LBL_TO_USE_SWITCH_TO_NEW_LOOK' => 'Zur Nutzung <b>%s</b>, empfehlen wir Ihnen, sich an neue Look wechseln.', 'LBL_DELETE_USER_CONFIRMATION' => 'Wenn ein Benutzer gelöscht wird, wird der Benutzer als "inaktiv" markiert werden und keine neuen Datensätze können dem Benutzer zugeordnet werden, und der Benutzer nicht anmelden können. Sind Sie sicher, dass Sie löschen möchten?', + + 'LBL_DUPLICATES' => 'Dubletten', + 'LBL_DUPLICATES_DETECTED' => 'Duplizieren (n) erkannt!', + 'LBL_DUPLICATES_FOUND_MESSAGE' => 'Dieses%s kann nicht gespeichert werden, da doppelte%s in vtiger existiert mit Werten für%s entspricht.', + 'LBL_VTIGER_NOTIFICATION' => 'Nachricht von: vtiger Systemnachrichten', + 'LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS' => 'Das folgende%s konnte nicht von „%s“ Workflow gespeichert werden', + 'LBL_DUPLICATION_FAILURE_FROM_WEBFORMS' => 'Das folgende%s konnte nicht von „%s“ webform gespeichert werden', + 'LBL_DUPLICATION_FAILURE_FOR_ADMIN' => 'Sie können%s doppelte Verhütungsvorschriften ändern.', + 'LBL_DUPLICATION_FAILURE_FOR_NON_ADMIN' => 'Kontaktieren Sie Ihren Administrator für die Überarbeitung der doppelten Regeln', + 'LBL_DUPLICATE_RECORD_LISTS' => 'Duplizieren%s (e):', ); $jsLanguageStrings = array( 'JS_EMAIL_SERVER_CONFIGURATION' => 'Please configure your outgoing server settings from the settings page', @@ -1480,4 +1494,8 @@ $jsLanguageStrings = array( 'JS_UPLOAD_SUCCESSFUL' => 'Datei hochgeladen Erfolgreicher', 'JS_UPLOAD_FAILED' => 'File Upload fehlgeschlagen', + + 'JS_DUPLICATES_DETECTED' => 'Duplizieren (n) erkannt!', + 'JS_PASSWORD_MISMATCH_ERROR' => 'Bitte geben Sie ein Passwort. Die „neue Kennwort“ und „Kennwort bestätigen“ Werte nicht übereinstimmen.', + 'JS_LIST_DELETE_CONFIRMATION' => 'Sind Sie sicher, dass Sie löschen möchten?', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Dutch/modules/Calendar.php b/pkg/vtiger/translations/Dutch/modules/Calendar.php index b5c157849a8380252b878723d37814edd7bdc3cb..a60468747ae68fb17413f1ca6c907cc57fc878a5 100644 --- a/pkg/vtiger/translations/Dutch/modules/Calendar.php +++ b/pkg/vtiger/translations/Dutch/modules/Calendar.php @@ -147,6 +147,9 @@ $languageStrings = array( 'LBL_NOVEMBER' => 'November', 'LBL_DECEMBER' => 'December', 'LBL_CLICK_HERE_TO_VIEW' => 'Klik hier om te bekijken', + + 'LBL_TOTAL_EVENTS_DUPLICATED' => 'Aantal dubbele Events overgeslagen', + 'LBL_TOTAL_TASKS_DUPLICATED' => 'Aantal dubbele Taken overgeslagen', ); $jsLanguageStrings = array( 'LBL_ADD_EVENT_TASK' => 'Voeg Event / Taak' , diff --git a/pkg/vtiger/translations/Dutch/modules/Google.php b/pkg/vtiger/translations/Dutch/modules/Google.php index 06ee1100d610ee2615b7b6bcb57c437ad709250a..93eaf72d74a30d02bac1b582975c5e7f98c6e5a2 100644 --- a/pkg/vtiger/translations/Dutch/modules/Google.php +++ b/pkg/vtiger/translations/Dutch/modules/Google.php @@ -77,8 +77,9 @@ $languageStrings = array( 'LBL_SAVE_AND_IMPORT' => 'Opslaan en Importeren', 'LBL_IMPORT_RESULTS_GOOGLE' => 'Google Importeren resultaten', + 'LBL_REDIRECT_URL' => 'redirect url', + 'LBL_REDIRECT_URL_MESSAGE' => 'Kopieer de volgende redirect url en plakken in uw Google-authenticatie project als afbeelding laat zien', ); - $jsLanguageStrings = array( 'LBL_SYNC_BUTTON' => "Nu synchroniseren", 'LBL_SYNCRONIZING' => "Synchroniseren ....", diff --git a/pkg/vtiger/translations/Dutch/modules/Settings/LayoutEditor.php b/pkg/vtiger/translations/Dutch/modules/Settings/LayoutEditor.php index 32ed6f240307a46800dfe6a234364f44ef6e2f42..9bf8f36beb2efa8baf233d34a1fc94f9aef20e14 100644 --- a/pkg/vtiger/translations/Dutch/modules/Settings/LayoutEditor.php +++ b/pkg/vtiger/translations/Dutch/modules/Settings/LayoutEditor.php @@ -136,6 +136,20 @@ $languageStrings = array( 'LBL_DETAIL_HEADER' => 'Record kop', 'LBL_HEADER_FIELD' => 'Header Bekijken', + 'LBL_DUPLICATE_HANDLING' => 'Duplicate Prevention', + 'LBL_DUPLICATE_CHECK' => 'Enable dubbele check', + 'LBL_DUPLICATION_INFO_MESSAGE' => 'Dubbele preventie functie alleen voorkomt dat nieuwe dubbele records van het krijgen van door gebruikers en externe applicaties. Records gemaakt op basis van Import', + 'LBL_SELECT_FIELDS_FOR_DUPLICATION' => 'Selecteer de unieke velden waarop dubbele records moeten worden gecontroleerd', + 'LBL_SELECT_FIELDS' => 'Velden selecteren', + 'LBL_MAX_3_FIELDS' => 'Max 3 Fields', + 'LBL_SELECT_RULE' => 'Selecteer de regel voor de behandeling duplicaten', + 'LBL_ALLOW_DUPLICATES' => 'laat duplicaten', + 'LBL_DO_NOT_ALLOW_DUPLICATES' => 'Sta niet toe dat duplicaten', + 'LBL_DUPLICATES_IN_SYNC_MESSAGE' => 'Actie wanneer dubbele record wordt gevonden tijdens het synchroniseren met een externe applicatie', + 'LBL_PREFER_LATEST_RECORD' => 'Liever laatste plaat', + 'LBL_PREFER_INTERNAL_RECORD' => 'Liever interne registratie', + 'LBL_PREFER_EXTERNAL_RECORD' => 'Liever externe opnemen', + 'LBL_SYNC_TOOLTIP_MESSAGE' => 'Liever laatste plaat - Meest recent gewijzigde record gegevens zullen worden bewaard <br> liever interne registratie - bestaande record zal worden behouden zoals het is <br> liever externe opname - De gegevens van de externe applicatie wordt gekopieerd', ); $jsLanguageStrings = array( 'JS_BLOCK_VISIBILITY_SHOW' => 'Blok Toon ingeschakeld' , @@ -196,4 +210,7 @@ Bent u zeker dat u op dit gebied?', 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'De naam velden weergegeven in de Koptekst standaard', 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'Dit Veld is Kop ingeschakeld voor Vtiger7, Het zal verschijnen in de overzichtsweergave', + 'JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE' => 'Bijgewerkt naar geselecteerde velden in duplo preventie te overwegen', + 'JS_DUPLICATE_HANDLING_FAILURE_MESSAGE' => 'Kan geselecteerde velden in duplo preventie te overwegen', + 'JS_DUPLICATE_CHECK_DISABLED' => 'Dubbele controle is uitgeschakeld', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Dutch/modules/Settings/Webforms.php b/pkg/vtiger/translations/Dutch/modules/Settings/Webforms.php index ca8b7dd3cad623cbc169cbb752fdd4733d483548..684750f9177a3994dd4757ba06e21fbd78b387f4 100644 --- a/pkg/vtiger/translations/Dutch/modules/Settings/Webforms.php +++ b/pkg/vtiger/translations/Dutch/modules/Settings/Webforms.php @@ -40,6 +40,12 @@ $languageStrings = array( 'LBL_ADD_RECORD' => 'Toevoegen Webformulier', + 'LBL_UPLOAD_DOCUMENTS' => 'Upload Documents', + 'LBL_ADD_FILE_FIELD' => 'Bestanden uploaden Field', + 'LBL_FIELD_LABEL' => 'Document titel', + 'LBL_FILE_FIELD_INFO' => 'Voor elk bestand geüpload van web vormen een nieuw document wordt gemaakt met het bijgevoegde bestand. Het document is ook gekoppeld aan deze nieuw gecreëerde%s.', + 'LBL_NO_FILE_FIELD' => 'Geen bestand velden toegevoegd.', + 'LBL_COPY_TO_CLIPBOARD' => 'Kopieer naar klembord', ); $jsLanguageStrings = array( 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'Webform deleted successfully', // TODO: Review @@ -53,4 +59,7 @@ $jsLanguageStrings = array( 'JS_SELECT_AN_OPTION' => 'Selecteer een Optie', 'JS_LABEL' => 'label', + 'JS_MAX_FILE_FIELDS_LIMIT' => 'Maximaal kun je%s bestand velden toe te voegen.', + 'JS_COPIED_SUCCESSFULLY' => 'gekopieerd.', + 'JS_COPY_FAILED' => 'Kopiëren mislukt. Gelieve handmatig te kopiëren.', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Dutch/modules/Users.php b/pkg/vtiger/translations/Dutch/modules/Users.php index 40a7248663110057d212f7e90f35af16ffd4c219..b37b4683f477f57a0b0c9f138986e28401758ed4 100644 --- a/pkg/vtiger/translations/Dutch/modules/Users.php +++ b/pkg/vtiger/translations/Dutch/modules/Users.php @@ -130,7 +130,7 @@ $languageStrings = array( 'Africa/Nairobi' => '(UTC+03:00) Nairobi' , 'Asia/Tehran' => '(UTC+03:30) Tehran' , 'Asia/Tbilisi' => '(UTC+04:00) Tbilisi' , - 'Europe/Moscow' => '(UTC+04:00) Moscow, Volgograd', + 'Europe/Moscow' => '(UTC+03:00) Moscow, Volgograd', 'Asia/Muscat' => '(UTC+04:00) Abu Dhabi, Muscat', 'Asia/Baku' => '(UTC+04:00) Baku' , 'Asia/Yerevan' => '(UTC+04:00) Yerevan' , diff --git a/pkg/vtiger/translations/Dutch/modules/Vtiger.php b/pkg/vtiger/translations/Dutch/modules/Vtiger.php index 036f6ccdb31ebefda3b8c527f0278dd4fe2fb128..864aa6860a25180df23e976ade6e719c30b4c28a 100644 --- a/pkg/vtiger/translations/Dutch/modules/Vtiger.php +++ b/pkg/vtiger/translations/Dutch/modules/Vtiger.php @@ -844,6 +844,9 @@ $languageStrings = array( 'LBL_NOT_STARRED' => 'Volg', 'LBL_QUICK_VIEW' => 'Snel Overzicht', 'LBL_NOTIFICATION_CENTER' => 'Notification Center', + 'LBL_NOTIFICATION' => 'Kennisgeving', + 'LBL_STARRED_RECORD_TO' => '%s to %s', + 'LBL_STARRED_RECORD_UPDATED' => '%s update%s', 'LBL_EDIT_REASON' => 'Bewerken reden', 'LBL_CONTACT' => 'CONTACT MANAGEMENT', 'LBL_NO_ATTACHMENTS' => 'Geen Bijlagen', @@ -1000,6 +1003,7 @@ buiten Vtiger.', 'LBL_MARKETING' => 'MARKETING', 'LBL_SALES' => 'VERKOOP', 'LBL_PROJECT' => 'PROJECTEN', + 'LBL_TOOLS' => 'GEREEDSCHAP', 'LBL_TAGS' => 'Tags', 'LBL_SHARE_TAGS' => 'Openbare Tags', 'LBL_SHARE_TAG' => 'Delen-Tag', @@ -1073,6 +1077,16 @@ buiten Vtiger.', 'LBL_SLA_INFORMATION' => 'SLA Informatie', 'LBL_TO_USE_SWITCH_TO_NEW_LOOK' => 'Om gebruik te maken <b>%s</b>, raden wij u aan om te schakelen naar de nieuwe look.', 'LBL_DELETE_USER_CONFIRMATION' => 'Wanneer een gebruiker is verwijderd, zal de gebruiker worden gemarkeerd als "inactief" en er geen nieuwe records kunnen worden toegewezen aan de gebruiker, en de gebruiker zal niet in staat om in te loggen. Weet je zeker dat je wilt verwijderen?', + + 'LBL_DUPLICATES' => 'duplicaten', + 'LBL_DUPLICATES_DETECTED' => 'Duplicate (s) gedetecteerd!', + 'LBL_DUPLICATES_FOUND_MESSAGE' => 'Deze%s kan niet worden opgeslagen, omdat dubbele%s bestaat in Vtiger met bijpassende waarden voor%s.', + 'LBL_VTIGER_NOTIFICATION' => 'Bericht van: Vtiger Systeemnotificaties', + 'LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS' => 'De volgende%s kon niet worden gered van de "%s" workflow', + 'LBL_DUPLICATION_FAILURE_FROM_WEBFORMS' => 'De volgende%s kon niet worden gered van de "%s" webformulier', + 'LBL_DUPLICATION_FAILURE_FOR_ADMIN' => 'U kunt%s om dubbele preventie regels te wijzigen.', + 'LBL_DUPLICATION_FAILURE_FOR_NON_ADMIN' => 'Neem contact op met uw beheerder voor de herziening van de dubbele regels', + 'LBL_DUPLICATE_RECORD_LISTS' => 'Dupliceren%s (s):', ); $jsLanguageStrings = array( 'JS_EMAIL_SERVER_CONFIGURATION' => 'Configureer a.u.b. uw uitgaande server instellingen op de instellingenpagina', @@ -1484,4 +1498,8 @@ $jsLanguageStrings = array( 'JS_UPLOAD_SUCCESSFUL' => 'Geüpload Successfuly', 'JS_UPLOAD_FAILED' => 'File Upload is mislukt', + + 'JS_DUPLICATES_DETECTED' => 'Duplicate (s) gedetecteerd!', + 'JS_PASSWORD_MISMATCH_ERROR' => 'Gelieve opnieuw in te voeren wachtwoorden. De "nieuwe wachtwoord" en "Wachtwoord bevestigen" waarden komen niet overeen.', + 'JS_LIST_DELETE_CONFIRMATION' => 'Weet je zeker dat je wilt verwijderen?', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/French/modules/Accounts.php b/pkg/vtiger/translations/French/modules/Accounts.php index 2c624043615d4b04231e0225f964147cfca293cd..3914d5dd697e0026daac5c9c3f65738ede8ca9df 100644 --- a/pkg/vtiger/translations/French/modules/Accounts.php +++ b/pkg/vtiger/translations/French/modules/Accounts.php @@ -8,48 +8,49 @@ * All Rights Reserved. ************************************************************************************/ $languageStrings = array( - 'Accounts' => 'Comptes' , - 'SINGLE_Accounts' => 'Compte' , - 'LBL_ADD_RECORD' => 'Ajouter un Compte' , - 'LBL_RECORDS_LIST' => 'Liste des comptes' , - 'LBL_ACCOUNT_INFORMATION' => 'Détail du compte' , - 'LBL_SHOW_ACCOUNT_HIERARCHY' => 'Afficher la hiérarchie des comptes', - 'industry' => 'Secteur' , - 'Account Name' => 'Nom compte' , - 'Account No' => 'Compte N°' , - 'Website' => 'Site Web' , - 'Ticker Symbol' => 'Symbole boursier' , - 'Member Of' => 'Filiale de' , - 'Employees' => 'Effectif' , - 'Ownership' => 'Propriétaire' , - 'SIC Code' => 'Code APE' , - 'Other Email' => 'Autre email' , - 'Analyst' => 'Analyste' , - 'Competitor' => 'Concurrent' , - 'Customer' => 'Client' , - 'Integrator' => 'Intégrateur' , - 'Investor' => 'Investisseur' , - 'Press' => 'Presse' , - 'Prospect' => 'Prospect' , - 'Reseller' => 'Revendeur' , - 'Type' => 'Type' , - 'LBL_START_DATE' => 'Date de début' , - 'LBL_END_DATE' => 'Date de fin' , - 'LBL_DUPLICATES_EXIST' => 'Un compte avec le même nom existe déjà ', - 'LBL_COPY_SHIPPING_ADDRESS' => "Copier l'adresse d'expédition" , - 'LBL_COPY_BILLING_ADDRESS' => "Copiez l'adresse de facturation" , - 'LBL_IMAGE_INFORMATION' => 'Photo de profil', - 'Organization Image' => 'Image de la société', + 'Accounts' => 'Comptes' , + 'SINGLE_Accounts' => 'Compte' , + 'LBL_ADD_RECORD' => 'Ajouter un Compte' , + 'LBL_RECORDS_LIST' => 'Liste des comptes' , + 'LBL_ACCOUNT_INFORMATION' => 'Détail du compte' , + 'LBL_SHOW_ACCOUNT_HIERARCHY' => 'Afficher la hiérarchie des comptes', + 'industry' => 'Secteur' , + 'Account Name' => 'Nom compte' , + 'Account No' => 'Compte N°' , + 'Website' => 'Site Web' , + 'Ticker Symbol' => 'Symbole boursier' , + 'Member Of' => 'Filiale de' , + 'Employees' => 'Effectif' , + 'Ownership' => 'Propriétaire' , + 'SIC Code' => 'Code APE' , + 'Other Email' => 'Autre email' , + 'Analyst' => 'Analyste' , + 'Competitor' => 'Concurrent' , + 'Customer' => 'Client' , + 'Integrator' => 'Intégrateur' , + 'Investor' => 'Investisseur' , + 'Press' => 'Presse' , + 'Prospect' => 'Prospect' , + 'Reseller' => 'Revendeur' , + 'Type' => 'Type' , + 'LBL_START_DATE' => 'Date de début' , + 'LBL_END_DATE' => 'Date de fin' , + 'LBL_DUPLICATES_EXIST' => 'Un compte avec le même nom existe déjà ', + 'LBL_COPY_SHIPPING_ADDRESS' => "Copier l'adresse d'expédition" , + 'LBL_COPY_BILLING_ADDRESS' => "Copiez l'adresse de facturation" , + 'LBL_IMAGE_INFORMATION' => 'Photo de profil', + 'Organization Image' => 'Image de la société', - 'Other Phone' => 'Téléphone Secondaire', - 'Phone' => 'Téléphone Principal', - 'Email' => 'E-Mail Principale', + 'Other Phone' => 'Téléphone Secondaire', + 'Phone' => 'Téléphone Principal', + 'Email' => 'E-Mail Principale', ); $jsLanguageStrings = array( - 'LBL_RELATED_RECORD_DELETE_CONFIRMATION' => 'Voulez-vous réellement supprimer ce compte ?', - 'LBL_DELETE_CONFIRMATION' => 'Supprimer ce compte va supprimer les Affaires et Devis qui lui sont associés. Voulez-vous réellement supprimer ce compte ?', - 'LBL_MASS_DELETE_CONFIRMATION' => 'Supprimer ces comptes va supprimer les Affaires et Devis qui leur sont associés. Voulez-vous réellement supprimer ces comptes ?', - 'JS_DUPLICATE_CREATION_CONFIRMATION' => 'Le nom de l\'organisation existe déjà . Voulez-vous créer une copie de l\'enregistrement?', + 'LBL_RELATED_RECORD_DELETE_CONFIRMATION' => 'Voulez-vous réellement supprimer ce compte ?', + 'LBL_DELETE_CONFIRMATION' => 'Supprimer ce compte va supprimer les Affaires et Devis qui lui sont associés. Voulez-vous réellement supprimer ce compte ?', + 'LBL_MASS_DELETE_CONFIRMATION' => 'Supprimer ces comptes va supprimer les Affaires et Devis qui leur sont associés. Voulez-vous réellement supprimer ces comptes ?', -); + 'JS_DUPLICATE_CREATION_CONFIRMATION' => 'Le nom de l\'organisation existe déjà . Voulez-vous créer une copie de l\'enregistrement?', + +); \ No newline at end of file diff --git a/pkg/vtiger/translations/French/modules/Calendar.php b/pkg/vtiger/translations/French/modules/Calendar.php index b6739180e6aa9cdc4a0dd9078e314b31c1b25d90..9540882f086712dfd83387adf0badf53032b88bb 100644 --- a/pkg/vtiger/translations/French/modules/Calendar.php +++ b/pkg/vtiger/translations/French/modules/Calendar.php @@ -8,7 +8,7 @@ * All Rights Reserved. ************************************************************************************/ $languageStrings = array( - 'Calendar' => 'Tâche' , + 'Calendar' => 'Tâche' , 'SINGLE_Calendar' => 'Tâche' , 'LBL_ADD_TASK' => 'Ajouter une Tâche' , 'LBL_ADD_EVENT' => 'Ajouter une Activité' , @@ -24,7 +24,7 @@ $languageStrings = array( 'LBL_SELECT_USERS' => 'Selectionner les Utilisateurs' , 'LBL_EVENT_OR_TASK' => 'Evénements / Tâches' , 'LBL_TASK_INFORMATION' => 'Détails de la Tâche' , - 'LBL_EVENT_INFORMATION' => 'Détails de lévénement' , + 'LBL_EVENT_INFORMATION' => 'Détails de lévénement' , 'Subject' => 'Sujet' , 'Start Date & Time' => 'Date & heure de début' , 'Activity Type' => 'Type' , @@ -71,9 +71,9 @@ $languageStrings = array( 'Weekly' => 'Semaine(s)' , // TODO: Review 'Monthly' => 'Mois(s)' , // TODO: Review 'Yearly' => 'Année' , // TODO: Review - 'LBL_DEFAULT_STATUS_TYPE' => 'Statut par défaut & Type' , - 'LBL_STATUS' => 'Statut' , - 'LBL_TYPE' => 'Catégorie', + 'LBL_DEFAULT_STATUS_TYPE' => 'Statut par défaut & Type' , + 'LBL_STATUS' => 'Statut' , + 'LBL_TYPE' => 'Catégorie', //Fixing colors for Shared Calendar and My Calendar 'LBL_EDIT_COLOR' => 'Modifier la couleur', 'LBL_ADD_CALENDAR_VIEW' => 'Ajouter Calendrier', @@ -85,68 +85,71 @@ $languageStrings = array( 'Tasks' => 'Tâche', 'LBL_SELECT_FIELDS_FOR_RANGE' => 'Sélectionner les champs pour la gamme', 'LBL_DUPLICATE_VIEW_EXIST' => 'Calendrier vue existe déjà ', - - // For Event Invitation - 'LBL_ACTIVITY_NOTIFICATION' => "Il s'agit d'une notification qu'une activité vous est attribué qui a été", - 'LBL_ACTIVITY_INVITATION' => 'Vous avez été invité à une activité', - 'LBL_DETAILS_STRING' => 'Les détails sont', - 'LBL_CREATED' => 'établi', - 'LBL_UPDATED' => 'mise à jour', - 'Due Date' => "La date d'échéance", - 'Priority' => 'Priorité', - 'Related To' => 'Relatif à la', - 'LBL_CONTACT_LIST' => 'Liste des contacts', - 'LBL_APP_DESCRIPTION' => 'Description', - 'LBL_REGARDS_STRING' => 'Merci et salutations', - 'LBL_EVENT_INFORMATION' => 'Détails de l\'événement', - 'LBL_UPDATED_INVITATION' => 'Invitation à jour', - 'LBL_INVITATION' => 'Invitation', - //Recurring Events - 'LBL_EDIT_RECURRING_EVENT' => "Modifier l'événement récurrent", - 'LBL_ALL_EVENTS_EDIT_INFO' => "Tous les événements de la série seront modifiés.</br> Toutes les modifications apportées à d'autres événements seront conservés.", - 'LBL_FUTURE_EVENTS_EDIT_INFO' => 'Ceci et tous les événements suivants seront changés.</br> Toute modification apportée à des événements futurs seront perdus.', - 'LBL_ONLY_THIS_EVENT_EDIT_INFO' => 'Tous les autres événements de la série restera le même.', - 'LBL_EDIT_RECURRING_EVENTS_INFO' => 'Voulez-vous enregistrer les modifications pour', - 'LBL_DELETE_RECURRING_EVENT' => "Supprimer l'événement récurrent", - 'LBL_ALL_EVENTS_DELETE_INFO' => 'Tous les événements de la série seront supprimés.', - 'LBL_FUTURE_EVENTS_DELETE_INFO' => 'Ceci et tous les événements suivants sera supprimé.', - 'LBL_ONLY_THIS_EVENT_DELETE_INFO' => 'Tous les autres événements de la série restera le même.', - 'LBL_DELETE_RECURRING_EVENTS_INFO' => 'Voulez-vous supprimer uniquement cet événement, tous les événements de la série ou du présent et tous les événements à venir dans la série?', - 'LBL_ONLY_THIS_EVENT' => 'Seulement cet événement', - 'LBL_FUTURE_EVENTS' => 'Evénements suivants', - 'LBL_ALL_EVENTS' => 'Tous les événements', + // For Event Invitation + 'LBL_ACTIVITY_NOTIFICATION' => "Il s'agit d'une notification qu'une activité vous est attribué qui a été", + 'LBL_ACTIVITY_INVITATION' => 'Vous avez été invité à une activité', + 'LBL_DETAILS_STRING' => 'Les détails sont', + 'LBL_CREATED' => 'établi', + 'LBL_UPDATED' => 'mise à jour', + 'Due Date' => "La date d'échéance", + 'Priority' => 'Priorité', + 'Related To' => 'Relatif à la', + 'LBL_CONTACT_LIST' => 'Liste des contacts', + 'LBL_APP_DESCRIPTION' => 'Description', + 'LBL_REGARDS_STRING' => 'Merci et salutations', + 'LBL_EVENT_INFORMATION' => 'Détails de l\'événement', + 'LBL_UPDATED_INVITATION' => 'Invitation à jour', + 'LBL_INVITATION' => 'Invitation', + //Recurring Events + 'LBL_EDIT_RECURRING_EVENT' => "Modifier l'événement récurrent", + 'LBL_ALL_EVENTS_EDIT_INFO' => "Tous les événements de la série seront modifiés.</br> Toutes les modifications apportées à d'autres événements seront conservés.", + 'LBL_FUTURE_EVENTS_EDIT_INFO' => 'Ceci et tous les événements suivants seront changés.</br> Toute modification apportée à des événements futurs seront perdus.', + 'LBL_ONLY_THIS_EVENT_EDIT_INFO' => 'Tous les autres événements de la série restera le même.', + 'LBL_EDIT_RECURRING_EVENTS_INFO' => 'Voulez-vous enregistrer les modifications pour', - 'SINGLE_Events' => 'L\'événement', - 'LBL_IMPORT_RECORDS' => 'Importer Des Enregistrements', - 'LBL_RESULT' => 'Résultat', - 'LBL_FINISH' => 'Finition', - 'LBL_TOTAL_TASKS_IMPORTED' => 'Pas de. des Tâches Importé avec Succès ', - 'LBL_TOTAL_TASKS_SKIPPED' => 'Pas de. des Tâches Sauté comme ils étaient en manque un ou plusieurs champ obligatoire ', - 'LBL_TOTAL_EVENTS_IMPORTED' => 'Pas de. des Événements Importés avec Succès ', - 'LBL_TOTAL_EVENTS_SKIPPED' => 'Pas de. des Événements Ignorés comme ils étaient en manque un ou plusieurs champ obligatoire ', - 'ICAL_FORMAT' => 'Format iCal', - 'LBL_LAST_IMPORT_UNDONE' => 'Votre Dernier À L\'Importation A Été Annulée', - 'LBL_UNDO_LAST_IMPORT' => 'Annuler La Dernière Importation', - 'LBL_REMINDER_NOTIFICATION' => 'C\'est un avis de rappel pour l\'Activité', - 'LBL_SELECT_EVENT_TYPE' => 'Type D\'Activité', - 'LBL_THIS_WEEK' => 'Cette Semaine', - 'LBL_ADD_TASK_AND_PRESS_ENTER' => 'Ajouter une Tâche et appuyez sur Entrée', + 'LBL_DELETE_RECURRING_EVENT' => "Supprimer l'événement récurrent", + 'LBL_ALL_EVENTS_DELETE_INFO' => 'Tous les événements de la série seront supprimés.', + 'LBL_FUTURE_EVENTS_DELETE_INFO' => 'Ceci et tous les événements suivants sera supprimé.', + 'LBL_ONLY_THIS_EVENT_DELETE_INFO' => 'Tous les autres événements de la série restera le même.', + 'LBL_DELETE_RECURRING_EVENTS_INFO' => 'Voulez-vous supprimer uniquement cet événement, tous les événements de la série ou du présent et tous les événements à venir dans la série?', + 'LBL_ONLY_THIS_EVENT' => 'Seulement cet événement', + 'LBL_FUTURE_EVENTS' => 'Evénements suivants', + 'LBL_ALL_EVENTS' => 'Tous les événements', + 'SINGLE_Events' => 'L\'événement', + 'LBL_IMPORT_RECORDS' => 'Importer Des Enregistrements', + 'LBL_RESULT' => 'Résultat', + 'LBL_FINISH' => 'Finition', + 'LBL_TOTAL_TASKS_IMPORTED' => 'Pas de. des Tâches Importé avec Succès ', + 'LBL_TOTAL_TASKS_SKIPPED' => 'Pas de. des Tâches Sauté comme ils étaient en manque un ou plusieurs champ obligatoire ', + 'LBL_TOTAL_EVENTS_IMPORTED' => 'Pas de. des Événements Importés avec Succès ', + 'LBL_TOTAL_EVENTS_SKIPPED' => 'Pas de. des Événements Ignorés comme ils étaient en manque un ou plusieurs champ obligatoire ', + 'ICAL_FORMAT' => 'Format iCal', + 'LBL_LAST_IMPORT_UNDONE' => 'Votre Dernier À L\'Importation A Été Annulée', + 'LBL_UNDO_LAST_IMPORT' => 'Annuler La Dernière Importation', + 'LBL_REMINDER_NOTIFICATION' => 'C\'est un avis de rappel pour l\'Activité', + 'LBL_SELECT_EVENT_TYPE' => 'Type D\'Activité', + 'LBL_THIS_WEEK' => 'Cette Semaine', + 'LBL_ADD_TASK_AND_PRESS_ENTER' => 'Ajouter une Tâche et appuyez sur Entrée', - 'LBL_JANUARY' => 'Janvier', - 'LBL_FEBRUARY' => 'Février', - 'LBL_MARCH' => 'Mars', - 'LBL_APRIL' => 'Avril', - 'LBL_MAY' => 'Peut', - 'LBL_JUNE' => 'Juin', - 'LBL_JULY' => 'Juillet', - 'LBL_AUGUST' => 'Août', - 'LBL_SEPTEMBER' => 'Septembre', - 'LBL_OCTOBER' => 'Octobre', - 'LBL_NOVEMBER' => 'Novembre', - 'LBL_DECEMBER' => 'Décembre', - 'LBL_CLICK_HERE_TO_VIEW' => 'Cliquez ici pour afficher', + + 'LBL_JANUARY' => 'Janvier', + 'LBL_FEBRUARY' => 'Février', + 'LBL_MARCH' => 'Mars', + 'LBL_APRIL' => 'Avril', + 'LBL_MAY' => 'Peut', + 'LBL_JUNE' => 'Juin', + 'LBL_JULY' => 'Juillet', + 'LBL_AUGUST' => 'Août', + 'LBL_SEPTEMBER' => 'Septembre', + 'LBL_OCTOBER' => 'Octobre', + 'LBL_NOVEMBER' => 'Novembre', + 'LBL_DECEMBER' => 'Décembre', + 'LBL_CLICK_HERE_TO_VIEW' => 'Cliquez ici pour afficher', + + 'LBL_TOTAL_EVENTS_DUPLICATED' => 'Nombre de dupliquer des événements ignorés', + 'LBL_TOTAL_TASKS_DUPLICATED' => 'Nombre de tâches en double sautée', ); $jsLanguageStrings = array( 'LBL_ADD_EVENT_TASK' => 'Add Event / Tâche' , @@ -213,7 +216,7 @@ $jsLanguageStrings = array( 'JS_RECURRING_EVENT' => 'Événement récurrent' , 'JS_DETAILS' => 'Plus de Détails' , - 'JS_CHECK_START_AND_END_DATE' => 'Fin de la Date Et de l\'Heure doit être supérieure ou égale à la Date de Début Et Heure', - 'JS_CHECK_START_AND_END_DATE_SHOULD_BE_GREATER' => 'Date de fin Et l\'Heure doivent être plus importants que la Date de Départ Et Temps', + 'JS_CHECK_START_AND_END_DATE' => 'Fin de la Date Et de l\'Heure doit être supérieure ou égale à la Date de Début Et Heure', + 'JS_CHECK_START_AND_END_DATE_SHOULD_BE_GREATER' => 'Date de fin Et l\'Heure doivent être plus importants que la Date de Départ Et Temps', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/French/modules/Contacts.php b/pkg/vtiger/translations/French/modules/Contacts.php index c83c113941f308198d03b73837186c6966026ee5..ac0f1795e617e412172d18cb6010b881da7c18b4 100644 --- a/pkg/vtiger/translations/French/modules/Contacts.php +++ b/pkg/vtiger/translations/French/modules/Contacts.php @@ -8,52 +8,52 @@ * All Rights Reserved. ************************************************************************************/ $languageStrings = array( - 'Contacts' => 'Contacts' , - 'SINGLE_Contacts' => 'Contact' , - 'LBL_ADD_RECORD' => 'Ajouter un Contact' , - 'LBL_RECORDS_LIST' => 'Liste des Contacts' , - 'LBL_CONTACT_INFORMATION' => 'Détail du contact ' , - 'LBL_CUSTOMER_PORTAL_INFORMATION' => 'Portail de service client' , - 'LBL_IMAGE_INFORMATION' => 'Image/Photo du contact' , - 'LBL_COPY_OTHER_ADDRESS' => 'Copie Autres adresses' , // TODO: Review - 'LBL_COPY_MAILING_ADDRESS' => 'Copie Adresse postale' , // TODO: Review - 'Office Phone' => 'Téléphone (bureau)' , - 'Home Phone' => 'Téléphone (domicile)' , - 'Title' => 'Fonction' , - 'Department' => 'Service/Division' , - 'Birthdate' => 'Anniversaire' , - 'Reports To' => 'Supérieur hiérarchique' , - 'Assistant' => 'Assistant' , - 'Assistant Phone' => 'Téléphone (assistant)' , - 'Do Not Call' => 'Ne pas appeler' , - 'Reference' => 'Référent' , - 'Portal User' => 'Accès portail de service' , - 'Mailing Street' => 'Adresse' , - 'Mailing City' => 'Ville' , - 'Mailing State' => 'Département' , - 'Mailing Zip' => 'Code postal' , - 'Mailing Country' => 'Pays' , - 'Mailing Po Box' => 'Case postale postale' , - 'Other Street' => 'Adresse (alt.)' , - 'Other City' => 'Ville (alt.)' , - 'Other State' => 'Département (alt.)' , - 'Other Zip' => 'Code postal (alt.)' , - 'Other Country' => 'Pays (alt.)' , - 'Other Po Box' => 'Other P.O. Box' , - 'Contact Image' => 'Photo' , - 'Mr.' => 'M' , - 'Ms.' => 'Mme' , - 'Mrs.' => 'Mlle' , - 'Dr.' => 'Dr' , - 'Prof.' => 'Prof' , - 'User List' => 'Liste des collaborateurs' , - 'Contact Id' => 'Contact Id', - 'Support Start Date' => 'Soutien Date de début' , - 'Support End Date' => 'Soutien Date de fin' , - 'LBL_TRANSACTIONS' => 'Transactions', - 'Other Phone' => 'Téléphone Secondaire', - 'Email' => 'E-Mail Principale', - 'Secondary Email' => 'E-Mail Secondaire', + 'Contacts' => 'Contacts' , + 'SINGLE_Contacts' => 'Contact' , + 'LBL_ADD_RECORD' => 'Ajouter un Contact' , + 'LBL_RECORDS_LIST' => 'Liste des Contacts' , + 'LBL_CONTACT_INFORMATION' => 'Détail du contact ' , + 'LBL_CUSTOMER_PORTAL_INFORMATION' => 'Portail de service client' , + 'LBL_IMAGE_INFORMATION' => 'Image/Photo du contact' , + 'LBL_COPY_OTHER_ADDRESS' => 'Copie Autres adresses' , // TODO: Review + 'LBL_COPY_MAILING_ADDRESS' => 'Copie Adresse postale' , // TODO: Review + 'Office Phone' => 'Téléphone (bureau)' , + 'Home Phone' => 'Téléphone (domicile)' , + 'Title' => 'Fonction' , + 'Department' => 'Service/Division' , + 'Birthdate' => 'Anniversaire' , + 'Reports To' => 'Supérieur hiérarchique' , + 'Assistant' => 'Assistant' , + 'Assistant Phone' => 'Téléphone (assistant)' , + 'Do Not Call' => 'Ne pas appeler' , + 'Reference' => 'Référent' , + 'Portal User' => 'Accès portail de service' , + 'Mailing Street' => 'Adresse' , + 'Mailing City' => 'Ville' , + 'Mailing State' => 'Département' , + 'Mailing Zip' => 'Code postal' , + 'Mailing Country' => 'Pays' , + 'Mailing Po Box' => 'Case postale postale' , + 'Other Street' => 'Adresse (alt.)' , + 'Other City' => 'Ville (alt.)' , + 'Other State' => 'Département (alt.)' , + 'Other Zip' => 'Code postal (alt.)' , + 'Other Country' => 'Pays (alt.)' , + 'Other Po Box' => 'Other P.O. Box' , + 'Contact Image' => 'Photo' , + 'Mr.' => 'M' , + 'Ms.' => 'Mme' , + 'Mrs.' => 'Mlle' , + 'Dr.' => 'Dr' , + 'Prof.' => 'Prof' , + 'User List' => 'Liste des collaborateurs' , + 'Contact Id' => 'Contact Id', + 'Support Start Date' => 'Soutien Date de début' , + 'Support End Date' => 'Soutien Date de fin' , + + 'Other Phone' => 'Téléphone Secondaire', + 'Email' => 'E-Mail Principale', + 'Secondary Email' => 'E-Mail Secondaire', ); $jsLanguageStrings = array( diff --git a/pkg/vtiger/translations/French/modules/Google.php b/pkg/vtiger/translations/French/modules/Google.php index cadda34d96e9fc128a5192dcea1944566064f335..7075c848726b496ccff4b84ea18aceeaa5503d66 100755 --- a/pkg/vtiger/translations/French/modules/Google.php +++ b/pkg/vtiger/translations/French/modules/Google.php @@ -77,8 +77,9 @@ $languageStrings = array( 'LBL_SAVE_AND_IMPORT' => 'Enregistrer et Importer', 'LBL_IMPORT_RESULTS_GOOGLE' => 'Google Importer les résultats', + 'LBL_REDIRECT_URL' => 'URL de redirection', + 'LBL_REDIRECT_URL_MESSAGE' => "Copiez l'URL de redirection suivant et coller dans votre projet google auth comme image montre", ); - $jsLanguageStrings = array( 'LBL_SYNC_BUTTON' => "Synchroniser maintenant", 'LBL_SYNCRONIZING' => "Synchronisation ....", diff --git a/pkg/vtiger/translations/French/modules/PurchaseOrder.php b/pkg/vtiger/translations/French/modules/PurchaseOrder.php index d9de35d90eb2ad88f844a603fc0e5c22530715d7..9fe55f47f5e08a4622f79203375fff39e93d0f51 100644 --- a/pkg/vtiger/translations/French/modules/PurchaseOrder.php +++ b/pkg/vtiger/translations/French/modules/PurchaseOrder.php @@ -8,64 +8,65 @@ * All Rights Reserved. ************************************************************************************/ $languageStrings = array( - 'PurchaseOrder' => 'Commandes Fournisseur' , - 'SINGLE_PurchaseOrder' => 'Commande Fournisseur' , - 'LBL_EXPORT_TO_PDF' => 'Export PDF' , - 'LBL_SEND_MAIL_PDF' => 'Envoyer le PDF par Email' , - 'LBL_ADD_RECORD' => 'Ajouter une Commande Fournisseur' , - 'LBL_RECORDS_LIST' => 'Liste' , - 'LBL_COPY_SHIPPING_ADDRESS' => "Copier l'adresse d'expédition" , - 'LBL_COPY_BILLING_ADDRESS' => "Copiez l'adresse de facturation" , - 'LBL_PO_INFORMATION' => 'Détail de la commande' , - 'PurchaseOrder No' => 'Commande N°' , - 'Requisition No' => 'Ref demande' , - 'Tracking Number' => 'Ref de suivi' , - 'Sales Commission' => 'Commission' , - 'LBL_PAID' => 'Payé' , - 'LBL_BALANCE' => 'Balance' , // TODO: Review - 'Received Shipment' => 'Reçu' , + 'PurchaseOrder' => 'Commandes Fournisseur' , + 'SINGLE_PurchaseOrder' => 'Commande Fournisseur' , + 'LBL_EXPORT_TO_PDF' => 'Export PDF' , + 'LBL_SEND_MAIL_PDF' => 'Envoyer le PDF par Email' , + 'LBL_ADD_RECORD' => 'Ajouter une Commande Fournisseur' , + 'LBL_RECORDS_LIST' => 'Liste' , + 'LBL_COPY_SHIPPING_ADDRESS' => "Copier l'adresse d'expédition" , + 'LBL_COPY_BILLING_ADDRESS' => "Copiez l'adresse de facturation" , + 'LBL_PO_INFORMATION' => 'Détail de la commande' , + 'PurchaseOrder No' => 'Commande N°' , + 'Requisition No' => 'Ref demande' , + 'Tracking Number' => 'Ref de suivi' , + 'Sales Commission' => 'Commission' , + 'LBL_PAID' => 'Payé' , + 'LBL_BALANCE' => 'Balance' , // TODO: Review + 'Received Shipment' => 'Reçu' , - //Translations used for Export to Pdf - 'Valid Date' => 'Date de validité', - 'Phone: ' => 'Téléphone: ', - 'Issued Date' => 'Date d\'émission', - 'Shipping & Handling Charges' => 'Frais d\'expédition', - 'Shipping & Handling Tax:' => 'Taxe d\'expédition:', - 'Discount' => 'Remise', - 'Net Total' => 'Total Net', - 'Product Code' => 'Ref', - 'Customer Name' => 'Nom client', - 'Price' => 'Prix', - 'Tax:' => 'Taxe:', - 'Tax' => 'Taxe', - 'Contact Name' => 'Nom contact', - 'Grand Total:' => 'Total:', - 'LBL_LIST_PRICE' => 'Prix', - 'List Price' => 'Prix', - 'LBL_COPY_COMPANY_ADDRESS' => 'Copier l\'Adresse de la Société', - 'LBL_COPY_ACCOUNT_ADDRESS' => 'Copier l\'Adresse de l\'Organisation', - 'LBL_SELECT_ADDRESS_OPTION' => 'Sélectionnez une Adresse à copier', - 'LBL_BILLING_ADDRESS' => 'Adresse de facturation', - 'LBL_COMPANY_ADDRESS' => 'Adresse de la société', - 'LBL_ACCOUNT_ADDRESS' => "Adresse de l'organisation", - 'LBL_VENDOR_ADDRESS' => 'Adresse du Vendeur', - 'LBL_CONTACT_ADDRESS' => 'Adresse du contact', + //Translations used for Export to Pdf + 'Valid Date' => 'Date de validité', + 'Phone: ' => 'Téléphone: ', + 'Issued Date' => 'Date d\'émission', + 'Shipping & Handling Charges' => 'Frais d\'expédition', + 'Shipping & Handling Tax:' => 'Taxe d\'expédition:', + 'Discount' => 'Remise', + 'Net Total' => 'Total Net', + 'Product Code' => 'Ref', + 'Customer Name' => 'Nom client', + 'Price' => 'Prix', + 'Tax:' => 'Taxe:', + 'Tax' => 'Taxe', + 'Contact Name' => 'Nom contact', + 'Grand Total:' => 'Total:', + 'LBL_LIST_PRICE' => 'Prix', + 'List Price' => 'Prix', + 'LBL_COPY_COMPANY_ADDRESS' => 'Copier l\'Adresse de la Société', + 'LBL_COPY_ACCOUNT_ADDRESS' => 'Copier l\'Adresse de l\'Organisation', + 'LBL_SELECT_ADDRESS_OPTION' => 'Sélectionnez une Adresse à copier', + 'LBL_BILLING_ADDRESS' => 'Adresse de facturation', + 'LBL_COMPANY_ADDRESS' => 'Adresse de la société', + 'LBL_ACCOUNT_ADDRESS' => "Adresse de l'organisation", + 'LBL_VENDOR_ADDRESS' => 'Adresse du Vendeur', + 'LBL_CONTACT_ADDRESS' => 'Adresse du contact', - 'LBL_THIS' => 'Cette', - 'LBL_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_OR_REPLACE_THIS_ITEM' => 'est supprimé du système.merci de supprimer ou de remplacer cet élément', - 'LBL_THIS_LINE_ITEM_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_THIS_LINE_ITEM' => 'Cet élément est supprimé du système,veuillez supprimer cette ligne d\'articles', + 'LBL_THIS' => 'Cette', + 'LBL_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_OR_REPLACE_THIS_ITEM' => 'est supprimé du système.merci de supprimer ou de remplacer cet élément', + 'LBL_THIS_LINE_ITEM_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_THIS_LINE_ITEM' => 'Cet élément est supprimé du système,veuillez supprimer cette ligne d\'articles', ); $jsLanguageStrings = array( - 'JS_ORGANIZATION_NOT_FOUND'=> 'Organisation vide', - 'JS_ORGANIZATION_NOT_FOUND_MESSAGE'=> "Veuilliez sélectionner une organisation avant de copier l'adresse", - 'JS_ACCOUNT_NOT_FOUND' => 'Organisation vide', - 'JS_ACCOUNT_NOT_FOUND_MESSAGE' => "Veuilliez sélectionner une organisation avant de copier l'adresse", - 'JS_VENDOR_NOT_FOUND' => 'Vendeur vide', - 'JS_VENDOR_NOT_FOUND_MESSAGE' => "Veuilliez sélectionner un fournisseur avant de copier l'adresse", - 'JS_CONTACT_NOT_FOUND' => 'Contact vide', - 'JS_CONTACT_NOT_FOUND_MESSAGE' => "Veuilliez sélectionner un contact avant de copier l'adresse", - 'JS_PLEASE_REMOVE_LINE_ITEM_THAT_IS_DELETED' => 'Veuillez supprimer les éléments qui ont été supprimés', + 'JS_ORGANIZATION_NOT_FOUND'=> 'Organisation vide', + 'JS_ORGANIZATION_NOT_FOUND_MESSAGE'=> "Veuilliez sélectionner une organisation avant de copier l'adresse", + 'JS_ACCOUNT_NOT_FOUND' => 'Organisation vide', + 'JS_ACCOUNT_NOT_FOUND_MESSAGE' => "Veuilliez sélectionner une organisation avant de copier l'adresse", + 'JS_VENDOR_NOT_FOUND' => 'Vendeur vide', + 'JS_VENDOR_NOT_FOUND_MESSAGE' => "Veuilliez sélectionner un fournisseur avant de copier l'adresse", + 'JS_CONTACT_NOT_FOUND' => 'Contact vide', + 'JS_CONTACT_NOT_FOUND_MESSAGE' => "Veuilliez sélectionner un contact avant de copier l'adresse", -); + 'JS_PLEASE_REMOVE_LINE_ITEM_THAT_IS_DELETED' => 'Veuillez supprimer les éléments qui ont été supprimés', + +); \ No newline at end of file diff --git a/pkg/vtiger/translations/French/modules/Quotes.php b/pkg/vtiger/translations/French/modules/Quotes.php index 0c95b1dd9422b09fc765c87e613c8b2bc3868426..9cd43d4ca6ffab7328d91d4d829eef0ba528fc31 100644 --- a/pkg/vtiger/translations/French/modules/Quotes.php +++ b/pkg/vtiger/translations/French/modules/Quotes.php @@ -8,39 +8,39 @@ * All Rights Reserved. ************************************************************************************/ $languageStrings = array( - 'Quotes' => 'Devis' , - 'SINGLE_Quotes' => 'Devis' , - 'LBL_EXPORT_TO_PDF' => 'Export PDF' , - 'LBL_SEND_MAIL_PDF' => 'Envoyer le PDF par Email' , - 'LBL_ADD_RECORD' => 'Ajouter un Devis' , - 'LBL_RECORDS_LIST' => 'Liste des devis' , - 'LBL_QUOTE_INFORMATION' => 'Détail du devis' , - 'Quote No' => 'Devis N°' , - 'Quote Stage' => 'Phase' , - 'Valid Till' => 'Echéance' , - 'Inventory Manager' => 'Responsable du stock' , - 'Accepted' => 'Accepté' , - 'Rejected' => 'Rejeté' , - 'Related To' => 'Relatif à la' , - - //Translations used for Export to Pdf - 'Valid Date' => 'Date de validité', - 'Phone: ' => 'Téléphone: ', - 'Issued Date' => 'Date d\'émission', - 'Shipping & Handling Charges' => 'Frais d\'expédition', - 'Shipping & Handling Tax:' => 'Taxe d\'expédition:', - 'Discount' => 'Remise', - 'Net Total' => 'Total Net', - 'Product Code' => 'Ref', - 'Customer Name' => 'Nom client', - 'Price' => 'Prix', - 'Tax:' => 'Taxe:', - 'Tax' => 'Taxe', - 'Contact Name' => 'Nom contact', - 'Grand Total:' => 'Total:', + 'Quotes' => 'Devis' , + 'SINGLE_Quotes' => 'Devis' , + 'LBL_EXPORT_TO_PDF' => 'Export PDF' , + 'LBL_SEND_MAIL_PDF' => 'Envoyer le PDF par Email' , + 'LBL_ADD_RECORD' => 'Ajouter un Devis' , + 'LBL_RECORDS_LIST' => 'Liste des devis' , + 'LBL_QUOTE_INFORMATION' => 'Détail du devis' , + 'Quote No' => 'Devis N°' , + 'Quote Stage' => 'Phase' , + 'Valid Till' => 'Echéance' , + 'Inventory Manager' => 'Responsable du stock' , + 'Accepted' => 'Accepté' , + 'Rejected' => 'Rejeté' , + 'Related To' => 'Relatif à la' , - 'LBL_THIS' => 'Cette', - 'LBL_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_OR_REPLACE_THIS_ITEM' => 'est supprimé du système.merci de supprimer ou de remplacer cet élément', - 'LBL_THIS_LINE_ITEM_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_THIS_LINE_ITEM' => 'Cet élément est supprimé du système,veuillez supprimer cette ligne d\'articles', + //Translations used for Export to Pdf + 'Valid Date' => 'Date de validité', + 'Phone: ' => 'Téléphone: ', + 'Issued Date' => 'Date d\'émission', + 'Shipping & Handling Charges' => 'Frais d\'expédition', + 'Shipping & Handling Tax:' => 'Taxe d\'expédition:', + 'Discount' => 'Remise', + 'Net Total' => 'Total Net', + 'Product Code' => 'Ref', + 'Customer Name' => 'Nom client', + 'Price' => 'Prix', + 'Tax:' => 'Taxe:', + 'Tax' => 'Taxe', + 'Contact Name' => 'Nom contact', + 'Grand Total:' => 'Total:', + + 'LBL_THIS' => 'Cette', + 'LBL_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_OR_REPLACE_THIS_ITEM' => 'est supprimé du système.merci de supprimer ou de remplacer cet élément', + 'LBL_THIS_LINE_ITEM_IS_DELETED_FROM_THE_SYSTEM_PLEASE_REMOVE_THIS_LINE_ITEM' => 'Cet élément est supprimé du système,veuillez supprimer cette ligne d\'articles', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/French/modules/Settings/LayoutEditor.php b/pkg/vtiger/translations/French/modules/Settings/LayoutEditor.php index 55719c3e3b677c6cd743de90aa3527eca3b88c12..8d47103ab2cdf64a0f94a0af8378bd5a9e0eeeed 100644 --- a/pkg/vtiger/translations/French/modules/Settings/LayoutEditor.php +++ b/pkg/vtiger/translations/French/modules/Settings/LayoutEditor.php @@ -136,6 +136,20 @@ $languageStrings = array( 'LBL_DETAIL_HEADER' => 'Enregistrement d\'en-tête', 'LBL_HEADER_FIELD' => 'Vue D\'En-Tête', + 'LBL_DUPLICATE_HANDLING' => 'prévention double', + 'LBL_DUPLICATE_CHECK' => 'Activer la vérification en double', + 'LBL_DUPLICATION_INFO_MESSAGE' => "En double fonction de prévention empêche que les nouveaux enregistrements en double d'obtenir créé par les utilisateurs et les applications externes. Les documents créés à partir d'importation", + 'LBL_SELECT_FIELDS_FOR_DUPLICATION' => 'Sélectionnez les champs uniques sur lesquels les doublons sont à vérifier', + 'LBL_SELECT_FIELDS' => 'Sélectionner les champs', + 'LBL_MAX_3_FIELDS' => 'Max 3 champs', + 'LBL_SELECT_RULE' => 'Sélectionnez la règle des doublons de manipulation', + 'LBL_ALLOW_DUPLICATES' => 'Autoriser les doublons', + 'LBL_DO_NOT_ALLOW_DUPLICATES' => 'Ne pas laisser Doublons', + 'LBL_DUPLICATES_IN_SYNC_MESSAGE' => "Mesures à prendre si l'enregistrement en double est trouvé lors de la synchronisation avec l'application externe", + 'LBL_PREFER_LATEST_RECORD' => 'Préférez dernier disque', + 'LBL_PREFER_INTERNAL_RECORD' => 'Préférez enregistrement interne', + 'LBL_PREFER_EXTERNAL_RECORD' => 'Préférez enregistrement externe', + 'LBL_SYNC_TOOLTIP_MESSAGE' => "Préférez dernier disque - Plus récemment, des données d'enregistrement modifiés seront conservés <br> Préférer enregistrement interne - enregistrement existant sera conservé comme il est <br> Préférez enregistrement externe - Les données de l'application externe seront copiés", ); $jsLanguageStrings = array( 'JS_BLOCK_VISIBILITY_SHOW' => 'Spectacle de bloc activé' , @@ -196,4 +210,7 @@ Si vous n\'êtes pas sûr et que vous souhaitez être en mesure d\'afficher ces 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'Nom de champs apparaissent dans l\'en-Tête par défaut', 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'Ce Champ d\'en-Tête activé pour Vtiger7, Il apparaîtra à l\'Affichage du Résumé', + 'JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE' => 'Mis à jour avec succès à considérer les champs sélectionnés dans la prévention des doublons', + 'JS_DUPLICATE_HANDLING_FAILURE_MESSAGE' => "Impossible d'examiner les champs sélectionnés dans la prévention des doublons", + 'JS_DUPLICATE_CHECK_DISABLED' => 'vérification des doublons est désactivée', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/French/modules/Settings/Webforms.php b/pkg/vtiger/translations/French/modules/Settings/Webforms.php index 393ba79014c1d452c5d4dbb01e56b651b75007cf..0ad7f03d7fb0f63d1f3b530a66de943137777a12 100644 --- a/pkg/vtiger/translations/French/modules/Settings/Webforms.php +++ b/pkg/vtiger/translations/French/modules/Settings/Webforms.php @@ -40,6 +40,12 @@ $languageStrings = array( 'LBL_ADD_RECORD' => 'Ajouter Webform', + 'LBL_UPLOAD_DOCUMENTS' => 'Documents Téléchargement', + 'LBL_ADD_FILE_FIELD' => 'File Upload champs', + 'LBL_FIELD_LABEL' => 'Titre du document', + 'LBL_FILE_FIELD_INFO' => 'Pour chaque fichier téléchargé du web forment un nouveau document est créé avec le fichier joint. Le document est également lié à ce nouveau%s.', + 'LBL_NO_FILE_FIELD' => 'Aucun champ de fichier ajouté.', + 'LBL_COPY_TO_CLIPBOARD' => 'Copier dans le presse-papier', ); $jsLanguageStrings = array( 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'Webform deleted successfully', // TODO: Review @@ -53,4 +59,7 @@ $jsLanguageStrings = array( 'JS_SELECT_AN_OPTION' => 'Sélectionnez une Option', 'JS_LABEL' => 'étiquette', + 'JS_MAX_FILE_FIELDS_LIMIT' => 'Maximum vous pouvez ajouter des champs de fichiers%.', + 'JS_COPIED_SUCCESSFULLY' => 'Copié avec succès.', + 'JS_COPY_FAILED' => "Échec de la copie. S'il vous plaît copier manuellement.", ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Hungarian/modules/Calendar.php b/pkg/vtiger/translations/Hungarian/modules/Calendar.php index db7b1646dff6483b400930d6e21958f4353864d2..db75ce15d6641c793a18af149c8ce1e7736f26ec 100644 --- a/pkg/vtiger/translations/Hungarian/modules/Calendar.php +++ b/pkg/vtiger/translations/Hungarian/modules/Calendar.php @@ -147,6 +147,9 @@ $languageStrings = array( 'LBL_NOVEMBER' => 'November', 'LBL_DECEMBER' => 'December', 'LBL_CLICK_HERE_TO_VIEW' => 'Ide kattintva megtekintheti', + + 'LBL_TOTAL_EVENTS_DUPLICATED' => 'Nem ismétlÅ‘dÅ‘ események kimarad', + 'LBL_TOTAL_TASKS_DUPLICATED' => 'Nem ismétlÅ‘dÅ‘ feladatok kimarad', ); $jsLanguageStrings = array( 'LBL_ADD_EVENT_TASK' => 'Esemény / Feladat', diff --git a/pkg/vtiger/translations/Hungarian/modules/Google.php b/pkg/vtiger/translations/Hungarian/modules/Google.php index 7b82ae2c7440c9e8f14cc2b0adbcdb900a303ed9..b1ac8b203d389be72875b4cb9d8ffa2ef8bc8be9 100644 --- a/pkg/vtiger/translations/Hungarian/modules/Google.php +++ b/pkg/vtiger/translations/Hungarian/modules/Google.php @@ -77,8 +77,9 @@ $languageStrings = array( 'LBL_SAVE_AND_IMPORT' => 'A mentés gombra, majd Importálja', 'LBL_IMPORT_RESULTS_GOOGLE' => 'A Google Import eredmények', + 'LBL_REDIRECT_URL' => 'átirányÃtási uRL-t', + 'LBL_REDIRECT_URL_MESSAGE' => 'Másold az alábbi átirányÃtási URL-t és illessze be a google auth projekt kép is mutatja', ); - $jsLanguageStrings = array( 'LBL_SYNC_BUTTON' => "Szinkronizálása most", 'LBL_SYNCRONIZING' => "Szinkronizálása ....", diff --git a/pkg/vtiger/translations/Hungarian/modules/Settings/LayoutEditor.php b/pkg/vtiger/translations/Hungarian/modules/Settings/LayoutEditor.php index c8620afeb4d4c33cc7a62427d6ddf9406e774470..2a21be60a14e39cacc77dfa1ade8f105fe17228c 100644 --- a/pkg/vtiger/translations/Hungarian/modules/Settings/LayoutEditor.php +++ b/pkg/vtiger/translations/Hungarian/modules/Settings/LayoutEditor.php @@ -136,6 +136,20 @@ $languageStrings = array( 'LBL_DETAIL_HEADER' => 'Rekord fejlécét', 'LBL_HEADER_FIELD' => 'Fejléc Megtekintése', + 'LBL_DUPLICATE_HANDLING' => 'IsmétlÅ‘dÅ‘ megelÅ‘zése', + 'LBL_DUPLICATE_CHECK' => 'Engedélyezze duplikáció', + 'LBL_DUPLICATION_INFO_MESSAGE' => 'IsmétlÅ‘dÅ‘ elleni funkció csak megakadályozza az új ismétlÅ‘dÅ‘ rekordok a szerzés a felhasználók által létrehozott és külsÅ‘ alkalmazásokhoz. Records létrehozott Import', + 'LBL_SELECT_FIELDS_FOR_DUPLICATION' => 'Válassza ki az egyedi mezÅ‘ket, amelyek ismétlÅ‘dÅ‘ rekordokat kell ellenÅ‘rizni', + 'LBL_SELECT_FIELDS' => 'Select Fields', + 'LBL_MAX_3_FIELDS' => 'Max 3 Fields', + 'LBL_SELECT_RULE' => 'Válassza szabály kezelési ismétlÅ‘dések', + 'LBL_ALLOW_DUPLICATES' => 'Hagyjuk ismétlÅ‘dések', + 'LBL_DO_NOT_ALLOW_DUPLICATES' => 'Ne engedje, hogy másolatokat', + 'LBL_DUPLICATES_IN_SYNC_MESSAGE' => 'Kell tennie, ha duplikált rekord talált szinkronizálása közben külsÅ‘ alkalmazást', + 'LBL_PREFER_LATEST_RECORD' => 'Inkább legújabb rekord', + 'LBL_PREFER_INTERNAL_RECORD' => 'Inkább belsÅ‘ rekord', + 'LBL_PREFER_EXTERNAL_RECORD' => 'Inkább külsÅ‘ rekord', + 'LBL_SYNC_TOOLTIP_MESSAGE' => 'Inkább legújabb rekord - Legutóbb módosÃtott rekord adatok megmaradnak katalógusa Inkább belsÅ‘ rekord - MeglévÅ‘ rekord megmaradnak, ez katalógusa Inkább külsÅ‘ rekord - Az adatok a külsÅ‘ alkalmazás lesz másolva', ); $jsLanguageStrings = array( 'JS_BLOCK_VISIBILITY_SHOW' => 'Blokk Térkép engedélyezve', @@ -196,4 +210,7 @@ Biztos, hogy törölni akarod ezt a mezÅ‘t?', 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'Név mezÅ‘ jelenik meg a Fejlécben alapértelmezés szerint', 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'Ez a MezÅ‘ Fejlécében engedélyezett Vtiger7, Ez jelenik meg Összefoglaló Megtekintése', + 'JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE' => 'Sikeresen frissÃtve vizsgálni kiválasztott mezÅ‘k ismétlÅ‘dések megelÅ‘zés', + 'JS_DUPLICATE_HANDLING_FAILURE_MESSAGE' => 'Elmulasztotta figyelembe venni a kiválasztott mezÅ‘k ismétlÅ‘dések megelÅ‘zés', + 'JS_DUPLICATE_CHECK_DISABLED' => 'IsmétlÅ‘dÅ‘ deaktivált', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Hungarian/modules/Settings/Webforms.php b/pkg/vtiger/translations/Hungarian/modules/Settings/Webforms.php index 73667d1acbf03d1274996611b24820583c03942e..8ae26626a06a66e88eb18596e193b270e20639b1 100644 --- a/pkg/vtiger/translations/Hungarian/modules/Settings/Webforms.php +++ b/pkg/vtiger/translations/Hungarian/modules/Settings/Webforms.php @@ -40,6 +40,12 @@ $languageStrings = array( 'LBL_ADD_RECORD' => 'Add Webform', + 'LBL_UPLOAD_DOCUMENTS' => 'Dokumentumok feltöltése', + 'LBL_ADD_FILE_FIELD' => 'Fájl feltöltés Field', + 'LBL_FIELD_LABEL' => 'Dokumentum cÃme', + 'LBL_FILE_FIELD_INFO' => 'Minden feltöltött fájlnak a web egy új dokumentum jön létre a csatolt fájlt. A dokumentum is összefügg, hogy az újonnan létrehozott%s.', + 'LBL_NO_FILE_FIELD' => 'Nincs fájl területeken hozzá.', + 'LBL_COPY_TO_CLIPBOARD' => 'Másolja a vágólapra', ); $jsLanguageStrings = array( 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'Webform deleted successfully', // TODO: Review @@ -53,4 +59,7 @@ $jsLanguageStrings = array( 'JS_SELECT_AN_OPTION' => 'Válasszon ki egy LehetÅ‘séget', 'JS_LABEL' => 'cÃmke', + 'JS_MAX_FILE_FIELDS_LIMIT' => 'Maximum felveheti%s fájl területeken.', + 'JS_COPIED_SUCCESSFULLY' => 'Sikeresen másolt.', + 'JS_COPY_FAILED' => 'Másolás sikertelen. Kérjük, másolja kézzel.', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Hungarian/modules/Users.php b/pkg/vtiger/translations/Hungarian/modules/Users.php index 3b9901b2eee4b2821462a4c395066a3f04497524..bbc5da952fa81b4de8c7b30504b1d91210af2786 100644 --- a/pkg/vtiger/translations/Hungarian/modules/Users.php +++ b/pkg/vtiger/translations/Hungarian/modules/Users.php @@ -130,7 +130,7 @@ $languageStrings = array( 'Africa/Nairobi' => '(UTC+03:00) Nairobi' , 'Asia/Tehran' => '(UTC+03:30) Tehran' , 'Asia/Tbilisi' => '(UTC+04:00) Tbilisi' , - 'Europe/Moscow' => '(UTC+04:00) Moscow, Volgograd', + 'Europe/Moscow' => '(UTC+03:00) Moscow, Volgograd', 'Asia/Muscat' => '(UTC+04:00) Abu Dhabi, Muscat', 'Asia/Baku' => '(UTC+04:00) Baku' , 'Asia/Yerevan' => '(UTC+04:00) Yerevan' , diff --git a/pkg/vtiger/translations/Hungarian/modules/Vtiger.php b/pkg/vtiger/translations/Hungarian/modules/Vtiger.php index 1dbc08324d1be901aab5af5a64efcafc5a370db8..ad5ad61c920ccb7108c8a77ea8be0dc5a422b5eb 100644 --- a/pkg/vtiger/translations/Hungarian/modules/Vtiger.php +++ b/pkg/vtiger/translations/Hungarian/modules/Vtiger.php @@ -847,6 +847,9 @@ $languageStrings = array( 'LBL_NOT_STARRED' => 'Kövesse', 'LBL_QUICK_VIEW' => 'Quick View', 'LBL_NOTIFICATION_CENTER' => 'ÉrtesÃtési Központ', + 'LBL_NOTIFICATION' => 'Bejelentés', + 'LBL_STARRED_RECORD_TO' => '%s to %s', + 'LBL_STARRED_RECORD_UPDATED' => '%s%s frissÃtve', 'LBL_EDIT_REASON' => 'Szerkesztés ok', 'LBL_CONTACT' => 'ISMERÅSÖK KEZELÉSE', 'LBL_NO_ATTACHMENTS' => 'Nem Mellékleteket', @@ -1007,6 +1010,7 @@ kÃvül Vtiger.', 'LBL_MARKETING' => 'MARKETING', 'LBL_SALES' => 'ÉRTÉKESÃTÉS', 'LBL_PROJECT' => 'PROJEKTEK', + 'LBL_TOOLS' => 'ESZKÖZÖK', 'LBL_TAGS' => 'CÃmkék', 'LBL_SHARE_TAGS' => 'Nyilvános CÃmkék', 'LBL_SHARE_TAG' => 'Megosztás Tag', @@ -1080,6 +1084,16 @@ kÃvül Vtiger.', 'LBL_SLA_INFORMATION' => 'SLA Információk', 'LBL_TO_USE_SWITCH_TO_NEW_LOOK' => 'A <b>%s</ b>, azt ajánljuk, hogy kapcsolja ki a új megjelenés.', 'LBL_DELETE_USER_CONFIRMATION' => 'Amikor egy felhasználó törlésre kerül, a felhasználó lesz megjelölve, mint "inaktÃv", és új rekordokat lehet rendelni a felhasználó, és a felhasználó nem lesz képes bejelentkezni. Biztos vagy benne, hogy törölni akarod?', + + 'LBL_DUPLICATES' => 'ismétlÅ‘dések', + 'LBL_DUPLICATES_DETECTED' => 'IsmétlÅ‘dÅ‘ (ek) észlelt!', + 'LBL_DUPLICATES_FOUND_MESSAGE' => 'Ez a%s nem lehet menteni, mert az ismétlÅ‘dÅ‘%s létezik Vtiger illÅ‘ értékeket%s.', + 'LBL_VTIGER_NOTIFICATION' => 'Üzenet: Vtiger rendszer értesÃtések', + 'LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS' => 'A következÅ‘%s nem lehetett menteni a „%s†workflow', + 'LBL_DUPLICATION_FAILURE_FROM_WEBFORMS' => 'A következÅ‘%s nem lehetett menteni a „%s†webform', + 'LBL_DUPLICATION_FAILURE_FOR_ADMIN' => 'Akkor%s módosÃtani ismétlÅ‘dÅ‘ megelÅ‘zési szabályokat.', + 'LBL_DUPLICATION_FAILURE_FOR_NON_ADMIN' => 'Kérje a rendszergazda felülvizsgálata az ismétlÅ‘dÅ‘ szabályok', + 'LBL_DUPLICATE_RECORD_LISTS' => 'IsmétlÅ‘dÅ‘%s (s):', ); $jsLanguageStrings = array( 'JS_EMAIL_SERVER_CONFIGURATION' => 'Kérjük, hogy állÃtsd be a kimenÅ‘ email szerver (SMTP) beállÃtásait a BeállÃtások oldalon', @@ -1485,4 +1499,8 @@ $jsLanguageStrings = array( 'JS_UPLOAD_SUCCESSFUL' => 'Felküldött sikeresen', 'JS_UPLOAD_FAILED' => 'Fájl feltöltés sikertelen', + + 'JS_DUPLICATES_DETECTED' => 'IsmétlÅ‘dÅ‘ (ek) észlelt!', + 'JS_PASSWORD_MISMATCH_ERROR' => 'Kérjük, adja meg újra a jelszavakat. Az „új jelszó†és a „Jelszó megerÅ‘sÃtése†értékek nem egyeznek.', + 'JS_LIST_DELETE_CONFIRMATION' => 'Biztos vagy benne, hogy törölni akarod?', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Calendar.php b/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Calendar.php index e2c5040a9f838931520d9874a6b18f88473c531e..20f6b6a966cd4aa0ed07552dc48d343e941be096 100644 --- a/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Calendar.php +++ b/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Calendar.php @@ -147,6 +147,9 @@ $languageStrings = array( 'LBL_NOVEMBER' => 'Novembre', 'LBL_DECEMBER' => 'Dicembre', 'LBL_CLICK_HERE_TO_VIEW' => 'Clicca qui per vedere', + + 'LBL_TOTAL_EVENTS_DUPLICATED' => 'Numero di eventi duplicati saltato', + 'LBL_TOTAL_TASKS_DUPLICATED' => 'Numero di Task duplicati saltato', ); $jsLanguageStrings = array( 'LBL_ADD_EVENT_TASK' => 'Add Event / Compito' , diff --git a/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Google.php b/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Google.php index 3fc7e6229e6a5dd89e9fc5c145ef356403e83ba4..33b5acdecf8390586df62f37a866ccbd46c4ba23 100644 --- a/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Google.php +++ b/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Google.php @@ -77,8 +77,9 @@ $languageStrings = array( 'LBL_SAVE_AND_IMPORT' => 'Salvare e Importare', 'LBL_IMPORT_RESULTS_GOOGLE' => 'Google Importazione risultati', + 'LBL_REDIRECT_URL' => 'URL di reindirizzamento', + 'LBL_REDIRECT_URL_MESSAGE' => 'Copiare il seguente URL di reindirizzamento e incollare nel vostro progetto di autenticazione di Google come spettacoli di immagini', ); - $jsLanguageStrings = array( 'LBL_SYNC_BUTTON' => "Sincronizzare Ora", 'LBL_SYNCRONIZING' => "Sincronizzazione ....", diff --git a/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Settings/LayoutEditor.php b/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Settings/LayoutEditor.php index b5c3bfd252bf8d911ba4b9572a09fd1586224f2b..acb7644f9ad0cfd7c57dfe9bbcf7735f9b38d65a 100644 --- a/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Settings/LayoutEditor.php +++ b/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Settings/LayoutEditor.php @@ -136,6 +136,20 @@ $languageStrings = array( 'LBL_DETAIL_HEADER' => 'Record di intestazione', 'LBL_HEADER_FIELD' => 'La Visualizzazione Dell\'Intestazione', + 'LBL_DUPLICATE_HANDLING' => 'Prevenzione Duplicate', + 'LBL_DUPLICATE_CHECK' => 'Abilita controllo duplicato', + 'LBL_DUPLICATION_INFO_MESSAGE' => 'Duplicare funzione di prevenzione impedisce solo i nuovi record duplicati da sempre creati dagli utenti e le applicazioni esterne. Record creati da Import', + 'LBL_SELECT_FIELDS_FOR_DUPLICATION' => 'Selezionare i campi unici sui quali devono essere controllati i record duplicati', + 'LBL_SELECT_FIELDS' => 'selezionare i campi', + 'LBL_MAX_3_FIELDS' => 'Max 3 campi', + 'LBL_SELECT_RULE' => 'Selezionare regola per i duplicati di movimentazione', + 'LBL_ALLOW_DUPLICATES' => 'Consenti duplicati', + 'LBL_DO_NOT_ALLOW_DUPLICATES' => 'Non consentire duplicati', + 'LBL_DUPLICATES_IN_SYNC_MESSAGE' => "Azione da intraprendere in caso di rilevamento record duplicato durante la sincronizzazione con l'applicazione esterna", + 'LBL_PREFER_LATEST_RECORD' => 'Preferisco ultimo disco', + 'LBL_PREFER_INTERNAL_RECORD' => 'Preferisco record interno', + 'LBL_PREFER_EXTERNAL_RECORD' => 'Preferisco record esterno', + 'LBL_SYNC_TOOLTIP_MESSAGE' => "Preferisco ultimo disco - registrare i dati di recente modificate saranno mantenute <br> Preferisco record interno - esistente record sarà trattenuto in quanto è <br> Preferisco record esterno - Dati dall'applicazione esterna verranno copiati", ); $jsLanguageStrings = array( 'JS_BLOCK_VISIBILITY_SHOW' => 'Visualizza blocco attivato' , @@ -196,4 +210,7 @@ Sei sicuro di voler eliminare questo campo?', 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'Nome campo visualizzato nell\'Intestazione di default', 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'Questo Campo di Intestazione è abilitato per Vtiger7, verrà visualizzato nella Visualizzazione di Riepilogo', + 'JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE' => 'Con successo aggiornato a prendere in considerazione i campi selezionati nella prevenzione duplicati', + 'JS_DUPLICATE_HANDLING_FAILURE_MESSAGE' => 'Impossibile prendere in considerazione i campi selezionati nella prevenzione duplicati', + 'JS_DUPLICATE_CHECK_DISABLED' => 'assegno duplicato è disattivato', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Settings/Webforms.php b/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Settings/Webforms.php index 4f11be62d659ba1d3325888e136ddb3c85526dee..d8ef4d3b9cae96d9de1e2bc247570280795935b4 100644 --- a/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Settings/Webforms.php +++ b/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Settings/Webforms.php @@ -40,6 +40,12 @@ $languageStrings = array( 'LBL_ADD_RECORD' => 'Aggiungere Webform', + 'LBL_UPLOAD_DOCUMENTS' => 'Carica Documenti', + 'LBL_ADD_FILE_FIELD' => 'File Upload Campo', + 'LBL_FIELD_LABEL' => 'Titolo del documento', + 'LBL_FILE_FIELD_INFO' => 'Per ogni file caricato da web formare un nuovo documento viene creato con il file allegato. Documento è legato anche a questa nuova creazione%s.', + 'LBL_NO_FILE_FIELD' => 'Nessun campo file aggiunti.', + 'LBL_COPY_TO_CLIPBOARD' => 'Copia negli appunti', ); $jsLanguageStrings = array( 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'Webform deleted successfully', // TODO: Review @@ -53,4 +59,7 @@ $jsLanguageStrings = array( 'JS_SELECT_AN_OPTION' => 'Selezionare un\'Opzione', 'JS_LABEL' => 'etichetta', -); \ No newline at end of file + 'JS_MAX_FILE_FIELDS_LIMIT' => 'Massima è possibile aggiungere campi del file%s.', + 'JS_COPIED_SUCCESSFULLY' => 'Copiato con successo.', + 'JS_COPY_FAILED' => 'Copia non riuscita. Si prega di copiare manualmente.', +); diff --git a/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Users.php b/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Users.php index 92ab60600d716caf88545cb2e2e6b91447a9a7b9..e3e048ca7e334106aca735307ea65040223fe524 100644 --- a/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Users.php +++ b/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Users.php @@ -130,7 +130,7 @@ $languageStrings = array( 'Africa/Nairobi' => '(UTC+03:00) Nairobi' , 'Asia/Tehran' => '(UTC+03:30) Tehran' , 'Asia/Tbilisi' => '(UTC+04:00) Tbilisi' , - 'Europe/Moscow' => '(UTC+04:00) Moscow, Volgograd', + 'Europe/Moscow' => '(UTC+03:00) Moscow, Volgograd', 'Asia/Muscat' => '(UTC+04:00) Abu Dhabi, Muscat', 'Asia/Baku' => '(UTC+04:00) Baku' , 'Asia/Yerevan' => '(UTC+04:00) Yerevan' , diff --git a/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Vtiger.php b/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Vtiger.php index 57d578e18aec8a2ddd6e21ddf4d7f0267e8aaa47..a63deff7621b7b598a3a067d47f8b9eab376d0f5 100644 --- a/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Vtiger.php +++ b/pkg/vtiger/translations/ItalianLanguagePack_it_it/modules/Vtiger.php @@ -846,6 +846,9 @@ $languageStrings = array( 'LBL_NOT_STARRED' => 'Seguire', 'LBL_QUICK_VIEW' => 'Quick View', 'LBL_NOTIFICATION_CENTER' => 'Il Centro Di Notifica', + 'LBL_NOTIFICATION' => 'Notifica', + 'LBL_STARRED_RECORD_TO' => '%sa%s', + 'LBL_STARRED_RECORD_UPDATED' => '%s aggiornato%s', 'LBL_EDIT_REASON' => 'Modifica ragione', 'LBL_CONTACT' => 'GESTIONE DEI CONTATTI', 'LBL_NO_ATTACHMENTS' => 'Allegati', @@ -1002,6 +1005,7 @@ al di fuori di Vtiger.', 'LBL_MARKETING' => 'MARKETING', 'LBL_SALES' => 'VENDITA', 'LBL_PROJECT' => 'PROGETTI', + 'LBL_TOOLS' => 'UTENSILI', 'LBL_TAGS' => 'Tag', 'LBL_SHARE_TAGS' => 'Tag Pubblici', 'LBL_SHARE_TAG' => 'Share Tag', @@ -1075,6 +1079,16 @@ al di fuori di Vtiger.', 'LBL_SLA_INFORMATION' => 'SLA Informazioni', 'LBL_TO_USE_SWITCH_TO_NEW_LOOK' => 'Per utilizzare il <b>%s</b>, si consiglia di passare a nuovo look.', 'LBL_DELETE_USER_CONFIRMATION' => "Quando viene cancellato un utente, l'utente verrà contrassegnato come inattivo e non nuovi record possono essere assegnati all'Utente, e l'utente non sarà in grado di effettuare il login. Sei sicuro di voler eliminare?", + + 'LBL_DUPLICATES' => 'duplicati', + 'LBL_DUPLICATES_DETECTED' => 'Duplicate (s) rilevata!', + 'LBL_DUPLICATES_FOUND_MESSAGE' => 'Questo%s non può essere salvato in quanto duplicato%s esiste in Vtiger con corrispondenti valori per%s.', + 'LBL_VTIGER_NOTIFICATION' => 'Messaggio da: Vtiger Sistema Notifiche', + 'LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS' => 'La seguente%s non può essere salvato da "%s" del flusso di lavoro', + 'LBL_DUPLICATION_FAILURE_FROM_WEBFORMS' => 'La seguente%s non può essere salvato da "%s" modulo web', + 'LBL_DUPLICATION_FAILURE_FOR_ADMIN' => 'È possibile%s per modificare le regole di prevenzione duplicati.', + 'LBL_DUPLICATION_FAILURE_FOR_NON_ADMIN' => "Contattare l'amministratore per la revisione delle regole duplicati", + 'LBL_DUPLICATE_RECORD_LISTS' => 'Duplicate%s (s):', ); $jsLanguageStrings = array( 'JS_EMAIL_SERVER_CONFIGURATION' => 'Please configure your outgoing server settings from the settings page', @@ -1480,4 +1494,7 @@ $jsLanguageStrings = array( 'JS_UPLOAD_SUCCESSFUL' => 'Caricato con successo File', 'JS_UPLOAD_FAILED' => 'File Upload non riuscito', + 'JS_DUPLICATES_DETECTED' => 'Duplicate (s) rilevata!', + 'JS_PASSWORD_MISMATCH_ERROR' => 'Si prega di inserire nuovamente le password. La "nuova password" e "password conferma" valori non corrispondono.', + 'JS_LIST_DELETE_CONFIRMATION' => 'Sei sicuro di voler eliminare?', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Calendar.php b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Calendar.php index 4d049ac699c998aae1ed1c04036b3ecc019d29d2..42ffa394f8f3b7497f56ee66ebc67bea8d04eb54 100644 --- a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Calendar.php +++ b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Calendar.php @@ -147,6 +147,9 @@ $languageStrings = array( 'LBL_NOVEMBER' => 'Noviembre', 'LBL_DECEMBER' => 'De diciembre de', 'LBL_CLICK_HERE_TO_VIEW' => 'Haga clic aquà para ver', + + 'LBL_TOTAL_EVENTS_DUPLICATED' => 'Número de eventos duplicados saltado', + 'LBL_TOTAL_TASKS_DUPLICATED' => 'Número de tareas duplicadas saltado', ); $jsLanguageStrings = array( 'LBL_ADD_EVENT_TASK' => 'Agregar Evento / Tarea' , diff --git a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Contacts.php b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Contacts.php index 839886eada4d95a9f3a7dbb90bd8966f9a533b0c..6f755422fc8140dfdb604210493a7837d7f4122c 100644 --- a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Contacts.php +++ b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Contacts.php @@ -50,7 +50,6 @@ $languageStrings = array( 'Contact Id' => 'Contacto Id', 'Support Start Date' => 'Soporte Fecha de Inicio' , 'Support End Date' => 'Soporte Fecha de finalización', - 'LBL_TRANSACTIONS' => 'Transactions', 'Other Phone' => 'Teléfono secundario', 'Email' => 'Correo electrónico principal', diff --git a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Google.php b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Google.php index 9c62f19897f7cdcb30ec9b89d0cb3f66535fb430..3d2355e663ac30017a7c83392abc0a75ffc57ca5 100644 --- a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Google.php +++ b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Google.php @@ -77,8 +77,9 @@ $languageStrings = array( 'LBL_SAVE_AND_IMPORT' => 'Guardar e Importar', 'LBL_IMPORT_RESULTS_GOOGLE' => 'Google Importar los resultados', + 'LBL_REDIRECT_URL' => 'Redireccionar URL', + 'LBL_REDIRECT_URL_MESSAGE' => 'Copia el siguiente URL de redireccionamiento y pegar en su proyecto de autenticación Google como muestra la imagen', ); - $jsLanguageStrings = array( 'LBL_SYNC_BUTTON' => "Sincronizar Ahora", 'LBL_SYNCRONIZING' => "Sincronizar ....", diff --git a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Settings/LayoutEditor.php b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Settings/LayoutEditor.php index 8a41d820f28c93b8647ae55d0bf873e072cfad30..8b10a8dfed1543afecefb6e661b52ece05d5e9d0 100644 --- a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Settings/LayoutEditor.php +++ b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Settings/LayoutEditor.php @@ -136,6 +136,20 @@ $languageStrings = array( 'LBL_DETAIL_HEADER' => 'Registro de encabezado', 'LBL_HEADER_FIELD' => 'Encabezado De La Vista', + 'LBL_DUPLICATE_HANDLING' => 'Prevención duplicado', + 'LBL_DUPLICATE_CHECK' => 'Habilitar comprobación de duplicados', + 'LBL_DUPLICATION_INFO_MESSAGE' => 'Duplicar función de prevención sólo previene nuevos registros duplicados de conseguir creado por los usuarios y aplicaciones externas. Los registros creados a partir de importación', + 'LBL_SELECT_FIELDS_FOR_DUPLICATION' => 'Seleccione los campos únicos en los que se van a comprobar los registros duplicados', + 'LBL_SELECT_FIELDS' => 'Seleccionar campos', + 'LBL_MAX_3_FIELDS' => 'Max 3 campos', + 'LBL_SELECT_RULE' => 'Seleccione la regla de duplicados de manipulación', + 'LBL_ALLOW_DUPLICATES' => 'Permitir Duplicados', + 'LBL_DO_NOT_ALLOW_DUPLICATES' => 'No permita que Duplicados', + 'LBL_DUPLICATES_IN_SYNC_MESSAGE' => 'Acción a realizar si no se encuentra registro duplicado, mientras que la sincronización con la aplicación externa', + 'LBL_PREFER_LATEST_RECORD' => 'Prefiero último disco', + 'LBL_PREFER_INTERNAL_RECORD' => 'Prefiero registro interno', + 'LBL_PREFER_EXTERNAL_RECORD' => 'Prefiero registro externo', + 'LBL_SYNC_TOOLTIP_MESSAGE' => 'Prefiero último disco - datos de registro Más recientemente modificados serán retenidos <br> prefieren registro interno - existente registro será retenido, ya que es <br> prefieren registro externo - Los datos de la aplicación externa será copiado', ); $jsLanguageStrings = array( 'JS_BLOCK_VISIBILITY_SHOW' => 'Mostrar bloque abierto' , @@ -196,4 +210,7 @@ Está seguro de que desea eliminar este campo?', 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'Nombre de los campos aparecen en la Cabecera por defecto', 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'Este Campo es Encabezado habilitado para Vtiger7, aparecerá en la Vista de Resumen', + 'JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE' => 'Se ha actualizado correctamente a considerar los campos seleccionados en la prevención de duplicados', + 'JS_DUPLICATE_HANDLING_FAILURE_MESSAGE' => 'No tuvo en cuenta los campos seleccionados en la prevención de duplicados', + 'JS_DUPLICATE_CHECK_DISABLED' => 'comprobación de duplicados está desactivada', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Settings/Webforms.php b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Settings/Webforms.php index 95093d3ef6a910c40872792567caf07d693563cf..e894758a96aaad982c8d7a0564518abf26566f4b 100644 --- a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Settings/Webforms.php +++ b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Settings/Webforms.php @@ -40,6 +40,12 @@ $languageStrings = array( 'LBL_ADD_RECORD' => 'Agregar Formulario Web', + 'LBL_UPLOAD_DOCUMENTS' => 'subir documentos', + 'LBL_ADD_FILE_FIELD' => 'El campo de carga de archivos', + 'LBL_FIELD_LABEL' => 'Titulo del documento', + 'LBL_FILE_FIELD_INFO' => 'Para cada archivo subido desde web formar un nuevo documento se crea con el archivo adjunto. El documento también está vinculada a este%s de nueva creación.', + 'LBL_NO_FILE_FIELD' => 'No hay campos de archivo añadido.', + 'LBL_COPY_TO_CLIPBOARD' => 'Copiar al portapapeles', ); $jsLanguageStrings = array( 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'Webform deleted successfully', // TODO: Review @@ -53,4 +59,7 @@ $jsLanguageStrings = array( 'JS_SELECT_AN_OPTION' => 'Seleccione una Opción', 'JS_LABEL' => 'etiqueta', + 'JS_MAX_FILE_FIELDS_LIMIT' => 'Máximo que se puede añadir campos de ficheros%s.', + 'JS_COPIED_SUCCESSFULLY' => 'Copiado con éxito.', + 'JS_COPY_FAILED' => 'Copia falló. Por favor, copiar manualmente.', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Users.php b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Users.php index d5eeb18847b597562875826838119a6d55b8cb33..09c9bfefa67516c54d2b190d2efc90919eb462f2 100644 --- a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Users.php +++ b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Users.php @@ -130,7 +130,7 @@ $languageStrings = array( 'Africa/Nairobi' => '(UTC+03:00) Nairobi' , 'Asia/Tehran' => '(UTC+03:30) Tehran' , 'Asia/Tbilisi' => '(UTC+04:00) Tbilisi' , - 'Europe/Moscow' => '(UTC+04:00) Moscow, Volgograd', + 'Europe/Moscow' => '(UTC+03:00) Moscow, Volgograd', 'Asia/Muscat' => '(UTC+04:00) Abu Dhabi, Muscat', 'Asia/Baku' => '(UTC+04:00) Baku' , 'Asia/Yerevan' => '(UTC+04:00) Yerevan' , diff --git a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Vtiger.php b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Vtiger.php index f55c2e13ec931b2e9a42f808856e0addf4fe3617..4112717084bc3d2a2cf2359dadb631df3bc7b8b1 100644 --- a/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Vtiger.php +++ b/pkg/vtiger/translations/MexicanSpanishLanguagePack_es_mx/modules/Vtiger.php @@ -838,6 +838,9 @@ $languageStrings = array( 'LBL_NOT_STARRED' => 'Siga', 'LBL_QUICK_VIEW' => 'Vista Rápida', 'LBL_NOTIFICATION_CENTER' => 'El Centro De Notificaciones', + 'LBL_NOTIFICATION' => 'Notificación', + 'LBL_STARRED_RECORD_TO' => '%s a%s', + 'LBL_STARRED_RECORD_UPDATED' => '%s%s actualizada', 'LBL_EDIT_REASON' => 'Editar razón', 'LBL_CONTACT' => 'GESTIÓN DE CONTACTOS', 'LBL_NO_ATTACHMENTS' => 'No Hay Archivos Adjuntos', @@ -999,6 +1002,7 @@ fuera de Vtiger.', 'LBL_MARKETING' => 'MARKETING', 'LBL_SALES' => 'VENTAS', 'LBL_PROJECT' => 'PROYECTOS', + 'LBL_TOOLS' => 'HERRAMIENTAS', 'LBL_TAGS' => 'Etiquetas', 'LBL_SHARE_TAGS' => 'Etiquetas Públicas', 'LBL_SHARE_TAG' => 'Compartir Etiqueta', @@ -1072,6 +1076,16 @@ fuera de Vtiger.', 'LBL_SLA_INFORMATION' => 'SLA Información', 'LBL_TO_USE_SWITCH_TO_NEW_LOOK' => 'To use <b>%s</b>, we recommend you to Switch to new look.', 'LBL_DELETE_USER_CONFIRMATION' => 'Cuando se elimina un usuario, el usuario será marcado como "inactivo" y no hay nuevos registros pueden ser asignados al usuario, y el usuario no será capaz de iniciar sesión. ¿Estas seguro que quieres borrarlo?', + + 'LBL_DUPLICATES' => 'duplicados', + 'LBL_DUPLICATES_DETECTED' => 'Duplicar (s) detectado!', + 'LBL_DUPLICATES_FOUND_MESSAGE' => 'Esto%s no se puede guardar desde duplicado%s existe en VTiger a juego con los valores de%s.', + 'LBL_VTIGER_NOTIFICATION' => 'Mensaje: VTiger Sistema de Notificaciones', + 'LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS' => 'El siguiente%s no pudo ser salvado de flujo de trabajo "%s"', + 'LBL_DUPLICATION_FAILURE_FROM_WEBFORMS' => 'El siguiente%s no pudo ser salvado de formulario web "%s"', + 'LBL_DUPLICATION_FAILURE_FOR_ADMIN' => 'Puede%s para modificar las normas de prevención de duplicados.', + 'LBL_DUPLICATION_FAILURE_FOR_NON_ADMIN' => 'Póngase en contacto con el administrador para obtener la revisión de las reglas duplicadas', + 'LBL_DUPLICATE_RECORD_LISTS' => 'Duplicar%s (s):', ); $jsLanguageStrings = array( 'JS_EMAIL_SERVER_CONFIGURATION' => 'Por favor configura el servidor de salida desde la página de configuración ', @@ -1462,4 +1476,8 @@ $jsLanguageStrings = array( 'JS_UPLOAD_SUCCESSFUL' => 'Archivo subido exitosamente', 'JS_UPLOAD_FAILED' => 'Cargar archivo Error', + + 'JS_DUPLICATES_DETECTED' => 'Duplicar (s) detectado!', + 'JS_PASSWORD_MISMATCH_ERROR' => 'Por favor, vuelva a introducir las contraseñas. La "nueva contraseña" y "Confirmar contraseña" valores no coinciden.', + 'JS_LIST_DELETE_CONFIRMATION' => '¿Estas seguro que quieres borrarlo?', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Calendar.php b/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Calendar.php index 031b5b5efe6385300121788dc69729b54a4052bd..73e8ea16be042391778eb28a5866ca9edc4080f0 100644 --- a/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Calendar.php +++ b/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Calendar.php @@ -168,6 +168,9 @@ $languageStrings = array( 'LBL_NOVEMBER' => 'Listopad', 'LBL_DECEMBER' => 'GrudzieÅ„', 'LBL_CLICK_HERE_TO_VIEW' => 'Kliknij tutaj, aby wyÅ›wietlić', + + 'LBL_TOTAL_EVENTS_DUPLICATED' => 'Ilość duplikatów Wydarzenia pomijane', + 'LBL_TOTAL_TASKS_DUPLICATED' => 'Ilość Duplikaty pomijane', ); $jsLanguageStrings = array( diff --git a/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Google.php b/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Google.php index 5566915fb723ccbf7c5e77143c3f58c27365fd4c..76597b9318b4a94cb050a4e6a6a64de88fecd980 100755 --- a/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Google.php +++ b/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Google.php @@ -77,8 +77,9 @@ $languageStrings = array( 'LBL_SAVE_AND_IMPORT' => 'Zapisz i importować', 'LBL_IMPORT_RESULTS_GOOGLE' => 'Google importu wyników', + 'LBL_REDIRECT_URL' => 'przekierowanie', + 'LBL_REDIRECT_URL_MESSAGE' => 'Skopiuj poniższy link i wklej przekierowania w projekcie auth google jak pokazuje obrazu', ); - $jsLanguageStrings = array( 'LBL_SYNC_BUTTON' => "Synchronizuj teraz", 'LBL_SYNCRONIZING' => "Synchronizacji ....", diff --git a/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Settings/LayoutEditor.php b/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Settings/LayoutEditor.php index 9ce5c9c3ba6388c2bb6c86f4cd9ceb4c86747ebb..5efc2f83f438d9dd9dfbbc16894f864a140fdf4b 100755 --- a/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Settings/LayoutEditor.php +++ b/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Settings/LayoutEditor.php @@ -135,6 +135,20 @@ $languageStrings = array( 'LBL_DETAIL_HEADER' => 'Rekord nagłówka', 'LBL_HEADER_FIELD' => 'Widok Nagłówka', + 'LBL_DUPLICATE_HANDLING' => 'Zapobieganie duplikat', + 'LBL_DUPLICATE_CHECK' => 'Włącz sprawdzanie zduplikowanych', + 'LBL_DUPLICATION_INFO_MESSAGE' => 'Powielać funkcji zapobiegania tylko zapobiega powstawaniu nowych zduplikowane rekordy z coraz tworzone przez użytkowników i aplikacji zewnÄ™trznych. Rekordy utworzone z importu', + 'LBL_SELECT_FIELDS_FOR_DUPLICATION' => 'Wybierz unikalne pól, na których majÄ… być sprawdzane zduplikowane rekordy', + 'LBL_SELECT_FIELDS' => 'Wybierz Fields', + 'LBL_MAX_3_FIELDS' => 'Max 3 Fields', + 'LBL_SELECT_RULE' => 'Wybierz reguÅ‚a duplikatów obsÅ‚ugi', + 'LBL_ALLOW_DUPLICATES' => 'Pozostawić duplikaty', + 'LBL_DO_NOT_ALLOW_DUPLICATES' => 'Nie dopuszczać duplikaty', + 'LBL_DUPLICATES_IN_SYNC_MESSAGE' => 'DziaÅ‚ania należy podjąć, jeÅ›li duplikat rekord zostanie znaleziony podczas synchronizacji z zewnÄ™trznej aplikacji', + 'LBL_PREFER_LATEST_RECORD' => 'WolÄ™ ostatni rekord', + 'LBL_PREFER_INTERNAL_RECORD' => 'WolÄ™ rekord wewnÄ™trznego', + 'LBL_PREFER_EXTERNAL_RECORD' => 'WolÄ™ rekord zewnÄ™trznego', + 'LBL_SYNC_TOOLTIP_MESSAGE' => 'WolÄ™ najnowszÄ… pÅ‚ytÄ™ - Ostatnio zmodyfikowane rejestrować dane zostanÄ… zachowane NajwiÄ™ksza wolÄ… wewnÄ™trzny rekord - IstniejÄ…cy rekord zostanie zachowana, ponieważ jest NajwiÄ™ksza wolÄ… rekord zewnÄ™trznego - Dane z zewnÄ™trznej aplikacji zostanÄ… skopiowane', ); $jsLanguageStrings = array( 'JS_BLOCK_VISIBILITY_SHOW' => 'Blok Pokaż włączony' , @@ -195,4 +209,7 @@ JesteÅ› pewien że chcesz usunąć to pole?', 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'Nazwa pola sÄ… wyÅ›wietlane w nagłówku domyÅ›lnie', 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'To pole nagłówka jest włączona Vtiger7, zostanie ona wyÅ›wietlona w widoku "podsumowanie"', + 'JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE' => 'PomyÅ›lnie zaktualizowany do rozważenia wybranych pól w zapobieganiu duplikatów', + 'JS_DUPLICATE_HANDLING_FAILURE_MESSAGE' => 'Nie wzięła pod uwagÄ™ wybrane pola w zapobieganiu duplikatów', + 'JS_DUPLICATE_CHECK_DISABLED' => 'Duplikat wyboru jest wyłączony', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Settings/Webforms.php b/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Settings/Webforms.php index c27da2bd8424d9a514d89937504fd9aa8199b554..b20cb008237b9ceb81ac0fc07adcac643e935a60 100755 --- a/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Settings/Webforms.php +++ b/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Settings/Webforms.php @@ -45,6 +45,12 @@ $languageStrings = array( 'LBL_ADD_RECORD' => 'Dodaj NastÄ™pujÄ…cÄ… FormÄ™', + 'LBL_UPLOAD_DOCUMENTS' => 'Dodaj Dokumenty', + 'LBL_ADD_FILE_FIELD' => 'File Upload Pole', + 'LBL_FIELD_LABEL' => 'TytuÅ‚ dokumentu', + 'LBL_FILE_FIELD_INFO' => 'Dla każdego pliku przesÅ‚anego z sieci tworzÄ…c nowy dokument jest tworzony z załączonym pliku. Dokument jest również zwiÄ…zany z tym nowo utworzonym%s.', + 'LBL_NO_FILE_FIELD' => 'Brak pola plików dodany.', + 'LBL_COPY_TO_CLIPBOARD' => 'Skopiuj do schowka', ); $jsLanguageStrings = array( 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'Webform deleted successfully',//ToDo Review @@ -55,4 +61,8 @@ $jsLanguageStrings = array( 'JS_REFERENCE_FIELDS_CANT_BE_MANDATORY_WITHOUT_OVERRIDE_VALUE' => 'Pola referencyjne mogÄ™ być obowiÄ…zkowe bez wartoÅ›ci override', 'JS_TYPE_TO_SEARCH' => 'Typ wyszukiwania', "JS_WEBFORM_WITH_THIS_NAME_ALREADY_EXISTS" => 'Webform o tej nazwie już istnieje', + + 'JS_MAX_FILE_FIELDS_LIMIT' => 'Maksymalna można dodać pola pliku%s.', + 'JS_COPIED_SUCCESSFULLY' => 'Skopiowane z powodzeniem.', + 'JS_COPY_FAILED' => 'Kopiowanie nie powiodÅ‚o siÄ™. ProszÄ™ skopiować rÄ™cznie.', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Users.php b/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Users.php index 960b4f4a9ee89d2a14408ee54b53e34e6b3cd74c..efc9eb52039311b4c546c26047ec381279ed3c7f 100644 --- a/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Users.php +++ b/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Users.php @@ -137,7 +137,7 @@ $languageStrings = array( 'Africa/Nairobi' => '(UTC+03:00) Nairobi', 'Asia/Tehran' => '(UTC+03:30) Tehran', 'Asia/Tbilisi' => '(UTC+04:00) Tbilisi', - 'Europe/Moscow' => '(UTC+04:00) Moscow, Volgograd', + 'Europe/Moscow' => '(UTC+03:00) Moscow, Volgograd', 'Asia/Muscat' => '(UTC+04:00) Abu Dhabi, Muscat', 'Asia/Baku' => '(UTC+04:00) Baku', 'Asia/Yerevan' => '(UTC+04:00) Yerevan', diff --git a/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Vtiger.php b/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Vtiger.php index c8d020dcfa4194f2938e53891fce15c1176fb34c..77e8f37bd04f598269f74750579ae81704902194 100644 --- a/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Vtiger.php +++ b/pkg/vtiger/translations/PolishLanguagePack_pl_pl/modules/Vtiger.php @@ -872,6 +872,9 @@ $languageStrings = array( 'LBL_NOT_STARRED' => 'PostÄ™puj zgodnie z', 'LBL_QUICK_VIEW' => 'Szybki PodglÄ…d', 'LBL_NOTIFICATION_CENTER' => 'Centrum PowiadomieÅ„', + 'LBL_NOTIFICATION' => 'Powiadomienie', + 'LBL_STARRED_RECORD_TO' => '%s to %s', + 'LBL_STARRED_RECORD_UPDATED' => '%s%s zaktualizowane', 'LBL_EDIT_REASON' => 'Powód edycji', 'LBL_SHOW_COMPLETE_DETAILS' => 'PeÅ‚ne Informacje', 'LBL_CONTACT' => 'ZARZÄ„DZANIE KONTAKTAMI', @@ -1131,6 +1134,7 @@ na zewnÄ…trz free rosyjska.', 'LBL_MARKETING' => 'Marketing', 'LBL_SALES' => 'Sprzedaży', 'LBL_PROJECT' => 'Projekty', + 'LBL_TOOLS' => 'PRZYBORY', 'LBL_TAGS' => 'Tagi', 'LBL_SHARE_TAGS' => 'Tagi Publicznego', 'LBL_SHARE_TAG' => 'Podziel SiÄ™ Tag', @@ -1204,6 +1208,16 @@ na zewnÄ…trz free rosyjska.', 'LBL_SLA_INFORMATION' => 'CCA informacje', 'LBL_TO_USE_SWITCH_TO_NEW_LOOK' => 'Aby korzystać <b>%s</ b>, zalecamy, aby przełączyć na nowy wyglÄ…d.', 'LBL_DELETE_USER_CONFIRMATION' => 'Gdy użytkownik zostanie usuniÄ™ty, użytkownik zostanie oznaczona jako "nieaktywny" i żadne nowe rekordy mogÄ… być przypisane do użytkownika, a użytkownik nie bÄ™dzie mógÅ‚ siÄ™ zalogować. Czy na pewno chcesz usunąć?', + + 'LBL_DUPLICATES' => 'duplikaty', + 'LBL_DUPLICATES_DETECTED' => 'Duplikat (e) wykryto!', + 'LBL_DUPLICATES_FOUND_MESSAGE' => 'Ten%s nie może zostać zapisany, ponieważ duplikat%s istnieje w vtiger z pasujÄ…cymi wartoÅ›ci dla%s.', + 'LBL_VTIGER_NOTIFICATION' => 'Wiadomość od: vtiger Systemu ZgÅ‚oszeÅ„', + 'LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS' => 'Poniższy%s nie może być zapisany z „%s†workflow', + 'LBL_DUPLICATION_FAILURE_FROM_WEBFORMS' => 'Poniższy%s nie może być zapisany z „%s†formularza internetowego', + 'LBL_DUPLICATION_FAILURE_FOR_ADMIN' => 'Można%s modyfikować duplikaty zasady profilaktyki.', + 'LBL_DUPLICATION_FAILURE_FOR_NON_ADMIN' => 'Skontaktuj siÄ™ z administratorem w celu rewizji zasad duplikaty', + 'LBL_DUPLICATE_RECORD_LISTS' => 'Duplikat%s (s):', ); $jsLanguageStrings = array( 'JS_EMAIL_SERVER_CONFIGURATION' => 'Należy skonfigurować ustawienia serwera poczty wychodzÄ…cej - SMTP', @@ -1633,4 +1647,8 @@ $jsLanguageStrings = array( 'JS_UPLOAD_SUCCESSFUL' => 'Dodany plik z powodzeniem', 'JS_UPLOAD_FAILED' => 'PrzesyÅ‚anie pliku nie powiodÅ‚o', + + 'JS_DUPLICATES_DETECTED' => 'Duplikat (e) wykryto!', + 'JS_PASSWORD_MISMATCH_ERROR' => 'Należy ponownie wprowadzić hasÅ‚o. „Nowe hasÅ‚o†i „Potwierdź hasÅ‚o†WartoÅ›ci nie pasujÄ….', + 'JS_LIST_DELETE_CONFIRMATION' => 'Czy na pewno chcesz usunąć?', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Calendar.php b/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Calendar.php index 26d35974fa2941d2526b72cb99ab79313acc951d..a5362d9874cd030249a262f9bbe6960e63e5b9d1 100644 --- a/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Calendar.php +++ b/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Calendar.php @@ -147,6 +147,9 @@ $languageStrings = array( 'LBL_NOVEMBER' => 'Noiembrie', 'LBL_DECEMBER' => 'Decembrie', 'LBL_CLICK_HERE_TO_VIEW' => 'Apasa aici pentru a vizualiza', + + 'LBL_TOTAL_EVENTS_DUPLICATED' => 'Nr de evenimente duplicate omit', + 'LBL_TOTAL_TASKS_DUPLICATED' => 'Nr Sarcini duplicate omit', ); $jsLanguageStrings = array( 'LBL_ADD_EVENT_TASK' => 'Add Event / Sarcină' , diff --git a/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Google.php b/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Google.php index dde026adf22cd746faca8f561d3ef378b19dcbfb..cfd320614a139687f870b376a6bccd9ae5e75253 100644 --- a/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Google.php +++ b/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Google.php @@ -77,8 +77,9 @@ $languageStrings = array( 'LBL_SAVE_AND_IMPORT' => 'De a păstra È™i de import', 'LBL_IMPORT_RESULTS_GOOGLE' => 'Google import rezultate', + 'LBL_REDIRECT_URL' => 'Adresă URL de redirecÈ›ionare', + 'LBL_REDIRECT_URL_MESSAGE' => 'CopiaÈ›i următorul URL de redirecÈ›ionare È™i inseraÈ›i în proiectul dvs. autorizare Google după cum arată imagine', ); - $jsLanguageStrings = array( 'LBL_SYNC_BUTTON' => "Sincroniza acum", 'LBL_SYNCRONIZING' => "Sincronizarea ....", diff --git a/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Settings/LayoutEditor.php b/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Settings/LayoutEditor.php index 38d6ac42febd0f2ae02e86e7682fa66692ee9462..1596954002c62dfbc5bf735dd8413a1b1baf729f 100644 --- a/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Settings/LayoutEditor.php +++ b/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Settings/LayoutEditor.php @@ -136,6 +136,20 @@ $languageStrings = array( 'LBL_DETAIL_HEADER' => 'ÃŽnregistrarea antet', 'LBL_HEADER_FIELD' => 'Tip De Titlu', + 'LBL_DUPLICATE_HANDLING' => 'Prevenirea dublură', + 'LBL_DUPLICATE_CHECK' => 'Activează cec duplicat', + 'LBL_DUPLICATION_INFO_MESSAGE' => 'Caracteristica dublură de prevenire previne doar noi înregistrări duplicat de la obtinerea create de către utilizatori È™i aplicaÈ›ii externe. ÃŽnregistrări create din import', + 'LBL_SELECT_FIELDS_FOR_DUPLICATION' => 'SelectaÈ›i câmpurile unice pe care urmează să fie verificate înregistrările duplicat', + 'LBL_SELECT_FIELDS' => 'SelectaÈ›i Domenii', + 'LBL_MAX_3_FIELDS' => 'Max 3 Fields', + 'LBL_SELECT_RULE' => 'SelectaÈ›i regula pentru duplicate de manipulare', + 'LBL_ALLOW_DUPLICATES' => 'PermiteÈ›i dubluri', + 'LBL_DO_NOT_ALLOW_DUPLICATES' => 'Nu permiteÈ›i dubluri', + 'LBL_DUPLICATES_IN_SYNC_MESSAGE' => 'AcÈ›iunea de a lua în cazul în care înregistrarea duplicat este găsit în timp ce sincronizarea cu aplicaÈ›ie externă', + 'LBL_PREFER_LATEST_RECORD' => 'PreferaÈ›i cele mai recente de înregistrare', + 'LBL_PREFER_INTERNAL_RECORD' => 'PreferaÈ›i înregistrare internă', + 'LBL_PREFER_EXTERNAL_RECORD' => 'PreferaÈ›i înregistrare externă', + 'LBL_SYNC_TOOLTIP_MESSAGE' => 'Prefer cele mai recente înregistrări - date de înregistrare cel mai recent modificate vor fi păstrate <br> PreferaÈ›i record de interne - existente de înregistrare vor fi păstrate este <br> PreferaÈ›i record de externe - Datele din cererea externă va fi copiat', ); $jsLanguageStrings = array( 'JS_BLOCK_VISIBILITY_SHOW' => 'Block show enabled' , @@ -196,4 +210,7 @@ Sigur că doriÈ›i să È™tergeÈ›i acest domeniu?', 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'Nume câmp sunt afiÈ™ate în antetul implicit', 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'Acest câmp de antet este activată Vtiger7, acesta va fi afiÈ™at în vizualizarea "rezumat"', + 'JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE' => 'Actualizat cu succes pentru a lua în considerare domeniile selectate în prevenirea duplicate', + 'JS_DUPLICATE_HANDLING_FAILURE_MESSAGE' => 'Nu a reuÈ™it să ia în considerare domeniile selectate în prevenirea duplicate', + 'JS_DUPLICATE_CHECK_DISABLED' => 'cec duplicat este dezactivat', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Settings/Webforms.php b/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Settings/Webforms.php index 4f05ec5ef2bbb70131209c01f8f6fb5f5da06e51..bd05a3633315e8c79d83bf53d8a42871253ee78a 100644 --- a/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Settings/Webforms.php +++ b/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Settings/Webforms.php @@ -40,6 +40,12 @@ $languageStrings = array( 'LBL_ADD_RECORD' => 'Adăugare Formular Web', + 'LBL_UPLOAD_DOCUMENTS' => 'ÃŽncărcaÈ›i Documente', + 'LBL_ADD_FILE_FIELD' => 'FiÈ™ier de încărcare Câmp', + 'LBL_FIELD_LABEL' => 'Titlul documentului', + 'LBL_FILE_FIELD_INFO' => 'Pentru fiecare fiÈ™ier încărcat de web a forma un nou document este creat cu fiÈ™ierul ataÈ™at. Documentul este, de asemenea, legat de acest nou creat%s.', + 'LBL_NO_FILE_FIELD' => 'Nu există câmpuri de fiÈ™iere adăugate.', + 'LBL_COPY_TO_CLIPBOARD' => 'CopiaÈ›i în clipboard', ); $jsLanguageStrings = array( 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'Webform deleted successfully', // TODO: Review @@ -53,4 +59,7 @@ $jsLanguageStrings = array( 'JS_SELECT_AN_OPTION' => 'SelectaÈ›i o opÈ›iune', 'JS_LABEL' => 'tag-uri', + 'JS_MAX_FILE_FIELDS_LIMIT' => 'Maxim puteÈ›i adăuga%s câmpuri de fiÈ™iere.', + 'JS_COPIED_SUCCESSFULLY' => 'Copiată cu succes.', + 'JS_COPY_FAILED' => 'Copiere nu a reuÈ™it. Vă rugăm să copiaÈ›i manual.', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Users.php b/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Users.php index 33ea953959136e820e0f5d79dfede102b1de2536..19afc3689585439e570733583c9be1c4220818d2 100644 --- a/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Users.php +++ b/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Users.php @@ -130,7 +130,7 @@ $languageStrings = array( 'Africa/Nairobi' => '(UTC+03:00) Nairobi' , 'Asia/Tehran' => '(UTC+03:30) Tehran' , 'Asia/Tbilisi' => '(UTC+04:00) Tbilisi' , - 'Europe/Moscow' => '(UTC+04:00) Moscow, Volgograd', + 'Europe/Moscow' => '(UTC+03:00) Moscow, Volgograd', 'Asia/Muscat' => '(UTC+04:00) Abu Dhabi, Muscat', 'Asia/Baku' => '(UTC+04:00) Baku' , 'Asia/Yerevan' => '(UTC+04:00) Yerevan' , diff --git a/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Vtiger.php b/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Vtiger.php index cf494780b514b89e3435df600581876614d9af02..a2f5c0f8de1c7dd3b93d2d204863c6ab84d2ba28 100644 --- a/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Vtiger.php +++ b/pkg/vtiger/translations/RomanianLanguagePack_rm_rm/modules/Vtiger.php @@ -847,6 +847,9 @@ $languageStrings = array( 'LBL_NOT_STARRED' => 'UrmaÈ›i', 'LBL_QUICK_VIEW' => 'Vizualizare Rapida', 'LBL_NOTIFICATION_CENTER' => 'Centrul De Notificare', + 'LBL_NOTIFICATION' => 'Notificare', + 'LBL_STARRED_RECORD_TO' => '%s la%s', + 'LBL_STARRED_RECORD_UPDATED' => '%s actualizat%s', 'LBL_EDIT_REASON' => 'Motiv editare', 'LBL_CONTACT' => 'GESTIONAREA PERSOANELOR DE CONTACT', 'LBL_NO_ATTACHMENTS' => 'Nici O InvestiÈ›ie', @@ -1003,6 +1006,7 @@ FaceÈ›i clic pe autorizaÈ›i È™i de a obÈ›ine Contacte din Google.', 'LBL_MARKETING' => 'Marketing', 'LBL_SALES' => 'Vanzari', 'LBL_PROJECT' => 'Proiecte', + 'LBL_TOOLS' => 'INSTRUMENTE', 'LBL_TAGS' => 'Tag-uri', 'LBL_SHARE_TAGS' => 'Tag-Uri Publice', 'LBL_SHARE_TAG' => 'ÃŽmpărtăși Tag-Ul', @@ -1075,6 +1079,16 @@ FaceÈ›i clic pe autorizaÈ›i È™i de a obÈ›ine Contacte din Google.', 'LBL_SLA_INFORMATION' => 'SLA informaÈ›ii', 'LBL_TO_USE_SWITCH_TO_NEW_LOOK' => 'Pentru a utiliza <b>%s</b>, vă recomandăm să treceÈ›i la nou look.', 'LBL_DELETE_USER_CONFIRMATION' => 'Atunci când un utilizator este È™ters, utilizatorul va fi marcat ca fiind "inactive" È™i nici o nouă înregistrări pot fi atribuite Utilizatorului, iar utilizatorul nu va putea conecta. EÈ™ti sigur că vrei să È™tergi?', + + 'LBL_DUPLICATES' => 'dubluri', + 'LBL_DUPLICATES_DETECTED' => 'Duplicate (e) detectat!', + 'LBL_DUPLICATES_FOUND_MESSAGE' => 'Acest%s nu poate fi salvată deoarece există două exemplare%s în Vtiger cu valori de potrivire pentru%s.', + 'LBL_VTIGER_NOTIFICATION' => 'Mesaj din: Vtiger Notificări de sistem', + 'LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS' => 'Următoarele%s nu a putut fi salvat de la „%s“ flux de lucru', + 'LBL_DUPLICATION_FAILURE_FROM_WEBFORMS' => 'Următoarele%s nu a putut fi salvat de la „%s“ formularul web', + 'LBL_DUPLICATION_FAILURE_FOR_ADMIN' => 'PuteÈ›i% de a modifica normele de prevenire duplicat.', + 'LBL_DUPLICATION_FAILURE_FOR_NON_ADMIN' => 'ContactaÈ›i administratorul pentru revizuirea normelor duplicat', + 'LBL_DUPLICATE_RECORD_LISTS' => 'Duplica%s (e):', ); $jsLanguageStrings = array( 'JS_EMAIL_SERVER_CONFIGURATION' => 'Please configure your outgoing server settings from the settings page', @@ -1477,4 +1491,8 @@ $jsLanguageStrings = array( 'JS_UPLOAD_SUCCESSFUL' => 'FiÈ™ier încărcat cu succes', 'JS_UPLOAD_FAILED' => 'ÃŽncărcaÈ›i fiÈ™ier eÈ™uat', + + 'JS_DUPLICATES_DETECTED' => 'Duplicate (e) detectat!', + 'JS_PASSWORD_MISMATCH_ERROR' => 'Vă rugăm să reintroduceÈ›i parolele. „Parola nouă“ È™i „parola confirma“ valorile nu se potrivesc.', + 'JS_LIST_DELETE_CONFIRMATION' => 'EÈ™ti sigur că vrei să È™tergi?', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Russian/modules/Calendar.php b/pkg/vtiger/translations/Russian/modules/Calendar.php index 6dcad66dcd7196c52d00afbeb60fe344808e650c..8d7be508f487d3340f046c251a2be21a30708278 100644 --- a/pkg/vtiger/translations/Russian/modules/Calendar.php +++ b/pkg/vtiger/translations/Russian/modules/Calendar.php @@ -146,6 +146,9 @@ $languageStrings = array( 'LBL_NOVEMBER' => 'ÐоÑбрь', 'LBL_DECEMBER' => 'Декабрь', 'LBL_CLICK_HERE_TO_VIEW' => 'Ðажмите Ñюда, чтобы поÑмотреть', + + 'LBL_TOTAL_EVENTS_DUPLICATED' => 'КоличеÑтво повторÑющихÑÑ Ñобытий пропуÑкаютÑÑ', + 'LBL_TOTAL_TASKS_DUPLICATED' => 'КоличеÑтво повторÑющихÑÑ Ð·Ð°Ð´Ð°Ñ‡ пропуÑкаютÑÑ', ); $jsLanguageStrings = array( 'LBL_ADD_EVENT_TASK' => 'Добавить Ñобытие / Задача' , diff --git a/pkg/vtiger/translations/Russian/modules/Google.php b/pkg/vtiger/translations/Russian/modules/Google.php index f0739f512e1de999100361f48c9ee4ec56fb4a03..12d71348dcef83a06911d9546321f891edba304e 100644 --- a/pkg/vtiger/translations/Russian/modules/Google.php +++ b/pkg/vtiger/translations/Russian/modules/Google.php @@ -77,8 +77,9 @@ $languageStrings = array( 'LBL_SAVE_AND_IMPORT' => 'Сохранить и импортировать', 'LBL_IMPORT_RESULTS_GOOGLE' => 'Гугле импорта результатов', + 'LBL_REDIRECT_URL' => 'Перенаправление URL', + 'LBL_REDIRECT_URL_MESSAGE' => 'Скопируйте Ñледующий URL Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ вÑтавьте в ваш Google Идент проект как изображение показывает', ); - $jsLanguageStrings = array( 'LBL_SYNC_BUTTON' => "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¢ÐµÐ¿ÐµÑ€ÑŒ", 'LBL_SYNCRONIZING' => "Ð¡Ð¸Ð½Ñ…Ñ€Ð¾Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ ....", diff --git a/pkg/vtiger/translations/Russian/modules/Settings/LayoutEditor.php b/pkg/vtiger/translations/Russian/modules/Settings/LayoutEditor.php index db53f22b7fc3d9092c20b94739073ad1d4f3329c..697f69383d992a264ed0b5c9b8fa5f7503f5623c 100644 --- a/pkg/vtiger/translations/Russian/modules/Settings/LayoutEditor.php +++ b/pkg/vtiger/translations/Russian/modules/Settings/LayoutEditor.php @@ -136,6 +136,20 @@ $languageStrings = array( 'LBL_DETAIL_HEADER' => 'ЗапиÑÑŒ заголовка', 'LBL_HEADER_FIELD' => 'Вид Заголовка', + 'LBL_DUPLICATE_HANDLING' => 'Дубликат Профилактика', + 'LBL_DUPLICATE_CHECK' => 'Включить дубликат чека', + 'LBL_DUPLICATION_INFO_MESSAGE' => 'Дубликат Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ предотвращает новые дубликаты запиÑей от Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ñозданных пользователÑми и внешними приложениÑми. ЗапиÑи, Ñозданные из импорта', + 'LBL_SELECT_FIELDS_FOR_DUPLICATION' => 'Выберите уникальные полÑ, на которых будут проверÑтьÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€ÑющиеÑÑ Ð·Ð°Ð¿Ð¸Ñи', + 'LBL_SELECT_FIELDS' => 'Выберите полÑ', + 'LBL_MAX_3_FIELDS' => 'Max 3 ПолÑ', + 'LBL_SELECT_RULE' => 'Выберите правило Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ дубликатов', + 'LBL_ALLOW_DUPLICATES' => 'Разрешить дубликаты', + 'LBL_DO_NOT_ALLOW_DUPLICATES' => 'Ðе допуÑкать Дубликаты', + 'LBL_DUPLICATES_IN_SYNC_MESSAGE' => 'ДейÑтвие, предпринимаемое, еÑли дубликат запиÑÑŒ найдена во Ð²Ñ€ÐµÐ¼Ñ Ñинхронизации Ñ Ð²Ð½ÐµÑˆÐ½Ð¸Ð¼ приложением', + 'LBL_PREFER_LATEST_RECORD' => 'Предпочитают поÑледнÑÑ Ð·Ð°Ð¿Ð¸ÑÑŒ', + 'LBL_PREFER_INTERNAL_RECORD' => 'Предпочитают внутреннюю запиÑÑŒ', + 'LBL_PREFER_EXTERNAL_RECORD' => 'Предпочитает внешнюю запиÑÑŒ', + 'LBL_SYNC_TOOLTIP_MESSAGE' => 'Предпочитает поÑледнюю запиÑÑŒ - СовÑем недавно измененные данные запиÑей будет Ñохранены <br> Предпочитают внутренние рекорд - СущеÑтвующие запиÑи будут Ñохранены, как Ñто <br> Предпочитает внешнюю запиÑÑŒ - данные из внешнего Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÐµÑ‚ Ñкопировано', ); $jsLanguageStrings = array( 'JS_BLOCK_VISIBILITY_SHOW' => 'Блок-шоу включен', @@ -196,4 +210,7 @@ $jsLanguageStrings = array( 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»Ñ Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶Ð°ÑŽÑ‚ÑÑ Ð² заголовке по умолчанию', 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'Ðто поле заголовка включена Vtiger7, она будет отображатьÑÑ Ð² предÑтавлении "Ñводка"', + 'JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE' => 'УÑпешно обновлено раÑÑмотреть выбранные Ð¿Ð¾Ð»Ñ Ð² облаÑти профилактики дублей', + 'JS_DUPLICATE_HANDLING_FAILURE_MESSAGE' => 'Ðе удалоÑÑŒ раÑÑмотреть выбранные Ð¿Ð¾Ð»Ñ Ð² облаÑти профилактики дублей', + 'JS_DUPLICATE_CHECK_DISABLED' => 'Дубликат проверка отключена', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Russian/modules/Settings/Webforms.php b/pkg/vtiger/translations/Russian/modules/Settings/Webforms.php index deda73f689365ad660ea4cba928e79cbafa3a258..9416eb4ca1e2f07cccd4355a203654aff0af3b10 100644 --- a/pkg/vtiger/translations/Russian/modules/Settings/Webforms.php +++ b/pkg/vtiger/translations/Russian/modules/Settings/Webforms.php @@ -40,6 +40,12 @@ $languageStrings = array( 'LBL_ADD_RECORD' => 'Добавить Веб-Форму', + 'LBL_UPLOAD_DOCUMENTS' => 'Загрузить документы', + 'LBL_ADD_FILE_FIELD' => 'Файл Загрузить поле', + 'LBL_FIELD_LABEL' => 'Заголовок документа', + 'LBL_FILE_FIELD_INFO' => 'Ð”Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ файла, загруженного из Интернета формируют новый документ ÑоздаетÑÑ Ñ Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ‹Ð¼ файлом. Документ также ÑвÑзан Ñ Ñтой вновь Ñозданной% Ñ.', + 'LBL_NO_FILE_FIELD' => 'Ðет файлов полей не добавлено.', + 'LBL_COPY_TO_CLIPBOARD' => 'Скопировать в буфер обмена', ); $jsLanguageStrings = array( 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'Webform уÑпешно удален', @@ -53,4 +59,7 @@ $jsLanguageStrings = array( 'JS_SELECT_AN_OPTION' => 'Выберите вариант', + 'JS_MAX_FILE_FIELDS_LIMIT' => 'МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð²Ñ‹ можете добавить%s Ð¿Ð¾Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð².', + 'JS_COPIED_SUCCESSFULLY' => 'Скопировано уÑпешно.', + 'JS_COPY_FAILED' => 'Копирование не удалоÑÑŒ. ПожалуйÑта, Ñкопируйте вручную.', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Russian/modules/Users.php b/pkg/vtiger/translations/Russian/modules/Users.php index ad44620ce8951b195854900ab6e7650dda04ed19..2447bd3551b476b7e0fb5325ebd8232e132c1b40 100644 --- a/pkg/vtiger/translations/Russian/modules/Users.php +++ b/pkg/vtiger/translations/Russian/modules/Users.php @@ -130,7 +130,7 @@ $languageStrings = array( 'Africa/Nairobi' => '(UTC+03:00) Nairobi' , 'Asia/Tehran' => '(UTC+03:30) Tehran' , 'Asia/Tbilisi' => '(UTC+04:00) Tbilisi' , - 'Europe/Moscow' => '(UTC+04:00) МоÑква, Волгоград', + 'Europe/Moscow' => '(UTC+03:00) МоÑква, Волгоград', 'Asia/Muscat' => '(UTC+04:00) Abu Dhabi, Muscat', 'Asia/Baku' => '(UTC+04:00) Baku' , 'Asia/Yerevan' => '(UTC+04:00) Yerevan' , diff --git a/pkg/vtiger/translations/Russian/modules/Vtiger.php b/pkg/vtiger/translations/Russian/modules/Vtiger.php index 0ecd87e86cd57ab8574a7ccacf5b48151625188a..d6d499f4920634e4a806448f937abbc3e04d59c3 100644 --- a/pkg/vtiger/translations/Russian/modules/Vtiger.php +++ b/pkg/vtiger/translations/Russian/modules/Vtiger.php @@ -846,6 +846,9 @@ $languageStrings = array( 'LBL_NOT_STARRED' => 'Следуйте', 'LBL_QUICK_VIEW' => 'БыÑтрый ПроÑмотр', 'LBL_NOTIFICATION_CENTER' => 'Центр Уведомлений', + 'LBL_NOTIFICATION' => 'уведомление', + 'LBL_STARRED_RECORD_TO' => '%s до%s', + 'LBL_STARRED_RECORD_UPDATED' => '%s%s обновлÑетÑÑ', 'LBL_EDIT_REASON' => 'Причина редактированиÑ', 'LBL_CONTACT' => 'УПРÐВЛЕÐИЕ КОÐТÐКТÐМИ', 'LBL_NO_ATTACHMENTS' => 'Ðикаких Вложений', @@ -1002,6 +1005,7 @@ $languageStrings = array( 'LBL_MARKETING' => 'Маркетинг', 'LBL_SALES' => 'Продаж', 'LBL_PROJECT' => 'Проекты', + 'LBL_TOOLS' => 'ИÐСТРУМЕÐТЫ', 'LBL_TAGS' => 'Теги', 'LBL_SHARE_TAGS' => 'Теги ОбщеÑтвенного', 'LBL_SHARE_TAG' => 'ПоделитьÑÑ Ð¢ÐµÐ³', @@ -1074,6 +1078,16 @@ $languageStrings = array( 'LBL_SLA_INFORMATION' => 'ОÐС информациÑ', 'LBL_TO_USE_SWITCH_TO_NEW_LOOK' => 'Ð”Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ <B>%s</B>, мы рекомендуем вам перейти на новый облик.', 'LBL_DELETE_USER_CONFIRMATION' => 'Когда пользователь будет удален, пользователь будет помечен как "неактивные" и никаких новых запиÑей не могут быть назначены на пользователÑ, и пользователь не Ñможет войти в ÑиÑтему. Ð’Ñ‹ уверены, что хотите удалить?', + + 'LBL_DUPLICATES' => 'Дубликаты', + 'LBL_DUPLICATES_DETECTED' => 'Дубликат (s) обнаружено!', + 'LBL_DUPLICATES_FOUND_MESSAGE' => 'Ðто%s не может быть Ñохранен, так как дубликат%s ÑущеÑтвует в Vtiger Ñ ÑоответÑтвующими значениÑми длÑ% Ñ.', + 'LBL_VTIGER_NOTIFICATION' => 'Сообщение от: Vtiger ÑиÑтемы уведомлений', + 'LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS' => 'Следующий%s не может быть ÑпаÑен от «%s» рабочего процеÑÑа', + 'LBL_DUPLICATION_FAILURE_FROM_WEBFORMS' => 'Следующие%s не может быть ÑпаÑен от «%s» веб-формы', + 'LBL_DUPLICATION_FAILURE_FOR_ADMIN' => 'Ð’Ñ‹ можете%s изменить дублирующие правила профилактики.', + 'LBL_DUPLICATION_FAILURE_FOR_NON_ADMIN' => 'ОбратитеÑÑŒ к админиÑтратору Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑмотра правил дублирующих', + 'LBL_DUPLICATE_RECORD_LISTS' => 'Дубликат%s (S):', ); $jsLanguageStrings = array( 'JS_EMAIL_SERVER_CONFIGURATION' => 'ПожалуйÑта, наÑтроить параметры иÑходÑщей Ñервера на Ñтранице наÑтроек', @@ -1477,4 +1491,8 @@ $jsLanguageStrings = array( 'JS_UPLOAD_SUCCESSFUL' => 'Файл уÑпешно Добавленоy', 'JS_UPLOAD_FAILED' => 'Загрузка файла Ошибка', + + 'JS_DUPLICATES_DETECTED' => 'Дубликат (s) обнаружено!', + 'JS_PASSWORD_MISMATCH_ERROR' => 'ПожалуйÑта, повторно ввеÑти пароль. «Ðовый пароль» и «Подтверждение паролÑ» Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð½Ðµ Ñовпадают.', + 'JS_LIST_DELETE_CONFIRMATION' => 'Ð’Ñ‹ уверены, что хотите удалить?', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Spanish/modules/Calendar.php b/pkg/vtiger/translations/Spanish/modules/Calendar.php index 168a6389ba156b079f5de92701670c28d92a5085..9ef7cb2104681deb7ff34f461506a0b0ce50a411 100644 --- a/pkg/vtiger/translations/Spanish/modules/Calendar.php +++ b/pkg/vtiger/translations/Spanish/modules/Calendar.php @@ -155,6 +155,9 @@ $languageStrings = array( 'LBL_NOVEMBER' => 'Noviembre', 'LBL_DECEMBER' => 'De diciembre de', 'LBL_CLICK_HERE_TO_VIEW' => 'Haga clic aquà para ver', + + 'LBL_TOTAL_EVENTS_DUPLICATED' => 'Número de eventos duplicados saltado', + 'LBL_TOTAL_TASKS_DUPLICATED' => 'Número de tareas duplicadas saltado', ); $jsLanguageStrings = array( 'LBL_ADD_EVENT_TASK' => 'Añadir Evento / Tarea' , diff --git a/pkg/vtiger/translations/Spanish/modules/Google.php b/pkg/vtiger/translations/Spanish/modules/Google.php index 55036e6d6d1770cf5f30793bd1a7123b694e122f..f67a6b21f928d7098830ba71fd38a88775838d62 100644 --- a/pkg/vtiger/translations/Spanish/modules/Google.php +++ b/pkg/vtiger/translations/Spanish/modules/Google.php @@ -77,8 +77,9 @@ $languageStrings = array( 'LBL_SAVE_AND_IMPORT' => 'Guardar e Importar', 'LBL_IMPORT_RESULTS_GOOGLE' => 'Google Importar los resultados', + 'LBL_REDIRECT_URL' => 'Redireccionar URL', + 'LBL_REDIRECT_URL_MESSAGE' => 'Copia el siguiente URL de redireccionamiento y pegar en su proyecto de autenticación Google como muestra la imagen', ); - $jsLanguageStrings = array( 'LBL_SYNC_BUTTON' => "Sincronizar Ahora", 'LBL_SYNCRONIZING' => "Sincronizar ....", diff --git a/pkg/vtiger/translations/Spanish/modules/Settings/LayoutEditor.php b/pkg/vtiger/translations/Spanish/modules/Settings/LayoutEditor.php index 8a41d820f28c93b8647ae55d0bf873e072cfad30..8b10a8dfed1543afecefb6e661b52ece05d5e9d0 100644 --- a/pkg/vtiger/translations/Spanish/modules/Settings/LayoutEditor.php +++ b/pkg/vtiger/translations/Spanish/modules/Settings/LayoutEditor.php @@ -136,6 +136,20 @@ $languageStrings = array( 'LBL_DETAIL_HEADER' => 'Registro de encabezado', 'LBL_HEADER_FIELD' => 'Encabezado De La Vista', + 'LBL_DUPLICATE_HANDLING' => 'Prevención duplicado', + 'LBL_DUPLICATE_CHECK' => 'Habilitar comprobación de duplicados', + 'LBL_DUPLICATION_INFO_MESSAGE' => 'Duplicar función de prevención sólo previene nuevos registros duplicados de conseguir creado por los usuarios y aplicaciones externas. Los registros creados a partir de importación', + 'LBL_SELECT_FIELDS_FOR_DUPLICATION' => 'Seleccione los campos únicos en los que se van a comprobar los registros duplicados', + 'LBL_SELECT_FIELDS' => 'Seleccionar campos', + 'LBL_MAX_3_FIELDS' => 'Max 3 campos', + 'LBL_SELECT_RULE' => 'Seleccione la regla de duplicados de manipulación', + 'LBL_ALLOW_DUPLICATES' => 'Permitir Duplicados', + 'LBL_DO_NOT_ALLOW_DUPLICATES' => 'No permita que Duplicados', + 'LBL_DUPLICATES_IN_SYNC_MESSAGE' => 'Acción a realizar si no se encuentra registro duplicado, mientras que la sincronización con la aplicación externa', + 'LBL_PREFER_LATEST_RECORD' => 'Prefiero último disco', + 'LBL_PREFER_INTERNAL_RECORD' => 'Prefiero registro interno', + 'LBL_PREFER_EXTERNAL_RECORD' => 'Prefiero registro externo', + 'LBL_SYNC_TOOLTIP_MESSAGE' => 'Prefiero último disco - datos de registro Más recientemente modificados serán retenidos <br> prefieren registro interno - existente registro será retenido, ya que es <br> prefieren registro externo - Los datos de la aplicación externa será copiado', ); $jsLanguageStrings = array( 'JS_BLOCK_VISIBILITY_SHOW' => 'Mostrar bloque abierto' , @@ -196,4 +210,7 @@ Está seguro de que desea eliminar este campo?', 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'Nombre de los campos aparecen en la Cabecera por defecto', 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'Este Campo es Encabezado habilitado para Vtiger7, aparecerá en la Vista de Resumen', + 'JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE' => 'Se ha actualizado correctamente a considerar los campos seleccionados en la prevención de duplicados', + 'JS_DUPLICATE_HANDLING_FAILURE_MESSAGE' => 'No tuvo en cuenta los campos seleccionados en la prevención de duplicados', + 'JS_DUPLICATE_CHECK_DISABLED' => 'comprobación de duplicados está desactivada', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Spanish/modules/Settings/Webforms.php b/pkg/vtiger/translations/Spanish/modules/Settings/Webforms.php index 7fa7af17c0f00688b06c1e3ac91025e8cf624270..1c6adfe0a3e792c3303de23981d316873f748412 100644 --- a/pkg/vtiger/translations/Spanish/modules/Settings/Webforms.php +++ b/pkg/vtiger/translations/Spanish/modules/Settings/Webforms.php @@ -52,6 +52,12 @@ $languageStrings = array( 'LBL_ADD_RECORD' => 'Agregar Formulario Web', + 'LBL_UPLOAD_DOCUMENTS' => 'subir documentos', + 'LBL_ADD_FILE_FIELD' => 'El campo de carga de archivos', + 'LBL_FIELD_LABEL' => 'Titulo del documento', + 'LBL_FILE_FIELD_INFO' => 'Para cada archivo subido desde web formar un nuevo documento se crea con el archivo adjunto. El documento también está vinculada a este%s de nueva creación.', + 'LBL_NO_FILE_FIELD' => 'No hay campos de archivo añadido.', + 'LBL_COPY_TO_CLIPBOARD' => 'Copiar al portapapeles', ); $jsLanguageStrings = array( 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'Se ha eliminado el formulario correctamente', @@ -65,4 +71,7 @@ $jsLanguageStrings = array( 'JS_SELECT_AN_OPTION' => 'Seleccione una Opción', 'JS_LABEL' => 'etiqueta', + 'JS_MAX_FILE_FIELDS_LIMIT' => 'Máximo que se puede añadir campos de ficheros%s.', + 'JS_COPIED_SUCCESSFULLY' => 'Copiado con éxito.', + 'JS_COPY_FAILED' => 'Copia falló. Por favor, copiar manualmente.', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Spanish/modules/Users.php b/pkg/vtiger/translations/Spanish/modules/Users.php index e36c44cadcbd3eebebff12a9b1af7d2a56c5cfee..ed5ada7a988873bd74a100ada331a483f1493d5c 100644 --- a/pkg/vtiger/translations/Spanish/modules/Users.php +++ b/pkg/vtiger/translations/Spanish/modules/Users.php @@ -150,7 +150,7 @@ $languageStrings = array( 'Africa/Nairobi' => '(UTC+03:00) Nairobi', 'Asia/Tehran' => '(UTC+03:30) Tehran', 'Asia/Tbilisi' => '(UTC+04:00) Tbilisi', - 'Europe/Moscow' => '(UTC+04:00) Moscow, Volgograd', + 'Europe/Moscow' => '(UTC+03:00) Moscow, Volgograd', 'Asia/Muscat' => '(UTC+04:00) Abu Dhabi, Muscat', 'Asia/Baku' => '(UTC+04:00) Baku', 'Asia/Yerevan' => '(UTC+04:00) Yerevan', diff --git a/pkg/vtiger/translations/Spanish/modules/Vtiger.php b/pkg/vtiger/translations/Spanish/modules/Vtiger.php index 391c885755d1504e55d85f1d276ba9352b1663f6..fab042636ca6f892ef785a9464f8ea4f8707d383 100644 --- a/pkg/vtiger/translations/Spanish/modules/Vtiger.php +++ b/pkg/vtiger/translations/Spanish/modules/Vtiger.php @@ -855,6 +855,9 @@ $languageStrings = array( 'LBL_NOT_STARRED' => 'Siga', 'LBL_QUICK_VIEW' => 'Vista Rápida', 'LBL_NOTIFICATION_CENTER' => 'El Centro De Notificaciones', + 'LBL_NOTIFICATION' => 'Notificación', + 'LBL_STARRED_RECORD_TO' => '%s a%s', + 'LBL_STARRED_RECORD_UPDATED' => '%s%s actualizada', 'LBL_EDIT_REASON' => 'Editar razón', 'LBL_CONTACT' => 'GESTIÓN DE CONTACTOS', 'LBL_NO_ATTACHMENTS' => 'No Hay Archivos Adjuntos', @@ -1013,6 +1016,7 @@ fuera de Vtiger.', 'LBL_MARKETING' => 'MARKETING', 'LBL_SALES' => 'VENTAS', 'LBL_PROJECT' => 'PROYECTOS', + 'LBL_TOOLS' => 'HERRAMIENTAS', 'LBL_TAGS' => 'Etiquetas', 'LBL_SHARE_TAGS' => 'Etiquetas Públicas', 'LBL_SHARE_TAG' => 'Compartir Etiqueta', @@ -1091,6 +1095,16 @@ fuera de Vtiger.', 'LBL_SLA_INFORMATION' => 'SLA Información', 'LBL_TO_USE_SWITCH_TO_NEW_LOOK' => 'Para utilizar <b>%s</b>, se recomienda cambiar a nuevo look.', 'LBL_DELETE_USER_CONFIRMATION' => 'Cuando se elimina un usuario, el usuario será marcado como "inactivo" y no hay nuevos registros pueden ser asignados al usuario, y el usuario no será capaz de iniciar sesión. ¿Estas seguro que quieres borrarlo?', + + 'LBL_DUPLICATES' => 'duplicados', + 'LBL_DUPLICATES_DETECTED' => 'Duplicar (s) detectado!', + 'LBL_DUPLICATES_FOUND_MESSAGE' => 'Esto%s no se puede guardar desde duplicado%s existe en VTiger a juego con los valores de%s.', + 'LBL_VTIGER_NOTIFICATION' => 'Mensaje: VTiger Sistema de Notificaciones', + 'LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS' => 'El siguiente%s no pudo ser salvado de flujo de trabajo "%s"', + 'LBL_DUPLICATION_FAILURE_FROM_WEBFORMS' => 'El siguiente%s no pudo ser salvado de formulario web "%s"', + 'LBL_DUPLICATION_FAILURE_FOR_ADMIN' => 'Puede%s para modificar las normas de prevención de duplicados.', + 'LBL_DUPLICATION_FAILURE_FOR_NON_ADMIN' => 'Póngase en contacto con el administrador para obtener la revisión de las reglas duplicadas', + 'LBL_DUPLICATE_RECORD_LISTS' => 'Duplicar%s (s):', ); $jsLanguageStrings = array( 'JS_EMAIL_SERVER_CONFIGURATION' => 'Por favor, configura el servidor de correo saliente en la sección de configuración', @@ -1515,4 +1529,8 @@ $jsLanguageStrings = array( 'JS_UPLOAD_SUCCESSFUL' => 'Archivo subido exitosamente', 'JS_UPLOAD_FAILED' => 'Cargar archivo Error', + + 'JS_DUPLICATES_DETECTED' => 'Duplicar (s) detectado!', + 'JS_PASSWORD_MISMATCH_ERROR' => 'Por favor, vuelva a introducir las contraseñas. La "nueva contraseña" y "Confirmar contraseña" valores no coinciden.', + 'JS_LIST_DELETE_CONFIRMATION' => '¿Estas seguro que quieres borrarlo?', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Sweden_sv_se/modules/Calendar.php b/pkg/vtiger/translations/Sweden_sv_se/modules/Calendar.php index dd3c3c3ae1a2869f7bfb46bdcc5dd95190994aa3..cd9f9c84dd2c86e2c9fbf22d3577e89893da6327 100755 --- a/pkg/vtiger/translations/Sweden_sv_se/modules/Calendar.php +++ b/pkg/vtiger/translations/Sweden_sv_se/modules/Calendar.php @@ -175,6 +175,9 @@ $languageStrings = array( 'LBL_NOVEMBER' => 'November', 'LBL_DECEMBER' => 'December', 'LBL_CLICK_HERE_TO_VIEW' => 'Klicka här för att se', + + 'LBL_TOTAL_EVENTS_DUPLICATED' => 'Antal dubbla händelser hoppas över', + 'LBL_TOTAL_TASKS_DUPLICATED' => 'Antal dubbla uppgifter hoppas över', ); $jsLanguageStrings = array( 'LBL_ADD_EVENT_TASK' => 'Lägg till händelse / att göra', diff --git a/pkg/vtiger/translations/Sweden_sv_se/modules/Google.php b/pkg/vtiger/translations/Sweden_sv_se/modules/Google.php index 16d4a8224fbf74aad9c94c1ca3e0329661a46823..4a0b479c4041e1f5a35566ed579e837ed32425a5 100644 --- a/pkg/vtiger/translations/Sweden_sv_se/modules/Google.php +++ b/pkg/vtiger/translations/Sweden_sv_se/modules/Google.php @@ -77,8 +77,9 @@ $languageStrings = array( 'LBL_SAVE_AND_IMPORT' => 'Spara och Import', 'LBL_IMPORT_RESULTS_GOOGLE' => 'Google Importera resultat', + 'LBL_REDIRECT_URL' => 'omdirigera url', + 'LBL_REDIRECT_URL_MESSAGE' => 'Kopiera följande omdirigera url och klistra in i ditt Google auth projektet som bilden visar', ); - $jsLanguageStrings = array( 'LBL_SYNC_BUTTON' => "Synkronisera nu", 'LBL_SYNCRONIZING' => "Synkronisera ....", diff --git a/pkg/vtiger/translations/Sweden_sv_se/modules/Settings/LayoutEditor.php b/pkg/vtiger/translations/Sweden_sv_se/modules/Settings/LayoutEditor.php index 27cd874a3531905a186aca20d35a1c27e9790ccb..db2a229743a478969ba2ef4436a121cc829eaf8c 100755 --- a/pkg/vtiger/translations/Sweden_sv_se/modules/Settings/LayoutEditor.php +++ b/pkg/vtiger/translations/Sweden_sv_se/modules/Settings/LayoutEditor.php @@ -136,6 +136,20 @@ $languageStrings = array( 'LBL_DETAIL_HEADER' => 'Spela in header', 'LBL_HEADER_FIELD' => 'Header Visa', + 'LBL_DUPLICATE_HANDLING' => 'Duplicate Prevention', + 'LBL_DUPLICATE_CHECK' => 'Aktivera dubbla kontroll', + 'LBL_DUPLICATION_INFO_MESSAGE' => 'Duplicera förebyggande funktion endast förhindrar nya dubbla poster frÃ¥n att bli skapat av användare och externa applikationer. Records som skapats frÃ¥n Import', + 'LBL_SELECT_FIELDS_FOR_DUPLICATION' => 'Välj unika omrÃ¥den som dubbla poster som ska kontrolleras', + 'LBL_SELECT_FIELDS' => 'Välj Fields', + 'LBL_MAX_3_FIELDS' => 'Max 3 Fält', + 'LBL_SELECT_RULE' => 'Välj regel för hantering dubbletter', + 'LBL_ALLOW_DUPLICATES' => 'TillÃ¥t dubbletter', + 'LBL_DO_NOT_ALLOW_DUPLICATES' => 'LÃ¥t inte dubbletter', + 'LBL_DUPLICATES_IN_SYNC_MESSAGE' => 'Ã…tgärder för att ta om dubbla rekord hittas medan synkronisering med externa program', + 'LBL_PREFER_LATEST_RECORD' => 'Föredrar senaste rekord', + 'LBL_PREFER_INTERNAL_RECORD' => 'Föredrar interna register', + 'LBL_PREFER_EXTERNAL_RECORD' => 'Föredrar extern rekord', + 'LBL_SYNC_TOOLTIP_MESSAGE' => 'Föredrar senaste rekord - ska Senast ändrade registerdata bevaras <br> föredrar interna register - befintlig post kommer att behÃ¥llas eftersom det är <br> föredrar extern rekord - Data frÃ¥n den externa ansökan kommer att kopieras', ); $jsLanguageStrings = array( 'JS_BLOCK_VISIBILITY_SHOW' => 'Block visa aktiverad' , @@ -196,4 +210,7 @@ Om du är osäker och vill kunna visa data i framtiden, kan du markera det fält 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'Namn som fälten visas i Sidhuvudet som standard', 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'Detta OmrÃ¥de är Rubriken aktiverat för Vtiger7, Det kommer att visas i Sammanfattning', + 'JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE' => 'Uppdaterats överväga utvalda fält i dubbletter förebyggande', + 'JS_DUPLICATE_HANDLING_FAILURE_MESSAGE' => 'Det gick inte att tänka pÃ¥ utvalda omrÃ¥den i dubbletter förebyggande', + 'JS_DUPLICATE_CHECK_DISABLED' => 'Duplicate kontroll är inaktiverad', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Sweden_sv_se/modules/Settings/Webforms.php b/pkg/vtiger/translations/Sweden_sv_se/modules/Settings/Webforms.php index 467c6053d4bfbea2c25663c2afc39b28ec0a4937..0274e2bf924fe1935955a167ffdfa08fe81b5a76 100755 --- a/pkg/vtiger/translations/Sweden_sv_se/modules/Settings/Webforms.php +++ b/pkg/vtiger/translations/Sweden_sv_se/modules/Settings/Webforms.php @@ -46,6 +46,12 @@ $languageStrings = array( 'SINGLE_Webforms' => 'Webbformulär', 'LBL_ADD_RECORD' => 'Lägg Till Webbformulär', + 'LBL_UPLOAD_DOCUMENTS' => 'Ladda upp dokument', + 'LBL_ADD_FILE_FIELD' => 'Filuppladdning Field', + 'LBL_FIELD_LABEL' => 'Dokument titel', + 'LBL_FILE_FIELD_INFO' => 'För varje fil laddas upp frÃ¥n web bilda ett nytt dokument skapas med bifogad fil. Dokumentet är ocksÃ¥ kopplat till detta nyskapade%s.', + 'LBL_NO_FILE_FIELD' => 'Ingen fil fält läggs.', + 'LBL_COPY_TO_CLIPBOARD' => 'Kopiera till urklipp', ); $jsLanguageStrings = array( 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'Webbformulär raderats framgÃ¥ngsrikt', @@ -56,4 +62,8 @@ $jsLanguageStrings = array( 'JS_REFERENCE_FIELDS_CANT_BE_MANDATORY_WITHOUT_OVERRIDE_VALUE' => 'Referensfält kan inte vara obligatoriskt utan överbelastningsvärde', 'JS_TYPE_TO_SEARCH' => 'Skriv för att söka', "JS_WEBFORM_WITH_THIS_NAME_ALREADY_EXISTS" => 'Webbformulär med detta namn finns redan', + + 'JS_MAX_FILE_FIELDS_LIMIT' => 'Maximalt kan du lägga till%s fil fält.', + 'JS_COPIED_SUCCESSFULLY' => 'Kopierats.', + 'JS_COPY_FAILED' => 'Kopiera misslyckades. Kopiera manuellt.', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/Sweden_sv_se/modules/Users.php b/pkg/vtiger/translations/Sweden_sv_se/modules/Users.php index 4988b998a6d1c8a221ae40d1215ec8609a2d19f8..de9cbc676f2113c8d1d3d1186d5ce62d56812344 100755 --- a/pkg/vtiger/translations/Sweden_sv_se/modules/Users.php +++ b/pkg/vtiger/translations/Sweden_sv_se/modules/Users.php @@ -141,7 +141,7 @@ $languageStrings = array( 'Africa/Nairobi' => '(UTC+03:00) Nairobi', 'Asia/Tehran' => '(UTC+03:30) Tehran', 'Asia/Tbilisi' => '(UTC+04:00) Tbilisi', - 'Europe/Moscow' => '(UTC+04:00) Moscow, Volgograd', + 'Europe/Moscow' => '(UTC+03:00) Moscow, Volgograd', 'Asia/Muscat' => '(UTC+04:00) Abu Dhabi, Muscat', 'Asia/Baku' => '(UTC+04:00) Baku', 'Asia/Yerevan' => '(UTC+04:00) Yerevan', diff --git a/pkg/vtiger/translations/Sweden_sv_se/modules/Vtiger.php b/pkg/vtiger/translations/Sweden_sv_se/modules/Vtiger.php index 0fe0435b0c1ef802e2ba4d78409ff3603c42e2cd..8f0a7d747480ce17af8dd8678fead64dea14644f 100755 --- a/pkg/vtiger/translations/Sweden_sv_se/modules/Vtiger.php +++ b/pkg/vtiger/translations/Sweden_sv_se/modules/Vtiger.php @@ -996,6 +996,9 @@ $languageStrings = array( 'LBL_NOT_STARRED' => 'Följ', 'LBL_QUICK_VIEW' => 'Quick View', 'LBL_NOTIFICATION_CENTER' => 'Anmälan Center', + 'LBL_NOTIFICATION' => 'Underrättelse', + 'LBL_STARRED_RECORD_TO' => '%s till%s', + 'LBL_STARRED_RECORD_UPDATED' => '%s uppdaterad%s', 'LBL_CONTACT' => 'KONTAKT HANTERING', 'LBL_NO_ATTACHMENTS' => 'Inga Bilagor', 'LBL_REARRANGE_DASHBOARD_TABS' => 'Ordna Om Flikarna', @@ -1138,6 +1141,7 @@ utanför Vtiger.', 'LBL_MARKETING' => 'MARKNADSFÖRING', 'LBL_SALES' => 'FÖRSÄLJNING', 'LBL_PROJECT' => 'PROJEKT', + 'LBL_TOOLS' => 'VERKTYG', 'LBL_TAGS' => 'Taggar', 'LBL_SHARE_TAGS' => 'Offentliga Taggar', 'LBL_SHARE_TAG' => 'Dela Tag', @@ -1215,6 +1219,16 @@ utanför Vtiger.', 'LBL_SLA_INFORMATION' => 'SLA Information', 'LBL_TO_USE_SWITCH_TO_NEW_LOOK' => 'Om du vill använda <b>%s</b>, rekommenderar vi att du Växla till nytt utseende.', 'LBL_DELETE_USER_CONFIRMATION' => 'När en användare tas bort, kommer användaren att markeras som "inaktiva" och inga nya rekord kan tilldelas till användaren, och användaren kommer inte att kunna logga in. Är du säker att du vill radera?', + + 'LBL_DUPLICATES' => 'dubbletter', + 'LBL_DUPLICATES_DETECTED' => 'Duplicera (s) upptäckt!', + 'LBL_DUPLICATES_FOUND_MESSAGE' => 'Denna%s kan inte sparas eftersom duplikat%s förekommer i vtiger med matchande värden för%s.', + 'LBL_VTIGER_NOTIFICATION' => 'Meddelande frÃ¥n: vtiger System Notifications', + 'LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS' => 'Följande%s kunde inte räddas frÃ¥n "%s" workflow', + 'LBL_DUPLICATION_FAILURE_FROM_WEBFORMS' => 'Följande%s kunde inte räddas frÃ¥n "%s" webbformulär', + 'LBL_DUPLICATION_FAILURE_FOR_ADMIN' => 'Du kan%s för att ändra dubbla regler förebyggande.', + 'LBL_DUPLICATION_FAILURE_FOR_NON_ADMIN' => 'Kontakta administratören för att revidera de dubbla regler', + 'LBL_DUPLICATE_RECORD_LISTS' => 'Duplicera%s (n):', ); $jsLanguageStrings = array( 'JS_EMAIL_SERVER_CONFIGURATION' => 'Vänligen konfigurera utgÃ¥ende serverinställningar frÃ¥n inställningssidan', @@ -1648,4 +1662,8 @@ $jsLanguageStrings = array( 'JS_UPLOAD_SUCCESSFUL' => 'File Uploaded Successfuly', 'JS_UPLOAD_FAILED' => 'Filöverföring misslyckades', + + 'JS_DUPLICATES_DETECTED' => 'Duplicera (s) upptäckt!', + 'JS_PASSWORD_MISMATCH_ERROR' => 'Vänligen ange lösenord. Den "nya lösenord" och "Bekräfta lösenord" värden inte stämmer överens.', + 'JS_LIST_DELETE_CONFIRMATION' => 'Är du säker att du vill radera?', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Calendar.php b/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Calendar.php index 052a0609ec21f4b2598a9a270c6b8e53dba68587..5fa36cab9fe1e5ea281d6089416cac9c90ee851b 100644 --- a/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Calendar.php +++ b/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Calendar.php @@ -147,6 +147,9 @@ $languageStrings = array( 'LBL_NOVEMBER' => 'Kasım', 'LBL_DECEMBER' => 'Aralık', 'LBL_CLICK_HERE_TO_VIEW' => 'görmek için buraya tıklayın', + + 'LBL_TOTAL_EVENTS_DUPLICATED' => 'yinelenen Olayların sayılı atlanır', + 'LBL_TOTAL_TASKS_DUPLICATED' => 'yinelenen Görevlerin sayılı atlanır', ); $jsLanguageStrings = array( 'LBL_ADD_EVENT_TASK' => 'Add Event / Görev' , diff --git a/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Google.php b/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Google.php index 613fb7c141e1ca9f7f6cd664db4dd107786c0604..67a2c94fcf3d648c32554d2ab18096d6a03cd26e 100644 --- a/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Google.php +++ b/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Google.php @@ -77,8 +77,9 @@ $languageStrings = array( 'LBL_SAVE_AND_IMPORT' => 'Kaydet ve İthalat', 'LBL_IMPORT_RESULTS_GOOGLE' => 'Google İthal sonuçlar', + 'LBL_REDIRECT_URL' => 'Yönlendirme baÄŸlantısı', + 'LBL_REDIRECT_URL_MESSAGE' => 'AÅŸağıdaki yönlendirme url kopyalayıp görüntü gösterildiÄŸi gibi google auth projesinde yapıştırın', ); - $jsLanguageStrings = array( 'LBL_SYNC_BUTTON' => "Åžimdi senkronize", 'LBL_SYNCRONIZING' => "Senkronizasyon ....", diff --git a/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Settings/LayoutEditor.php b/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Settings/LayoutEditor.php index dcb133e73cbcd11d03cc601eb6dc0447a5d9b359..5b9c830e0d545d8078e24d7f98da84b3148523b5 100644 --- a/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Settings/LayoutEditor.php +++ b/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Settings/LayoutEditor.php @@ -136,6 +136,20 @@ $languageStrings = array( 'LBL_DETAIL_HEADER' => 'Kayıt BaÅŸlığı', 'LBL_HEADER_FIELD' => 'BaÅŸlık Görüntüleyin', + 'LBL_DUPLICATE_HANDLING' => 'Yinelenen Önleme', + 'LBL_DUPLICATE_CHECK' => 'yinelenen denetimini etkinleÅŸtir', + 'LBL_DUPLICATION_INFO_MESSAGE' => 'Sadece kullanıcı ve harici uygulamalar tarafından oluÅŸturulan alma yeni yinelenen kayıtları engeller önleme özelliÄŸini çoÄŸaltın. İçe oluÅŸturulan kayıtlar', + 'LBL_SELECT_FIELDS_FOR_DUPLICATION' => 'yinelenen kayıtları kontrol edilecek edildiÄŸi benzersiz alanları seçin', + 'LBL_SELECT_FIELDS' => 'seç Alanlar', + 'LBL_MAX_3_FIELDS' => 'Maksimum 3 Alanları', + 'LBL_SELECT_RULE' => 'elleçleme çiftleri için Seç kural', + 'LBL_ALLOW_DUPLICATES' => 'Çiftleri izin ver', + 'LBL_DO_NOT_ALLOW_DUPLICATES' => 'Çiftleri izin verme', + 'LBL_DUPLICATES_IN_SYNC_MESSAGE' => 'yinelenen kayıt bulunursa harici uygulama ile senkronizasyon yapılırken Eylem almaya', + 'LBL_PREFER_LATEST_RECORD' => 'son kayıt tercih', + 'LBL_PREFER_INTERNAL_RECORD' => 'İç kaydını tercih', + 'LBL_PREFER_EXTERNAL_RECORD' => 'Harici kayıt tercih', + 'LBL_SYNC_TOOLTIP_MESSAGE' => 'son kayıt tercih - Verileri harici uygulamadan kopyalanmış olacaktır - bu dış rekoru tercih <br> olduÄŸu gibi korunacak Mevcut rekoru - En son deÄŸiÅŸtirilen kayıt verileri dahili kayıt tercih <br> korunur', ); $jsLanguageStrings = array( 'JS_BLOCK_VISIBILITY_SHOW' => 'Block show enabled' , @@ -196,4 +210,7 @@ Bu alanı silmek için emin misiniz?', 'JS_NAME_FIELDS_APPEAR_IN_HEADER_BY_DEFAULT' => 'Adı alanları varsayılan olarak BaÅŸlık görünür ', 'JS_FIELD_IS_HEADER_ENABLED_FOR_VTIGER7' => 'Bu Alan BaÅŸlık Vtiger7, Özet olarak görünecektir Görüntülemek için etkindir ', + 'JS_DUPLICATE_HANDLING_SUCCESS_MESSAGE' => 'BaÅŸarıyla çiftleri önlenmesinde seçili alanları dikkate güncellendi', + 'JS_DUPLICATE_HANDLING_FAILURE_MESSAGE' => 'çiftleri önlenmesinde seçili alanları dikkate BaÅŸarısız', + 'JS_DUPLICATE_CHECK_DISABLED' => 'Yinelenen kontrolü devre dışı bırakıldığında', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Settings/Webforms.php b/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Settings/Webforms.php index 3062b551a716d42412693f2a5158bca4961dbb0e..dcf62145cd038d511eeb2683779d06cf1ec2aa80 100644 --- a/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Settings/Webforms.php +++ b/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Settings/Webforms.php @@ -40,6 +40,12 @@ $languageStrings = array( 'LBL_ADD_RECORD' => 'Web Formunu Ekleyin', + 'LBL_UPLOAD_DOCUMENTS' => 'Yükleme Belgeler', + 'LBL_ADD_FILE_FIELD' => 'Yükleme Field Dosya', + 'LBL_FIELD_LABEL' => 'Belge baÅŸlığı', + 'LBL_FILE_FIELD_INFO' => "Web'den yüklenen her dosya için yeni bir belge ekli dosya ile oluÅŸturulur oluÅŸtururlar. Belge de bu yeni oluÅŸturulan%s ile baÄŸlantılıdır.", + 'LBL_NO_FILE_FIELD' => 'Hiçbir dosya alanları eklendi.', + 'LBL_COPY_TO_CLIPBOARD' => 'Panoya kopyala', ); $jsLanguageStrings = array( 'JS_WEBFORM_DELETED_SUCCESSFULLY' => 'Webform deleted successfully', // TODO: Review @@ -53,4 +59,7 @@ $jsLanguageStrings = array( 'JS_SELECT_AN_OPTION' => 'Bir Seçenek belirleyin', 'JS_LABEL' => 'etiket', + 'JS_MAX_FILE_FIELDS_LIMIT' => 'Maksimum EÄŸer%s dosyası alanları ekleyebilirsiniz.', + 'JS_COPIED_SUCCESSFULLY' => 'BaÅŸarıyla kopyalandı.', + 'JS_COPY_FAILED' => 'Kopya baÅŸarısız oldu. El ile kopyalayın.', ); \ No newline at end of file diff --git a/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Users.php b/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Users.php index d893f13c5897ade7d84af9d6b6d45e192626442b..6895424aad797ee6ae88d10666329a61d17c8331 100644 --- a/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Users.php +++ b/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Users.php @@ -130,7 +130,7 @@ $languageStrings = array( 'Africa/Nairobi' => '(UTC+03:00) Nairobi' , 'Asia/Tehran' => '(UTC+03:30) Tehran' , 'Asia/Tbilisi' => '(UTC+04:00) Tbilisi' , - 'Europe/Moscow' => '(UTC+04:00) Moscow, Volgograd', + 'Europe/Moscow' => '(UTC+03:00) Moscow, Volgograd', 'Asia/Muscat' => '(UTC+04:00) Abu Dhabi, Muscat', 'Asia/Baku' => '(UTC+04:00) Baku' , 'Asia/Yerevan' => '(UTC+04:00) Yerevan' , diff --git a/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Vtiger.php b/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Vtiger.php index 8906fe12b3044f4f13964d43df401df29d0ac459..3810c4e3ef67f77252b307a6ed8f5a85df1ca28a 100644 --- a/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Vtiger.php +++ b/pkg/vtiger/translations/TurkishLanguagePack_tr_tr/modules/Vtiger.php @@ -846,6 +846,9 @@ $languageStrings = array( 'LBL_NOT_STARRED' => 'İzleyin', 'LBL_QUICK_VIEW' => 'Hızlı Görünüm', 'LBL_NOTIFICATION_CENTER' => 'Bildirim Merkezi', + 'LBL_NOTIFICATION' => 'Bildirim', + 'LBL_STARRED_RECORD_TO' => '%s to %s', + 'LBL_STARRED_RECORD_UPDATED' => '%s güncellendi%s', 'LBL_EDIT_REASON' => 'Düzenleme nedeni', 'LBL_CONTACT' => 'İLETİŞİM YÖNETİMİ', 'LBL_NO_ATTACHMENTS' => 'Hayır Ekleri', @@ -1001,6 +1004,7 @@ Vtiger dışında.', 'LBL_MARKETING' => 'PAZARLAMA', 'LBL_SALES' => 'SATIÅž', 'LBL_PROJECT' => 'PROJELER', + 'LBL_TOOLS' => 'ARAÇLAR', 'LBL_TAGS' => 'Etiketler', 'LBL_SHARE_TAGS' => 'Kamu Etiketleri', 'LBL_SHARE_TAG' => 'Hisse Etiketi', @@ -1073,6 +1077,16 @@ Vtiger dışında.', 'LBL_SLA_INFORMATION' => 'SLA Bilgi', 'LBL_TO_USE_SWITCH_TO_NEW_LOOK' => '%s öneririz kullanmak için yeni bir görünüm geçmek için.', 'LBL_DELETE_USER_CONFIRMATION' => 'Kullanıcı silindiÄŸinde, kullanıcı "Etkin" ve yeni kayıt Kullanıcı atanabilir olarak iÅŸaretlenir ve kullanıcı giriÅŸ mümkün olmayacaktır. Silmek istediÄŸine emin misin?', + + 'LBL_DUPLICATES' => 'çoÄŸaltır', + 'LBL_DUPLICATES_DETECTED' => 'ÇoÄŸaltın (ler) algılandı!', + 'LBL_DUPLICATES_FOUND_MESSAGE' => 'yinelenen%s%s deÄŸerleri eÅŸleÅŸen vtiger var çünkü bu%s kaydedilemez.', + 'LBL_VTIGER_NOTIFICATION' => 'Ileti: Vtiger Sistem Bildirimleri', + 'LBL_DUPLICATION_FAILURE_FROM_WORKFLOWS' => 'AÅŸağıdaki%s "%s" iÅŸ akışından kurtarılamadı', + 'LBL_DUPLICATION_FAILURE_FROM_WEBFORMS' => 'AÅŸağıdaki%s "%s" web formunda gelen kurtarılamadı', + 'LBL_DUPLICATION_FAILURE_FOR_ADMIN' => '%s yinelenen önleme kurallarını deÄŸiÅŸtirmek olabilir.', + 'LBL_DUPLICATION_FAILURE_FOR_NON_ADMIN' => 'yinelenen kurallarını revize için yöneticinize baÅŸvurun', + 'LBL_DUPLICATE_RECORD_LISTS' => '%s (ler) Çift:', ); $jsLanguageStrings = array( 'JS_EMAIL_SERVER_CONFIGURATION' => 'Please configure your outgoing server settings from the settings page', @@ -1483,4 +1497,8 @@ $jsLanguageStrings = array( 'JS_UPLOAD_SUCCESSFUL' => 'Uploaded baÅŸarıyla Dosya', 'JS_UPLOAD_FAILED' => 'Dosya Yükleme BaÅŸarısız', + + 'JS_DUPLICATES_DETECTED' => 'ÇoÄŸaltın (ler) algılandı!', + 'JS_PASSWORD_MISMATCH_ERROR' => 'yeniden girin ÅŸifreleri. "Yeni ÅŸifre" ve "onayla parola" deÄŸerleri eÅŸleÅŸmiyor.', + 'JS_LIST_DELETE_CONFIRMATION' => 'Silmek istediÄŸine emin misin?', ); \ No newline at end of file diff --git a/schema/DatabaseSchema.xml b/schema/DatabaseSchema.xml index 36430154cb17fca130604c56afc7f0030f7c4676..d266c2d97bdd767df2e03ec92a1e1b9d3134ad48 100644 --- a/schema/DatabaseSchema.xml +++ b/schema/DatabaseSchema.xml @@ -211,6 +211,9 @@ </field> <field name="version" type="C" size="10" /> <field name="parent" type="C" size="30"/> + <field name="source" type="C" size="255"> + <default value="custom" /> + </field> <index name="tab_name_idx"> <col>name</col> @@ -1971,7 +1974,10 @@ <deftimestamp /> </field> <field name="login_time" type="T"> - <deftimestamp /> + <!-- Troublesome with STRICT_TRANS_TABLE mode depends on MySQL 5.5 or 5.6+ --> + <!-- + <deftimestamp /> + --> </field> <field name="status" type="C" size="25" /> <opt platform="mysql">Engine=InnoDB</opt> @@ -6988,4 +6994,51 @@ <opt platform="mysql">Engine=InnoDB</opt> </table> + <table name="vtiger_dashboard_tabs"> + <field name="id" type="I" size="19"> + <key /> + <autoincrement /> + </field> + <field name="tabname" type="C" size="50" > + <unique /> + </field> + <field name="isdefault" type="I" size="1" > + <default value="0" /> + </field> + <field name="sequence" type="I" size="5" > + <default value="2" /> + </field> + <field name="appname" type="C" size="20" /> + <field name="modulename" type="C" size="50" /> + <field name="userid" type="I" size="11"> + <unique /> + </field> + + <opt platform="mysql">Engine=InnoDB</opt> + </table> + + <table name="vtiger_dashboard_tabs" alter="true"> + <constraint>ADD CONSTRAINT vtiger_dashboard_tabs_ibfk_1 FOREIGN KEY (userid) REFERENCES vtiger_users(id) ON DELETE CASCADE</constraint> + <opt>Engine=InnoDB</opt> + </table> + + <table name="vtiger_dashboard_tabs" alter="true"> + <constraint>ADD CONSTRAINT tabname UNIQUE(tabname, userid)</constraint> + <opt>Engine=InnoDB</opt> + </table> + + <table name="vtiger_app2tab"> + <field name="tabid" type="I" size="11" /> + <field name="appname" type="C" size="20" /> + <field name="sequence" type="I" size="19" /> + <field name="visible" type="I" size="3" > + <default value="1" /> + </field> + <opt platform="mysql">Engine=InnoDB</opt> + </table> + + <table name="vtiger_app2tab" alter="true"> + <constraint>ADD CONSTRAINT vtiger_app2tab_fk_tab FOREIGN KEY (tabid) REFERENCES vtiger_tab(tabid) ON DELETE CASCADE</constraint> + <opt>Engine=InnoDB</opt> + </table> </schema> diff --git a/soap/customerportal.php b/soap/customerportal.php index 2f9632b6f7b3b2973ecad3214b6afcc08bbb5f10..c286d18947e3157877dd2973349e8ece591a0ce8 100755 --- a/soap/customerportal.php +++ b/soap/customerportal.php @@ -1130,74 +1130,63 @@ function send_mail_for_password($mailid) $log->debug("Entering customer portal function send_mail_for_password"); $adb->println("Inside the function send_mail_for_password($mailid)."); - $sql = "select * from vtiger_portalinfo where user_name = ? "; + if ($mailid == '') { + $ret_msg = "false@@@<b>".$mod_strings['LBL_GIVE_MAILID']."</b>"; + } + + $sql = 'SELECT * FROM vtiger_portalinfo INNER JOIN vtiger_contactdetails ON vtiger_contactdetails.contactid=vtiger_portalinfo.id WHERE user_name = ?'; $res = $adb->pquery($sql, array($mailid)); - $user_name = $adb->query_result($res,0,'user_name'); - $password = $adb->query_result($res,0,'user_password'); - $isactive = $adb->query_result($res,0,'isactive'); + $contactId = $adb->query_result($res, 0, 'id'); + $user_name = $adb->query_result($res, 0, 'user_name'); + $password = $adb->query_result($res, 0, 'user_password'); + $isactive = $adb->query_result($res, 0, 'isactive'); // We no longer have the original password! if (!empty($adb->query_result($res, 0, 'cryptmode'))) { - $password = '*****'; - // TODO - we need to send link to reset the password + $password = makeRandomPassword(); + $enc_password = Vtiger_Functions::generateEncryptedPassword($password); + + $sql = 'UPDATE vtiger_portalinfo SET user_password=?, cryptmode=? WHERE id=?'; + $params = array($enc_password, 'CRYPT', $contactId); + $adb->pquery($sql, $params); // For now CRM user can do the same. } - $fromquery = "select vtiger_users.user_name, vtiger_users.email1 from vtiger_users inner join vtiger_crmentity on vtiger_users.id = vtiger_crmentity.smownerid inner join vtiger_contactdetails on vtiger_contactdetails.contactid=vtiger_crmentity.crmid where vtiger_contactdetails.email =?"; - $from_res = $adb->pquery($fromquery, array($mailid)); - $initialfrom = $adb->query_result($from_res,0,'user_name'); - $from = $adb->query_result($from_res,0,'email1'); - - $contents = getTranslatedString('LBL_LOGIN_DETAILS'); - $contents .= "<br><br>".getTranslatedString('LBL_USERNAME')." ".$user_name; - $contents .= "<br>".getTranslatedString('LBL_PASSWORD')." ".$password; - - $mail = new PHPMailer(); - - $mail->Subject = getTranslatedString('LBL_SUBJECT_PORTAL_LOGIN_DETAILS'); - $mail->Body = $contents; - $mail->IsSMTP(); - - $mailserverresult = $adb->pquery("select * from vtiger_systems where server_type=?", array('email')); - $mail_server = $adb->query_result($mailserverresult,0,'server'); - $mail_server_username = $adb->query_result($mailserverresult,0,'server_username'); - $mail_server_password = $adb->query_result($mailserverresult,0,'server_password'); - $smtp_auth = $adb->query_result($mailserverresult,0,'smtp_auth'); - - $mail->Host = $mail_server; - if($smtp_auth) - $mail->SMTPAuth = 'true'; - $mail->Username = $mail_server_username; - $mail->Password = $mail_server_password; - $mail->From = $from; - $mail->FromName = $initialfrom; - - $mail->AddAddress($user_name); - $mail->AddReplyTo($current_user->name); - $mail->WordWrap = 50; - - $mail->IsHTML(true); - - $mail->AltBody = $mod_strings['LBL_ALTBODY']; - if($mailid == '') - { - $ret_msg = "false@@@<b>".$mod_strings['LBL_GIVE_MAILID']."</b>"; - } - elseif($user_name == '' && $password == '') - { + if ($user_name == '' && $password == '') { $ret_msg = "false@@@<b>".$mod_strings['LBL_CHECK_MAILID']."</b>"; - } - elseif($isactive == 0) - { + } elseif ($isactive == 0) { $ret_msg = "false@@@<b>".$mod_strings['LBL_LOGIN_REVOKED']."</b>"; - } - elseif(!$mail->Send()) - { - $ret_msg = "false@@@<b>".$mod_strings['LBL_MAIL_COULDNOT_SENT']."</b>"; - } - else - { - $ret_msg = "true@@@<b>".$mod_strings['LBL_MAIL_SENT']."</b>"; + } else { + + global $current_user,$HELPDESK_SUPPORT_EMAIL_ID, $HELPDESK_SUPPORT_NAME; + require_once("modules/Emails/mail.php"); + + $moduleName = 'Contacts'; + require_once 'config.inc.php'; + global $PORTAL_URL; + + $portalURL = vtranslate('Please ',$moduleName).'<a href="'.$PORTAL_URL.'" style="font-family:Arial, Helvetica, sans-serif;font-size:13px;">'. vtranslate('click here', $moduleName).'</a>'; + $contents = '<table><tr><td> + <strong>Dear '.$adb->query_result($res, 0, 'firstname')." ".$adb->query_result($res, 0, 'lastname').'</strong><br></td></tr><tr> + <td>'.vtranslate('Here is your self service portal login details:', $moduleName).'</td></tr><tr><td align="center"><br><table style="border:2px solid rgb(180,180,179);background-color:rgb(226,226,225);" cellspacing="0" cellpadding="10" border="0" width="75%"><tr> + <td><br>'.vtranslate('User ID').' : <font color="#990000"><strong> + <a target="_blank">'.$user_name.'</a></strong></font></td></tr><tr> + <td>'.vtranslate('Password').' : <font color="#990000"> + <strong>'.$password.'</strong></font></td></tr><tr> + <td align="center"><strong>'.$portalURL.'</strong></td> + </tr></table><br></td></tr><tr><td><strong>NOTE: </strong>'.vtranslate('We suggest you to change your password after logging in first time').'.<br> + </td></tr></table>'; + + $subject = 'Customer Portal Login Details'; + $subject = decode_html(getMergedDescription($subject, $contactId, 'Contacts')); + $mailStatus = send_mail($moduleName, $user_name, $HELPDESK_SUPPORT_NAME, $HELPDESK_SUPPORT_EMAIL_ID, $subject, $contents, '', '', '', '', '', true); + + if (!$mailStatus) { + $ret_msg = "false@@@<b>".$mod_strings['LBL_MAIL_COULDNOT_SENT']."</b>"; + } else { + $ret_msg = "true@@@<b>".$mod_strings['LBL_MAIL_SENT']."</b>"; + } + } $adb->println("Exit from send_mail_for_password. $ret_msg"); diff --git a/vtigercron.php b/vtigercron.php index 224edac30da6b399faea4e6570557d25ad8a4aa9..886ae0bd131a1d10df00322f86d3705de06fb0d5 100644 --- a/vtigercron.php +++ b/vtigercron.php @@ -24,8 +24,6 @@ require_once 'includes/Loader.php'; vimport ('includes.runtime.EntryPoint'); $site_URLArray = explode('/',$site_URL); -$organization_name = $site_URLArray[2]; -$organization_name = str_replace('.od1.vtiger.com', '', $organization_name); $version = explode('.', phpversion()); @@ -36,10 +34,14 @@ if($php < 50300){ $hostName = gethostname(); } -$mailbody ="Instance dir : $root_directory <br/> Company Name : $organization_name <br/> Site Url : $site_URL <br/> Host Name : $hostName<br/>"; +$mailbody ="Instance dir : $root_directory <br/> Site Url : $site_URL <br/> Host Name : $hostName<br/>"; +$mailSubject = "[Alert] "; -$mailSubject = "[Alert] $organization_name "; -if(PHP_SAPI === "cli" || (isset($_SESSION["authenticated_user_id"]) && isset($_SESSION["app_unique_key"]) && $_SESSION["app_unique_key"] == $application_unique_key)){ +function vtigercron_detect_run_in_cli(){ + return (!isset($_SERVER['SERVER_SOFTWARE']) && (php_sapi_name() == 'cli' || is_numeric($_SERVER['argc']) && $_SERVER['argc'] > 0)); +} + +if(vtigercron_detect_run_in_cli() || (isset($_SESSION["authenticated_user_id"]) && isset($_SESSION["app_unique_key"]) && $_SESSION["app_unique_key"] == $application_unique_key)){ $cronTasks = false; if (isset($_REQUEST['service'])) { diff --git a/vtigerversion.php b/vtigerversion.php index ef072decbf69f197b7baaeb58a010cd2fa408bb4..5aebab4ff03a290d91f2f3f9a974c308abecc40e 100644 --- a/vtigerversion.php +++ b/vtigerversion.php @@ -10,7 +10,7 @@ $patch_version = '20170606'; // -ve timestamp before release, +ve timestamp after release. $modified_database = ''; -$vtiger_current_version = '7.0.1'; +$vtiger_current_version = '7.1.0'; $_SESSION['vtiger_version'] = $vtiger_current_version; ?> \ No newline at end of file diff --git a/vtlib/Vtiger/FieldBasic.php b/vtlib/Vtiger/FieldBasic.php index 940a810eae59da47990311579c3e023b8d9adf63..c79b5ec11d594ce21ee8f2bf1283e34e17b1f77b 100644 --- a/vtlib/Vtiger/FieldBasic.php +++ b/vtlib/Vtiger/FieldBasic.php @@ -38,6 +38,7 @@ class Vtiger_FieldBasic { var $quickcreate = 1; var $quicksequence = false; var $info_type = 'BAS'; + var $isunique = false; var $block; /** @@ -71,6 +72,7 @@ class Vtiger_FieldBasic { $this->quickcreate = $valuemap['quickcreate']; $this->sequence = $valuemap['sequence']; $this->summaryfield = $valuemap['summaryfield']; + $this->isunique = $valuemap['isunique']; $this->block= $blockInstance? $blockInstance : Vtiger_Block::getInstance($valuemap['block'], $moduleInstance); $this->headerfield = $valuemap['headerfield']; } diff --git a/vtlib/Vtiger/Functions.php b/vtlib/Vtiger/Functions.php index 3413a8fdfd1112c580cdfc4db672a28839a49661..3bf9236817a3778cc5d102ad22574039af597584 100644 --- a/vtlib/Vtiger/Functions.php +++ b/vtlib/Vtiger/Functions.php @@ -1069,7 +1069,7 @@ class Vtiger_Functions { if ($mode == 'CRYPT') { $salt = null; if (function_exists('password_hash')) { // php 5.5+ - $salt = password_hash(); + $salt = password_hash($password, PASSWORD_DEFAULT); } else { $salt = '$2y$11$'.str_replace("+",".",substr(base64_encode(openssl_random_pseudo_bytes(17)),0,22)); } @@ -1320,11 +1320,7 @@ class Vtiger_Functions { * @return type -- table name */ public static function getUserSpecificTableName($moduleName) { - $moduleName = strtolower($moduleName); - if ($moduleName == "events") { - $moduleName = "calendar"; - } - return "vtiger_".$moduleName.'_user_field'; + return 'vtiger_crmentity_user_field'; } /** @@ -1386,4 +1382,26 @@ class Vtiger_Functions { } while ($sizeInBytes > 1024); return round($sizeInBytes, 2) . $fileSizeUnits[$i]; } + + /** + * Function to check if a module($sourceModule) is related to Documents module. + * @param <string> $sourceModule - Source module + * @return <boolean> Returns TRUE if $sourceModule is related to Documents module and + * Documents module is active else returns FALSE. + */ + static function isDocumentsRelated($sourceModule) { + $isRelated = false; + $moduleName = 'Documents'; + if (vtlib_isModuleActive($moduleName)) { + $moduleModel = Vtiger_Module_Model::getInstance($moduleName); + $sourceModuleModel = Vtiger_Module_Model::getInstance($sourceModule); + if ($moduleModel && $sourceModuleModel) { + $relationModel = Vtiger_Relation_Model::getInstance($sourceModuleModel, $moduleModel); + } + if ($relationModel) { + $isRelated = true; + } + } + return $isRelated; + } } diff --git a/vtlib/Vtiger/Mailer.php b/vtlib/Vtiger/Mailer.php index 1987415c4bb7fb8ee9d87dd69562b37c37a37cec..3c69bc8723e7b24383b44d508140027502f58bdc 100644 --- a/vtlib/Vtiger/Mailer.php +++ b/vtlib/Vtiger/Mailer.php @@ -26,6 +26,7 @@ class Vtiger_Mailer extends PHPMailer { * Constructor */ function __construct() { + parent::__construct(); $this->initialize(); } @@ -43,6 +44,7 @@ class Vtiger_Mailer extends PHPMailer { * @access private */ function initialize() { + $this->Timeout = 30; /* Issue #155: to allow anti-spam tech be successful */ $this->IsSMTP(); global $adb; @@ -78,9 +80,11 @@ class Vtiger_Mailer extends PHPMailer { function reinitialize() { $this->ClearAllRecipients(); $this->ClearReplyTos(); + $this->ClearCustomHeaders(); $this->Body = ''; $this->Subject =''; $this->ClearAttachments(); + $this->ErrorInfo = ''; } /** diff --git a/vtlib/Vtiger/ModuleBasic.php b/vtlib/Vtiger/ModuleBasic.php index 9251492aee11d4dd7eebd5140fc41075226922bf..e6132cec79a83b24c7c3d82c0a061b89e0127e08 100644 --- a/vtlib/Vtiger/ModuleBasic.php +++ b/vtlib/Vtiger/ModuleBasic.php @@ -49,6 +49,11 @@ class Vtiger_ModuleBasic { var $grouptable = false; var $fieldtable = false; + var $allowDuplicates = false; + var $isSyncable = 0; + var $syncActionForDuplicate = 1; + + const EVENT_MODULE_ENABLED = 'module.enabled'; const EVENT_MODULE_DISABLED = 'module.disabled'; const EVENT_MODULE_POSTINSTALL = 'module.postinstall'; @@ -78,13 +83,17 @@ class Vtiger_ModuleBasic { $this->tabsequence = $valuemap['tabsequence']; $this->parent = $valuemap['parent']; $this->customized = $valuemap['customized']; - $this->trial = $valuemap['trial']; + $this->trial = $valuemap['trial']; $this->isentitytype = $valuemap['isentitytype']; if($this->isentitytype || $this->name == 'Users') { // Initialize other details too $this->initialize2(); } + $this->source = $valuemap['source']; + $this->isSyncable = $valuemap['issyncable']; + $this->allowDuplicates = $valuemap['allowduplicates']; + $this->syncActionForDuplicate = $valuemap['sync_action_for_duplicates']; } /** diff --git a/vtlib/Vtiger/PDF/inventory/HeaderViewer.php b/vtlib/Vtiger/PDF/inventory/HeaderViewer.php index f156b40b92e0812206612fbb580e92a94c654a4b..14f3e3921b21a4514b42f269dc4d90be2f10c8e5 100644 --- a/vtlib/Vtiger/PDF/inventory/HeaderViewer.php +++ b/vtlib/Vtiger/PDF/inventory/HeaderViewer.php @@ -105,7 +105,7 @@ class Vtiger_PDF_InventoryHeaderViewer extends Vtiger_PDF_HeaderViewer { $offsetY = 0; } } else { - $offsetY = 1; + $offsetY = 4; $pdf->SetFont('freeserif', 'B'); $pdf->SetFillColor(205,201,201); @@ -137,4 +137,4 @@ class Vtiger_PDF_InventoryHeaderViewer extends Vtiger_PDF_HeaderViewer { } -} \ No newline at end of file +} diff --git a/vtlib/Vtiger/PackageImport.php b/vtlib/Vtiger/PackageImport.php index 2618652c6562f67c79216644644b20c6cfef9b3e..f6b974b168e4b347017a613e1bba979668d92ad4 100644 --- a/vtlib/Vtiger/PackageImport.php +++ b/vtlib/Vtiger/PackageImport.php @@ -924,17 +924,12 @@ class Vtiger_PackageImport extends Vtiger_PackageExport { if (Vtiger_Field::getInstance('tags', $moduleInstance) === false && $moduleModel->isTagsEnabled()) { $module = (string) $moduleInstance->name; - $focus = CRMEntity::getInstance($module); - if (isset($focus->customFieldTable)) { - $tableName = $focus->customFieldTable[0]; - } else { - $tableName = 'vtiger_'.strtolower($module).'cf'; - } - //Adding tag field + $focus = CRMEntity::getInstance($module); + $field = new Vtiger_Field(); - $field->name = "tags"; - $field->label = "tags"; - $field->table = $tableName; + $field->name = 'tags'; + $field->label = 'tags'; + $field->table = $focus->table_name; $field->presence = 2; $field->displaytype = 6; $field->readonly = 1; diff --git a/vtlib/tools/console.php b/vtlib/tools/console.php index e568861530f4b50b69104086c636ec4b2958af37..190d8c8e865aaf83d198cc6a585fe4ffa0d57fdb 100644 --- a/vtlib/tools/console.php +++ b/vtlib/tools/console.php @@ -310,6 +310,9 @@ class Vtiger_Tools_Console_ModuleController extends Vtiger_Tools_Console_Control // Create files $this->createFiles($module, $field1); + + // Link to menu + Settings_MenuEditor_Module_Model::addModuleToApp($module->name, $module->parent); } protected function createFiles(Vtiger_Module $module, Vtiger_Field $entityField) { diff --git a/webservice.php b/webservice.php index ca5a6735b7bea1e4c0555d96961bd9a3e833cfae..98dfa1e0257a399015aded2e011935f5077648ca 100644 --- a/webservice.php +++ b/webservice.php @@ -133,6 +133,8 @@ } $rawOutput = $operationManager->runOperation($operationInput,$current_user); writeOutput($operationManager, $rawOutput); + } catch (DuplicateException $e) { + writeErrorOutput($operationManager,new WebServiceException($e->getCode(), $e->getMessage())); }catch(WebServiceException $e){ writeErrorOutput($operationManager,$e); }catch(Exception $e){