AntonLV 10 سال پیش
والد
کامیت
f88aacc9bf

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

@@ -486,7 +486,7 @@
 	<string name="_adm_bp_err_page_title_system"><![CDATA[A name with at least 3 characters is required.]]></string>
 	<string name="_adm_bp_err_page_uri"><![CDATA[A unique URL with at least 3 characters is required.]]></string>
 	<string name="_adm_bp_err_page_visible_for_levels"><![CDATA[Visibility setting are determined by custom code or not applicable here.]]></string>
-	<string name="_adm_bp_err_save"><![CDATA[Cannot save]]></string>
+	<string name="_adm_bp_err_save"><![CDATA[Cannot save or nothing was changed.]]></string>
 	<string name="_adm_bp_mi_page_cache"><![CDATA[Cache]]></string>
 	<string name="_adm_bp_mi_page_cover"><![CDATA[Cover]]></string>
 	<string name="_adm_bp_mi_page_layout"><![CDATA[Layout]]></string>

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

@@ -486,7 +486,7 @@
 	<string name="_adm_bp_err_page_title_system"><![CDATA[Необходимо указать название из как минимум 3 символов.]]></string>
 	<string name="_adm_bp_err_page_uri"><![CDATA[Необходимо указать уникальный URL из как минимум 3 символов.]]></string>
 	<string name="_adm_bp_err_page_visible_for_levels"><![CDATA[Настройки видимости определяются индивидуальным кодом или не применимы в данном случае.]]></string>
-	<string name="_adm_bp_err_save"><![CDATA[Невозможно сохранить]]></string>
+	<string name="_adm_bp_err_save"><![CDATA[Невозможно сохранить или ничего не изменилось.]]></string>
 	<string name="_adm_bp_mi_page_cache"><![CDATA[Кэш]]></string>
 	<string name="_adm_bp_mi_page_cover"><![CDATA[Обложка]]></string>
 	<string name="_adm_bp_mi_page_layout"><![CDATA[Отображение]]></string>

+ 33 - 19
studio/classes/BxDolStudioForm.php

@@ -44,9 +44,10 @@ class BxDolStudioForm extends BxBaseFormView
         $this->processTranslationsKey($sAction);
 
         $mixedResult = parent::update($val, $aValsToAdd, $aTrackTextFieldsChanges);
-        if($mixedResult !== false)
-            $this->processTranslations($sAction);
+        if($mixedResult === false) 
+            return $mixedResult;
 
+        $mixedResult += (int)$this->processTranslations($sAction);
         return $mixedResult;
     }
 
@@ -105,36 +106,49 @@ class BxDolStudioForm extends BxBaseFormView
         $oLanguage = BxDolStudioLanguagesUtils::getInstance();
         $aLanguages = $oLanguage->getLanguagesInfo();
 
-        foreach($this->aInputs as $sName => $aInput)
-            if(in_array($aInput['type'], array('text_translatable', 'textarea_translatable'))) {
-                $sKey = $this->getCleanValue($sName);
-                foreach($aLanguages as $aLanguage) {
-                    $sString = BxDolForm::getSubmittedValue($sName . '-' . $aLanguage['name'], $this->aFormAttrs['method']);
-                    if($sString !== false)
-                        $oLanguage->{$aType2Method[$sType]}($sKey, $sString, $aLanguage['id']);
-                }
+        $bResult = false;
+        foreach($this->aInputs as $sName => $aInput) {
+            if(!in_array($aInput['type'], array('text_translatable', 'textarea_translatable')))
+                continue; 
+
+            $sKey = $this->getCleanValue($sName);
+            foreach($aLanguages as $aLanguage) {
+                $sString = BxDolForm::getSubmittedValue($sName . '-' . $aLanguage['name'], $this->aFormAttrs['method']);
+                if($sString === false)
+                    continue;
+
+                if($oLanguage->{$aType2Method[$sType]}($sKey, $sString, $aLanguage['id']))
+                    $bResult = true;
             }
+        }
+
+        return $bResult;
     }
 
     protected function processTranslationsKey($sType = 'insert')
     {
         $sLanguage = BxDolStudioLanguagesUtils::getInstance()->getCurrentLangName(false);
 
-        foreach($this->aInputs as $sName => $aInput)
-            if(in_array($aInput['type'], array('text_translatable', 'textarea_translatable'))) {
-                $sKey = $this->getTranslationsKey($sType, $sName, $this->getCleanValue($sName));
-                BxDolForm::setSubmittedValue($sName, $sKey, $this->aFormAttrs['method']);
-            }
+        foreach($this->aInputs as $sName => $aInput) {
+            if(!in_array($aInput['type'], array('text_translatable', 'textarea_translatable'))) 
+                continue;
+
+            $sKey = $this->getTranslationsKey($sType, $sName, $this->getCleanValue($sName));
+            BxDolForm::setSubmittedValue($sName, $sKey, $this->aFormAttrs['method']);
+        }
     }
 
     protected function processTranslationsValue ()
     {
         $aLanguages = BxDolStudioLanguagesUtils::getInstance()->getLanguages();
 
-        foreach($this->aInputs as $sName => $aInput)
-            if(in_array($aInput['type'], array('text_translatable', 'textarea_translatable')))
-                foreach($aLanguages as $sLangName => $sLangTitle)
-                    $this->aInputs[$sName]['values'][$sLangName] = BxDolForm::getSubmittedValue($sName . '-' . $sLangName, $this->aFormAttrs['method']);
+        foreach($this->aInputs as $sName => $aInput) {
+            if(!in_array($aInput['type'], array('text_translatable', 'textarea_translatable')))
+                continue;
+
+            foreach($aLanguages as $sLangName => $sLangTitle)
+                $this->aInputs[$sName]['values'][$sLangName] = BxDolForm::getSubmittedValue($sName . '-' . $sLangName, $this->aFormAttrs['method']);
+        }
     }
 
     protected function getTranslationsKey($sType, $sName, $sValue)

+ 8 - 2
studio/classes/BxDolStudioLanguagesUtils.php

@@ -365,6 +365,7 @@ class BxDolStudioLanguagesUtils extends BxDolLanguages implements iBxDolSingleto
         $aLanguages = array();
         $iLanguages = $this->oDb->getLanguagesBy(($iLangId == 0 ? array('type' => 'all') : array('type' => 'all_by_id', 'value' => $iLangId)), $aLanguages);
 
+        $bResult = false;
         foreach($aLanguages as $aLanguage) {
             $sString = '';
             if(is_string($mixedString))
@@ -372,11 +373,16 @@ class BxDolStudioLanguagesUtils extends BxDolLanguages implements iBxDolSingleto
             else if(is_array($mixedString))
                 $sString = $mixedString[$aLanguage['id']];
 
-            if($this->oDb->updateString($iKeyId, $aLanguage['id'], $sString) && $bRecompile)
+            if(!$this->oDb->updateString($iKeyId, $aLanguage['id'], $sString))
+                continue;
+
+            if($bRecompile)
                 $this->compileLanguage($aLanguage['id']);
+
+            $bResult = true;
         }
 
-        return true;
+        return $bResult;
     }
 
     function deleteLanguageString($sKey, $iLangId = 0, $bRecompile = true)