Kaynağa Gözat

Merge branch 'master' of github.com:boonex/dolphin

Alex Trofimov 10 yıl önce
ebeveyn
işleme
e46100dcb0

+ 1 - 1
install/sql/system.sql

@@ -325,7 +325,7 @@ INSERT INTO `sys_options`(`category_id`, `name`, `caption`, `value`, `type`, `ex
 
 (@iCategoryId, 'sys_transcoder_queue_storage', '_adm_stg_cpt_option_sys_transcoder_queue_storage', '', 'checkbox', '', '', '', 50),
 
-(@iCategoryId, 'sys_default_payment', '_adm_stg_cpt_option_sys_default_payment', 'payment', 'select', 'a:3:{s:6:"module";s:6:"system";s:6:"method";s:12:"get_payments";s:5:"class";s:21:"TemplPaymentsServices";}', 'Avail', '_adm_stg_err_option_sys_default_payment', 60);
+(@iCategoryId, 'sys_default_payment', '_adm_stg_cpt_option_sys_default_payment', 'payment', 'select', 'a:3:{s:6:"module";s:6:"system";s:6:"method";s:12:"get_payments";s:5:"class";s:21:"TemplPaymentsServices";}', '', '', 60);
 
 
 --

+ 6 - 7
modules/boonex/convos/classes/BxCnvFormEntry.php

@@ -147,24 +147,23 @@ class BxCnvFormEntry extends BxBaseModTextFormEntry
     });
 </script>
 <style>
-    .bx-form-input-autotoken {
+    .bx-form-value .bx-form-input-autotoken {
         float:left;
         padding:0px;
         height:auto;
     }
-    .bx-form-input-autotoken b {
+    .bx-form-value .bx-form-input-autotoken b {
         cursor:pointer;
         display:block;
         float:left;
-        padding:0.5em;
-        padding-right:1.5em;
+        padding:0.3em 1.5em 0.3em 0.5em;
         margin:0.1em;
         font-weight:normal;
     }
-    .bx-form-input-autotoken b:hover {
+    .bx-form-value .bx-form-input-autotoken b:hover {
         opacity:0.7;
     }
-    .bx-form-input-autotoken b:after {
+    .bx-form-value .bx-form-input-autotoken b:after {
         position:absolute;
         content:"x";
         padding:0 0.5em;
@@ -172,7 +171,7 @@ class BxCnvFormEntry extends BxBaseModTextFormEntry
         font-size:0.7em;
         font-weight:bold;
     }
-    .bx-form-input-autotoken input {
+    .bx-form-value .bx-form-input-autotoken input {
         border:0;
         margin:0;
         padding:0 0 0 5px;

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

@@ -1154,7 +1154,6 @@
 	<string name="_adm_stg_cpt_option_sys_db_cache_enable"><![CDATA[Enable DB cache]]></string>
 	<string name="_adm_stg_cpt_option_sys_db_cache_engine"><![CDATA[DB cache engine (other than File option may require custom server setup)]]></string>
 	<string name="_adm_stg_cpt_option_sys_default_payment"><![CDATA[Payment module]]></string>
-	<string name="_adm_stg_err_option_sys_default_payment"><![CDATA[You need to install at least one payment processing module and activate it here by selecting from the list.]]></string>
 	<string name="_adm_stg_cpt_option_sys_format_date"><![CDATA[Date Format]]></string>
 	<string name="_adm_stg_cpt_option_sys_format_datetime"><![CDATA[Datetime Format]]></string>
 	<string name="_adm_stg_cpt_option_sys_format_time"><![CDATA[Time Format]]></string>

+ 18 - 7
modules/boonex/market/classes/BxMarketMenuView.php

@@ -34,16 +34,20 @@ class BxMarketMenuView extends BxBaseModTextMenuView
 
 		$oPayment = BxDolPayments::getInstance();
 
-		$bResult = true;
+		$bResult = false;
 		switch ($a['name']) {
 			case 'add-to-cart':
-				$bResult = (float)$this->_aContentInfo[$CNF['FIELD_PRICE_SINGLE']] != 0;
-				if(!$bResult) 
+				if((float)$this->_aContentInfo[$CNF['FIELD_PRICE_SINGLE']] == 0) 
 					break;
 
+				$aJs = $oPayment->getAddToCartJs($this->_aContentInfo['author'], $this->MODULE, $this->_aContentInfo['id'], 1);
+				if(empty($aJs) || !is_array($aJs))
+					break;
+
+				list($sJsCode, $sJsMethod) = $aJs;
 				$aCurrency = $this->_oModule->_oConfig->getCurrency();
 
-				list($sJsCode, $sJsMethod) = $oPayment->getAddToCartJs($this->_aContentInfo['author'], $this->MODULE, $this->_aContentInfo['id'], 1);
+				$bResult = true;
 				$this->addMarkers(array(
 					'add_to_cart_title' => _t('_bx_market_menu_item_title_add_to_cart', $aCurrency['sign'], $this->_aContentInfo[$CNF['FIELD_PRICE_SINGLE']]),
 		        	'add_to_cart_onclick' => $sJsMethod
@@ -51,18 +55,25 @@ class BxMarketMenuView extends BxBaseModTextMenuView
 				break;
 
 			case 'subscribe':
-				$bResult = (float)$this->_aContentInfo[$CNF['FIELD_PRICE_RECURRING']] != 0;
-				if(!$bResult) 
+				if((float)$this->_aContentInfo[$CNF['FIELD_PRICE_RECURRING']] == 0) 
 					break;
 
+				$aJs = $oPayment->getSubscribeJs($this->_aContentInfo['author'], '', $this->MODULE, $this->_aContentInfo['id'], 1);
+				if(empty($aJs) || !is_array($aJs))
+					break;
+
+				list($sJsCode, $sJsMethod) = $aJs;
 				$aCurrency = $this->_oModule->_oConfig->getCurrency();
 
-				list($sJsCode, $sJsMethod) = $oPayment->getSubscribeJs($this->_aContentInfo['author'], '', $this->MODULE, $this->_aContentInfo['id'], 1);
+				$bResult = true;
 				$this->addMarkers(array(
 					'subscribe_title' => _t('_bx_market_menu_item_title_subscribe', $aCurrency['sign'], $this->_aContentInfo[$CNF['FIELD_PRICE_RECURRING']], _t('_bx_market_txt_per_' . $this->_aContentInfo[$CNF['FIELD_DURATION_RECURRING']])),
 		        	'subscribe_onclick' => $sJsMethod
 		        )); 
 				break;
+
+			default:
+				$bResult = true;
 		}
 
 		return $bResult;

+ 2 - 1
modules/boonex/market/classes/BxMarketModule.php

@@ -169,7 +169,8 @@ class BxMarketModule extends BxBaseModTextModule
 				'title' => $aItem[$CNF['FIELD_TITLE']],
 				'description' => $aItem[$CNF['FIELD_TEXT']],
 				'url' => BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=view-product&id=' . $aItem[$CNF['FIELD_ID']]),
-				'price' => $aItem[$CNF['FIELD_PRICE_SINGLE']],
+				'price_single' => $aItem[$CNF['FIELD_PRICE_SINGLE']],
+            	'price_recurring' => $aItem[$CNF['FIELD_PRICE_RECURRING']],
            );
 
         return $aResult;

+ 22 - 12
modules/boonex/market/classes/BxMarketTemplate.php

@@ -171,23 +171,33 @@ class BxMarketTemplate extends BxBaseModTextTemplate
     	$bTmplVarsSingle = (float)$aData[$CNF['FIELD_PRICE_SINGLE']] != 0;
     	$aTmplVarsSingle = array();
     	if($bTmplVarsSingle) {
-    		list($sJsCode, $sSingleOnclick) = $oPayment->getAddToCartJs($aData[$CNF['FIELD_AUTHOR']], $this->_oConfig->getName(), $aData[$CNF['FIELD_ID']], 1);
-
-    		$aTmplVarsSingle = array(
-    			'entry_price_single_onclick' => $sSingleOnclick,
-				'entry_price_single' => _t('_bx_market_txt_price_single', $this->_aCurrency['sign'], $aData[$CNF['FIELD_PRICE_SINGLE']])
-			);
+    		$aJsSingle = $oPayment->getAddToCartJs($aData[$CNF['FIELD_AUTHOR']], $this->_oConfig->getName(), $aData[$CNF['FIELD_ID']], 1);
+    		if(!empty($aJsSingle) && is_array($aJsSingle)) {
+    			list($sJsCode, $sSingleOnclick) = $aJsSingle;
+    			
+	    		$aTmplVarsSingle = array(
+	    			'entry_price_single_onclick' => $sSingleOnclick,
+					'entry_price_single' => _t('_bx_market_txt_price_single', $this->_aCurrency['sign'], $aData[$CNF['FIELD_PRICE_SINGLE']])
+				);
+    		}
+    		else 
+    			$bTmplVarsSingle = false;
     	}
 
     	$bTmplVarsRecurring = (float)$aData[$CNF['FIELD_PRICE_RECURRING']] != 0;
     	$aTmplVarsRecurring = array();
     	if($bTmplVarsRecurring) {
-        	list($sJsCode, $sRecurringOnclick) = $oPayment->getSubscribeJs($aData[$CNF['FIELD_AUTHOR']], '', $this->_oConfig->getName(), $aData[$CNF['FIELD_ID']], 1);
-
-        	$aTmplVarsRecurring = array(
-        		'entry_price_recurring_onclick' => $sRecurringOnclick,
-				'entry_price_recurring' => _t('_bx_market_txt_price_recurring', $this->_aCurrency['sign'], $aData[$CNF['FIELD_PRICE_RECURRING']], _t('_bx_market_txt_per_' . $aData[$CNF['FIELD_DURATION_RECURRING']] . '_short'))
-			);
+        	$aJsRecurring = $oPayment->getSubscribeJs($aData[$CNF['FIELD_AUTHOR']], '', $this->_oConfig->getName(), $aData[$CNF['FIELD_ID']], 1);
+        	if(!empty($aJsRecurring) && is_array($aJsRecurring)) {
+				list($sJsCode, $sRecurringOnclick) = $aJsRecurring;
+
+	        	$aTmplVarsRecurring = array(
+	        		'entry_price_recurring_onclick' => $sRecurringOnclick,
+					'entry_price_recurring' => _t('_bx_market_txt_price_recurring', $this->_aCurrency['sign'], $aData[$CNF['FIELD_PRICE_RECURRING']], _t('_bx_market_txt_per_' . $aData[$CNF['FIELD_DURATION_RECURRING']] . '_short'))
+				);
+        	}
+        	else 
+        		$bTmplVarsRecurring = false;
     	}
 
     	$oVotes = BxDolVote::getObjectInstance($CNF['OBJECT_VOTES'], $aData['id']);

+ 2 - 0
modules/boonex/notifications/install/langs/en.xml

@@ -23,6 +23,8 @@
 
 	<string name="_bx_ntfs_alert_action_added"><![CDATA[add]]></string>
 	<string name="_bx_ntfs_alert_action_commentPost"><![CDATA[add comment]]></string>
+	<string name="_bx_ntfs_alert_action_doVote"><![CDATA[add vote]]></string>
+	<string name="_bx_ntfs_alert_action_connection_added"><![CDATA[add connection]]></string>
 
 	<string name="_bx_ntfs_txt_msg_no_results"><![CDATA[Empty]]></string>
 	<string name="_bx_ntfs_txt_object_added"><![CDATA[<a class="bx-ntfs-content-profile" href="{owner_link}">{owner_name}</a> added a new {entry_sample} <a href="{entry_url}">{entry_caption}</a>]]></string>

+ 1 - 1
modules/boonex/payment/classes/BxPaymentGridHistory.php

@@ -26,7 +26,7 @@ class BxPaymentGridHistory extends BxBaseModPaymentGridOrders
 		if(empty($this->_aQueryAppend['client_id']))
 			return array();
 
-		$this->_aOptions['source'] .= $this->_oModule->_oDb->prepare(" AND `tt`.`client_id`=?", $this->_aQueryAppend['client_id']);
+		$this->_aOptions['source'] .= $this->_oModule->_oDb->prepareAsString(" AND `tt`.`client_id`=?", $this->_aQueryAppend['client_id']);
 
         return parent::_getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
     }

+ 1 - 1
modules/boonex/payment/classes/BxPaymentGridPending.php

@@ -81,7 +81,7 @@ class BxPaymentGridPending extends BxBaseModPaymentGridOrders
     	if(empty($this->_aQueryAppend['seller_id']))
     		return array();
 
-		$this->_aOptions['source'] .= $this->_oModule->_oDb->prepare(" AND `tt`.`seller_id`=?", $this->_aQueryAppend['seller_id']);
+		$this->_aOptions['source'] .= $this->_oModule->_oDb->prepareAsString(" AND `tt`.`seller_id`=?", $this->_aQueryAppend['seller_id']);
 
         return parent::_getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
     }

+ 10 - 4
modules/boonex/payment/classes/BxPaymentGridProcessed.php

@@ -23,6 +23,7 @@ class BxPaymentGridProcessed extends BxBaseModPaymentGridOrders
 
     public function performActionAdd()
     {
+    	$sType = BX_PAYMENT_TYPE_SINGLE;
     	$sAction = 'add';
     	$sJsObject = $this->_oModule->_oConfig->getJsObject('processed');
 
@@ -52,7 +53,7 @@ class BxPaymentGridProcessed extends BxBaseModPaymentGridOrders
         foreach($aModules as $aModule)
            $oForm->aInputs['module_id']['values'][] = array('key' => $aModule['id'], 'value' => $aModule['title']);
 
-		$oForm->aInputs['items']['content'] = $this->_oModule->_oTemplate->displayItems();
+		$oForm->aInputs['items']['content'] = $this->_oModule->_oTemplate->displayItems($sType);
 
         $oForm->initChecker();
         if($oForm->isSubmittedAndValid()) {
@@ -63,6 +64,7 @@ class BxPaymentGridProcessed extends BxBaseModPaymentGridOrders
             	return echoJson(array('msg' => $this->_sLangsPrefix . 'err_empty_items'));
 
 			$aItems = array();
+			$sPriceKey = $this->_oModule->_oConfig->getKey('KEY_ARRAY_PRICE_SINGLE');
 			foreach($aItemIds as $iItemId) {
 	            $iItemId = (int)$iItemId;
 	            $fItemPrice = (float)$oForm->getSubmittedValue('item-price-' . $iItemId, $sFormMethod);
@@ -71,14 +73,18 @@ class BxPaymentGridProcessed extends BxBaseModPaymentGridOrders
 	            if($iItemQuantity <= 0)
 	                return echoJson(array('msg' => $this->_sLangsPrefix . 'err_wrong_quantity'));
 
-				$aItems[] = array('id' => $iItemId, 'price' => $fItemPrice, 'quantity' => $iItemQuantity);
+				$aItems[] = array(
+					'id' => $iItemId, 
+					 $sPriceKey => $fItemPrice, 
+					'quantity' => $iItemQuantity
+				);
 			}
 
         	$mixedResult = $this->_oModule->getObjectOrders()->addOrder(array(
         		'client_id' => $oForm->getCleanValue('client_id'),
         		'seller_id' => $oForm->getCleanValue('seller_id'),
         		'provider' => 'manual',
-        		'type' => BX_PAYMENT_TYPE_SINGLE,
+        		'type' => $sType,
         		'order' => $oForm->getCleanValue('order'),
         		'error_code' => 0,
         		'error_msg' => 'Manually processed',        		
@@ -116,7 +122,7 @@ class BxPaymentGridProcessed extends BxBaseModPaymentGridOrders
     	if(empty($this->_aQueryAppend['seller_id']))
     		return array();
 
-		$this->_aOptions['source'] .= $this->_oModule->_oDb->prepare(" AND `tt`.`seller_id`=?", $this->_aQueryAppend['seller_id']);
+		$this->_aOptions['source'] .= $this->_oModule->_oDb->prepareAsString(" AND `tt`.`seller_id`=?", $this->_aQueryAppend['seller_id']);
 
         return parent::_getDataSql($sFilter, $sOrderField, $sOrderDir, $iStart, $iPerPage);
     }

+ 2 - 2
modules/boonex/payment/classes/BxPaymentModule.php

@@ -111,14 +111,14 @@ class BxPaymentModule extends BxBaseModPaymentModule
         echoJson($aResult);
     }
 
-    public function actionGetItems($iModuleId)
+    public function actionGetItems($sType, $iModuleId)
     {
     	$iSellerId = $this->getProfileId();
         $aItems = $this->callGetCartItems((int)$iModuleId, array($iSellerId));
 
         $aResult = array('code' => 0);
         if(is_array($aItems) && !empty($aItems))
-            $aResult['data'] = $this->_oTemplate->displayItems($aItems);
+            $aResult['data'] = $this->_oTemplate->displayItems($sType, $aItems);
 
 		echoJson($aResult);
     }

+ 2 - 1
modules/boonex/payment/classes/BxPaymentProvider2Checkout.php

@@ -47,10 +47,11 @@ class BxPaymentProvider2Checkout extends BxBaseModPaymentProvider implements iBx
         );
 
         $iIndex = 0;
+        $sPriceKey = $this->_oModule->_oConfig->getKey('KEY_ARRAY_PRICE_SINGLE');
         foreach($aCartInfo['items'] as $aItem) {
         	$aFormData['li_' . $iIndex . '_type'] = 'product';
             $aFormData['li_' . $iIndex . '_name'] = $aItem['title'];
-            $aFormData['li_' . $iIndex . '_price'] = $aItem['price'];
+            $aFormData['li_' . $iIndex . '_price'] = $aItem[$sPriceKey];
             $aFormData['li_' . $iIndex . '_quantity'] = $aItem['quantity'];
             $aFormData['li_' . $iIndex . '_tangible'] = 'N';
 

+ 2 - 2
modules/boonex/payment/classes/BxPaymentTemplate.php

@@ -237,14 +237,14 @@ class BxPaymentTemplate extends BxBaseModPaymentTemplate
         return $this->parseHtmlByName('order_' . $sType . '.html', $aResult);
     }
 
-    public function displayItems($aItems = array())
+    public function displayItems($sType, $aItems = array())
     {
         $aTmplVarsItems = array();
 
         foreach($aItems as $aItem) {
             $aTmplVarsItems[] = array(
                 'id' => $aItem['id'],
-                'price' => $aItem['price'],
+                'price' => $this->_oConfig->getPrice($sType, $aItem),
                 'bx_if:link' => array(
                     'condition' => !empty($aItem['url']),
                     'content' => array(

+ 1 - 1
modules/boonex/payment/js/orders.js

@@ -38,7 +38,7 @@ BxPaymentOrders.prototype.paOnSelectModule = function(oSelect) {
     oPopup.bx_loading(true);
 
     $.get(
-        this._sActionsUrl + 'get_items/' + parseInt($(oSelect).val()) + '/',
+        this._sActionsUrl + 'get_items/single/' + parseInt($(oSelect).val()) + '/',
         {
             _t:oDate.getTime()
         },

+ 2 - 0
modules/boonex/russian/data/langs/bx_notifications/ru.xml

@@ -23,6 +23,8 @@
 
 	<string name="_bx_ntfs_alert_action_added"><![CDATA[добавить]]></string>
 	<string name="_bx_ntfs_alert_action_commentPost"><![CDATA[добавить коментарий]]></string>
+	<string name="_bx_ntfs_alert_action_doVote"><![CDATA[добавить голос]]></string>
+	<string name="_bx_ntfs_alert_action_connection_added"><![CDATA[добавить связь]]></string>
 
 	<string name="_bx_ntfs_txt_msg_no_results"><![CDATA[Пусто]]></string>
 	<string name="_bx_ntfs_txt_object_added"><![CDATA[<a class="bx-ntfs-content-profile" href="{owner_link}">{owner_name}</a> добавил новое {entry_sample} <a href="{entry_url}">{entry_caption}</a>]]></string>

+ 3 - 1
modules/boonex/russian/data/langs/bx_timeline/ru.xml

@@ -129,5 +129,7 @@
 	<string name="_bx_timeline_txt_shared_by"><![CDATA[Поделился]]></string>
 	<string name="_bx_timeline_txt_err_cannot_share"><![CDATA[Невозможно поделиться. Пожалуйста, сообщите нам об этой проблеме.]]></string>
 	<string name="_bx_timeline_txt_err_already_shared"><![CDATA[Вы уже поделились этим элементом.]]></string>
-	<string name="_bx_timeline_txt_msg_success_share"><![CDATA[]]></string>	
+	<string name="_bx_timeline_txt_msg_success_share"><![CDATA[]]></string>
+
+	<string name="_bx_ntfs_alert_action_post_common"><![CDATA[добавить сообщение]]></string>
 </resources>

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

@@ -1154,7 +1154,6 @@
 	<string name="_adm_stg_cpt_option_sys_db_cache_enable"><![CDATA[Задействовать кэш БД]]></string>
 	<string name="_adm_stg_cpt_option_sys_db_cache_engine"><![CDATA[Кэш-движок для БД (значение, отличное от File, может потребовать дополнительной настройки сервера)]]></string>
 	<string name="_adm_stg_cpt_option_sys_default_payment"><![CDATA[Модуль оплаты]]></string>
-	<string name="_adm_stg_err_option_sys_default_payment"><![CDATA[Вам нужно установить как минимум один модуль для обработки проплат и активировать его, выбрав из списка.]]></string>
 	<string name="_adm_stg_cpt_option_sys_format_date"><![CDATA[Формат Даты]]></string>
 	<string name="_adm_stg_cpt_option_sys_format_datetime"><![CDATA[Формат Даты и Времени]]></string>
 	<string name="_adm_stg_cpt_option_sys_format_time"><![CDATA[Формат Времени]]></string>

+ 3 - 1
modules/boonex/timeline/install/langs/en.xml

@@ -129,5 +129,7 @@
 	<string name="_bx_timeline_txt_shared_by"><![CDATA[Reposted by]]></string>
 	<string name="_bx_timeline_txt_err_cannot_share"><![CDATA[Cannot repost. Please report.]]></string>
 	<string name="_bx_timeline_txt_err_already_shared"><![CDATA[You already reposted the item.]]></string>
-	<string name="_bx_timeline_txt_msg_success_share"><![CDATA[]]></string>	
+	<string name="_bx_timeline_txt_msg_success_share"><![CDATA[]]></string>
+
+	<string name="_bx_ntfs_alert_action_post_common"><![CDATA[add post]]></string>
 </resources>

+ 5 - 0
modules/boonex/uni/data/template/system/css/auth.css

@@ -0,0 +1,5 @@
+@import url(../../../../../../../template/css/auth.css);
+
+.sys-auth .bx-btn {
+    width: auto;
+}

+ 1 - 1
modules/boonex/uni/install/sql/install.sql

@@ -95,7 +95,7 @@ INSERT INTO `sys_options`(`category_id`, `name`, `caption`, `value`, `type`, `ex
 (@iCategoryId, CONCAT(@sName, '_block_bg_image'), '_bx_uni_stg_cpt_option_block_bg_image', '', 'image', '', '', '', 2),
 (@iCategoryId, CONCAT(@sName, '_block_bg_image_repeat'), '_bx_uni_stg_cpt_option_block_bg_image_repeat', 'no-repeat', 'select', 'no-repeat,repeat,repeat-x,repeat-y', '', '', 3),
 (@iCategoryId, CONCAT(@sName, '_block_bg_image_size'), '_bx_uni_stg_cpt_option_block_bg_image_size', 'cover', 'select', 'auto,cover,contain', '', '', 4),
-(@iCategoryId, CONCAT(@sName, '_block_content_padding'), '_bx_uni_stg_cpt_option_block_content_padding', '1rem', 'digit', '', '', '', 5),
+(@iCategoryId, CONCAT(@sName, '_block_content_padding'), '_bx_uni_stg_cpt_option_block_content_padding', '20px 0px 0px 0px', 'digit', '', '', '', 5),
 (@iCategoryId, CONCAT(@sName, '_block_border_color'), '_bx_uni_stg_cpt_option_block_border_color', 'rgba(208, 208, 208, 1)', 'rgba', '', '', '', 6),
 (@iCategoryId, CONCAT(@sName, '_block_border_size'), '_bx_uni_stg_cpt_option_block_border_size', '0px', 'digit', '', '', '', 7),
 (@iCategoryId, CONCAT(@sName, '_block_border_radius'), '_bx_uni_stg_cpt_option_block_border_radius', '0px', 'digit', '', '', '', 8),

+ 2 - 0
template/css/cmts.css

@@ -179,7 +179,9 @@
 
     a.cmts-uploader-button {
 		position: absolute;
+    	z-index: 1;
     	right: 0px;
+
     	text-decoration: none;
     }
     div.cmts-uploader-file {

+ 7 - 1
template/css/common.css

@@ -460,7 +460,13 @@ input.bx-btn {
 
 .bx-btn.bx-btn-disabled:active,
 .bx-btn.bx-btn-disabled:hover,
-.bx-btn.bx-btn-disabled {
+.bx-btn.bx-btn-disabled,
+.bx-btn.bx-btn-small.bx-btn-disabled:active,
+.bx-btn.bx-btn-small.bx-btn-disabled:hover,
+.bx-btn.bx-btn-small.bx-btn-disabled,
+.bx-btn.bx-btn-primary.bx-btn-disabled:active,
+.bx-btn.bx-btn-primary.bx-btn-disabled:hover,
+.bx-btn.bx-btn-primary.bx-btn-disabled {
     background-color: #ddd;
 }