Просмотр исходного кода

#3677 - Albums: Add possibility to report media.

RomanL 4 лет назад
Родитель
Сommit
dcf8d0b9e2

+ 2 - 0
install/sql/system.sql

@@ -1715,6 +1715,8 @@ CREATE TABLE IF NOT EXISTS `sys_cmts_reports_track` (
   `type` varchar(32) NOT NULL default '',
   `text` text NOT NULL default '',
   `date` int(11) NOT NULL default '0',
+  `checked_by` int(11) NOT NULL default '0',    
+  `status` tinyint(11) NOT NULL default '0',
   PRIMARY KEY (`id`),
   KEY `report` (`object_id`, `author_nip`)
 );

+ 1 - 0
modules/boonex/english/data/langs/system/en.xml

@@ -2072,6 +2072,7 @@ If it is not enabled then please consider implement this optimization, since it
 	<string name="_sys_block_types_skeletons"><![CDATA[Skeletons]]></string>
 	<string name="_sys_block_types_system"><![CDATA[System]]></string>
   
+  <string name="_sys_cmts"><![CDATA[Comments]]></string>
   <string name="_sys_cmts_administration_grid_column_title_adm_cmt_text"><![CDATA[Text]]></string>
   <string name="_sys_cmts_administration_grid_column_title_adm_cmt_time"><![CDATA[Added]]></string>
   <string name="_sys_cmts_administration_grid_column_title_adm_cmt_author_id"><![CDATA[Author]]></string>

+ 1 - 0
modules/boonex/russian/data/langs/system/ru.xml

@@ -2057,6 +2057,7 @@
 	<string name="_sys_block_types_skeletons"><![CDATA[Скелеты]]></string>
 	<string name="_sys_block_types_system"><![CDATA[Система]]></string>
   
+  <string name="_sys_cmts"><![CDATA[комментарии]]></string>
   <string name="_sys_cmts_administration_grid_column_title_adm_cmt_text"><![CDATA[Текст]]></string>
   <string name="_sys_cmts_administration_grid_column_title_adm_cmt_time"><![CDATA[Добавлено]]></string>
   <string name="_sys_cmts_administration_grid_column_title_adm_cmt_author_id"><![CDATA[Автор]]></string>

+ 13 - 40
template/scripts/BxBaseDashboardServices.php

@@ -18,41 +18,16 @@ class BxBaseDashboardServices extends BxDol
         $oMenu = BxDolMenu::getObjectInstance('sys_dashboard_reports');
         if(!$oMenu)
             return '';
-
-        $BxDolModuleQuery = BxDolModuleQuery::getInstance();
-        $aModules = $BxDolModuleQuery->getModulesBy(array('type' => 'modules', 'active' => 1));
-    	$aModulesList = array();
-        foreach($aModules as $iKey => $aModule){
-            $oModule = BxDolModule::getInstance($aModule['name']);
-            if ($oModule instanceof iBxDolContentInfoService){
-                $CNF = $oModule->_oConfig->CNF;
-                if (isset($CNF['OBJECT_REPORTS'])){
-                    $aModule['selected'] = false;
-                    $aModulesList[$aModule['uri']] = $aModule;
-                }
-                else{
-                    unset($aModules[$iKey]);
-                }
-            }
-            else{
-                unset($aModules[$iKey]);
-            }
-        }
-        $aModules = array_values($aModules);
-        $sSelected = bx_get('module');
+        
+        $aSystems = BxDolReport::getSystems();
+        $sSelected = bx_get('object');
         
         if ($sSelected == ''){
-            $aModulesList[$aModules[0]['uri']]['selected'] = true; 
-            $sSelected = $aModules[0]['uri'];
+            $sSelected = reset($aSystems)['name'];
         }
-        else{
-            $aModulesList[$sSelected]['selected'] = true;
-        }
-        
-        $oMenu->setMenuData($aModulesList);
         
         $oGrid = BxDolGrid::getObjectInstance('sys_reports_administration');
-        $oGrid->setModule($aModulesList[$sSelected]['name']);
+        $oGrid->setObject($aSystems[$sSelected]['name']);
         
         if(!$oGrid)
             return '';
@@ -61,25 +36,23 @@ class BxBaseDashboardServices extends BxDol
         $oTemplate->addJs(array('BxDolReportsManageTools.js', 'BxDolGrid.js'));
 		$oTemplate->addCss(array('manage_tools.css'));
         $oTemplate->addJsTranslation(array('_sys_grid_search'));
-
+        
     	return array(
-            'content' => $oGrid->getCode(),
+            'content' =>$oGrid->getCode(),
             'menu' => $oMenu
         );
     }
     
-    public function serviceGetReportsCount($sModule, $iStatus)
+    public function serviceGetReportsCount($sObjectReposrt, $iStatus)
     {
-        $iCount = 0;
-        $oModule = BxDolModule::getInstance($sModule);
-        if ($oModule instanceof iBxDolContentInfoService){
-            $CNF = $oModule->_oConfig->CNF;
-            if (isset($CNF['OBJECT_REPORTS']))
-                $iCount = BxDolService::call($sModule, 'reports_count_by_status', array($iStatus));
-        }
+        $oReport = BxDolReport::getObjectInstance($sObjectReposrt, 0, false);
+        $iCount = $oReport->getCountByStatus($iStatus);
+        
         if ($iCount > 0)
             return $iCount;
+        
         return ;
+
     }
     
     public function serviceManageAudit()

