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

UNA Market like on Boonex site: Store.

AntonLV 10 лет назад
Родитель
Сommit
8dd05709e9

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

@@ -397,8 +397,8 @@
 	<string name="_adm_action_cpt_checkout"><![CDATA[Checkout]]></string>
 	<string name="_adm_action_cpt_delete_all"><![CDATA[Delete All]]></string>
 	<string name="_adm_action_cpt_see_all_featured"><![CDATA[See All Featured]]></string>
-	<string name="_adm_action_cpt_see_all_languages"><![CDATA[See All Languages]]></string>
-	<string name="_adm_action_cpt_see_all_modules"><![CDATA[See All Modules]]></string>
+	<string name="_adm_action_cpt_see_all_translations"><![CDATA[See All Languages]]></string>
+	<string name="_adm_action_cpt_see_all_extensions"><![CDATA[See All Modules]]></string>
 	<string name="_adm_action_cpt_see_all_templates"><![CDATA[See All Templates]]></string>
 	<string name="_adm_admtools_Audit"><![CDATA[Audit]]></string>
 	<string name="_adm_admtools_Current_level"><![CDATA[Current status]]></string>
@@ -418,12 +418,12 @@
 	<string name="_adm_block_cpt_downloaded_updates"><![CDATA[Updates]]></string>
 	<string name="_adm_block_cpt_featured"><![CDATA[Featured]]></string>
 	<string name="_adm_block_cpt_goodies"><![CDATA[Storefront]]></string>
-	<string name="_adm_block_cpt_languages"><![CDATA[Languages]]></string>
+	<string name="_adm_block_cpt_translations"><![CDATA[Languages]]></string>
 	<string name="_adm_block_cpt_last_featured"><![CDATA[Latest Featured]]></string>
-	<string name="_adm_block_cpt_last_languages"><![CDATA[Latest Languages]]></string>
-	<string name="_adm_block_cpt_last_modules"><![CDATA[Latest Modules]]></string>
+	<string name="_adm_block_cpt_last_translations"><![CDATA[Latest Languages]]></string>
+	<string name="_adm_block_cpt_last_extensions"><![CDATA[Latest Modules]]></string>
 	<string name="_adm_block_cpt_last_templates"><![CDATA[Latest Templates]]></string>
-	<string name="_adm_block_cpt_modules"><![CDATA[Modules]]></string>
+	<string name="_adm_block_cpt_extensions"><![CDATA[Modules]]></string>
 	<string name="_adm_block_cpt_modules_upload"><![CDATA[Add New Module]]></string>
 	<string name="_adm_block_cpt_purchases"><![CDATA[Purchases]]></string>
 	<string name="_adm_block_cpt_space"><![CDATA[Space Usage]]></string>

+ 4 - 1
modules/boonex/market/classes/BxMarketDb.php

@@ -63,9 +63,12 @@ class BxMarketDb extends BxBaseModTextDb
 				break;
 
 			case 'featured':
+				if(!is_array($aParams['value']))
+					$aParams['value'] = array($aParams['value']);
+
 				$sFieldsClause .= "";
 				$sJoinClause .= "";
-				$sWhereClause .= ""; //TODO: there is no 'featured' flag right now.		" AND `te`.`featured`='1' ";
+				$sWhereClause .= " AND `te`.`" . $CNF['FIELD_AUTHOR'] . "` IN (" . $this->implode_escape($aParams['value']) . ")";
 				$sOrderClause = "`te`.`added` " . (isset($aParams['order_way']) ? $aOrderWay[$aParams['order_way']] : "DESC");
 				break;
 

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

@@ -397,8 +397,8 @@
 	<string name="_adm_action_cpt_checkout"><![CDATA[Оплата]]></string>
 	<string name="_adm_action_cpt_delete_all"><![CDATA[Удалить всё]]></string>
 	<string name="_adm_action_cpt_see_all_featured"><![CDATA[Смотреть всех Избранных]]></string>
-	<string name="_adm_action_cpt_see_all_languages"><![CDATA[Смотреть все Языки]]></string>
-	<string name="_adm_action_cpt_see_all_modules"><![CDATA[Смотреть все Модули]]></string>
+	<string name="_adm_action_cpt_see_all_translations"><![CDATA[Смотреть все Языки]]></string>
+	<string name="_adm_action_cpt_see_all_extensions"><![CDATA[Смотреть все Модули]]></string>
 	<string name="_adm_action_cpt_see_all_templates"><![CDATA[Смотреть все Темы]]></string>
 	<string name="_adm_admtools_Audit"><![CDATA[Аудит]]></string>
 	<string name="_adm_admtools_Current_level"><![CDATA[Настоящий статус]]></string>
