AntonLV 8 лет назад
Родитель
Сommit
897cd8e4c6

+ 7 - 0
modules/boonex/market/classes/BxMarketConfig.php

@@ -218,6 +218,13 @@ class BxMarketConfig extends BxBaseModTextConfig
     {
     	return $this->_aCurrency;
     }
+
+    public function getEntryName($sName)
+    {
+        $sName = strtolower($sName);
+
+        return uriGenerate($sName, $this->CNF['TABLE_ENTRIES'], $this->CNF['FIELD_NAME']);
+    }
 }
 
 /** @} */

+ 13 - 0
modules/boonex/market/classes/BxMarketFormEntry.php

@@ -27,6 +27,7 @@ class BxMarketFormEntry extends BxBaseModTextFormEntry
         	$sJsObject = $this->_oModule->_oConfig->getJsObject('entry');
 
         	$this->aInputs[$CNF['FIELD_TITLE']]['attrs']['onblur'] = "javascript:" . $sJsObject . ".checkName('" . $CNF['FIELD_TITLE'] . "', '" . $CNF['FIELD_NAME'] . "');";
+        	$this->aInputs[$CNF['FIELD_NAME']]['attrs']['onblur'] = "javascript:" . $sJsObject . ".checkName('" . $CNF['FIELD_TITLE'] . "', '" . $CNF['FIELD_NAME'] . "');";
         }
 
 	    if(isset($this->aInputs[$CNF['FIELD_FILE']])) {
@@ -121,6 +122,12 @@ class BxMarketFormEntry extends BxBaseModTextFormEntry
     {
         $CNF = &$this->_oModule->_oConfig->CNF;
 
+        if(isset($this->aInputs[$CNF['FIELD_NAME']])) {
+            $sName = BxDolForm::getSubmittedValue($CNF['FIELD_NAME'], $this->aFormAttrs['method'], $this->_aSpecificValues);
+            $sName = $this->_oModule->_oConfig->getEntryName($sName);
+            BxDolForm::setSubmittedValue($CNF['FIELD_NAME'], $sName, $this->aFormAttrs['method'], $this->_aSpecificValues);
+        }
+
 	    if($this->_oModule->checkAllowedSetCover() === CHECK_ACTION_RESULT_ALLOWED) {
             $aCover = isset($_POST[$CNF['FIELD_COVER']]) ? bx_process_input ($_POST[$CNF['FIELD_COVER']], BX_DATA_INT) : false;
 
@@ -145,6 +152,12 @@ class BxMarketFormEntry extends BxBaseModTextFormEntry
     {
         $CNF = &$this->_oModule->_oConfig->CNF;
 
+        if(isset($this->aInputs[$CNF['FIELD_NAME']])) {
+            $sName = BxDolForm::getSubmittedValue($CNF['FIELD_NAME'], $this->aFormAttrs['method'], $this->_aSpecificValues);
+            $sName = $this->_oModule->_oConfig->getEntryName($sName);
+            BxDolForm::setSubmittedValue($CNF['FIELD_NAME'], $sName, $this->aFormAttrs['method'], $this->_aSpecificValues);
+        }
+
 	    if($this->_oModule->checkAllowedSetCover() === CHECK_ACTION_RESULT_ALLOWED) {
             $aCover = bx_process_input (bx_get($CNF['FIELD_COVER']), BX_DATA_INT);
 

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

@@ -59,15 +59,13 @@ class BxMarketModule extends BxBaseModTextModule
 
     public function actionCheckName()
     {
-    	$CNF = &$this->_oConfig->CNF;
-
-    	$sTitle = strtolower(bx_process_input(bx_get('title')));
+    	$sTitle = bx_process_input(bx_get('title'));
     	if(empty($sTitle))
     		return echoJson(array());
 
     	echoJson(array(
     		'title' => $sTitle,
-    		'name' => uriGenerate($sTitle, $CNF['TABLE_ENTRIES'], $CNF['FIELD_NAME'])
+    		'name' => $this->_oConfig->getEntryName($sTitle)
     	));
     }
 

+ 17 - 7
modules/boonex/market/js/entry.js

@@ -48,21 +48,31 @@ BxMarketEntry.prototype.checkName = function(sTitleId, sNameId) {
 	var oDate = new Date();
 
 	var oName = jQuery("[name='" + sNameId + "']");
+	var sName = oName.val();
+	var bName = sName.length != 0;
+	
 	var oTitle = jQuery("[name='" + sTitleId + "']");
+	var sTitle = oTitle.val();
+	var bTitle = sTitle.length != 0;
 
-	var sName = oName.val();
-	var sTitle = oTitle.val();	
-	if(sName.length != 0 || sTitle.length == 0)
+	if(!bName && !bTitle)
 		return;
 
-	sName = sTitle.replace(/[^A-Za-z0-9_]/g, '-');
-	sName = sName.replace(/[-]{2,}/g, '-');
-	oName.val(sName.toLowerCase());
+	var sTitleCheck = '';
+	if(bName)
+		sTitleCheck = sName;
+	else if(bTitle) {
+		sTitleCheck = sTitle;
+
+		sTitle = sTitle.replace(/[^A-Za-z0-9_]/g, '-');
+		sTitle = sTitle.replace(/[-]{2,}/g, '-');
+		oName.val(sTitle.toLowerCase());
+	}
 
 	jQuery.get(
 		this._sActionsUrl + 'check_name',
 		{
-			title: sTitle,
+			title: sTitleCheck,
     		_t: oDate.getTime()
     	},
     	function(oData) {