+ 19 - 14
template/scripts/BxBaseMenuDashboardReportsManage.php

@@ -13,8 +13,6 @@
  */
 class BxBaseMenuDashboardReportsManage extends BxTemplMenuCustom
 {
-    protected $_aModulesList;
-
     public function __construct ($aObject, $oTemplate)
     {
         parent::__construct ($aObject);
@@ -25,34 +23,40 @@ class BxBaseMenuDashboardReportsManage extends BxTemplMenuCustom
         $this->_bDisplayAddons = true;
     }
 
-    public function setMenuData ($aModulesList)
-    {
-        $this->_aModulesList = $aModulesList;
-    }
     
     protected function getMenuItemsRaw ()
     {
         $aResult = array();
         $aUrl = bx_get_base_url_inline();
+        
+        $aSystems = BxDolReport::getSystems();
+        
+        $sSelected = bx_get('object');
+        
+        if ($sSelected == ''){
+            $sSelected = reset($aSystems)['name'];
+        }
        
-        foreach($this->_aModulesList as $aModule){
-            $aResult[$aModule['name']] = array(
-                'name' => $aModule['name'],
-                'title' => $aModule['title'],
-                'link' => bx_append_url_params($aUrl[0], array_merge($aUrl[1], array('module' => $aModule['uri']))),
+        foreach($aSystems as $aSystem){
+            $sName = $aSystem['name'];
+            $aResult[$sName] = array(
+                'name' => $sName,
+                'title' => _t('_' . $sName),
+                'link' => bx_append_url_params($aUrl[0], array_merge($aUrl[1], array('object' => $sName))),
                 'active' => true,
                 'addon' =>  serialize([
                     'module' => 'system',
                     'method' => 'get_reports_count',
                     'params' => [
-                        'module' => $aModule['name'],
+                        'module' => $sName,
                         'status' => BX_DOL_REPORT_STASUS_NEW
                     ],
                     'class' => 'TemplDashboardServices'
                     ]),
-                'selected' => $aModule['selected']
-            );                
+                'selected' => $sSelected == $sName ? true : false
+            );   
     	}
+        
         if(!empty($aResult) && is_array($aResult)){
             $aResult['more-auto'] = array(
                 'module' => 'system', 
@@ -64,6 +68,7 @@ class BxBaseMenuDashboardReportsManage extends BxTemplMenuCustom
                 'icon' => 'ellipsis-v',
             );
         }
+        
         return $aResult;
     }
     

+ 36 - 30
template/scripts/BxBaseReportsGrid.php

@@ -40,8 +40,8 @@ class BxBaseReportsGrid extends BxTemplGrid
             $this->_aQueryAppend[$this->_sFilter1Name] = $this->_sFilter1Value;
         }
 
-        if (bx_get('module_name')){
-            $this->setModule(bx_get('module_name'));
+        if (bx_get('object')){
+            $this->setObject(bx_get('object'));
         }
     }
     
@@ -50,14 +50,12 @@ class BxBaseReportsGrid extends BxTemplGrid
         return $this->getJsCode() . parent::getCode($isDisplayHeader);
     }
     
-    public function setModule($sModuleName)
+    public function setObject($sObjectName)
     {
-        $oModule = BxDolModule::getInstance($sModuleName);
-        $CNF = $oModule->_oConfig->CNF;
-        $oReport = BxDolReport::getObjectInstance($CNF['OBJECT_REPORTS'], -1, false);
+        $oReport = BxDolReport::getObjectInstance($sObjectName, -1, false);
         $this->_aReportSystemInfo = $oReport->getSystemInfo();
         $this->_aOptions['table'] = $this->_aReportSystemInfo['table_track'];
-        $this->_aQueryAppend['module_name'] = $sModuleName;
+        $this->_aQueryAppend['object'] = $sObjectName;
     }
     
     public function getJsCode()
