Commit f270ea9aa907ba1e5f8b2a410d831d6313b60ff3
1 parent
844f2ac2
Exists in
master
and in
5 other branches
Corrigindo montagem dos campos de entrada
Showing
1 changed file
with
27 additions
and
44 deletions
Show diff stats
src/lib3270/html.c
| @@ -101,11 +101,11 @@ | @@ -101,11 +101,11 @@ | ||
| 101 | int szText; | 101 | int szText; |
| 102 | int form; | 102 | int form; |
| 103 | 103 | ||
| 104 | - enum mode | 104 | + enum HTML_MODE |
| 105 | { | 105 | { |
| 106 | - HTML_MODE_TEXT, /**< Non editable */ | ||
| 107 | - HTML_MODE_INPUT_TEXT, /**< Text input */ | ||
| 108 | - HTML_MODE_INPUT_VALUE, /**< Value input */ | 106 | + HTML_MODE_TEXT, /**< Non editable */ |
| 107 | + HTML_MODE_INPUT_TEXT, /**< Text input */ | ||
| 108 | + HTML_MODE_INPUT_PASSWORD, /**< Password input */ | ||
| 109 | HTML_MODE_INPUT_BUTTON, /**< Button input (PFkey) */ | 109 | HTML_MODE_INPUT_BUTTON, /**< Button input (PFkey) */ |
| 110 | } mode; | 110 | } mode; |
| 111 | 111 | ||
| @@ -179,7 +179,7 @@ | @@ -179,7 +179,7 @@ | ||
| 179 | 179 | ||
| 180 | } | 180 | } |
| 181 | 181 | ||
| 182 | - static void open_input(struct html_info *info, int addr, const char *type) | 182 | + static void open_input(struct html_info *info, int addr, enum HTML_MODE mode) |
| 183 | { | 183 | { |
| 184 | char name[30]; | 184 | char name[30]; |
| 185 | 185 | ||
| @@ -188,21 +188,27 @@ | @@ -188,21 +188,27 @@ | ||
| 188 | snprintf(name,29,"F%04d",addr); | 188 | snprintf(name,29,"F%04d",addr); |
| 189 | 189 | ||
| 190 | append_string(info,"<input type=\""); | 190 | append_string(info,"<input type=\""); |
| 191 | - append_string(info,type); | 191 | + append_string(info,mode == HTML_MODE_INPUT_TEXT ? "text" : "password" ); |
| 192 | append_string(info,"\" name=\""); | 192 | append_string(info,"\" name=\""); |
| 193 | append_string(info,name); | 193 | append_string(info,name); |
| 194 | - append_string(info,"\""); | ||
| 195 | - info->mode = HTML_MODE_INPUT_TEXT; | 194 | + append_string(info,"\" value=\""); |
| 195 | + info->mode = mode; | ||
| 196 | + info->maxlength = 0; | ||
| 197 | + | ||
| 196 | } | 198 | } |
| 197 | 199 | ||
| 198 | static void close_input(struct html_info *info) | 200 | static void close_input(struct html_info *info) |
| 199 | { | 201 | { |
| 200 | char buffer[80]; | 202 | char buffer[80]; |
| 203 | + char *ptr; | ||
| 201 | 204 | ||
| 202 | if(info->mode == HTML_MODE_TEXT) | 205 | if(info->mode == HTML_MODE_TEXT) |
| 203 | return; | 206 | return; |
| 204 | 207 | ||
| 205 | - snprintf(buffer,80," maxlength=\"%d\" class=\"IW%03d\"",info->maxlength,info->maxlength); | 208 | + for(ptr = info->text+(strlen(info->text)-1);ptr > info->text && *ptr == ' ';ptr--); |
| 209 | + *(++ptr) = 0; | ||
| 210 | + | ||
| 211 | + snprintf(buffer,80,"\" maxlength=\"%d\" class=\"IW%03d\"",info->maxlength,info->maxlength); | ||
| 206 | append_string(info,buffer); | 212 | append_string(info,buffer); |
| 207 | 213 | ||
| 208 | append_string(info,"></input>"); | 214 | append_string(info,"></input>"); |
| @@ -262,35 +268,9 @@ | @@ -262,35 +268,9 @@ | ||
| 262 | { | 268 | { |
| 263 | // Input field | 269 | // Input field |
| 264 | unsigned char attr = get_field_attribute(session,baddr+col+1); | 270 | unsigned char attr = get_field_attribute(session,baddr+col+1); |
| 265 | - char * text = lib3270_get_field_at(session,baddr+col+1); | ||
| 266 | - | ||
| 267 | - open_input(&info,baddr+col+1,FA_IS_ZERO(attr) ? "password" : "text"); | ||
| 268 | - | ||
| 269 | - if(text) | ||
| 270 | - { | ||
| 271 | - char *ptr = text; | ||
| 272 | - | ||
| 273 | - for(ptr = text; *ptr && (*ptr == ' ' || *ptr == '_'); ptr++); | ||
| 274 | - | ||
| 275 | - if(*ptr) | ||
| 276 | - { | ||
| 277 | - int f; | ||
| 278 | - char * last = ptr; | ||
| 279 | - | ||
| 280 | - for(f=0;ptr[f];f++) | ||
| 281 | - { | ||
| 282 | - if(ptr[f] > ' ') | ||
| 283 | - last = ptr+f+1; | ||
| 284 | - } | ||
| 285 | - *last = 0; | 271 | + //char * text = lib3270_get_field_at(session,baddr+col+1); |
| 286 | 272 | ||
| 287 | - append_string(&info," value=\""); | ||
| 288 | - append_string(&info,ptr); | ||
| 289 | - append_string(&info,"\""); | ||
| 290 | - } | ||
| 291 | - | ||
| 292 | - lib3270_free(text); | ||
| 293 | - } | 273 | + open_input(&info,baddr+col+1,FA_IS_ZERO(attr) ? HTML_MODE_INPUT_PASSWORD : HTML_MODE_INPUT_TEXT); |
| 294 | 274 | ||
| 295 | } | 275 | } |
| 296 | else if(col < len && session->text[baddr+col+1].chr == 'F') | 276 | else if(col < len && session->text[baddr+col+1].chr == 'F') |
| @@ -331,10 +311,11 @@ | @@ -331,10 +311,11 @@ | ||
| 331 | append_string(&info," "); | 311 | append_string(&info," "); |
| 332 | } | 312 | } |
| 333 | } | 313 | } |
| 334 | - else if(info.mode == HTML_MODE_TEXT) | 314 | + else |
| 335 | { | 315 | { |
| 336 | // Normal text | 316 | // Normal text |
| 337 | - update_colors(&info,session->text[baddr+col].attr); | 317 | + if(info.mode == HTML_MODE_TEXT) |
| 318 | + update_colors(&info,session->text[baddr+col].attr); | ||
| 338 | 319 | ||
| 339 | if(session->text[baddr+col].attr & LIB3270_ATTR_CG) | 320 | if(session->text[baddr+col].attr & LIB3270_ATTR_CG) |
| 340 | { | 321 | { |
| @@ -363,6 +344,10 @@ | @@ -363,6 +344,10 @@ | ||
| 363 | append_char(&info, xlat, session->text[baddr+col].chr); | 344 | append_char(&info, xlat, session->text[baddr+col].chr); |
| 364 | 345 | ||
| 365 | } | 346 | } |
| 347 | + else if(session->text[baddr+col].chr == ' ') | ||
| 348 | + { | ||
| 349 | + append_string(&info,info.mode == HTML_MODE_TEXT ? " " : " "); | ||
| 350 | + } | ||
| 366 | else | 351 | else |
| 367 | { | 352 | { |
| 368 | static const struct chr_xlat xlat[] = | 353 | static const struct chr_xlat xlat[] = |
| @@ -371,17 +356,15 @@ | @@ -371,17 +356,15 @@ | ||
| 371 | { '&', "&" }, | 356 | { '&', "&" }, |
| 372 | { '<', "<" }, | 357 | { '<', "<" }, |
| 373 | { '>', ">" }, | 358 | { '>', ">" }, |
| 374 | - { ' ', " " }, | ||
| 375 | 359 | ||
| 376 | { 0x00, NULL } | 360 | { 0x00, NULL } |
| 377 | }; | 361 | }; |
| 362 | + | ||
| 378 | append_char(&info, xlat, session->text[baddr+col].chr); | 363 | append_char(&info, xlat, session->text[baddr+col].chr); |
| 379 | } | 364 | } |
| 380 | - } | ||
| 381 | - else | ||
| 382 | - { | ||
| 383 | - // Input contents | 365 | + |
| 384 | info.maxlength++; | 366 | info.maxlength++; |
| 367 | + | ||
| 385 | } | 368 | } |
| 386 | } | 369 | } |
| 387 | } | 370 | } |