Explorar el Código

Ticket #1469 - Point №2

AntonLV hace 8 años
padre
commit
e1810503b4

+ 21 - 0
modules/base/general/classes/BxBaseModGeneralTemplate.php

@@ -85,6 +85,27 @@ class BxBaseModGeneralTemplate extends BxDolModuleTemplate
         return $this->getUnitMetaItem('custom', $sContent);
     }
 
+    public function getProfileLink($mixedProfile)
+    {
+    	if(!is_array($mixedProfile))
+            $mixedProfile = $this->getModule()->getProfileInfo((int)$mixedProfile);
+
+    	return $this->getLink('link', array(
+            'href' => $mixedProfile['link'],
+            'title' => bx_html_attribute(!empty($mixedProfile['title']) ? $mixedProfile['title'] : $mixedProfile['name']),
+            'content' => $mixedProfile['name']
+    	));
+    }
+
+    public function getLink($sTemplate, $aParams)
+    {
+    	return $this->parseHtmlByName($sTemplate . '.html', array(
+            'href' => $aParams['href'],
+            'title' => $aParams['title'],
+            'content' => $aParams['content']
+        ));
+    }
+
 	function entryText ($aData, $sTemplateName = 'entry-text.html')
     {
         $CNF = &$this->getModule()->_oConfig->CNF;

+ 0 - 0
modules/base/payment/template/link.html → modules/base/general/template/link.html


+ 3 - 14
modules/base/payment/classes/BxBaseModPaymentTemplate.php

@@ -92,25 +92,14 @@ class BxBaseModPaymentTemplate extends BxBaseModGeneralTemplate
     	$this->displayPageCode($aParams);
     }
 
-	public function displayProfileLink($mixedProfile)
+    public function displayProfileLink($mixedProfile)
     {
-    	if(!is_array($mixedProfile))
-    		$mixedProfile = BxDolModule::getInstance($this->MODULE)->getProfileInfo((int)$mixedProfile);
-
-    	return $this->displayLink('link', array(
-    		'href' => $mixedProfile['link'],
-            'title' => bx_html_attribute(!empty($mixedProfile['title']) ? $mixedProfile['title'] : $mixedProfile['name']),
-            'content' => $mixedProfile['name']
-    	));
+        return $this->getProfileLink($mixedProfile);
     }
 
     public function displayLink($sTemplate, $aParams)
     {
-    	return $this->parseHtmlByName($sTemplate . '.html', array(
-            'href' => $aParams['href'],
-            'title' => $aParams['title'],
-            'content' => $aParams['content']
-        ));
+        return $this->getLink($sTemplate, $aParams);
     }
 
     protected function displayPageCodeText($sTitle, $sText, $bWrap = true, $bCenter = false)

+ 10 - 5
modules/boonex/market/classes/BxMarketConfig.php

@@ -93,9 +93,11 @@ class BxMarketConfig extends BxBaseModTextConfig
             'URL_FEATURED' => 'page.php?i=products-featured',
             'URL_POPULAR' => 'page.php?i=products-popular',
             'URL_UPDATED' => 'page.php?i=products-updated',
-        	'URL_MANAGE_COMMON' => 'page.php?i=products-manage',
-        	'URL_MANAGE_ADMINISTRATION' => 'page.php?i=products-administration',
-        	'URL_VIEW_ENTRY' => 'page.php?i=view-product&id=',
+            'URL_MANAGE_COMMON' => 'page.php?i=products-manage',
+            'URL_MANAGE_ADMINISTRATION' => 'page.php?i=products-administration',
+            'URL_LICENSES_COMMON' => 'page.php?i=products-licenses',
+            'URL_LICENSES_ADMINISTRATION' => 'page.php?i=products-licenses-administration',
+            'URL_VIEW_ENTRY' => 'page.php?i=view-product&id=',
 
             // some params
             'PARAM_CHARS_SUMMARY' => 'bx_market_summary_chars',
@@ -142,9 +144,11 @@ class BxMarketConfig extends BxBaseModTextConfig
             'OBJECT_MENU_SUBMENU_VIEW_ENTRY_MAIN_SELECTION' => 'products-home', // first item in view entry submenu from main module submenu
             'OBJECT_MENU_SNIPPET_META' => 'bx_market_snippet_meta', // menu for snippet meta info
             'OBJECT_MENU_MANAGE_TOOLS' => 'bx_market_menu_manage_tools', //manage menu in content administration tools
+            'OBJECT_MENU_LICENSES' => 'bx_market_licenses_submenu',
             'OBJECT_GRID_ADMINISTRATION' => 'bx_market_administration',
-        	'OBJECT_GRID_COMMON' => 'bx_market_common',
-        	'OBJECT_GRID_LICENSES' => 'bx_market_licenses',
+            'OBJECT_GRID_COMMON' => 'bx_market_common',
+            'OBJECT_GRID_LICENSES_ADMINISTRATION' => 'bx_market_licenses_administration',
+            'OBJECT_GRID_LICENSES' => 'bx_market_licenses',
             'OBJECT_UPLOADERS' => array('bx_market_simple', 'bx_market_html5'),
         	'OBJECT_CONNECTION_SUBENTRIES' => 'bx_market_subentries',
 
@@ -209,6 +213,7 @@ class BxMarketConfig extends BxBaseModTextConfig
         $this->_aGridObjects = array(
         	'common' => $this->CNF['OBJECT_GRID_COMMON'],
         	'administration' => $this->CNF['OBJECT_GRID_ADMINISTRATION'],
+                'licenses_administration' => $this->CNF['OBJECT_GRID_LICENSES_ADMINISTRATION'],
         	'licenses' => $this->CNF['OBJECT_GRID_LICENSES'],
         );
 

+ 7 - 73
modules/boonex/market/classes/BxMarketGridLicenses.php

