[Vtigercrm-developers] DETAILVIEWWIDGET

IT-Solutions4You info at its4you.sk
Mon Oct 13 13:31:34 GMT 2014


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/
>




More information about the vtigercrm-developers mailing list