AntonLV 2 лет назад
Родитель
Сommit
4e5a4c1fab

+ 29 - 0
modules/boonex/ads/classes/BxAdsChartGrowth.php

@@ -0,0 +1,29 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    Ads Ads
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+class BxAdsChartGrowth extends BxDolChartGrowth
+{
+    protected function __construct($aObject)
+    {
+        parent::__construct($aObject);
+    }
+    
+    public function actionLoadDataByInterval()
+    {
+        $this->addMarkers([
+            'content_id' => (int)bx_get('content_id')
+        ]);
+
+        return parent::actionLoadDataByInterval();
+    }
+}
+
+/** @} */

+ 29 - 0
modules/boonex/ads/classes/BxAdsChartGrowthSpeed.php

@@ -0,0 +1,29 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    Ads Ads
+ * @ingroup     UnaModules
+ *
+ * @{
+ */
+
+class BxAdsChartGrowthSpeed extends BxDolChartGrowthSpeed
+{
+    protected function __construct($aObject)
+    {
+        parent::__construct($aObject);
+    }
+
+    public function actionLoadDataByInterval()
+    {
+        $this->addMarkers([
+            'content_id' => (int)bx_get('content_id')
+        ]);
+
+        return parent::actionLoadDataByInterval();
+    }
+}
+
+/** @} */

+ 7 - 0
modules/boonex/ads/classes/BxAdsConfig.php

@@ -28,8 +28,11 @@ class BxAdsConfig extends BxBaseModTextConfig
 
         $aMenuItems2Methods = array (
             'approve' => 'checkAllowedApprove',
+
+            'view-ad-promotion' => 'checkAllowedEdit',
             'edit-ad' => 'checkAllowedEdit',
             'edit-ad-budget' => 'checkAllowedEdit',
+
             'delete-ad' => 'checkAllowedDelete',
         );
 
@@ -212,6 +215,7 @@ class BxAdsConfig extends BxBaseModTextConfig
             'OBJECT_GRID_OFFERS' => 'bx_ads_offers',
             'OBJECT_GRID_OFFERS_ALL' => 'bx_ads_offers_all',
             'OBJECT_UPLOADERS' => array('bx_ads_simple', 'bx_ads_html5'),
+            'OBJECT_PROMOTION_CHARTS' => ['bx_ads_promotion_growth', 'bx_ads_promotion_growth_speed'],
 
             // menu items which visibility depends on custom visibility checking
             'MENU_ITEM_TO_METHOD' => array (
@@ -219,6 +223,7 @@ class BxAdsConfig extends BxBaseModTextConfig
                     'create-ad' => 'checkAllowedAdd',
                 ),
                 'bx_ads_view' => $aMenuItems2Methods,
+                'bx_ads_view_submenu' => $aMenuItems2Methods
             ),
 
             // informer messages
@@ -301,6 +306,8 @@ class BxAdsConfig extends BxBaseModTextConfig
                 'txt_display_view' => '_bx_ads_txt_display_title_view',
                 'txt_cd_ct_product' => '_bx_ads_txt_cd_ct_product',
                 'txt_cd_ct_promotion' => '_bx_ads_txt_cd_ct_promotion',
+                'chart_label_impressions' => '_bx_ads_chart_label_impressions',
+                'chart_label_clicks' => '_bx_ads_chart_label_clicks'
             ),
         ));
         

+ 5 - 0
modules/boonex/ads/classes/BxAdsMenuViewActions.php

@@ -61,6 +61,11 @@ class BxAdsMenuViewActions extends BxBaseModTextMenuViewActions
         return $this->_getMenuItemByNameActions($aItem);
     }
 
+    protected function _getMenuItemViewAdPromotion($aItem)
+    {
+        return $this->_getMenuItemByNameActions($aItem);
+    }
+
     protected function _getMenuItemDeleteAd($aItem)
     {
         return $this->_getMenuItemByNameActions($aItem);

+ 10 - 0
modules/boonex/ads/classes/BxAdsModule.php

@@ -551,6 +551,16 @@ class BxAdsModule extends BxBaseModTextModule
         return $oCmts->getRatingBlock(array('in_designbox' => false));
     }
 
