[Vtigercrm-developers] DETAILVIEWWIDGET

Pabiszczak, Błażej b.pabiszczak at opensaas.pl
Mon Oct 13 15:36:19 GMT 2014


Do you see "*Widgets*" module in settings in our Yetiforce?
https://test.yetiforce.com/index.php?module=Widgets&parent=Settings&view=Index&block=2&fieldid=58


Z poważaniem / Regards
Błażej Pabiszczak
M: +48.884999123
E: b.pabiszczak at opensaas.pl

2014-10-13 15:31 GMT+02:00 IT-Solutions4You <info at its4you.sk>:

> And what's now? How can we (community) help vtiger to implement this:
>
> https://discussions.vtiger.com/index.php?p=/discussion/
> 171186/detail-view-widgets-implementation/p1
>
> Matus.
>
> Dňa 13. 10. 2014 13:04 Alan Lord  wrote / napísal(a):
>
>> Ah,
>>
>> I think you might be right about vtiger_links & DETALVIEWWIDGETS...
>>
>> I've started looking at creating a module which allows the user to add a
>> custom widget to other modules via my extension module...
>>
>> But looking at the code in the standard models in
>> /modules/Vtiger/models/{Detail.php,DetailView.php} it looks like
>> getDetailViewLinks() and getWidgets() will only *ever* return specific
>> widgets and will override information in the vtiger_links table such as
>> linkurl for example.
>>
>> Is this really the case or am I missing something? Is there no way for
>> me to add a new entry in the vtiger_links table such that, for example,
>> I could add a new "Libertus" widget that gets displayed on the Contacts
>> module Summary page or DetailView page?
>>
>>      /**
>>>      * Function to get the detail view links (links and widgets)
>>>      * @param <array> $linkParams - parameters which will be used to
>>> calicaulate the params
>>>      * @return <array> - array of link models in the format as below
>>>      *                   array('linktype'=>list of link models);
>>>      */
>>>     public function getDetailViewLinks($linkParams) {
>>>         $linkTypes = array('DETAILVIEWBASIC','DETAILVIEW');
>>>         $moduleModel = $this->getModule();
>>>         $recordModel = $this->getRecord();
>>>
>>>         $moduleName = $moduleModel->getName();
>>>         $recordId = $recordModel->getId();
>>>
>>>         $detailViewLink = array();
>>>
>>>         if(Users_Privileges_Model::isPermitted($moduleName,
>>> 'EditView', $recordId)) {
>>>             $detailViewLinks[] = array(
>>>                     'linktype' => 'DETAILVIEWBASIC',
>>>                     'linklabel' => 'LBL_EDIT',
>>>                     'linkurl' => $recordModel->getEditViewUrl(),
>>>                     'linkicon' => ''
>>>             );
>>>
>>>             foreach ($detailViewLinks as $detailViewLink) {
>>>                 $linkModelList['DETAILVIEWBASIC'][] =
>>> Vtiger_Link_Model::getInstanceFromValues($detailViewLink);
>>>             }
>>>         }
>>>
>>>         $linkModelListDetails =
>>> Vtiger_Link_Model::getAllByType($moduleModel->getId(),$linkTypes,$
>>> linkParams);
>>>
>>>         //Mark all detail view basic links as detail view links.
>>>         //Since ui will be look ugly if you need many basic links
>>>         $detailViewBasiclinks = $linkModelListDetails['
>>> DETAILVIEWBASIC'];
>>>         unset($linkModelListDetails['DETAILVIEWBASIC']);
>>>
>>>         if(Users_Privileges_Model::isPermitted($moduleName, 'Delete',
>>> $recordId)) {
>>>             $deletelinkModel = array(
>>>                     'linktype' => 'DETAILVIEW',
>>>                     'linklabel' => sprintf("%s %s",
>>> getTranslatedString('LBL_DELETE', $moduleName), vtranslate('SINGLE_'.
>>> $moduleName, $moduleName)),
>>>                     'linkurl' =>
>>> 'javascript:Vtiger_Detail_Js.deleteRecord("'.$recordModel->
>>> getDeleteUrl().'")',
>>>
>>>                     'linkicon' => ''
>>>             );
>>>             $linkModelList['DETAILVIEW'][] =
>>> Vtiger_Link_Model::getInstanceFromValues($deletelinkModel);
>>>         }
>>>
>>>         if(Users_Privileges_Model::isPermitted($moduleName,
>>> 'EditView', $recordId)) {
>>>             $duplicateLinkModel = array(
>>>                         'linktype' => 'DETAILVIEWBASIC',
>>>                         'linklabel' => 'LBL_DUPLICATE',
>>>                         'linkurl' =>
>>> $recordModel->getDuplicateRecordUrl(),
>>>                         'linkicon' => ''
>>>                 );
>>>             $linkModelList['DETAILVIEW'][] =
>>> Vtiger_Link_Model::getInstanceFromValues($duplicateLinkModel);
>>>         }
>>>
>>>         if(!empty($detailViewBasiclinks)) {
>>>             foreach($detailViewBasiclinks as $linkModel) {
>>>                 // Remove view history, needed in vtiger5 to see
>>> history but not in vtiger6
>>>                 if($linkModel->linklabel == 'View History') {
>>>                     continue;
>>>                 }
>>>                 $linkModelList['DETAILVIEW'][] = $linkModel;
>>>             }
>>>         }
>>>
>>>         $relatedLinks = $this->getDetailViewRelatedLinks();
>>>
>>>         foreach($relatedLinks as $relatedLinkEntry) {
>>>             $relatedLink =
>>> Vtiger_Link_Model::getInstanceFromValues($relatedLinkEntry);
>>>             $linkModelList[$relatedLink->getType()][] = $relatedLink;
>>>         }
>>>
>>>         $widgets = $this->getWidgets();
>>>         foreach($widgets as $widgetLinkModel) {
>>>             $linkModelList['DETAILVIEWWIDGET'][] = $widgetLinkModel;
>>>         }
>>>
>>>         $currentUserModel = Users_Record_Model::getCurrentUserModel();
>>>         if($currentUserModel->isAdminUser()) {
>>>             $settingsLinks = $moduleModel->getSettingLinks();
>>>             foreach($settingsLinks as $settingsLink) {
>>>                 $linkModelList['DETAILVIEWSETTING'][] =
>>> Vtiger_Link_Model::getInstanceFromValues($settingsLink);
>>>             }
>>>         }
>>>
>>>         return $linkModelList;
>>>     }
>>>
>>
>>
>>
>>      /**
>>>      * Function to get the detail view widgets
>>>      * @return <Array> - List of widgets , where each widget is an
>>> Vtiger_Link_Model
>>>      */
>>>     public function getWidgets() {
>>>         $moduleModel = $this->getModule();
>>>         $widgets = array();
>>>
>>>         $modCommentsModel =
>>> Vtiger_Module_Model::getInstance('ModComments');
>>>         if($moduleModel->isCommentEnabled() &&
>>> $modCommentsModel->isPermitted('DetailView')) {
>>>             $widgets[] = array(
>>>                     'linktype' => 'DETAILVIEWWIDGET',
>>>                     'linklabel' => 'ModComments',
>>>                     'linkurl' =>
>>> 'module='.$this->getModuleName().'&view=Detail&
>>> record='.$this->getRecord()->getId().
>>>
>>>                             '&mode=showRecentComments&page=1&limit=5'
>>>             );
>>>         }
>>>
>>>         if($moduleModel->isTrackingEnabled()) {
>>>             $widgets[] = array(
>>>                     'linktype' => 'DETAILVIEWWIDGET',
>>>                     'linklabel' => 'LBL_UPDATES',
>>>                     'linkurl' =>
>>> 'module='.$this->getModuleName().'&view=Detail&
>>> record='.$this->getRecord()->getId().
>>>
>>>                             '&mode=showRecentActivities&page=1&limit=5',
>>>             );
>>>         }
>>>
>>>         $widgetLinks = array();
>>>         foreach ($widgets as $widgetDetails) {
>>>             $widgetLinks[] =
>>> Vtiger_Link_Model::getInstanceFromValues($widgetDetails);
>>>         }
>>>         return $widgetLinks;
>>>     }
>>>
>>
>> Al
>>
>>
>> _______________________________________________
>> http://www.vtiger.com/
>>
>>
>
> _______________________________________________
> http://www.vtiger.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.vtigercrm.com/pipermail/vtigercrm-developers/attachments/20141013/3521fdac/attachment-0001.html>


More information about the vtigercrm-developers mailing list