@@ -420,10 +420,10 @@
 	<string name="_adm_block_cpt_goodies"><![CDATA[Витрина]]></string>
 	<string name="_adm_block_cpt_languages"><![CDATA[Языки]]></string>
 	<string name="_adm_block_cpt_last_featured"><![CDATA[Последние Избранные]]></string>
-	<string name="_adm_block_cpt_last_languages"><![CDATA[Последние Языки]]></string>
-	<string name="_adm_block_cpt_last_modules"><![CDATA[Последние Модули]]></string>
+	<string name="_adm_block_cpt_last_translations"><![CDATA[Последние Языки]]></string>
+	<string name="_adm_block_cpt_last_extensions"><![CDATA[Последние Модули]]></string>
 	<string name="_adm_block_cpt_last_templates"><![CDATA[Последние Темы]]></string>
-	<string name="_adm_block_cpt_modules"><![CDATA[Модули]]></string>
+	<string name="_adm_block_cpt_extensions"><![CDATA[Модули]]></string>
 	<string name="_adm_block_cpt_modules_upload"><![CDATA[Добавить новый Модуль]]></string>
 	<string name="_adm_block_cpt_purchases"><![CDATA[Покупки]]></string>
 	<string name="_adm_block_cpt_space"><![CDATA[Использовано места]]></string>

+ 22 - 36
studio/classes/BxDolStudioStore.php

@@ -7,6 +7,8 @@
  * @{
  */
 
+bx_import('BxDolStudioInstallerUtils');
+
 define('BX_DOL_STUDIO_STR_TYPE_DEFAULT', 'downloaded');
 
 class BxDolStudioStore extends BxTemplStudioPage
@@ -17,7 +19,7 @@ class BxDolStudioStore extends BxTemplStudioPage
     protected $iClient;
     protected $sClientKey; 
 
-    protected $aAlias;
+    protected $sPublicDataUrl;
     protected $bAuthAccessUpdates;
 
     function __construct($sPage = "")
@@ -26,13 +28,7 @@ class BxDolStudioStore extends BxTemplStudioPage
 
         $this->oDb = new BxDolStudioStoreQuery();
 
-        $this->aAlias = array(
-            'tag' => array(
-                'modules' => 'extensions',
-                'languages' => 'translations'
-            ),
-            'category' => array()
-        );
+        $this->sPublicDataUrl = BX_DOL_UNA_URL_MARKET;
         $this->bAuthAccessUpdates = false;
 
         $this->sPage = BX_DOL_STUDIO_STR_TYPE_DEFAULT;
@@ -174,17 +170,17 @@ class BxDolStudioStore extends BxTemplStudioPage
             'actions' => array(
                 array('name' => 'featured', 'caption' => '_adm_action_cpt_see_all_featured', 'url' => 'javascript:void(0)', 'onclick' => $sJsObject . ".changePage('featured', this)")
             ),
-            'items' => $oJson->load(BX_DOL_UNITY_URL_MARKET . 'json_browse_featured', array('start' => 0, 'per_page' => $iPerPage, 'client' => $this->iClient, 'key' => $this->sClientKey))
+            'items' => $oJson->load($this->sPublicDataUrl . 'json_browse_featured', array('start' => 0, 'per_page' => $iPerPage, 'client' => $this->iClient, 'key' => $this->sClientKey))
         );
 
 
         // Load modules
         $aProducts[] = array(
-            'caption' => '_adm_block_cpt_last_modules',
+            'caption' => '_adm_block_cpt_last_extensions',
             'actions' => array(
-                array('name' => 'modules', 'caption' => '_adm_action_cpt_see_all_modules', 'url' => 'javascript:void(0)', 'onclick' => $sJsObject . ".changePage('modules', this)")
+                array('name' => 'modules', 'caption' => '_adm_action_cpt_see_all_extensions', 'url' => 'javascript:void(0)', 'onclick' => $sJsObject . ".changePage('extensions', this)")
             ),
-            'items' => $oJson->load(BX_DOL_UNITY_URL_MARKET . 'json_browse_by_tag', array('value' => 'extensions', 'start' => 0, 'per_page' => $iPerPage, 'client' => $this->iClient, 'key' => $this->sClientKey))
+            'items' => $oJson->load($this->sPublicDataUrl . 'json_browse_by_category', array('value' => 'extensions', 'start' => 0, 'per_page' => $iPerPage, 'client' => $this->iClient, 'key' => $this->sClientKey))
         );
 
         // Load templates
