OSDN Git Service

* Added option tag with CSS for CHTML3.0 converter.
authorkonn <konn@1a406e8e-add9-4483-a2c8-d8cac5b7c224>
Fri, 18 Jul 2008 06:34:32 +0000 (06:34 +0000)
committerkonn <konn@1a406e8e-add9-4483-a2c8-d8cac5b7c224>
Fri, 18 Jul 2008 06:34:32 +0000 (06:34 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/modchxj/mod_chxj/branches/sandbox@3009 1a406e8e-add9-4483-a2c8-d8cac5b7c224

src/chxj_chtml30.c
src/chxj_chtml40.c

index 386dc43..4dcea42 100644 (file)
@@ -2355,7 +2355,7 @@ s_chtml30_end_select_tag(void *pdoc, Node *UNUSED(child))
  * @return The conversion result is returned.
  */
 static char *
-s_chtml30_start_option_tag(void *pdoc, Node *child)
+s_chtml30_start_option_tag(void *pdoc, Node *node)
 {
   Attr        *attr;
   chtml30_t   *chtml30;
@@ -2363,6 +2363,7 @@ s_chtml30_start_option_tag(void *pdoc, Node *child)
   request_rec *r;
   char        *selected;
   char        *value;
+  char        *attr_style = NULL;
 
   chtml30    = GET_CHTML30(pdoc);
   doc        = chtml30->doc;
@@ -2371,7 +2372,7 @@ s_chtml30_start_option_tag(void *pdoc, Node *child)
   value      = NULL;
 
   W_L("<option");
-  for (attr = qs_get_attr(doc,child);
+  for (attr = qs_get_attr(doc,node);
        attr;
        attr = qs_get_next_attr(doc,attr)) {
     char *nm  = qs_get_attr_name(doc,attr);
@@ -2382,6 +2383,12 @@ s_chtml30_start_option_tag(void *pdoc, Node *child)
       /*----------------------------------------------------------------------*/
       selected = apr_pstrdup(doc->buf.pool, val);
     }
+    else if (STRCASEEQ('s','S',"style", nm) && val && *val) {
+      /*----------------------------------------------------------------------*/
+      /* CHTML 1.0 version 2.0                                                */
+      /*----------------------------------------------------------------------*/
+      attr_style = apr_pstrdup(doc->buf.pool, val);
+    }
     else if (STRCASEEQ('v','V',"value", nm)) {
       /*----------------------------------------------------------------------*/
       /* CHTML 1.0 version 2.0                                                */
@@ -2398,6 +2405,9 @@ s_chtml30_start_option_tag(void *pdoc, Node *child)
     W_L(" selected");
   }
   W_L(">");
+  if (IS_CSS_ON(chtml30->entryp)) {
+    s_chtml30_push_and_get_now_style(pdoc, node, attr_style);
+  }
   return chtml30->out;
 }
 
@@ -2416,6 +2426,9 @@ s_chtml30_end_option_tag(void *pdoc, Node *UNUSED(child))
   chtml30_t *chtml30 = GET_CHTML30(pdoc);
 
   /* Don't close */
+  if (IS_CSS_ON(chtml30->entryp)) {
+    chxj_css_pop_prop_list(chtml30->css_prop_stack);
+  }
 
   return chtml30->out;
 }
index dfc8c7f..69851da 100644 (file)
@@ -2365,7 +2365,7 @@ s_chtml40_end_select_tag(void *pdoc, Node *UNUSED(child))
  * @return The conversion result is returned.
  */
 static char *
-s_chtml40_start_option_tag(void *pdoc, Node *child)
+s_chtml40_start_option_tag(void *pdoc, Node *node)
 {
   Attr        *attr;
   chtml40_t   *chtml40;
@@ -2373,6 +2373,7 @@ s_chtml40_start_option_tag(void *pdoc, Node *child)
   request_rec *r;
   char        *selected;
   char        *value;
+  char        *attr_style = NULL;
 
   chtml40    = GET_CHTML40(pdoc);
   doc        = chtml40->doc;
@@ -2381,7 +2382,7 @@ s_chtml40_start_option_tag(void *pdoc, Node *child)
   value      = NULL;
 
   W_L("<option");
-  for (attr = qs_get_attr(doc,child);
+  for (attr = qs_get_attr(doc,node);
        attr;
        attr = qs_get_next_attr(doc,attr)) {
     char *nm  = qs_get_attr_name(doc,attr);
@@ -2392,6 +2393,12 @@ s_chtml40_start_option_tag(void *pdoc, Node *child)
       /*----------------------------------------------------------------------*/
       selected = apr_pstrdup(doc->buf.pool, val);
     }
+    else if (STRCASEEQ('s','S',"style", nm) && val && *val) {
+      /*----------------------------------------------------------------------*/
+      /* CHTML 1.0 version 2.0                                                */
+      /*----------------------------------------------------------------------*/
+      attr_style = apr_pstrdup(doc->buf.pool, val);
+    }
     else if (STRCASEEQ('v','V',"value", nm)) {
       /*----------------------------------------------------------------------*/
       /* CHTML 1.0 version 2.0                                                */
@@ -2408,6 +2415,11 @@ s_chtml40_start_option_tag(void *pdoc, Node *child)
     W_L(" selected");
   }
   W_L(">");
+
+  if (IS_CSS_ON(chtml40->entryp)) {
+    s_chtml40_push_and_get_now_style(pdoc, node, attr_style);
+  }
+
   return chtml40->out;
 }
 
@@ -2426,6 +2438,9 @@ s_chtml40_end_option_tag(void *pdoc, Node *UNUSED(child))
   chtml40_t *chtml40 = GET_CHTML40(pdoc);
 
   /* Don't close */
+  if (IS_CSS_ON(chtml40->entryp)) {
+    chxj_css_pop_prop_list(chtml40->css_prop_stack);
+  }
 
   return chtml40->out;
 }