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/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 5e58d9b9ea2ff8404e798b335057b8b8a2877764..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', 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..04c6bf79320da772619c4496f2108ea31487fbd1 100644 --- a/layouts/v7/modules/Calendar/ListViewRecordActions.tpl +++ b/layouts/v7/modules/Calendar/ListViewRecordActions.tpl @@ -27,10 +27,10 @@ {/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/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/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/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..1a44242bce1631445f576181b40966e43817b057 100644 --- a/layouts/v7/modules/Documents/partials/SidebarHeader.tpl +++ b/layouts/v7/modules/Documents/partials/SidebarHeader.tpl @@ -13,9 +13,9 @@ 'INVENTORY' => 'vicon-inventory', 'PROJECT' => 'fa-briefcase' ]} -<div class="col-sm-12 col-xs-12 app-indicator-icon-container app-{$SELECTED_MENU_CATEGORY}"> +<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>{$MODULE_MODEL->getModuleIcon()}</span> </div> </div> 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/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/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/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/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/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/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/MenuEditor/Index.tpl b/layouts/v7/modules/Settings/MenuEditor/Index.tpl index 93de1e619ced1ab970c22a5d1a0548302daf0431..da4831d49914a1fc4b92e7ad1ad0d0790d3c791d 100644 --- a/layouts/v7/modules/Settings/MenuEditor/Index.tpl +++ b/layouts/v7/modules/Settings/MenuEditor/Index.tpl @@ -46,7 +46,7 @@ </span> {assign var='translatedModuleLabel' value=vtranslate($moduleModel->get('label'),$moduleName )} <span> - <i class="vicon-{strtolower($moduleName)} marginRight10px pull-left"></i> + <span class="marginRight10px pull-left">{$moduleModel->getModuleIcon()}</span> </span> <div class="textOverflowEllipsis marginTop10px textAlignLeft" title="{$translatedModuleLabel}">{$translatedModuleLabel}</div> </div> 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/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/ModuleRelatedTabs.tpl b/layouts/v7/modules/Vtiger/ModuleRelatedTabs.tpl index 7df8ada2ede51a8af2e27693454f319386e22fc8..d3bc58e83963f4bc05aab5658259e1bb3ae37b3e 100644 --- a/layouts/v7/modules/Vtiger/ModuleRelatedTabs.tpl +++ b/layouts/v7/modules/Vtiger/ModuleRelatedTabs.tpl @@ -51,7 +51,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 +76,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 +107,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/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/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/Menubar.tpl b/layouts/v7/modules/Vtiger/partials/Menubar.tpl index 6aa31ce053dd2b8745a97e5340409e54f83f967a..646efc9082143a1d81bc7f380f3dc994e4007958 100644 --- a/layouts/v7/modules/Vtiger/partials/Menubar.tpl +++ b/layouts/v7/modules/Vtiger/partials/Menubar.tpl @@ -16,7 +16,7 @@ <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> diff --git a/layouts/v7/modules/Vtiger/partials/SidebarAppMenu.tpl b/layouts/v7/modules/Vtiger/partials/SidebarAppMenu.tpl index c7bb2e137c8dd7f6298d0a0c41224067f7f30df5..0d9a812c3d741d1f5badc83793163f09ad513026 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> @@ -109,7 +109,7 @@ {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="fa module-icon">{$EMAILTEMPLATES_MODULE_MODEL->getModuleIcon()}</span> <span class="module-name textOverflowEllipsis"> {vtranslate($EMAILTEMPLATES_MODULE_MODEL->getName(), $EMAILTEMPLATES_MODULE_MODEL->getName())}</span> </a> </li> diff --git a/layouts/v7/modules/Vtiger/partials/Topbar.tpl b/layouts/v7/modules/Vtiger/partials/Topbar.tpl index 50f71257254d3b461f69f3c4ee17df3cfcd84afb..8047e2c05893db48e92be27d76426698b5ae5aa7 100644 --- a/layouts/v7/modules/Vtiger/partials/Topbar.tpl +++ b/layouts/v7/modules/Vtiger/partials/Topbar.tpl @@ -70,7 +70,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 +79,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 +88,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 +112,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/skins/contact/style.css b/layouts/v7/skins/contact/style.css index 1d93de09e6489e115f161230d71181c6817afa09..87eccfbebdfdd00cdd836b5bcc12b6fd80333e84 100644 --- a/layouts/v7/skins/contact/style.css +++ b/layouts/v7/skins/contact/style.css @@ -1423,7 +1423,7 @@ ul.unstyled { } .listview-table-norecords .table-actions, .listview-table .table-actions { - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -7321,4 +7321,63 @@ input:focus:-ms-input-placeholder { } .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: #fff; + 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: #fff; +} +.modules-menu .custom-module { + color: #fff; + margin-left: 0px; + display: inline; + border: 1px solid #fff; + 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: #fff; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #000; + background-color: #fff; +} +.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: #fff; + background-color: #777; + padding: 5px 7px; + font-weight: bold; +} +.record-header .custom-module { + font-size: 30px; +} +.moduleIcon .custom-module { + font-weight: bold; } \ No newline at end of file diff --git a/layouts/v7/skins/inventory/style.css b/layouts/v7/skins/inventory/style.css index a6d471f15e0a4c3f4d4eb78c5286a4544d4e478a..2f7e4b048d9e28ba9ef5436b50e4c93fb5dd3e35 100644 --- a/layouts/v7/skins/inventory/style.css +++ b/layouts/v7/skins/inventory/style.css @@ -1423,7 +1423,7 @@ ul.unstyled { } .listview-table-norecords .table-actions, .listview-table .table-actions { - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -7325,4 +7325,63 @@ input:focus:-ms-input-placeholder { } .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: #fff; + 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: #fff; +} +.modules-menu .custom-module { + color: #fff; + margin-left: 0px; + display: inline; + border: 1px solid #fff; + 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: #fff; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #000; + background-color: #fff; +} +.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: #fff; + background-color: #777; + padding: 5px 7px; + font-weight: bold; +} +.record-header .custom-module { + font-size: 30px; +} +.moduleIcon .custom-module { + font-weight: bold; } \ No newline at end of file diff --git a/layouts/v7/skins/marketing/style.css b/layouts/v7/skins/marketing/style.css index 639b11fd49d5a919cdf2859d6556180ef78ba542..3d4202ca4f27901ec3e7c590dccd2f742b283d4d 100644 --- a/layouts/v7/skins/marketing/style.css +++ b/layouts/v7/skins/marketing/style.css @@ -1423,7 +1423,7 @@ ul.unstyled { } .listview-table-norecords .table-actions, .listview-table .table-actions { - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -7587,4 +7587,63 @@ a.btnReport:hover { } .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: #fff; + 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: #fff; +} +.modules-menu .custom-module { + color: #fff; + margin-left: 0px; + display: inline; + border: 1px solid #fff; + 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: #fff; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #000; + background-color: #fff; +} +.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: #fff; + background-color: #777; + padding: 5px 7px; + font-weight: bold; +} +.record-header .custom-module { + font-size: 30px; +} +.moduleIcon .custom-module { + font-weight: bold; } \ 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 000ed7af63eb1c0d1d4a84e3cfcf891e20782bdc..28c2a6f30c5060eb9afceab1a1702db6403b0eec 100644 --- a/layouts/v7/skins/marketing_and_sales/style.css +++ b/layouts/v7/skins/marketing_and_sales/style.css @@ -1423,7 +1423,7 @@ ul.unstyled { } .listview-table-norecords .table-actions, .listview-table .table-actions { - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -7326,3 +7326,62 @@ input:focus:-ms-input-placeholder { .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: #fff; + 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: #fff; +} +.modules-menu .custom-module { + color: #fff; + margin-left: 0px; + display: inline; + border: 1px solid #fff; + 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: #fff; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #000; + background-color: #fff; +} +.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: #fff; + 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/project/style.css b/layouts/v7/skins/project/style.css index e0de4af69c8db429d97fa5ca3b23ec591eaebe5b..489bd72173fc038b8895297ae4f1ed5ebfa16e66 100644 --- a/layouts/v7/skins/project/style.css +++ b/layouts/v7/skins/project/style.css @@ -1423,7 +1423,7 @@ ul.unstyled { } .listview-table-norecords .table-actions, .listview-table .table-actions { - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -7325,4 +7325,63 @@ input:focus:-ms-input-placeholder { } .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: #fff; + 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: #fff; +} +.modules-menu .custom-module { + color: #fff; + margin-left: 0px; + display: inline; + border: 1px solid #fff; + 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: #fff; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #000; + background-color: #fff; +} +.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: #fff; + background-color: #777; + padding: 5px 7px; + font-weight: bold; +} +.record-header .custom-module { + font-size: 30px; +} +.moduleIcon .custom-module { + font-weight: bold; } \ No newline at end of file diff --git a/layouts/v7/skins/sales/style.css b/layouts/v7/skins/sales/style.css index 7ac2e61a920a6214fbe55505617aa6825f2a6dc4..75e92f9288a72c904025e78470e7714f243184f3 100644 --- a/layouts/v7/skins/sales/style.css +++ b/layouts/v7/skins/sales/style.css @@ -1423,7 +1423,7 @@ ul.unstyled { } .listview-table-norecords .table-actions, .listview-table .table-actions { - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -7325,4 +7325,63 @@ input:focus:-ms-input-placeholder { } .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: #fff; + 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: #fff; +} +.modules-menu .custom-module { + color: #fff; + margin-left: 0px; + display: inline; + border: 1px solid #fff; + 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: #fff; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #000; + background-color: #fff; +} +.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: #fff; + background-color: #777; + padding: 5px 7px; + font-weight: bold; +} +.record-header .custom-module { + font-size: 30px; +} +.moduleIcon .custom-module { + font-weight: bold; } \ No newline at end of file diff --git a/layouts/v7/skins/support/style.css b/layouts/v7/skins/support/style.css index 276815c684f394ddbd283d7483bfc427927d71fd..debe4b5fe24f303a5cb5c4496f639fafc359c4a0 100644 --- a/layouts/v7/skins/support/style.css +++ b/layouts/v7/skins/support/style.css @@ -1423,7 +1423,7 @@ ul.unstyled { } .listview-table-norecords .table-actions, .listview-table .table-actions { - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -7456,4 +7456,63 @@ div.flip { } .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: #fff; + 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: #fff; +} +.modules-menu .custom-module { + color: #fff; + margin-left: 0px; + display: inline; + border: 1px solid #fff; + 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: #fff; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #000; + background-color: #fff; +} +.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: #fff; + background-color: #777; + padding: 5px 7px; + font-weight: bold; +} +.record-header .custom-module { + font-size: 30px; +} +.moduleIcon .custom-module { + font-weight: bold; } \ No newline at end of file diff --git a/layouts/v7/skins/tools/style.css b/layouts/v7/skins/tools/style.css index aa3055cfe7746e8b522f4554efa0cfb72a5ed0ef..0f56c1ee17daf9d3bd7e9490949f7e11def2f587 100644 --- a/layouts/v7/skins/tools/style.css +++ b/layouts/v7/skins/tools/style.css @@ -1423,7 +1423,7 @@ ul.unstyled { } .listview-table-norecords .table-actions, .listview-table .table-actions { - width: 110px; + width: 120px; font-size: 15px; color: #555; margin-left: 7px; @@ -7321,4 +7321,63 @@ input:focus:-ms-input-placeholder { } .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: #fff; + 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: #fff; +} +.modules-menu .custom-module { + color: #fff; + margin-left: 0px; + display: inline; + border: 1px solid #fff; + 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: #fff; + background-color: #777; +} +.menuEditorItem .custom-module { + border-radius: 4px; + padding: 3px 5px; + color: #000; + background-color: #fff; +} +.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: #fff; + background-color: #777; + padding: 5px 7px; + font-weight: bold; +} +.record-header .custom-module { + font-size: 30px; +} +.moduleIcon .custom-module { + font-weight: bold; } \ No newline at end of file diff --git a/modules/Calendar/models/Module.php b/modules/Calendar/models/Module.php index f355e427b91c5355237794793e1204524ac13919..3adba64520aaade509c48a4c4b182371b01b8fd1 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) { + $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/views/Edit.php b/modules/Calendar/views/Edit.php index d663bf46def546190db3d274cd2616e9f527a792..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]; diff --git a/modules/Migration/schema/701_to_710.php b/modules/Migration/schema/701_to_710.php index fb2d6ffffccb7128abf613a4ef459cca52734f92..717c6f6485baa2f5aab482d92110e7aac2becfb4 100644 --- a/modules/Migration/schema/701_to_710.php +++ b/modules/Migration/schema/701_to_710.php @@ -138,6 +138,37 @@ if (defined('VTIGER_UPGRADE')) { } //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 + //Update existing package modules Install_Utils_Model::installModules(); -} \ No newline at end of file +} diff --git a/modules/Vtiger/models/Module.php b/modules/Vtiger/models/Module.php index 4f263ab3a216e331a43f6f6dcab9edbc22299e14..f1ffd66ce63cc8cd9ee46e8cba7f8e23d4f62f30 100644 --- a/modules/Vtiger/models/Module.php +++ b/modules/Vtiger/models/Module.php @@ -1990,4 +1990,27 @@ class Vtiger_Module_Model extends Vtiger_Module { 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/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 31f58f1edc83e873b38254a5803abb0a0cd53909..2a77986d4c88f4ecde3e33453bfc132dbb0e162b 100644 --- a/pkg/vtiger/modules/ExtensionStore/settings/models/Extension.php +++ b/pkg/vtiger/modules/ExtensionStore/settings/models/Extension.php @@ -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/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/schema/DatabaseSchema.xml b/schema/DatabaseSchema.xml index 95d52998bb0736ba1ba6b4a749ff3d4fa43a1c27..91791027b1a70c5d762ee1563e879afcfb242490 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> diff --git a/vtlib/Vtiger/ModuleBasic.php b/vtlib/Vtiger/ModuleBasic.php index 9b834cf9351cd7c2e69b33301bc9bcfa4a7c87b9..e6132cec79a83b24c7c3d82c0a061b89e0127e08 100644 --- a/vtlib/Vtiger/ModuleBasic.php +++ b/vtlib/Vtiger/ModuleBasic.php @@ -90,6 +90,7 @@ class Vtiger_ModuleBasic { // 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'];