@@ -193,16 +189,16 @@ class BxDolStudioStore extends BxTemplStudioPage
             'actions' => array(
                 array('name' => 'templates', 'caption' => '_adm_action_cpt_see_all_templates', 'url' => 'javascript:void(0)', 'onclick' => $sJsObject . ".changePage('templates', this)")
             ),
-            'items' => $oJson->load(BX_DOL_UNITY_URL_MARKET . 'json_browse_by_tag', array('value' => 'templates', 'start' => 0, 'per_page' => $iPerPage, 'client' => $this->iClient, 'key' => $this->sClientKey))
+            'items' => $oJson->load($this->sPublicDataUrl . 'json_browse_by_category', array('value' => 'templates', 'start' => 0, 'per_page' => $iPerPage, 'client' => $this->iClient, 'key' => $this->sClientKey))
         );
 
         // Load languages
         $aProducts[] = array(
-            'caption' => '_adm_block_cpt_last_languages',
+            'caption' => '_adm_block_cpt_last_translations',
             'actions' => array(
-                array('name' => 'languages', 'caption' => '_adm_action_cpt_see_all_languages', 'url' => 'javascript:void(0)', 'onclick' => $sJsObject . ".changePage('languages', this)")
+                array('name' => 'languages', 'caption' => '_adm_action_cpt_see_all_translations', 'url' => 'javascript:void(0)', 'onclick' => $sJsObject . ".changePage('translations', this)")
             ),
-            'items' => $oJson->load(BX_DOL_UNITY_URL_MARKET . 'json_browse_by_tag', array('value' => 'translations', 'start' => 0, 'per_page' => $iPerPage, 'client' => $this->iClient, 'key' => $this->sClientKey))
+            'items' => $oJson->load($this->sPublicDataUrl . 'json_browse_by_category', array('value' => 'translations', 'start' => 0, 'per_page' => $iPerPage, 'client' => $this->iClient, 'key' => $this->sClientKey))
         );
 
         return $aProducts;
@@ -210,12 +206,17 @@ class BxDolStudioStore extends BxTemplStudioPage
 
     protected function loadFeatured($iStart, $iPerPage)
     {
-        return BxDolStudioJson::getInstance()->load(BX_DOL_UNITY_URL_MARKET . 'json_browse_featured', array('start' => $iStart, 'per_page' => $iPerPage, 'client' => $this->iClient, 'key' => $this->sClientKey));
+        return BxDolStudioJson::getInstance()->load($this->sPublicDataUrl . 'json_browse_featured', array('start' => $iStart, 'per_page' => $iPerPage, 'client' => $this->iClient, 'key' => $this->sClientKey));
+    }
+
+	protected function loadCategory($sCategory, $iStart, $iPerPage)
+    {
+        return BxDolStudioJson::getInstance()->load($this->sPublicDataUrl . 'json_browse_by_category', array('value' => $sCategory, 'start' => $iStart, 'per_page' => $iPerPage, 'client' => $this->iClient, 'key' => $this->sClientKey));
     }
 
     protected function loadTag($sTag, $iStart, $iPerPage)
     {
-        return BxDolStudioJson::getInstance()->load(BX_DOL_UNITY_URL_MARKET . 'json_browse_by_tag', array('value' => $this->aliasToNameTag($sTag), 'start' => $iStart, 'per_page' => $iPerPage, 'client' => $this->iClient, 'key' => $this->sClientKey));
+        return BxDolStudioJson::getInstance()->load($this->sPublicDataUrl . 'json_browse_by_tag', array('value' => $sTag, 'start' => $iStart, 'per_page' => $iPerPage, 'client' => $this->iClient, 'key' => $this->sClientKey));
     }
 
     protected function loadPurchases()
@@ -242,7 +243,7 @@ class BxDolStudioStore extends BxTemplStudioPage
                 $aCounts[$aItem['item_id']] = $aItem['item_count'];
             }
 