@@ -9,87 +9,21 @@
  * @{
  */
 
-class BxMarketGridLicenses extends BxTemplGrid
-{
-	protected $MODULE;
-	protected $_oModule;
+require_once('BxMarketGridLicensesAdministration.php');
 
+class BxMarketGridLicenses extends BxMarketGridLicensesAdministration
+{
     public function __construct ($aOptions, $oTemplate = false)
     {
-    	$this->MODULE = 'bx_market';
-    	$this->_oModule = BxDolModule::getInstance($this->MODULE);
-    	if(!$oTemplate)
-			$oTemplate = $this->_oModule->_oTemplate;
-
         parent::__construct ($aOptions, $oTemplate);
-
-        $this->_sDefaultSortingOrder = 'DESC';
-
-        $iProfileId = bx_get_logged_profile_id();
-        if($iProfileId !== false)
-            $this->_aQueryAppend['profile_id'] = (int)$iProfileId;
-    }
-
-	public function performActionReset()
-    {
-    	$aIds = bx_get('ids');
-        if(!$aIds || !is_array($aIds)) 
-        	return echoJson(array());
-
-		$iAffected = 0;
-		$aAffected = array();
-		foreach($aIds as $iId)
-			if($this->_oModule->_oDb->updateLicense(array('domain' => ''), array('id' => $iId, 'profile_id' => $this->_aQueryAppend['profile_id']))) {
-				bx_alert($this->_oModule->getName(), 'license_reset', 0, false, $this->_oModule->_oDb->getLicense(array(
-					'type' => 'id',
-					'id' => $iId
-				)));
-
-				$aAffected[] = $iId;
-            	$iAffected++;
-			}
-
-        echoJson($iAffected ? array('grid' => $this->getCode(false), 'blink' => $aAffected) : array('msg' => _t('_bx_market_grid_action_err_cannot_perform')));
-    }
-
-	protected function _getCellProduct($mixedValue, $sKey, $aField, $aRow)
-    {
-    	$CNF = &$this->_oModule->_oConfig->CNF;
-
-        $sUrl = BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink($CNF['URL_VIEW_ENTRY'] . $aRow['product_id']);
-
-        $mixedValue = $this->_oTemplate->parseHtmlByName('product_link.html', array(
-            'href' => $sUrl,
-            'title' => bx_html_attribute($mixedValue),
-            'content' => $mixedValue
-        ));
-
-        return parent::_getCellDefault($mixedValue, $sKey, $aField, $aRow);
-    }
-
-	protected function _getCellType($mixedValue, $sKey, $aField, $aRow)
-    {
-        return parent::_getCellDefault(_t('_bx_market_grid_txt_lcs_type_' . $mixedValue), $sKey, $aField, $aRow);
-    }
-
-    protected function _getCellAdded($mixedValue, $sKey, $aField, $aRow)
-    {
-        return parent::_getCellDefault(bx_time_js($mixedValue), $sKey, $aField, $aRow);
-    }
-
-	protected function _getCellExpired($mixedValue, $sKey, $aField, $aRow)
-    {
-    	$mixedValue = (int)$mixedValue != 0 ? bx_time_js($mixedValue): _t('_bx_market_grid_txt_lcs_never');
-    		
-        return parent::_getCellDefault($mixedValue, $sKey, $aField, $aRow);
     }
 
-	protected function _getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage)
+    protected function _getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage)
     {
-		if(empty($this->_aQueryAppend['profile_id']))
-			return array();
+        if(empty($this->_aQueryAppend['profile_id']))
+                return array();
 
-		$this->_aOptions['source'] .= $this->_oModule->_oDb->prepareAsString(" AND `tl`.`profile_id`=?", $this->_aQueryAppend['profile_id']);
+        $this->_aOptions['source'] .= $this->_oModule->_oDb->prepareAsString(" AND `tl`.`profile_id`=?", $this->_aQueryAppend['profile_id']);
 
         return parent::_getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
     }

+ 94 - 0
modules/boonex/market/classes/BxMarketGridLicensesAdministration.php

@@ -0,0 +1,94 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    Market Market
+ * @ingroup     UnaModules
+ * 
+ * @{
+ */
+
+class BxMarketGridLicensesAdministration extends BxTemplGrid
+{
+    protected $MODULE;
+    protected $_oModule;
+
+    public function __construct ($aOptions, $oTemplate = false)
+    {
+    	$this->MODULE = 'bx_market';
+    	$this->_oModule = BxDolModule::getInstance($this->MODULE);
+    	if(!$oTemplate)
+			$oTemplate = $this->_oModule->_oTemplate;
+
+        parent::__construct ($aOptions, $oTemplate);
+
+        $this->_sDefaultSortingOrder = 'DESC';
+        $this->_aQueryReset = array($this->_aOptions['order_get_field'], $this->_aOptions['order_get_dir'], $this->_aOptions['paginate_get_start'], $this->_aOptions['paginate_get_per_page']);
+
+        $iProfileId = bx_get_logged_profile_id();
+        if($iProfileId !== false)
+            $this->_aQueryAppend['profile_id'] = (int)$iProfileId;
+    }
+
+	public function performActionReset()
+    {
+    	$aIds = bx_get('ids');
+        if(!$aIds || !is_array($aIds)) 
+        	return echoJson(array());
+
+		$iAffected = 0;
+		$aAffected = array();
+		foreach($aIds as $iId)
+			if($this->_oModule->_oDb->updateLicense(array('domain' => ''), array('id' => $iId, 'profile_id' => $this->_aQueryAppend['profile_id']))) {
+				bx_alert($this->_oModule->getName(), 'license_reset', 0, false, $this->_oModule->_oDb->getLicense(array(
+					'type' => 'id',
+					'id' => $iId
+				)));
+
+				$aAffected[] = $iId;
+            	$iAffected++;
+			}
+
+        echoJson($iAffected ? array('grid' => $this->getCode(false), 'blink' => $aAffected) : array('msg' => _t('_bx_market_grid_action_err_cannot_perform')));
+    }
+
+    protected function _getCellProfileId($mixedValue, $sKey, $aField, $aRow)
+    {
+        return parent::_getCellDefault($this->_oModule->_oTemplate->getProfileLink($mixedValue), $sKey, $aField, $aRow);
+    }
+
+    protected function _getCellProduct($mixedValue, $sKey, $aField, $aRow)
+    {
+    	$CNF = &$this->_oModule->_oConfig->CNF;
+
+        $sUrl = BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink($CNF['URL_VIEW_ENTRY'] . $aRow['product_id']);
+
+        $mixedValue = $this->_oTemplate->parseHtmlByName('product_link.html', array(
+            'href' => $sUrl,
+            'title' => bx_html_attribute($mixedValue),
+            'content' => $mixedValue
+        ));
+
+        return parent::_getCellDefault($mixedValue, $sKey, $aField, $aRow);
+    }
+
+    protected function _getCellType($mixedValue, $sKey, $aField, $aRow)
+    {
+        return parent::_getCellDefault(_t('_bx_market_grid_txt_lcs_type_' . $mixedValue), $sKey, $aField, $aRow);
+    }
+
+    protected function _getCellAdded($mixedValue, $sKey, $aField, $aRow)
+    {
+        return parent::_getCellDefault(bx_time_js($mixedValue), $sKey, $aField, $aRow);
+    }
+
+	protected function _getCellExpired($mixedValue, $sKey, $aField, $aRow)
+    {
+    	$mixedValue = (int)$mixedValue != 0 ? bx_time_js($mixedValue): _t('_bx_market_grid_txt_lcs_never');
+    		
+        return parent::_getCellDefault($mixedValue, $sKey, $aField, $aRow);
+    }
+}
+
+/** @} */

+ 54 - 16
modules/boonex/market/classes/BxMarketModule.php

@@ -283,22 +283,34 @@ class BxMarketModule extends BxBaseModTextModule
     /** 
      * @ref bx_market-block_licenses "block_licenses"
      */
-	public function serviceBlockLicenses() 
-	{
-		$sGrid = $this->_oConfig->getGridObject('licenses');
-		$oGrid = BxDolGrid::getObjectInstance($sGrid);
-        if(!$oGrid)
-			return '';
-
-        $this->_oDb->updateLicense(array('new' => 0), array('profile_id' => bx_get_logged_profile_id(), 'new' => 1));
+    public function serviceBlockLicenses() 
+    {
+        return $this->_getBlockLicenses();
+    }
 
-		$this->_oTemplate->addJs(array('licenses.js'));
-		return array(
-        	'content' => $this->_oTemplate->getJsCode('licenses', array('sObjNameGrid' => $sGrid)) . $oGrid->getCode(),
-        );
-	}
+    /**
+     * @page service Service Calls
+     * @section bx_market Market
+     * @subsection bx_market-page_blocks Page Blocks
+     * @subsubsection bx_market-block_licenses_administration block_licenses_administration
+     * 
+     * @code bx_srv('bx_market', 'block_licenses_administration', [...]); @endcode
+     * 
+     * Get page block with a list of all licenses. It's needed for moderators/administrators.
+     *
+     * @return an array describing a block to display on the site or false if there is no enough input data. All necessary CSS and JS files are automatically added to the HEAD section of the site HTML.
+     * 
+     * @see BxMarketModule::serviceBlockLicensesAdministration
+     */
+    /** 
+     * @ref bx_market-block_licenses "block_licenses"
+     */
+    public function serviceBlockLicensesAdministration() 
+    {
+        return $this->_getBlockLicenses('administration');
+    }
 
-	/**
+    /**
      * @page service Service Calls
      * @section bx_market Market
      * @subsection bx_market-page_blocks Page Blocks
@@ -665,9 +677,17 @@ class BxMarketModule extends BxBaseModTextModule
     /** 
      * @ref bx_market-get_payment_data "get_payment_data"
      */
-	public function serviceGetPaymentData()
+    public function serviceGetPaymentData()
     {
-        return $this->_aModule;
+        $CNF = &$this->_oConfig->CNF;
+
+        $oPermalink = BxDolPermalinks::getInstance();
+
+        $aResult = $this->_aModule;
+        $aResult['url_browse_order_common'] = BX_DOL_URL_ROOT . $oPermalink->permalink($CNF['URL_LICENSES_COMMON'], array('filter' => '{order}'));
+        $aResult['url_browse_order_administration'] = BX_DOL_URL_ROOT . $oPermalink->permalink($CNF['URL_LICENSES_ADMINISTRATION'], array('filter' => '{order}'));
+
+        return $aResult;
     }
 
     /**
@@ -1174,6 +1194,24 @@ class BxMarketModule extends BxBaseModTextModule
         return CHECK_ACTION_RESULT_ALLOWED;
     }
 
+    protected function _getBlockLicenses($sType = '') 
+    {
+        $CNF = &$this->_oConfig->CNF;
+
+        $sGrid = $this->_oConfig->getGridObject('licenses' . (!empty($sType) ? '_' . $sType : ''));
+        $oGrid = BxDolGrid::getObjectInstance($sGrid);
+        if(!$oGrid)
+            return '';
+
+        $this->_oDb->updateLicense(array('new' => 0), array('profile_id' => bx_get_logged_profile_id(), 'new' => 1));
+
+        $this->_oTemplate->addJs(array('licenses.js'));
+        return array(
+            'content' => $this->_oTemplate->getJsCode('licenses', array('sObjNameGrid' => $sGrid)) . $oGrid->getCode(),
+            'menu' => $CNF['OBJECT_MENU_LICENSES']
+        );
+    }
+
     protected function _getContentInfo($iContentId = 0)
     {
     	if(!$iContentId)

+ 25 - 11
modules/boonex/market/install/langs/en.xml

@@ -199,6 +199,10 @@
 	<string name="_bx_market_page_title_sys_entries_categories"><![CDATA[Categories]]></string>
     <string name="_bx_market_page_title_entries_categories"><![CDATA[Categories]]></string>
     <string name="_bx_market_page_block_title_categories_entries"><![CDATA[Products]]></string>
+    
+    <string name="_bx_market_page_title_sys_licenses_administration"><![CDATA[Licenses]]></string>
+    <string name="_bx_market_page_title_licenses_administration"><![CDATA[Licenses]]></string>
+    <string name="_bx_market_page_block_title_licenses_administration"><![CDATA[Licenses]]></string>
     <string name="_bx_market_page_title_sys_licenses"><![CDATA[Licenses]]></string>
     <string name="_bx_market_page_title_licenses"><![CDATA[Licenses]]></string>
     <string name="_bx_market_page_block_title_licenses"><![CDATA[Licenses]]></string>
@@ -293,6 +297,13 @@
     <string name="_bx_market_menu_title_snippet_more"><![CDATA[Snippet More Actions]]></string>
     <string name="_bx_market_menu_set_title_snippet_more"><![CDATA[Snippet More Actions]]></string>
     <string name="_bx_market_menu_item_title_downloads_more"><![CDATA[Show More]]></string>
+    <string name="_bx_market_menu_title_licenses_submenu"><![CDATA[Licenses Submenu]]></string>
+    <string name="_bx_market_menu_set_title_licenses_submenu"><![CDATA[Licenses Submenu]]></string>
+    <string name="_bx_market_menu_item_title_system_products_licenses_administration"><![CDATA[All Licenses]]></string>
+    <string name="_bx_market_menu_item_title_products_licenses_administration"><![CDATA[All Licenses]]></string>
+    <string name="_bx_market_menu_item_title_system_products_licenses"><![CDATA[My Licenses]]></string>
+    <string name="_bx_market_menu_item_title_products_licenses"><![CDATA[My Licenses]]></string>
+    
 
 	<string name="_bx_market_grid_filter_item_title_adm_select_one_filter1"><![CDATA[All Statuses]]></string>
 	<string name="_bx_market_grid_filter_item_title_adm_active"><![CDATA[Active]]></string>
@@ -307,17 +318,20 @@
     <string name="_bx_market_grid_action_err_delete"><![CDATA[Cannot delete the selected product(s).]]></string>
     <string name="_bx_market_grid_txt_account_manager"><![CDATA[Redirect to manage account.]]></string>
 
-	<string name="_bx_market_grid_column_title_lcs_product"><![CDATA[Product]]></string>
-	<string name="_bx_market_grid_column_title_lcs_license"><![CDATA[License]]></string>
-	<string name="_bx_market_grid_column_title_lcs_type"><![CDATA[Type]]></string>
-	<string name="_bx_market_grid_column_title_lcs_domain"><![CDATA[Domain]]></string>
-	<string name="_bx_market_grid_column_title_lcs_added"><![CDATA[Begin]]></string>
-	<string name="_bx_market_grid_column_title_lcs_expired"><![CDATA[Expire]]></string>
-	<string name="_bx_market_grid_action_title_lcs_reset"><![CDATA[Reset]]></string>
-	<string name="_bx_market_grid_action_err_cannot_perform"><![CDATA[Cannot perform the action. Please report.]]></string>
-	<string name="_bx_market_grid_txt_lcs_type_single"><![CDATA[one-time]]></string>
-	<string name="_bx_market_grid_txt_lcs_type_recurring"><![CDATA[recurring]]></string>
-	<string name="_bx_market_grid_txt_lcs_never"><![CDATA[never]]></string>
+
+    <string name="_bx_market_grid_column_title_lcs_profile_id"><![CDATA[Owner]]></string>
+    <string name="_bx_market_grid_column_title_lcs_transaction"><![CDATA[Order]]></string>
+    <string name="_bx_market_grid_column_title_lcs_product"><![CDATA[Product]]></string>
+    <string name="_bx_market_grid_column_title_lcs_license"><![CDATA[License]]></string>
+    <string name="_bx_market_grid_column_title_lcs_type"><![CDATA[Type]]></string>
+    <string name="_bx_market_grid_column_title_lcs_domain"><![CDATA[Domain]]></string>
+    <string name="_bx_market_grid_column_title_lcs_added"><![CDATA[Begin]]></string>
+    <string name="_bx_market_grid_column_title_lcs_expired"><![CDATA[Expire]]></string>
+    <string name="_bx_market_grid_action_title_lcs_reset"><![CDATA[Reset]]></string>
+    <string name="_bx_market_grid_action_err_cannot_perform"><![CDATA[Cannot perform the action. Please report.]]></string>
+    <string name="_bx_market_grid_txt_lcs_type_single"><![CDATA[one-time]]></string>
+    <string name="_bx_market_grid_txt_lcs_type_recurring"><![CDATA[recurring]]></string>
+    <string name="_bx_market_grid_txt_lcs_never"><![CDATA[never]]></string>
 
     <string name="_bx_market_chart_growth"><![CDATA[Market: Growth]]></string>
     <string name="_bx_market_chart_growth_speed"><![CDATA[Market: Growth Speed]]></string>

+ 5 - 5
modules/boonex/market/install/sql/disable.sql

@@ -8,12 +8,12 @@ DELETE FROM `sys_options_types` WHERE `id` = @iTypeId;
 
 -- PAGES
 DELETE FROM `sys_objects_page` WHERE `module` = 'bx_market';
-DELETE FROM `sys_pages_blocks` WHERE `module` = 'bx_market' OR `object` IN('bx_market_create_entry', 'bx_market_edit_entry', 'bx_market_delete_entry', 'bx_market_download_entry', 'bx_market_view_entry', 'bx_market_view_entry_comments', 'bx_market_home', 'bx_market_categories', 'bx_market_popular', 'bx_market_updated', 'bx_market_author', 'bx_market_context', 'bx_market_search', 'bx_market_manage');
+DELETE FROM `sys_pages_blocks` WHERE `module` = 'bx_market' OR `object` IN('bx_market_create_entry', 'bx_market_edit_entry', 'bx_market_delete_entry', 'bx_market_download_entry', 'bx_market_view_entry', 'bx_market_view_entry_comments', 'bx_market_home', 'bx_market_categories', 'bx_market_popular', 'bx_market_updated', 'bx_market_author', 'bx_market_context', 'bx_market_search', 'bx_market_manage', 'bx_market_administration', 'bx_market_licenses_administration', 'bx_market_licenses');
 
 -- MENU
 DELETE FROM `sys_objects_menu` WHERE `module` = 'bx_market';
 DELETE FROM `sys_menu_sets` WHERE `module` = 'bx_market';
-DELETE FROM `sys_menu_items` WHERE `module` = 'bx_market' OR `set_name` IN('bx_market_view', 'bx_market_view_more', 'bx_market_submenu', 'bx_market_view_submenu', 'bx_market_my', 'bx_market_snippet', 'bx_market_snippet_more', 'bx_market_snippet_meta', 'bx_market_menu_manage_tools');
+DELETE FROM `sys_menu_items` WHERE `module` = 'bx_market' OR `set_name` IN('bx_market_view', 'bx_market_view_more', 'bx_market_submenu', 'bx_market_view_submenu', 'bx_market_my', 'bx_market_snippet', 'bx_market_snippet_more', 'bx_market_snippet_meta', 'bx_market_menu_manage_tools', 'bx_market_licenses_submenu');
 
 -- PRIVACY 
 DELETE FROM `sys_objects_privacy` WHERE `object` IN ('bx_market_allow_view_to', 'bx_market_allow_purchase_to', 'bx_market_allow_comment_to', 'bx_market_allow_vote_to');
@@ -41,9 +41,9 @@ DELETE FROM `sys_statistics` WHERE `name` LIKE 'bx_market%';
 DELETE FROM `sys_objects_chart` WHERE `object` LIKE 'bx_market%';
 
 -- GRIDS
-DELETE FROM `sys_objects_grid` WHERE `object` IN ('bx_market_administration', 'bx_market_common', 'bx_market_licenses');
-DELETE FROM `sys_grid_fields` WHERE `object` IN ('bx_market_administration', 'bx_market_common', 'bx_market_licenses');
-DELETE FROM `sys_grid_actions` WHERE `object` IN ('bx_market_administration', 'bx_market_common', 'bx_market_licenses');
+DELETE FROM `sys_objects_grid` WHERE `object` LIKE 'bx_market_%';
+DELETE FROM `sys_grid_fields` WHERE `object` LIKE 'bx_market_%';
+DELETE FROM `sys_grid_actions` WHERE `object` LIKE 'bx_market_%';
 
 -- UPLOADERS
 DELETE FROM `sys_objects_uploader` WHERE `object` IN('bx_market_simple', 'bx_market_html5');

+ 34 - 2
modules/boonex/market/install/sql/enable.sql

@@ -140,6 +140,13 @@ INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `t
 ('bx_market_author', 1, 'bx_market', '_bx_market_page_block_title_sys_favorites_of_author', '_bx_market_page_block_title_favorites_of_author', 11, 2147483647, 'service', 'a:3:{s:6:"module";s:9:"bx_market";s:6:"method";s:15:"browse_favorite";s:6:"params";a:1:{i:0;s:12:"{profile_id}";}}', 0, 1, 1, 2),
 ('bx_market_author', 1, 'bx_market', '_bx_market_page_block_title_sys_entries_of_author', '_bx_market_page_block_title_entries_of_author', 11, 2147483647, 'service', 'a:2:{s:6:"module";s:9:"bx_market";s:6:"method";s:13:"browse_author";}', 0, 0, 1, 3);
 
+-- PAGE: licenses administration
+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_market_licenses_administration', '_bx_market_page_title_sys_licenses_administration', '_bx_market_page_title_licenses_administration', 'bx_market', 5, 192, 1, 'products-licenses-administration', '', '', '', '', 0, 1, 0, 'BxMarketPageLicenses', 'modules/boonex/market/classes/BxMarketPageLicenses.php');
+
+INSERT INTO `sys_pages_blocks`(`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES 
+('bx_market_licenses_administration', 1, 'bx_market', '', '_bx_market_page_block_title_licenses_administration', 11, 192, 'service', 'a:2:{s:6:"module";s:9:"bx_market";s:6:"method";s:29:"block_licenses_administration";}', 0, 0, 1, 0);
+
 -- PAGE: profile's licenses
 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_market_licenses', '_bx_market_page_title_sys_licenses', '_bx_market_page_title_licenses', 'bx_market', 5, 2147483647, 1, 'products-licenses', '', '', '', '', 0, 1, 0, 'BxMarketPageLicenses', 'modules/boonex/market/classes/BxMarketPageLicenses.php');
@@ -336,6 +343,17 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 ('bx_market_view_submenu', 'bx_market', 'view-product-info', '_bx_market_menu_item_title_system_view_entry_submenu_info', '_bx_market_menu_item_title_view_entry_submenu_info', 'page.php?i=view-product-info&id={content_id}', '', '', '', '', 2147483647, 1, 0, 2),
 ('bx_market_view_submenu', 'bx_market', 'view-product-comments', '_bx_market_menu_item_title_system_view_entry_submenu_comments', '_bx_market_menu_item_title_view_entry_submenu_comments', 'page.php?i=view-product-comments&id={content_id}', '', '', '', '', 2147483647, 1, 0, 3);
 
+-- MENU: licenses submenu
+INSERT INTO `sys_objects_menu`(`object`, `title`, `set_name`, `module`, `template_id`, `deletable`, `active`, `override_class_name`, `override_class_file`) VALUES 
+('bx_market_licenses_submenu', '_bx_market_menu_title_licenses_submenu', 'bx_market_licenses_submenu', 'bx_market', 6, 0, 1, '', '');
+
+INSERT INTO `sys_menu_sets`(`set_name`, `module`, `title`, `deletable`) VALUES 
+('bx_market_licenses_submenu', 'bx_market', '_bx_market_menu_set_title_licenses_submenu', 0);
+
+INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `editable`, `order`) VALUES 
+('bx_market_licenses_submenu', 'bx_market', 'products-licenses-administration', '_bx_market_menu_item_title_system_products_licenses_administration', '_bx_market_menu_item_title_products_licenses_administration', 'page.php?i=products-licenses-administration', '', '_self', '', '', '', 192, 1, 0, 1, 1),
+('bx_market_licenses_submenu', 'bx_market', 'products-licenses', '_bx_market_menu_item_title_system_products_licenses', '_bx_market_menu_item_title_products_licenses', 'page.php?i=products-licenses', '', '_self', '', '', '', 2147483646, 1, 0, 1, 2);
+
 -- MENU: profile stats
 SET @iNotifMenuOrder = (SELECT IFNULL(MAX(`order`), 0) FROM `sys_menu_items` WHERE `set_name` = 'sys_profile_stats' AND `active` = 1 LIMIT 1);
 INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `addon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES
@@ -511,7 +529,8 @@ INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `fie
 ('bx_market_common', 'Sql', 'SELECT * FROM `bx_market_products` WHERE 1 ', 'bx_market_products', 'id', 'added', 'status', '', 20, NULL, 'start', '', 'title,text', '', 'like', '', '', 2147483647, 'BxMarketGridCommon', 'modules/boonex/market/classes/BxMarketGridCommon.php'),
 
 -- GRIDS: Licenses
-('bx_market_licenses', 'Sql', 'SELECT `tl`.`id` AS `id`, `tl`.`profile_id` AS `profile_id`, `tl`.`product_id` AS `product_id`, `tp`.`title` AS `product`, `tl`.`license` AS `license`, `tl`.`type` AS `type`, `tl`.`domain` AS `domain`, `tl`.`added` AS `added`, `tl`.`expired` AS `expired` FROM `bx_market_licenses` AS `tl` LEFT JOIN `bx_market_products` AS `tp` ON `tl`.`product_id`=`tp`.`id` WHERE 1 ', 'bx_market_licenses', 'id', 'added', '', '', 20, NULL, 'start', '', 'tp`.`title,tl`.`license,tl`.`type,tl`.`domain', '', 'like', '', '', 2147483647, 'BxMarketGridLicenses', 'modules/boonex/market/classes/BxMarketGridLicenses.php');
+('bx_market_licenses_administration', 'Sql', 'SELECT `tl`.`id` AS `id`, `tl`.`profile_id` AS `profile_id`, `tl`.`product_id` AS `product_id`, `tp`.`title` AS `product`, `tl`.`order` AS `transaction`, `tl`.`license` AS `license`, `tl`.`type` AS `type`, `tl`.`domain` AS `domain`, `tl`.`added` AS `added`, `tl`.`expired` AS `expired` FROM `bx_market_licenses` AS `tl` LEFT JOIN `bx_market_products` AS `tp` ON `tl`.`product_id`=`tp`.`id` WHERE 1 ', 'bx_market_licenses', 'id', 'added', '', '', 20, NULL, 'start', '', 'tp`.`title,tl`.`order,tl`.`license,tl`.`type,tl`.`domain', '', 'like', '', '', 192, 'BxMarketGridLicensesAdministration', 'modules/boonex/market/classes/BxMarketGridLicensesAdministration.php'),
+('bx_market_licenses', 'Sql', 'SELECT `tl`.`id` AS `id`, `tl`.`profile_id` AS `profile_id`, `tl`.`product_id` AS `product_id`, `tp`.`title` AS `product`, `tl`.`order` AS `transaction`, `tl`.`license` AS `license`, `tl`.`type` AS `type`, `tl`.`domain` AS `domain`, `tl`.`added` AS `added`, `tl`.`expired` AS `expired` FROM `bx_market_licenses` AS `tl` LEFT JOIN `bx_market_products` AS `tp` ON `tl`.`product_id`=`tp`.`id` WHERE 1 ', 'bx_market_licenses', 'id', 'added', '', '', 20, NULL, 'start', '', 'tp`.`title,tl`.`order,tl`.`license,tl`.`type,tl`.`domain', '', 'like', '', '', 2147483647, 'BxMarketGridLicenses', 'modules/boonex/market/classes/BxMarketGridLicenses.php');
 
 
 INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable`, `chars_limit`, `params`, `order`) VALUES
@@ -522,13 +541,25 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 ('bx_market_administration', 'added', '_bx_market_grid_column_title_adm_added', '20%', 1, '25', '', 5),
 ('bx_market_administration', 'author', '_bx_market_grid_column_title_adm_author', '20%', 0, '25', '', 6),
 ('bx_market_administration', 'actions', '', '20%', 0, '', '', 7),
+
 ('bx_market_common', 'checkbox', '_sys_select', '2%', 0, '', '', 1),
 ('bx_market_common', 'switcher', '_bx_market_grid_column_title_adm_active', '8%', 0, '', '', 2),
 ('bx_market_common', 'title', '_bx_market_grid_column_title_adm_title', '40%', 0, '', '', 3),
 ('bx_market_common', 'added', '_bx_market_grid_column_title_adm_added', '30%', 1, '25', '', 4),
 ('bx_market_common', 'actions', '', '20%', 0, '', '', 5),
 
-('bx_market_licenses', 'product', '_bx_market_grid_column_title_lcs_product', '30%', 0, '28', '', 1),
+('bx_market_licenses_administration', 'profile_id', '_bx_market_grid_column_title_lcs_profile_id', '10%', 0, '28', '', 1),
+('bx_market_licenses_administration', 'product', '_bx_market_grid_column_title_lcs_product', '20%', 0, '28', '', 2),
+('bx_market_licenses_administration', 'transaction', '_bx_market_grid_column_title_lcs_transaction', '10%', 0, '32', '', 3),
+('bx_market_licenses_administration', 'license', '_bx_market_grid_column_title_lcs_license', '10%', 0, '8', '', 4),
+('bx_market_licenses_administration', 'type', '_bx_market_grid_column_title_lcs_type', '5%', 1, '12', '', 5),
+('bx_market_licenses_administration', 'domain', '_bx_market_grid_column_title_lcs_domain', '15%', 0, '18', '', 6),
+('bx_market_licenses_administration', 'added', '_bx_market_grid_column_title_lcs_added', '10%', 1, '25', '', 7),
+('bx_market_licenses_administration', 'expired', '_bx_market_grid_column_title_lcs_expired', '10%', 1, '25', '', 8),
+('bx_market_licenses_administration', 'actions', '', '10%', 0, '', '', 9),
+
+('bx_market_licenses', 'product', '_bx_market_grid_column_title_lcs_product', '20%', 0, '28', '', 1),
+('bx_market_licenses', 'transaction', '_bx_market_grid_column_title_lcs_transaction', '10%', 0, '32', '', 2),
 ('bx_market_licenses', 'license', '_bx_market_grid_column_title_lcs_license', '10%', 0, '8', '', 3),
 ('bx_market_licenses', 'type', '_bx_market_grid_column_title_lcs_type', '10%', 1, '12', '', 4),
 ('bx_market_licenses', 'domain', '_bx_market_grid_column_title_lcs_domain', '20%', 0, '18', '', 5),
@@ -546,6 +577,7 @@ INSERT INTO `sys_grid_actions` (`object`, `type`, `name`, `title`, `icon`, `icon
 ('bx_market_common', 'single', 'delete', '_bx_market_grid_action_title_adm_delete', 'remove', 1, 1, 2),
 ('bx_market_common', 'single', 'settings', '_bx_market_grid_action_title_adm_more_actions', 'cog', 1, 0, 3),
 
+('bx_market_licenses_administration', 'single', 'reset', '_bx_market_grid_action_title_lcs_reset', 'eraser', 1, 1, 1),
 ('bx_market_licenses', 'single', 'reset', '_bx_market_grid_action_title_lcs_reset', 'eraser', 1, 1, 1);
 
 

+ 1 - 0
modules/boonex/market/template/link.html

@@ -0,0 +1 @@
+<bx_include_base:../modules/base/general/template/link.html />

+ 23 - 0
modules/boonex/payment/classes/BxPaymentGridSbsAdministration.php

@@ -12,6 +12,8 @@
 
 class BxPaymentGridSbsAdministration extends BxBaseModPaymentGridOrders
 {
+    protected $_sManageType;
+
     public function __construct ($aOptions, $oTemplate = false)
     {
     	$this->MODULE = 'bx_payment';
@@ -19,6 +21,7 @@ class BxPaymentGridSbsAdministration extends BxBaseModPaymentGridOrders
         parent::__construct ($aOptions, $oTemplate);
 
         $this->_sOrdersType = BX_PAYMENT_ORDERS_TYPE_SUBSCRIPTION;
+        $this->_sManageType = 'administration';
     }
 
     public function performActionCancel()
@@ -45,6 +48,26 @@ class BxPaymentGridSbsAdministration extends BxBaseModPaymentGridOrders
         return parent::_getCellDefault(_t('_bx_payment_txt_name_' . $mixedValue), $sKey, $aField, $aRow);
     }
 
+    protected function _getCellSubscriptionId($mixedValue, $sKey, $aField, $aRow)
+    {
+        $aItems = $this->_oModule->_oConfig->descriptorsM2A($aRow['items']);
+        if(!is_array($aItems) || count($aItems) != 1)
+            return parent::_getCellDefault($mixedValue, $sKey, $aField, $aRow);
+
+        $aItem = array_shift($aItems);
+        $aInfo = BxDolService::call((int)$aItem['module_id'], 'get_payment_data');
+        if(!empty($aInfo['url_browse_order_' . $this->_sManageType]))
+            $mixedValue = $this->_oModule->_oTemplate->displayLink('link', array(
+                'href' => bx_replace_markers($aInfo['url_browse_order_' . $this->_sManageType], array(
+                    'order' => $mixedValue
+                )),
+                'title' => $mixedValue,
+                'content' => $mixedValue
+            ));
+
+        return parent::_getCellDefault($mixedValue, $sKey, $aField, $aRow);
+    }
+        
     protected function _getCellPaid($mixedValue, $sKey, $aField, $aRow)
     {
         $aStates = array(0 => 'no', 1 => 'yes');

+ 1 - 0
modules/boonex/payment/classes/BxPaymentGridSbsList.php

@@ -19,6 +19,7 @@ class BxPaymentGridSbsList extends BxPaymentGridSbsAdministration
     {
         parent::__construct ($aOptions, $oTemplate);
 
+        $this->_sManageType = 'common';
         $this->_aProvidersAttached = array();
     }
 

+ 4 - 4
modules/boonex/payment/install/sql/install.sql

@@ -227,8 +227,8 @@ INSERT INTO `sys_objects_grid` (`object`, `source_type`, `source`, `table`, `fie
 ('bx_payment_grid_carts', 'Array', '', '', 'vendor_id', '', '', '', 20, NULL, 'start', '', '', '', 'like', '', '', 2147483647, 'BxPaymentGridCarts', 'modules/boonex/payment/classes/BxPaymentGridCarts.php'),
 ('bx_payment_grid_cart', 'Array', '', '', 'descriptor', '', '', '', 20, NULL, 'start', '', 'title,description', '', 'like', '', '', 2147483647, 'BxPaymentGridCart', 'modules/boonex/payment/classes/BxPaymentGridCart.php'),
 
-('bx_payment_grid_sbs_list_my', 'Sql', 'SELECT `ttp`.`id` AS `id`, `ttp`.`seller_id` AS `seller_id`, `ts`.`customer_id` AS `customer_id`, `ts`.`subscription_id` AS `subscription_id`, `ttp`.`provider` AS `provider`, `ts`.`date` AS `date` FROM `bx_payment_subscriptions` AS `ts` LEFT JOIN `bx_payment_transactions_pending` AS `ttp` ON `ts`.`pending_id`=`ttp`.`id` WHERE 1 AND `ttp`.`type`=''recurring'' ', 'bx_payment_subscriptions', 'id', 'date', '', '', 100, NULL, 'start', '', 'ts`.`customer_id,ts`.`subscription_id,ts`.`date', '', 'auto', '', '', 2147483647, 'BxPaymentGridSbsList', 'modules/boonex/payment/classes/BxPaymentGridSbsList.php'),
-('bx_payment_grid_sbs_list_all', 'Sql', 'SELECT `ttp`.`id` AS `id`, `ttp`.`client_id` AS `client_id`, `tac`.`email` AS `client_email`, `ttp`.`seller_id` AS `seller_id`, `ts`.`customer_id` AS `customer_id`, `ts`.`subscription_id` AS `subscription_id`, `ttp`.`provider` AS `provider`, `ts`.`paid` AS `paid`, `ts`.`date` AS `date` FROM `bx_payment_subscriptions` AS `ts` LEFT JOIN `bx_payment_transactions_pending` AS `ttp` ON `ts`.`pending_id`=`ttp`.`id` LEFT JOIN `sys_profiles` AS `tpc` ON `ttp`.`client_id`=`tpc`.`id` LEFT JOIN `sys_accounts` AS `tac` ON `tpc`.`account_id`=`tac`.`id` WHERE 1 AND `ttp`.`type`=''recurring'' ', 'bx_payment_subscriptions', 'id', 'date', '', '', 100, NULL, 'start', '', 'tac`.`email,ts`.`customer_id,ts`.`subscription_id,ts`.`date', '', 'auto', '', '', 192, 'BxPaymentGridSbsAdministration', 'modules/boonex/payment/classes/BxPaymentGridSbsAdministration.php'),
+('bx_payment_grid_sbs_list_my', 'Sql', 'SELECT `ttp`.`id` AS `id`, `ttp`.`seller_id` AS `seller_id`, `ts`.`customer_id` AS `customer_id`, `ts`.`subscription_id` AS `subscription_id`, `ttp`.`provider` AS `provider`, `ttp`.`items` AS `items`, `ts`.`date` AS `date` FROM `bx_payment_subscriptions` AS `ts` LEFT JOIN `bx_payment_transactions_pending` AS `ttp` ON `ts`.`pending_id`=`ttp`.`id` WHERE 1 AND `ttp`.`type`=''recurring'' ', 'bx_payment_subscriptions', 'id', 'date', '', '', 100, NULL, 'start', '', 'ts`.`customer_id,ts`.`subscription_id,ts`.`date', '', 'auto', '', '', 2147483647, 'BxPaymentGridSbsList', 'modules/boonex/payment/classes/BxPaymentGridSbsList.php'),
+('bx_payment_grid_sbs_list_all', 'Sql', 'SELECT `ttp`.`id` AS `id`, `ttp`.`client_id` AS `client_id`, `tac`.`email` AS `client_email`, `ttp`.`seller_id` AS `seller_id`, `ts`.`customer_id` AS `customer_id`, `ts`.`subscription_id` AS `subscription_id`, `ttp`.`provider` AS `provider`, `ttp`.`items` AS `items`, `ts`.`paid` AS `paid`, `ts`.`date` AS `date` FROM `bx_payment_subscriptions` AS `ts` LEFT JOIN `bx_payment_transactions_pending` AS `ttp` ON `ts`.`pending_id`=`ttp`.`id` LEFT JOIN `sys_profiles` AS `tpc` ON `ttp`.`client_id`=`tpc`.`id` LEFT JOIN `sys_accounts` AS `tac` ON `tpc`.`account_id`=`tac`.`id` WHERE 1 AND `ttp`.`type`=''recurring'' ', 'bx_payment_subscriptions', 'id', 'date', '', '', 100, NULL, 'start', '', 'tac`.`email,ts`.`customer_id,ts`.`subscription_id,ts`.`date', '', 'auto', '', '', 192, 'BxPaymentGridSbsAdministration', 'modules/boonex/payment/classes/BxPaymentGridSbsAdministration.php'),
 ('bx_payment_grid_sbs_history', 'Sql', 'SELECT `tt`.`id` AS `id`, `tt`.`seller_id` AS `seller_id`, `ttp`.`order` AS `transaction`, `tt`.`license` AS `license`, `tt`.`amount` AS `amount`, `tt`.`date` AS `date` FROM `bx_payment_transactions` AS `tt` LEFT JOIN `bx_payment_transactions_pending` AS `ttp` ON `tt`.`pending_id`=`ttp`.`id` WHERE 1 AND `ttp`.`type`=''recurring'' ', 'bx_payment_transactions', 'id', 'date', '', '', 100, NULL, 'start', '', 'ttp`.`order,tt`.`license,tt`.`amount,tt`.`date', '', 'auto', '', '', 2147483647, 'BxPaymentGridSbsHistory', 'modules/boonex/payment/classes/BxPaymentGridSbsHistory.php'),
 
 ('bx_payment_grid_orders_history', 'Sql', 'SELECT `tt`.`id` AS `id`, `tt`.`seller_id` AS `seller_id`, `ttp`.`order` AS `transaction`, `tt`.`license` AS `license`, `tt`.`amount` AS `amount`, `tt`.`date` AS `date` FROM `bx_payment_transactions` AS `tt` LEFT JOIN `bx_payment_transactions_pending` AS `ttp` ON `tt`.`pending_id`=`ttp`.`id` WHERE 1 AND `ttp`.`type`=''single'' ', 'bx_payment_transactions', 'id', 'date', '', '', 100, NULL, 'start', '', 'ttp`.`order,tt`.`license,tt`.`amount,tt`.`date', '', 'auto', '', '', 2147483647, 'BxPaymentGridHistory', 'modules/boonex/payment/classes/BxPaymentGridHistory.php'),
@@ -252,7 +252,7 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 ('bx_payment_grid_sbs_list_my', 'checkbox', '', '2%', 0, '', '', 1),
 ('bx_payment_grid_sbs_list_my', 'seller_id', '_bx_payment_grid_column_title_sbs_seller_id', '20%', 0, '24', '', 2),
 ('bx_payment_grid_sbs_list_my', 'customer_id', '_bx_payment_grid_column_title_sbs_customer_id', '20%', 0, '24', '', 3),
-('bx_payment_grid_sbs_list_my', 'subscription_id', '_bx_payment_grid_column_title_sbs_subscription_id', '20%', 0, '24', '', 4),
+('bx_payment_grid_sbs_list_my', 'subscription_id', '_bx_payment_grid_column_title_sbs_subscription_id', '20%', 0, '32', '', 4),
 ('bx_payment_grid_sbs_list_my', 'provider', '_bx_payment_grid_column_title_sbs_provider', '10%', 0, '16', '', 5),
 ('bx_payment_grid_sbs_list_my', 'date', '_bx_payment_grid_column_title_sbs_date_created', '14%', 0, '10', '', 6),
 ('bx_payment_grid_sbs_list_my', 'actions', '', '14%', 0, '', '', 7),
@@ -261,7 +261,7 @@ INSERT INTO `sys_grid_fields` (`object`, `name`, `title`, `width`, `translatable
 ('bx_payment_grid_sbs_list_all', 'client_id', '_bx_payment_grid_column_title_sbs_client_id', '10%', 0, '24', '', 2),
 ('bx_payment_grid_sbs_list_all', 'client_email', '_bx_payment_grid_column_title_sbs_client_email', '15%', 0, '24', '', 3),
 ('bx_payment_grid_sbs_list_all', 'customer_id', '_bx_payment_grid_column_title_sbs_customer_id', '15%', 0, '18', '', 4),
-('bx_payment_grid_sbs_list_all', 'subscription_id', '_bx_payment_grid_column_title_sbs_subscription_id', '15%', 0, '18', '', 5),
+('bx_payment_grid_sbs_list_all', 'subscription_id', '_bx_payment_grid_column_title_sbs_subscription_id', '15%', 0, '32', '', 5),
 ('bx_payment_grid_sbs_list_all', 'provider', '_bx_payment_grid_column_title_sbs_provider', '5%', 0, '16', '', 6),
 ('bx_payment_grid_sbs_list_all', 'paid', '_bx_payment_grid_column_title_sbs_paid', '4%', 0, '4', '', 7),
 ('bx_payment_grid_sbs_list_all', 'date', '_bx_payment_grid_column_title_sbs_date_created', '10%', 0, '10', '', 8),

+ 1 - 1
modules/boonex/payment/template/link.html

@@ -1 +1 @@
-<bx_include_base:../modules/base/payment/template/link.html />
+<bx_include_base:../modules/base/general/template/link.html />

+ 23 - 10
modules/boonex/russian/data/langs/bx_market/ru.xml

@@ -196,6 +196,10 @@
     <string name="_bx_market_page_title_sys_entries_categories"><![CDATA[Категории продуктов]]></string>
     <string name="_bx_market_page_title_entries_categories"><![CDATA[Категории продуктов]]></string>
     <string name="_bx_market_page_block_title_categories_entries"><![CDATA[Продукты]]></string>
+    
+    <string name="_bx_market_page_title_sys_licenses_administration"><![CDATA[Лицензии]]></string>
+    <string name="_bx_market_page_title_licenses_administration"><![CDATA[Лицензии]]></string>
+    <string name="_bx_market_page_block_title_licenses_administration"><![CDATA[Лицензии]]></string>
     <string name="_bx_market_page_title_sys_licenses"><![CDATA[Лицензии]]></string>
     <string name="_bx_market_page_title_licenses"><![CDATA[Лицензии]]></string>
     <string name="_bx_market_page_block_title_licenses"><![CDATA[Лицензии]]></string>
@@ -292,6 +296,13 @@
     <string name="_bx_market_menu_title_snippet_more"><![CDATA[Отрывок - Дополнительные действия]]></string>
     <string name="_bx_market_menu_set_title_snippet_more"><![CDATA[Отрывок - Дополнительные действия]]></string>
     <string name="_bx_market_menu_item_title_downloads_more"><![CDATA[Показать ещё]]></string>
+    <string name="_bx_market_menu_title_licenses_submenu"><![CDATA[Лицензии - Подменю]]></string>
+    <string name="_bx_market_menu_set_title_licenses_submenu"><![CDATA[Лицензии - Подменю]]></string>
+    <string name="_bx_market_menu_item_title_system_products_licenses_administration"><![CDATA[Все лицензии]]></string>
+    <string name="_bx_market_menu_item_title_products_licenses_administration"><![CDATA[Все лицензии]]></string>
+    <string name="_bx_market_menu_item_title_system_products_licenses"><![CDATA[Мои лицензии]]></string>
+    <string name="_bx_market_menu_item_title_products_licenses"><![CDATA[Мои лицензии]]></string>
+
 
 	<string name="_bx_market_grid_filter_item_title_adm_select_one_filter1"><![CDATA[Все статусы]]></string>
 	<string name="_bx_market_grid_filter_item_title_adm_active"><![CDATA[Активные]]></string>
@@ -306,17 +317,19 @@
     <string name="_bx_market_grid_action_err_delete"><![CDATA[Невозможно удалить выбранный(ные) продукт(ы).]]></string>
     <string name="_bx_market_grid_txt_account_manager"><![CDATA[Перенаправить в Управление аккаунтом.]]></string>
     
+    <string name="_bx_market_grid_column_title_lcs_profile_id"><![CDATA[Владелец]]></string>
+    <string name="_bx_market_grid_column_title_lcs_transaction"><![CDATA[Заказ]]></string>
     <string name="_bx_market_grid_column_title_lcs_product"><![CDATA[Продукт]]></string>
-	<string name="_bx_market_grid_column_title_lcs_license"><![CDATA[Лицензия]]></string>
-	<string name="_bx_market_grid_column_title_lcs_type"><![CDATA[Тип]]></string>
-	<string name="_bx_market_grid_column_title_lcs_domain"><![CDATA[Домен]]></string>
-	<string name="_bx_market_grid_column_title_lcs_added"><![CDATA[Начало]]></string>
-	<string name="_bx_market_grid_column_title_lcs_expired"><![CDATA[Конец]]></string>
-	<string name="_bx_market_grid_action_title_lcs_reset"><![CDATA[Сбросить]]></string>
-	<string name="_bx_market_grid_action_err_cannot_perform"><![CDATA[Не могу выполнить действие. Пожалуйста, сообщите.]]></string>
-	<string name="_bx_market_grid_txt_lcs_type_single"><![CDATA[постоянная]]></string>
-	<string name="_bx_market_grid_txt_lcs_type_recurring"><![CDATA[подписка]]></string>
-	<string name="_bx_market_grid_txt_lcs_never"><![CDATA[никогда]]></string>
+    <string name="_bx_market_grid_column_title_lcs_license"><![CDATA[Лицензия]]></string>
+    <string name="_bx_market_grid_column_title_lcs_type"><![CDATA[Тип]]></string>
+    <string name="_bx_market_grid_column_title_lcs_domain"><![CDATA[Домен]]></string>
+    <string name="_bx_market_grid_column_title_lcs_added"><![CDATA[Начало]]></string>
+    <string name="_bx_market_grid_column_title_lcs_expired"><![CDATA[Конец]]></string>
+    <string name="_bx_market_grid_action_title_lcs_reset"><![CDATA[Сбросить]]></string>
+    <string name="_bx_market_grid_action_err_cannot_perform"><![CDATA[Не могу выполнить действие. Пожалуйста, сообщите.]]></string>
+    <string name="_bx_market_grid_txt_lcs_type_single"><![CDATA[постоянная]]></string>
+    <string name="_bx_market_grid_txt_lcs_type_recurring"><![CDATA[подписка]]></string>
+    <string name="_bx_market_grid_txt_lcs_never"><![CDATA[никогда]]></string>
 
     <string name="_bx_market_chart_growth"><![CDATA[Рынок: Развитие]]></string>
     <string name="_bx_market_chart_growth_speed"><![CDATA[Рынок: Скорость развития]]></string>