@@ -84,14 +82,11 @@ class BxBaseReportsGrid extends BxTemplGrid
     private function _performActionStatus($iStatus, $sCmtsText)
     {
         $aIds = bx_get('ids');
-
-        $oModule = BxDolModule::getInstance($this->_aReportSystemInfo['module_name']);
-        $CNF = $oModule->_oConfig->CNF;
-
+        
         $iAffected = 0;
         $aIdsAffected = array ();
         foreach($aIds as $iId) {
-            $oReport = BxDolReport::getObjectInstance($CNF['OBJECT_REPORTS'], $iId, true);
+            $oReport = BxDolReport::getObjectInstance($this->_aReportSystemInfo['name'], $iId, true);
             $oReport->changeStatusReport($iStatus, bx_get_logged_profile_id(), _t($sCmtsText));
             $aIdsAffected[] = $iId;
             $iAffected++;
@@ -109,12 +104,9 @@ class BxBaseReportsGrid extends BxTemplGrid
     protected function _getCellNotes($mixedValue, $sKey, $aField, $aRow)
     {
         $mixedValue = '';
-        
-        $oModule = BxDolModule::getInstance($this->_aReportSystemInfo['module_name']);
-        $CNF = $oModule->_oConfig->CNF;
-        if (isset($CNF) && isset($CNF['OBJECT_NOTES'])){
-            $oCmts = BxDolCmts::getObjectInstance($CNF['OBJECT_NOTES'], $aRow['object_id']);
-            $mixedValue =  BxDolTemplate::getInstance()->parseLink('javascript:', $oCmts->getCommentsCount(), array("onclick" => "bx_get_notes(this, '" . $oModule->_aModule['uri'] . "', '" . $aRow['object_id'] . "')"));   
+        if ($this->_aReportSystemInfo['object_comment'] && $this->_aReportSystemInfo['object_comment'] != ''){
+            $oCmts = BxDolCmts::getObjectInstance($this->_aReportSystemInfo['object_comment'], $aRow['object_id']);
+            $mixedValue =  BxDolTemplate::getInstance()->parseLink('javascript:', $oCmts->getCommentsCount(), array("onclick" => "bx_get_notes(this, '" . $this->_aReportSystemInfo['name'] . "', '" . $aRow['object_id'] . "')"));   
         }
 
         return parent::_getCellDefault($mixedValue, $sKey, $aField, $aRow);
@@ -124,11 +116,9 @@ class BxBaseReportsGrid extends BxTemplGrid
     {
         $mixedValue = '';
         
-        $oModule = BxDolModule::getInstance($this->_aReportSystemInfo['module_name']);
-        $CNF = $oModule->_oConfig->CNF;
-        if (isset($CNF) && isset($CNF['OBJECT_NOTES'])){
-            $oCmts = BxDolCmts::getObjectInstance($CNF['OBJECT_NOTES'], -$aRow['id']);
-            $mixedValue =  BxDolTemplate::getInstance()->parseLink('javascript:', $oCmts->getCommentsCount(), array("onclick" => "bx_get_notes(this, '" . $oModule->_aModule['uri'] . "', '" . -$aRow['id'] . "')"));  
+        if ($this->_aReportSystemInfo['object_comment'] && $this->_aReportSystemInfo['object_comment'] != ''){
+            $oCmts = BxDolCmts::getObjectInstance($this->_aReportSystemInfo['object_comment'], -$aRow['id']);
+            $mixedValue =  BxDolTemplate::getInstance()->parseLink('javascript:', $oCmts->getCommentsCount(), array("onclick" => "bx_get_notes(this, '" . $this->_aReportSystemInfo['name'] . "', '" . - $aRow['id'] . "')"));  
         }
 
         return parent::_getCellDefault($mixedValue, $sKey, $aField, $aRow);
@@ -137,14 +127,30 @@ class BxBaseReportsGrid extends BxTemplGrid
     protected function _getCellObject ($mixedValue, $sKey, $aField, $aRow)
     {
         $mixedValue = '';
-        $sTitle = bx_srv($this->_aReportSystemInfo['module_name'], 'get_title', array(0 => $aRow['object_id'])); 
-        if ($sTitle != ''){
-            $mixedValue =  $this->_oTemplate->parseHtmlByName('account_link.html', array(
-                'href' => bx_srv($this->_aReportSystemInfo['module_name'], 'get_link', array(0 => $aRow['object_id'])),
-                'title' =>  $sTitle,
-                'content' =>  $sTitle
-            ));
+        $sTitle = '';
+        $sUrl = '';
+        if ($this->_aReportSystemInfo['name'] == 'sys_cmts'){
+            $oCmts = BxDolCmts::getObjectInstanceByUniqId($aRow['object_id']);
+            $aCmts = BxDolCmtsQuery::getCommentByUniq($aRow['object_id']);
+            $sTitle = $oCmts->getViewText($aCmts['cmt_id']);
+            $sUrl = $oCmts->getViewUrl($aCmts['cmt_id']);
         }
+        else{
+            $oContentInfo = BxDolContentInfo::getObjectInstance($this->_aReportSystemInfo['name']);
+            $sTitle = $oContentInfo ? $oContentInfo->getContentTitle($aRow['object_id']) : '';
+            
+            $oReport = BxDolReport::getObjectInstance($this->_aReportSystemInfo['name'], $aRow['object_id']);
+            $sUrl = BxDolPermalinks::getInstance()->permalink($oReport->getBaseUrl());
+        }
+ 
+        if ($sTitle == '')
+             $sTitle = _t('_Empty');
+        
+        $mixedValue =  $this->_oTemplate->parseHtmlByName('account_link.html', array(
+            'href' => $sUrl,
+            'title' =>  $sTitle,
+            'content' =>  $sTitle
+        ));
         
         return parent::_getCellDefault($mixedValue, $sKey, $aField, $aRow);
     }