-            $aProducts = $oJson->load(BX_DOL_UNITY_URL_MARKET . 'json_browse_selected', array('products' => base64_encode(serialize($aIds))));
+            $aProducts = $oJson->load($this->sPublicDataUrl . 'json_browse_selected', array('products' => base64_encode(serialize($aIds))));
             if(!empty($aProducts))
                 $aResult[$sVendor] = array(
                     'ids' => $aIds,
@@ -268,7 +269,7 @@ class BxDolStudioStore extends BxTemplStudioPage
     {
         $oJson = BxDolStudioJson::getInstance();
 
-        return $oJson->load(BX_DOL_UNITY_URL_MARKET . 'json_get_product_by_name', array('value' => $sModuleName, 'client' => $this->iClient, 'key' => $this->sClientKey));
+        return $oJson->load($this->sPublicDataUrl . 'json_get_product_by_name', array('value' => $sModuleName, 'client' => $this->iClient, 'key' => $this->sClientKey));
     }
 
     /*
@@ -300,22 +301,7 @@ class BxDolStudioStore extends BxTemplStudioPage
             $aIds[] = $aItem['item_id'];
 
         $sSid = bx_site_hash();
-        return BX_DOL_UNITY_URL_MARKET . 'purchase/' . $sVendor . '?sid=' . $sSid . '&products=' . base64_encode(implode(',', $aIds));
-    }
-
-    private function aliasToNameTag($sAlias)
-    {
-        return $this->aliasToName('tag', $sAlias);
-    }
-
-    private function aliasToNameCategory($sAlias)
-    {
-        return $this->aliasToName('category', $sAlias);
-    }
-
-    private function aliasToName($sType, $sAlias)
-    {
-        return isset($this->aAlias[$sType][$sAlias]) ? $this->aAlias[$sType][$sAlias] : $sAlias;
+        return $this->sPublicDataUrl . 'purchase/' . $sVendor . '?sid=' . $sSid . '&products=' . base64_encode(implode(',', $aIds));
     }
 }
 

+ 20 - 9
studio/template/scripts/BxBaseStudioStore.php

@@ -161,22 +161,32 @@ class BxBaseStudioStore extends BxDolStudioStore
         ));
     }
 
-    protected function getModulesList($bWrapInBlock = true)
+    protected function getExtensionsList($bWrapInBlock = true)
     {
-        return $this->getTag('modules', $bWrapInBlock);
+        return $this->getCategory('extensions', $bWrapInBlock);
     }
 
     protected function getTemplatesList($bWrapInBlock = true)
     {
-        return $this->getTag('templates', $bWrapInBlock);
+        return $this->getCategory('templates', $bWrapInBlock);
     }
 
-    protected function getLanguagesList($bWrapInBlock = true)
+    protected function getTranslationsList($bWrapInBlock = true)
     {
-        return $this->getTag('languages', $bWrapInBlock);
+        return $this->getCategory('translations', $bWrapInBlock);
     }
 
-    protected function getTag($sTag, $bWrapInBlock = true)
+    protected function getTag($sLabel, $bWrapInBlock = true)
+    {
+    	return $this->getLabel('tag', $sLabel, $bWrapInBlock);
+    }
+
+	protected function getCategory($sLabel, $bWrapInBlock = true)
+    {
+    	return $this->getLabel('category', $sLabel, $bWrapInBlock);
+    }
+
+    protected function getLabel($sType, $sLabel, $bWrapInBlock = true)
     {
         $sJsObject = $this->getPageJsObject();
         $oTemplate = BxDolStudioTemplate::getInstance();
@@ -186,12 +196,13 @@ class BxBaseStudioStore extends BxDolStudioStore
         if(empty($iPerPage))
             $iPerPage = $this->iPerPageDefault;
 
-        $aProducts = $this->loadTag($sTag, $iStart, $iPerPage + 1);
+		$sMethod = 'load' . bx_gen_method_name($sType);
+        $aProducts = $this->$sMethod($sLabel, $iStart, $iPerPage + 1);
 
         $oPaginate = new BxTemplPaginate(array(
             'start' => $iStart,
             'per_page' => $iPerPage,
-            'on_change_page' => $sJsObject . ".changePagePaginate(this, '" . $sTag . "', {start}, {per_page})"
+            'on_change_page' => $sJsObject . ".changePagePaginate(this, '" . $sLabel . "', {start}, {per_page})"
         ));
         $oPaginate->setNumFromDataArray($aProducts);
 
@@ -206,7 +217,7 @@ class BxBaseStudioStore extends BxDolStudioStore
         return $oTemplate->parseHtmlByName('store.html', array(
             'js_object' => $sJsObject,
             'content' => $this->getBlockCode(array(
-				'caption' => '_adm_block_cpt_' . $sTag,
+				'caption' => '_adm_block_cpt_' . $sLabel,
 				'items' => $sContent,
 			))
         ));