diff --git a/application/controllers/admin/database.php b/application/controllers/admin/database.php index 5b90bf07376..59b1c31dcc4 100644 --- a/application/controllers/admin/database.php +++ b/application/controllers/admin/database.php @@ -569,7 +569,7 @@ private function actionUpdateQuestion($iSurveyID) $aLanguages = array_merge(array(Survey::model()->findByPk($iSurveyID)->language), Survey::model()->findByPk($iSurveyID)->additionalLanguages); foreach ($validAttributes as $validAttribute) { /* Readonly attribute : disable save */ - if((isset($validAttribute['readonly']) && !empty($validAttribute['readonly'])) || (isset($validAttribute['readonly_when_active']) && !empty($validAttribute['readonly_when_active']) && Survey::model()->findByPk($iSurveyID)->getIsActive()) ) { + if( $validAttribute['readonly'] || ( $validAttribute['readonly_when_active'] && Survey::model()->findByPk($iSurveyID)->getIsActive() ) ) { continue; } if ($validAttribute['i18n']) { diff --git a/application/helpers/questionHelper.php b/application/helpers/questionHelper.php index cfb5f0b0755..e75b2c410d5 100644 --- a/application/helpers/questionHelper.php +++ b/application/helpers/questionHelper.php @@ -12,7 +12,7 @@ * */ namespace LimeSurvey\Helpers; - +use QuestionAttribute; /** * General helper class for question + question setting system */ @@ -1607,30 +1607,16 @@ public static function getQuestionAttributesSettings($sType) self::$questionAttributesSettings[$sType] = array(); self::getAttributesDefinitions(); /* we need to have self::$attributes */ /* Filter to get this question type setting */ - $aQuestionTypeAttribute = array_filter(self::$attributes, function($attribute) use ($sType) - { + $aQuestionTypeAttributes = array_filter(self::$attributes, function($attribute) use ($sType) { return stripos($attribute['types'], $sType) !== false; }); - - $default = array( - "caption"=>'', - "inputtype"=>"text", - "options"=>'', - "category"=>gT("Plugins"), - "default"=>'', - "help"=>'', - "sortorder"=>1000, - "i18n"=>false, - "readonly"=>false, - "readonly_when_active"=>false, - "expression"=>null, - ); - foreach ($aQuestionTypeAttribute as $attribute=>$settings) { - self::$questionAttributesSettings[$sType][$attribute] = array_merge( - $default, - $settings, - array("name"=>$attribute) - ); + foreach ($aQuestionTypeAttributes as $attribute=>$settings) { + self::$questionAttributesSettings[$sType][$attribute] = array_merge( + QuestionAttribute::getDefaultSettings(), + array("category"=>gT("Plugins")), + $settings, + array("name"=>$attribute) + ); } } return self::$questionAttributesSettings[$sType]; diff --git a/application/models/Question.php b/application/models/Question.php index 8ea81a7df22..56bcf9daf42 100644 --- a/application/models/Question.php +++ b/application/models/Question.php @@ -288,18 +288,13 @@ public static function getQuestionTemplateAttributes($aAttributeNames, $aAttribu if ($oQuestionTemplate->bHasCustomAttributes) { // Add the custom attributes to the list foreach ($oQuestionTemplate->oConfig->custom_attributes->attribute as $oCustomAttribute) { - $sAttributeName = (string) $oCustomAttribute->name; $aCustomAttribute = json_decode(json_encode((array) $oCustomAttribute), 1); - - if (!isset($aCustomAttribute['i18n'])) { - $aCustomAttribute['i18n'] = false; - } - - if (!isset($aCustomAttribute['readonly'])) { - $aCustomAttribute['readonly'] = false; - } - + $aCustomAttribute = array_merge( + QuestionAttribute::getDefaultSettings(), + array("category"=>gT("Template")), + $aCustomAttribute + ); $aAttributeNames[$sAttributeName] = $aCustomAttribute; } } diff --git a/application/models/QuestionAttribute.php b/application/models/QuestionAttribute.php index 85d8ffc4566..6a250f6a1b6 100644 --- a/application/models/QuestionAttribute.php +++ b/application/models/QuestionAttribute.php @@ -297,4 +297,26 @@ public function getSurvey() { return $this->question->survey; } + + /** + * Get default settings for an attribut + * @return array + */ + public static function getDefaultSettings() + { + return array( + "name" => null, + "caption" => '', + "inputtype" => "text", + "options" => null, + "category" => gT("Attribute"), + "default" => '', + "help" => '', + "sortorder" => 1000, + "i18n"=> false, + "readonly" => false, + "readonly_when_active" => false, + "expression"=> null, + ); + } } diff --git a/application/views/admin/survey/Question/advanced_settings_view.php b/application/views/admin/survey/Question/advanced_settings_view.php index 853babc0bc6..3b4e9bb7cfb 100644 --- a/application/views/admin/survey/Question/advanced_settings_view.php +++ b/application/views/admin/survey/Question/advanced_settings_view.php @@ -46,7 +46,7 @@