+    public function serviceEntityPromotionGrowth($iContentId = 0)
+    {
+        return $this->_serviceTemplateFunc('entryPromotionGrowth', $iContentId);
+    }
+
+    public function serviceEntityPromotionSummary($iContentId = 0)
+    {
+        return $this->_serviceTemplateFunc('entryPromotionSummary', $iContentId);
+    }
+
     /**
      * @page service Service Calls
      * @section bx_ads Ads 

+ 2 - 2
modules/boonex/ads/classes/BxAdsSearchResult.php

@@ -176,7 +176,7 @@ class BxAdsSearchResult extends BxBaseModTextSearchResult
             $this->aCurrent['join'] = [];
 
         $this->aCurrent['join'][] = [
-            'type' => 'INNER',
+            'type' => 'LEFT',
             'table' => $CNF['TABLE_PROMO_TRACKER'],
             'mainField' => $CNF['FIELD_ID'],
             'on_sql' => $this->oModule->_oDb->prepareAsString("`{$CNF['TABLE_PROMO_TRACKER']}`.`entry_id`=`{$this->aCurrent['table']}`.`{$CNF['FIELD_ID']}` AND `{$CNF['TABLE_PROMO_TRACKER']}`.`date`=?", $iDay),
@@ -189,7 +189,7 @@ class BxAdsSearchResult extends BxBaseModTextSearchResult
 
         $this->aCurrent['restriction_sql'] = "";
         $this->aCurrent['restriction_sql'] .= " AND `{$this->aCurrent['table']}`.`{$CNF['FIELD_BUDGET_TOTAL']}` > ({$fPromotionCpm} * `{$this->aCurrent['table']}`.`impressions`)/1000";
-        $this->aCurrent['restriction_sql'] .= " AND `{$this->aCurrent['table']}`.`{$CNF['FIELD_BUDGET_DAILY']}` > ({$fPromotionCpm} * `{$CNF['TABLE_PROMO_TRACKER']}`.`impressions`)/1000";
+        $this->aCurrent['restriction_sql'] .= " AND (ISNULL(`{$CNF['TABLE_PROMO_TRACKER']}`.`impressions`) OR `{$this->aCurrent['table']}`.`{$CNF['FIELD_BUDGET_DAILY']}` > ({$fPromotionCpm} * `{$CNF['TABLE_PROMO_TRACKER']}`.`impressions`)/1000)";
     }
 }
 

+ 103 - 0
modules/boonex/ads/classes/BxAdsTemplate.php

@@ -23,6 +23,109 @@ class BxAdsTemplate extends BxBaseModTextTemplate
         $this->aMethodsToCallAddJsCss[] = 'categories';
     }
 
+    public function entryPromotionGrowth($aContentInfo)
+    {
+        $CNF = &$this->_oConfig->CNF;
+
+        $sDateFrom = date('Y-m-d', time() - 30*24*60*60);
+        $sDateTo = date('Y-m-d', time());
+
+        $aForm = [
+            'form_attrs' => [
+                'id' => 'bx_chart_controls',
+                'action' => ''
+            ],
+            'inputs' => [
+                'object' => [
+                    'type' => 'select',
+                    'name' => 'object',
+                    'caption' => _t('_sys_chart_growth_object'),
+                    'info' => '',
+                    'value' => '',
+                    'values' => [],
+                    'required' => '0',
+                    'attrs' => [
+                        'id' => 'bx_chart_growth_objects',
+                        'onchange' => 'oBxDolChartGrowth.loadData()'
+                    ],
+                ],
+                'date_from' => [
+                    'type' => 'datepicker',
+                    'name' => 'date_from',
+                    'caption' => _t('_sys_chart_growth_date_from'),
+                    'info' => '',
+                    'value' => $sDateFrom,
+                    'values' => [],
+                    'required' => '0',
+                    'attrs' => [
+                        'id' => 'bx_chart_growth_date_from',
+                        'onchange' => 'oBxDolChartGrowth.loadData()'
+                    ],
+                ],
+                'date_to' => [
+                    'type' => 'datepicker',
+                    'name' => 'date_to',
+                    'caption' => _t('_sys_chart_growth_date_to'),
+                    'info' => '',
+                    'value' => $sDateTo,
+                    'values' => [],
+                    'required' => '0',
+                    'attrs' => [
+                        'id' => 'bx_chart_growth_date_to',
+                        'onchange' => 'oBxDolChartGrowth.loadData()'
+                    ],
+                ]
+            ]
+        ];
+
+        foreach($CNF['OBJECT_PROMOTION_CHARTS'] as $sChart) {
+            $aChart = BxDolChartQuery::getChartObject($sChart);
+            if(!$aChart)
+                continue;
+
+            $aForm['inputs']['object']['values'][] = ['key' => $sChart, 'value' => _t($aChart['title'])];
+        }
+
+        $oForm = new BxTemplFormView($aForm);
+
+        $oTemplate = BxDolTemplate::getInstance();
+        $oTemplate->addJs(['chart.min.js', 'BxDolChartGrowth.js']);
+        $oTemplate->addCss(['chart.css']);
+
+        return $oTemplate->parseHtmlByName('chart_growth.html', [
+            'controls' => $oForm->getCode(),
+            'date_from' => $sDateFrom,
+            'date_to' => $sDateTo,
+            'request_params' => json_encode([
+                'content_id' => $aContentInfo[$CNF['FIELD_ID']]
+            ]),
+        ]);
+    }
+    
+    public function entryPromotionSummary($aContentInfo)
+    {
+        $CNF = &$this->_oConfig->CNF;
+
+        $aTmplVarsDataLabels = $aTmplVarsDataSet = [];
+        foreach(['impressions', 'clicks'] as $sItem) {
+            $sTitle = bx_html_attribute(_t($CNF['T']['chart_label_' . $sItem]));
+            $iValue = (int)$aContentInfo[$sItem];
+
+            $aTmplVarsDataLabels[] = $sTitle . ' - ' . $iValue;
+            $aTmplVarsDataSet['data'][] = $iValue;
+            $aTmplVarsDataSet['backgroundColor'][] = '#' . dechex(rand(0x000000, 0xFFFFFF));
+        }
+
+        $this->addJs(['chart.min.js']);
+        $this->addCss(['chart.css']);
+        return $this->parseHtmlByName('chart_stats.html', [
+            'chart_data' => json_encode([
+                'labels' => $aTmplVarsDataLabels,
+                'datasets' => [$aTmplVarsDataSet]
+            ])
+        ]);
+    }
+
     public function entryOfferAccepted($iUserId, $aContent, $aOffer)
     {
         $CNF = &$this->_oConfig->CNF;

+ 15 - 1
modules/boonex/ads/install/langs/en.xml

@@ -201,8 +201,12 @@
     <string name="_bx_ads_page_block_title_entry_author"><![CDATA[Author]]></string>
     <string name="_bx_ads_page_block_title_entry_actions"><![CDATA[Actions]]></string>
     <string name="_bx_ads_page_block_title_entry_comments"><![CDATA[Comments]]></string>
-	<string name="_bx_ads_page_block_title_entry_reports"><![CDATA[Reports]]></string>
+    <string name="_bx_ads_page_block_title_entry_reports"><![CDATA[Reports]]></string>
     <string name="_bx_ads_page_block_title_entry_comments_link"><![CDATA[Comments to <a href="{entry_link}">{title}</a>]]></string>
+    <string name="_bx_ads_page_block_title_sys_entry_promotion_growth"><![CDATA[Promotion (Growth)]]></string>
+    <string name="_bx_ads_page_block_title_entry_promotion_growth"><![CDATA[Promotion for <a href="{entry_link}">{title}</a>]]></string>
+    <string name="_bx_ads_page_block_title_sys_entry_promotion_summary"><![CDATA[Promotion (Summary)]]></string>
+    <string name="_bx_ads_page_block_title_entry_promotion_summary"><![CDATA[Summary]]></string>
     <string name="_bx_ads_page_block_title_entry_reviews"><![CDATA[Reviews]]></string>
     <string name="_bx_ads_page_block_title_entry_reviews_link"><![CDATA[Reviews to <a href="{entry_link}">{title}</a>]]></string>
     <string name="_bx_ads_page_block_title_entry_reviews_rating"><![CDATA[Rating]]></string>
@@ -230,6 +234,8 @@
     <string name="_bx_ads_page_block_title_favorites_entries_info"><![CDATA[Info]]></string>
     <string name="_bx_ads_page_title_sys_view_entry_comments"><![CDATA[Ad Comments]]></string>
     <string name="_bx_ads_page_title_view_entry_comments"><![CDATA[Comments to {title}]]></string>
+    <string name="_bx_ads_page_title_sys_view_entry_promotion"><![CDATA[Ad Promotion]]></string>
+    <string name="_bx_ads_page_title_view_entry_promotion"><![CDATA[Promotion for {title}]]></string>
     <string name="_bx_ads_page_title_sys_entries_of_author"><![CDATA[Ads of author]]></string>
     <string name="_bx_ads_page_title_entries_of_author"><![CDATA[Ads by {display_name}]]></string>
     <string name="_bx_ads_page_title_sys_entries_in_context"><![CDATA[Ads in context]]></string>
@@ -318,6 +324,8 @@
     <string name="_bx_ads_menu_item_title_edit_entry"><![CDATA[Edit]]></string>
     <string name="_bx_ads_menu_item_title_system_edit_entry_budget"><![CDATA[Edit budget]]></string>
     <string name="_bx_ads_menu_item_title_edit_entry_budget"><![CDATA[Edit budget]]></string>
+    <string name="_bx_ads_menu_item_title_system_view_promotion"><![CDATA[Promotion]]></string>
+    <string name="_bx_ads_menu_item_title_view_promotion"><![CDATA[Promotion]]></string>
     <string name="_bx_ads_menu_item_title_system_delete_entry"><![CDATA[Delete]]></string>
     <string name="_bx_ads_menu_item_title_delete_entry"><![CDATA[Delete]]></string>
     <string name="_bx_ads_menu_item_title_system_mark_shipped"><![CDATA[Mark as shipped]]></string>
@@ -340,7 +348,9 @@
     <string name="_bx_ads_menu_set_title_view_entry_submenu"><![CDATA[View Ad Submenu]]></string>
     <string name="_bx_ads_menu_item_title_view_entry_submenu_entry"><![CDATA[Ad]]></string>
     <string name="_bx_ads_menu_item_title_view_entry_submenu_comments"><![CDATA[Comments]]></string>
+    <string name="_bx_ads_menu_item_title_view_entry_submenu_promotion"><![CDATA[Promotion]]></string>
     <string name="_bx_ads_menu_item_title_system_view_entry_comments"><![CDATA[Ad Comments]]></string>
+    <string name="_bx_ads_menu_item_title_system_view_entry_promotion"><![CDATA[Ad Promotion]]></string>
     <string name="_bx_ads_menu_item_title_system_view_entries_author"><![CDATA[Ads]]></string>
     <string name="_bx_ads_menu_item_title_view_entries_author"><![CDATA[Ads]]></string>
     <string name="_bx_ads_menu_item_title_system_view_entries_in_context"><![CDATA[Ads]]></string>
@@ -427,6 +437,10 @@
 
     <string name="_bx_ads_chart_growth"><![CDATA[Ads: Growth]]></string>
     <string name="_bx_ads_chart_growth_speed"><![CDATA[Ads: Growth Speed]]></string>
+    <string name="_bx_ads_chart_promotion_growth"><![CDATA[Ad Promotion: Growth]]></string>
+    <string name="_bx_ads_chart_promotion_growth_speed"><![CDATA[Ad Promotion: Growth Speed]]></string>
+    <string name="_bx_ads_chart_label_impressions"><![CDATA[Impressions]]></string>
+    <string name="_bx_ads_chart_label_clicks"><![CDATA[Clicks]]></string>
 
     <string name="_bx_ads_search_extended"><![CDATA[Ads Search]]></string>
     <string name="_bx_ads_search_extended_cmts"><![CDATA[Ads Comments Search]]></string>

+ 16 - 1
modules/boonex/ads/install/sql/enable.sql

@@ -93,6 +93,14 @@ INSERT INTO `sys_objects_page`(`object`, `title_system`, `title`, `module`, `lay
 INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
 ('bx_ads_view_entry_comments', 1, 'bx_ads', '_bx_ads_page_block_title_entry_comments', '_bx_ads_page_block_title_entry_comments_link', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:6:"bx_ads";s:6:"method";s:15:"entity_comments";}', 0, 0, 1);
 
+-- PAGE: view entry promotion
+INSERT INTO `sys_objects_page`(`object`, `title_system`, `title`, `module`, `layout_id`, `visible_for_levels`, `visible_for_levels_editable`, `uri`, `url`, `meta_description`, `meta_keywords`, `meta_robots`, `cache_lifetime`, `cache_editable`, `deletable`, `override_class_name`, `override_class_file`) VALUES 
+('bx_ads_view_entry_promotion', '_bx_ads_page_title_sys_view_entry_promotion', '_bx_ads_page_title_view_entry_promotion', 'bx_ads', 2, 2147483647, 1, 'view-ad-promotion', '', '', '', '', 0, 1, 0, 'BxAdsPageEntry', 'modules/boonex/ads/classes/BxAdsPageEntry.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `order`) VALUES 
+('bx_ads_view_entry_promotion', 1, 'bx_ads', '_bx_ads_page_block_title_sys_entry_promotion_growth', '_bx_ads_page_block_title_entry_promotion_growth', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:6:"bx_ads";s:6:"method";s:23:"entity_promotion_growth";}', 0, 0, 1),
+('bx_ads_view_entry_promotion', 2, 'bx_ads', '_bx_ads_page_block_title_sys_entry_promotion_summary', '_bx_ads_page_block_title_entry_promotion_summary', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:6:"bx_ads";s:6:"method";s:24:"entity_promotion_summary";}', 0, 0, 1);
+
 -- PAGE: popular entries
 INSERT INTO `sys_objects_page`(`object`, `title_system`, `title`, `module`, `layout_id`, `visible_for_levels`, `visible_for_levels_editable`, `uri`, `url`, `meta_description`, `meta_keywords`, `meta_robots`, `cache_lifetime`, `cache_editable`, `deletable`, `override_class_name`, `override_class_file`) VALUES 
 ('bx_ads_popular', '_bx_ads_page_title_sys_entries_popular', '_bx_ads_page_title_entries_popular', 'bx_ads', 5, 2147483647, 1, 'ads-popular', 'page.php?i=ads-popular', '', '', '', 0, 1, 0, 'BxAdsPageBrowse', 'modules/boonex/ads/classes/BxAdsPageBrowse.php');
@@ -276,6 +284,7 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 ('bx_ads_view', 'bx_ads', 'view-offers', '_bx_ads_menu_item_title_system_view_offers', '_bx_ads_menu_item_title_view_offers', 'page.php?i=view-ad-offers&id={content_id}', '', '', 'handshake', '', 2147483647, 1, 0, 17),
 ('bx_ads_view', 'bx_ads', 'edit-ad', '_bx_ads_menu_item_title_system_edit_entry', '_bx_ads_menu_item_title_edit_entry', 'page.php?i=edit-ad&id={content_id}', '', '', 'pencil-alt', '', 2147483647, 1, 0, 20),
 ('bx_ads_view', 'bx_ads', 'edit-ad-budget', '_bx_ads_menu_item_title_system_edit_entry_budget', '_bx_ads_menu_item_title_edit_entry_budget', 'page.php?i=edit-ad-budget&id={content_id}', '', '', 'pencil-alt', '', 2147483647, 1, 0, 21),
+('bx_ads_view', 'bx_ads', 'view-ad-promotion', '_bx_ads_menu_item_title_system_view_promotion', '_bx_ads_menu_item_title_view_promotion', 'page.php?i=view-ad-promotion&id={content_id}', '', '', 'chart-pie', '', 2147483647, 1, 0, 22),
 ('bx_ads_view', 'bx_ads', 'delete-ad', '_bx_ads_menu_item_title_system_delete_entry', '_bx_ads_menu_item_title_delete_entry', 'page.php?i=delete-ad&id={content_id}', '', '', 'remove', '', 2147483647, 1, 0, 30),
 ('bx_ads_view', 'bx_ads', 'approve', '_sys_menu_item_title_system_va_approve', '_sys_menu_item_title_va_approve', 'javascript:void(0)', 'javascript:bx_approve(this,  ''{module_uri}'', {content_id});', '', 'check', '', 2147483647, 1, 0, 40),
 ('bx_ads_view', 'bx_ads', 'shipped', '_bx_ads_menu_item_title_system_mark_shipped', '_bx_ads_menu_item_title_mark_shipped', 'javascript:void(0)', 'javascript:{js_object}.shipped(this, {content_id})', '', 'truck', '', 2147483647, 1, 0, 50),
@@ -295,6 +304,7 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 ('bx_ads_view_actions', 'bx_ads', 'view-offers', '_bx_ads_menu_item_title_system_view_offers', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 17),
 ('bx_ads_view_actions', 'bx_ads', 'edit-ad', '_bx_ads_menu_item_title_system_edit_entry', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 20),
 ('bx_ads_view_actions', 'bx_ads', 'edit-ad-budget', '_bx_ads_menu_item_title_system_edit_entry_budget', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 21),
+('bx_ads_view_actions', 'bx_ads', 'view-ad-promotion', '_bx_ads_menu_item_title_system_view_promotion', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 22),
 ('bx_ads_view_actions', 'bx_ads', 'delete-ad', '_bx_ads_menu_item_title_system_delete_entry', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 30),
 ('bx_ads_view_actions', 'bx_ads', 'approve', '_sys_menu_item_title_system_va_approve', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 40),
 ('bx_ads_view_actions', 'bx_ads', 'shipped', '_bx_ads_menu_item_title_system_mark_shipped', '', '', '', '', '', '', '', 0, 2147483647, 1, 0, 50),
@@ -348,7 +358,8 @@ INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES
 
 INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES 
 ('bx_ads_view_submenu', 'bx_ads', 'view-ad', '_bx_ads_menu_item_title_system_view_entry', '_bx_ads_menu_item_title_view_entry_submenu_entry', 'page.php?i=view-ad&id={content_id}', '', '', '', '', 2147483647, 0, 0, 1),
-('bx_ads_view_submenu', 'bx_ads', 'view-ad-comments', '_bx_ads_menu_item_title_system_view_entry_comments', '_bx_ads_menu_item_title_view_entry_submenu_comments', 'page.php?i=view-ad-comments&id={content_id}', '', '', '', '', 2147483647, 0, 0, 2);
+('bx_ads_view_submenu', 'bx_ads', 'view-ad-comments', '_bx_ads_menu_item_title_system_view_entry_comments', '_bx_ads_menu_item_title_view_entry_submenu_comments', 'page.php?i=view-ad-comments&id={content_id}', '', '', '', '', 2147483647, 0, 0, 2),
+('bx_ads_view_submenu', 'bx_ads', 'view-ad-promotion', '_bx_ads_menu_item_title_system_view_entry_promotion', '_bx_ads_menu_item_title_view_entry_submenu_promotion', 'page.php?i=view-ad-promotion&id={content_id}', '', '', '', '', 2147483647, 0, 0, 3);
 
 -- MENU: custom menu for snippet meta info
 INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
@@ -526,6 +537,10 @@ INSERT INTO `sys_objects_chart` (`object`, `title`, `table`, `field_date_ts`, `f
 ('bx_ads_growth', '_bx_ads_chart_growth', 'bx_ads_entries', 'added', '', 'status,status_admin', '', 1, @iMaxOrderCharts + 1, 'BxDolChartGrowth', ''),
 ('bx_ads_growth_speed', '_bx_ads_chart_growth_speed', 'bx_ads_entries', 'added', '', 'status,status_admin', '', 1, @iMaxOrderCharts + 2, 'BxDolChartGrowthSpeed', '');
 
+INSERT INTO `sys_objects_chart` (`object`, `title`, `table`, `field_date_ts`, `field_date_dt`, `field_status`, `query`, `active`, `order`, `class_name`, `class_file`) VALUES
+('bx_ads_promotion_growth', '_bx_ads_chart_promotion_growth', 'bx_ads_promo_tracker', 'date', '', '', 'SELECT {field_date_formatted} AS `period`, SUM(`impressions`) AS {object} FROM {table} WHERE 1 AND `entry_id`=''{content_id}'' {where_inteval} GROUP BY `period` ORDER BY {field_date} ASC', 0, 0, 'BxAdsChartGrowth', 'modules/boonex/ads/classes/BxAdsChartGrowth.php'),
+('bx_ads_promotion_growth_speed', '_bx_ads_chart_promotion_growth_speed', 'bx_ads_promo_tracker', 'date', '', '', 'SELECT {field_date_formatted} AS `period`, SUM(`impressions`) AS {object} FROM {table} WHERE 1 AND `entry_id`=''{content_id}'' {where_inteval} GROUP BY `period` ORDER BY {field_date} ASC', 0, 0, 'BxAdsChartGrowthSpeed', 'modules/boonex/ads/classes/BxAdsChartGrowthSpeed.php');
+
 
 -- GRIDS: moderation tools
 INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `field_id`, `field_order`, `field_active`, `paginate_url`, `paginate_per_page`, `paginate_simple`, `paginate_get_start`, `paginate_get_per_page`, `filter_fields`, `filter_fields_translatable`, `filter_mode`, `sorting_fields`, `sorting_fields_translatable`, `visible_for_levels`, `override_class_name`, `override_class_file`) VALUES

+ 15 - 1
modules/boonex/russian/data/langs/bx_ads/ru.xml

@@ -201,8 +201,12 @@
     <string name="_bx_ads_page_block_title_entry_author"><![CDATA[Автор]]></string>
     <string name="_bx_ads_page_block_title_entry_actions"><![CDATA[Действия]]></string>
     <string name="_bx_ads_page_block_title_entry_comments"><![CDATA[Комментарии]]></string>
-	<string name="_bx_ads_page_block_title_entry_reports"><![CDATA[Жалобы]]></string>
+    <string name="_bx_ads_page_block_title_entry_reports"><![CDATA[Жалобы]]></string>
     <string name="_bx_ads_page_block_title_entry_comments_link"><![CDATA[Комментарии к <a href="{entry_link}">{title}</a>]]></string>
+    <string name="_bx_ads_page_block_title_sys_entry_promotion_growth"><![CDATA[Реклама (Развитие)]]></string>
+    <string name="_bx_ads_page_block_title_entry_promotion_growth"><![CDATA[Реклама <a href="{entry_link}">{title}</a> объявления]]></string>
+    <string name="_bx_ads_page_block_title_sys_entry_promotion_summary"><![CDATA[Реклама (Сводка)]]></string>
+    <string name="_bx_ads_page_block_title_entry_promotion_summary"><![CDATA[Сводка]]></string>
     <string name="_bx_ads_page_block_title_entry_reviews"><![CDATA[Обзоры]]></string>
     <string name="_bx_ads_page_block_title_entry_reviews_link"><![CDATA[Обзоры к <a href="{entry_link}">{title}</a>]]></string>
     <string name="_bx_ads_page_block_title_entry_reviews_rating"><![CDATA[Рейтинг]]></string>
@@ -230,6 +234,8 @@
     <string name="_bx_ads_page_block_title_favorites_entries_info"><![CDATA[Информация]]></string>
     <string name="_bx_ads_page_title_sys_view_entry_comments"><![CDATA[Комментарии к объявлению]]></string>
     <string name="_bx_ads_page_title_view_entry_comments"><![CDATA[Комментарии к  {title}]]></string>
+    <string name="_bx_ads_page_title_sys_view_entry_promotion"><![CDATA[Реклама объявления]]></string>
+    <string name="_bx_ads_page_title_view_entry_promotion"><![CDATA[Реклама {title} объявления]]></string>
     <string name="_bx_ads_page_title_sys_entries_of_author"><![CDATA[Объявления автора]]></string>
     <string name="_bx_ads_page_title_entries_of_author"><![CDATA[{display_name} - Объявления]]></string>
     <string name="_bx_ads_page_title_sys_entries_in_context"><![CDATA[Объявления в контексте]]></string>
@@ -318,6 +324,8 @@
     <string name="_bx_ads_menu_item_title_edit_entry"><![CDATA[Редактировать]]></string>
     <string name="_bx_ads_menu_item_title_system_edit_entry_budget"><![CDATA[Редактировать бюджет]]></string>
     <string name="_bx_ads_menu_item_title_edit_entry_budget"><![CDATA[Редактировать бюджет]]></string>
+    <string name="_bx_ads_menu_item_title_system_view_promotion"><![CDATA[Реклама]]></string>
+    <string name="_bx_ads_menu_item_title_view_promotion"><![CDATA[Реклама]]></string>
     <string name="_bx_ads_menu_item_title_system_delete_entry"><![CDATA[Удалить]]></string>
     <string name="_bx_ads_menu_item_title_delete_entry"><![CDATA[Удалить]]></string>
     <string name="_bx_ads_menu_item_title_system_mark_shipped"><![CDATA[Отметить как 'отправлен']]></string>
@@ -340,7 +348,9 @@
     <string name="_bx_ads_menu_set_title_view_entry_submenu"><![CDATA[Просмотреть объявление - Подменю]]></string>
     <string name="_bx_ads_menu_item_title_view_entry_submenu_entry"><![CDATA[Объявление]]></string>
     <string name="_bx_ads_menu_item_title_view_entry_submenu_comments"><![CDATA[Комментарии]]></string>
+    <string name="_bx_ads_menu_item_title_view_entry_submenu_promotion"><![CDATA[Реклама]]></string>
     <string name="_bx_ads_menu_item_title_system_view_entry_comments"><![CDATA[Комментарии к объявлению]]></string>
+    <string name="_bx_ads_menu_item_title_system_view_entry_promotion"><![CDATA[Реклама объявления]]></string>
     <string name="_bx_ads_menu_item_title_system_view_entries_author"><![CDATA[Объявления]]></string>
     <string name="_bx_ads_menu_item_title_view_entries_author"><![CDATA[Объявления]]></string>
     <string name="_bx_ads_menu_item_title_system_view_entries_in_context"><![CDATA[Объявления]]></string>
@@ -427,6 +437,10 @@
 
     <string name="_bx_ads_chart_growth"><![CDATA[Объявления: Развитие]]></string>
     <string name="_bx_ads_chart_growth_speed"><![CDATA[Объявления: Скорость развития]]></string>
+    <string name="_bx_ads_chart_promotion_growth"><![CDATA[Реклама объявления: Развитие]]></string>
+    <string name="_bx_ads_chart_promotion_growth_speed"><![CDATA[Реклама объявления: Скорость развития]]></string>
+    <string name="_bx_ads_chart_label_impressions"><![CDATA[Показы]]></string>
+    <string name="_bx_ads_chart_label_clicks"><![CDATA[Клики]]></string>
 
     <string name="_bx_ads_search_extended"><![CDATA[Поиск объявлений]]></string>
     <string name="_bx_ads_search_extended_cmts"><![CDATA[Поиск комментариев к объявлениям]]></string>