[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