View Issue Details

IDProjectCategoryView StatusLast Update
0000758CATS.cacert.orgDatabasepublic2013-03-21 07:16
ReporterJ Steijlen Assigned ToTed  
PrioritylowSeverityfeatureReproducibilityN/A
Status closedResolutionfixed 
Summary0000758: Any addition of an UI language would require a redesign of the DB table "questiontype". I.e. adding a column.
DescriptionAny addition of an UI language would require a redesign of the DB table "questiontype". I.e. adding a column.
For example.
    CREATE TABLE `questiontype` (
      `qt_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Fragetypenschlüssel',
      `DE` varchar(25) COLLATE latin1_general_ci NOT NULL DEFAULT '' COMMENT 'Fragetyp',
      `EN` varchar(25) COLLATE latin1_general_ci NOT NULL DEFAULT '',
+ `NL` varchar(25) COLLATE latin1_general_ci NOT NULL DEFAULT '',
      PRIMARY KEY (`qt_id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci COMMENT='Fragetypen'
    
I've redefined the table as
    CREATE TABLE `questiontype_v2` (
      `qt_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Fragetypenschlüssel',
          `lang` varchar(5) COLLATE latin1_general_ci NOT NULL DEFAULT '' COMMENT 'Sprache',
      `qt_desc` varchar(25) COLLATE latin1_general_ci NOT NULL DEFAULT '' COMMENT 'Fragetyp',
      PRIMARY KEY (`qt_id`,`lang`)
    ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci COMMENT='Fragetypen'
Which lets you add rows for each language you want.
The new table is quickly prefilled using:
    INSERT INTO questiontype_v2 select qt_id, 'DE' AS lang, DE AS qt_desc FROM questiontype
    INSERT INTO questiontype_v2 select qt_id, 'EN' AS lang, EN AS qt_desc FROM questiontype

I've upgraded both of the functions dealing with this table.
I've also taken the liberty to use sprintf. This way it's a bit easier to see what is in the query to be executed.
TagsNo tags attached.

Relationships

related to 0000759 closedTed Dutch translation of the UI 
related to 0001107 new CACert CATS Manual has only one page, which is mostly empty 

Activities

2009-07-24 18:45

 

UI_translation_-_remove_DB_hardcoding.patch (3,043 bytes)   
Any addition of an UI language would require a redesign of the DB table "questiontype". I.e. adding a column.
For example.
		CREATE TABLE `questiontype` (
		  `qt_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Fragetypenschlüssel',
		  `DE` varchar(25) COLLATE latin1_general_ci NOT NULL DEFAULT '' COMMENT 'Fragetyp',
		  `EN` varchar(25) COLLATE latin1_general_ci NOT NULL DEFAULT '',
+		  `NL` varchar(25) COLLATE latin1_general_ci NOT NULL DEFAULT '',
		  PRIMARY KEY (`qt_id`)
		) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci COMMENT='Fragetypen'
	
I've redefined the table as
		CREATE TABLE `questiontype_v2` (
		  `qt_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'Fragetypenschlüssel',
		  `lang` varchar(5) COLLATE latin1_general_ci NOT NULL DEFAULT '' COMMENT 'Sprache',
		  `qt_desc` varchar(25) COLLATE latin1_general_ci NOT NULL DEFAULT '' COMMENT 'Fragetyp',
		  PRIMARY KEY (`qt_id`,`lang`)
		) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci COMMENT='Fragetypen'
Which lets you add rows for each language you want.
The new table is quickly prefilled using:
	INSERT INTO questiontype_v2 select qt_id, 'DE' AS lang, DE AS qt_desc FROM questiontype
	INSERT INTO questiontype_v2 select qt_id, 'EN' AS lang, EN AS qt_desc FROM questiontype

I've upgraded both of the functions dealing with this table.
I've also taken the liberty to use sprintf. This way it's a bit easier to see what is in the query to be executed.

CATS/database/create_db.sql has yet to be updated.


Index: classes/Question.class.php
===================================================================
--- CATS/classes/Question.class.php	(revision 1641)
+++ CATS/classes/Question.class.php	(working copy)
@@ -179,7 +179,7 @@
     
    function returnTypeName($type){
   // if($type==0)$type=$_SESSION ['values']['question']['qt'];
-   $sql="SELECT ".mysql_real_escape_string($_SESSION['profile']['language'])." as type FROM questiontype WHERE qt_id='".intval($type)."'";
+   $sql=sprintf("SELECT qt_desc as type FROM questiontype_v2 WHERE qt_id='%d' AND lang='%s'", intval($type), mysql_real_escape_string($_SESSION['profile']['language']));
    $query = mysql_query($sql);
    $type = mysql_fetch_assoc($query);
    $this->typeName="321 ".$type['type'];
--- CATS/functions/showQuestionForm.php	(revision 1641)
+++ CATS/functions/showQuestionForm.php	(working copy)
@@ -30,7 +30,7 @@
       echo"<td class='left_point'> :  </td>";
       echo "<td class='text'>123 ";
       
-      $sql_qtypes ="SELECT qt_id, ".mysql_real_escape_string($_SESSION['profile']['language'])."  as type FROM questiontype "; 
+      $sql_qtypes=sprintf("SELECT qt_id, qt_desc as type FROM questiontype_v2 WHERE lang='%s'", mysql_real_escape_string($_SESSION['profile']['language']));
       $query_qtypes = mysql_query($sql_qtypes) or die(mysql_error()); 
       
         if($_SESSION['values']['question']['qt']==null && $error=='missing')echo"<select size='1' class='dropdown_right marked' name='qt' > ";

Ted

2009-07-28 19:13

administrator   ~0001463

Analysis is correct and fix looks good. Though I must admit that additional languages for the user interface are currently not my primary concern I'll verify and apply the patch.

J Steijlen

2009-07-29 05:31

reporter   ~0001470

If we travel the gettext path 758 & 759/760 will become obsolete.
Let's discuss that route before you spend too much time and energy on these.

(I can see CATS striking out on it's own, and become a larger, more used project.)

Ted

2011-05-11 15:43

administrator   ~0001957

Checked in to SVN revision 2240

Ted

2011-05-12 19:05

administrator   ~0001960

Update installed at testsystem https://secure.test1.cacert.at/training

Ted

2012-11-18 22:50

administrator   ~0003342

Update of database and scripts installed

Werner Dworak

2013-03-21 07:16

updater   ~0003829

More than 3 month solved

Issue History

Date Modified Username Field Change
2009-07-24 18:45 J Steijlen New Issue
2009-07-24 18:45 J Steijlen Status new => needs work
2009-07-24 18:45 J Steijlen Assigned To => Ted
2009-07-24 18:45 J Steijlen File Added: UI_translation_-_remove_DB_hardcoding.patch
2009-07-28 19:13 Ted Note Added: 0001463
2009-07-28 19:13 Ted Priority high => low
2009-07-28 19:13 Ted Severity major => feature
2009-07-28 20:27 Ted Relationship added related to 0000759
2009-07-29 05:31 J Steijlen Note Added: 0001470
2011-05-11 15:43 Ted Note Added: 0001957
2011-05-12 19:05 Ted Note Added: 0001960
2012-11-18 22:50 Ted Note Added: 0003342
2012-11-18 22:50 Ted Status needs work => solved?
2012-11-18 22:50 Ted Resolution open => fixed
2012-12-27 17:23 Werner Dworak Relationship added related to 0001107
2013-03-21 07:16 Werner Dworak Note Added: 0003829
2013-03-21 07:16 Werner Dworak Status solved? => closed