Commit e7bd8a6e55afb4f005f6bf9bb16d090379f48ca0

Authored by totoro
1 parent ec6480d9

Add ol, ul and li in element of HTML_xx_form

Remove the dead code for creating jpeg buttons with relief (Nowadays with a sip of css it's 100 times more beautiful).
Showing 1 changed file with 39 additions and 184 deletions   Show diff stats
web/CXM_making_a_web_site.anubis
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 *Title* Making interactive Web sites. 5 *Title* Making interactive Web sites.
6 6
7 *Copyright* Copyright (c) Alain Prouté 2004-2005. 7 *Copyright* Copyright (c) Alain Prouté 2004-2005.
8 - Copyright (c) Calexium 2007-2015. 8 + Copyright (c) Calexium 2007-2016.
9 9
10 10
11 *Authors* Alain Prouté 11 *Authors* Alain Prouté
@@ -1147,7 +1147,10 @@ public type HTML_In_Form: @@ -1147,7 +1147,10 @@ public type HTML_In_Form:
1147 hidden (HtmlId id, WebArgName name, InitialValue init), 1147 hidden (HtmlId id, WebArgName name, InitialValue init),
1148 partial (HTML_Partial_Content), 1148 partial (HTML_Partial_Content),
1149 br, 1149 br,
1150 - progress (List(CoreAttrs), Int value, Int max). 1150 + progress (List(CoreAttrs), Int value, Int max),
  1151 + ol (List(CoreAttrs), HTML_In_Form content),
  1152 + ul (List(CoreAttrs), HTML_In_Form content),
  1153 + li (List(CoreAttrs), HTML_In_Form content).
1151 1154
1152 1155
1153 'HTML_In_Form' defines all the elements you may put within a form. We define a 1156 'HTML_In_Form' defines all the elements you may put within a form. We define a
@@ -1341,7 +1344,10 @@ public type HTML_Off_Form: @@ -1341,7 +1344,10 @@ public type HTML_Off_Form:
1341 HTML_Body /*body*/), 1344 HTML_Body /*body*/),
1342 partial (HTML_Partial_Content), 1345 partial (HTML_Partial_Content),
1343 br, 1346 br,
1344 - progress (List(CoreAttrs), Int value, Int max). 1347 + progress (List(CoreAttrs), Int value, Int max),
  1348 + ol (List(CoreAttrs), HTML_Off_Form content),
  1349 + ul (List(CoreAttrs), HTML_Off_Form content),
  1350 + li (List(CoreAttrs), HTML_Off_Form content).
1345 1351
1346 'HTML_Off_Form' defines all the elements you may put outside any form. 1352 'HTML_Off_Form' defines all the elements you may put outside any form.
1347 1353
@@ -2766,7 +2772,10 @@ type HTML_Any($T): @@ -2766,7 +2772,10 @@ type HTML_Any($T):
2766 Maybe((String,List((String,String))))), 2772 Maybe((String,List((String,String))))),
2767 any_div (List(CoreAttrs), $T element), 2773 any_div (List(CoreAttrs), $T element),
2768 any_div_empty (List(CoreAttrs)), 2774 any_div_empty (List(CoreAttrs)),
2769 - any_coreattrs (List(CoreAttrs)). 2775 + any_coreattrs (List(CoreAttrs)),
  2776 + any_ol (List(CoreAttrs), $T content),
  2777 + any_ul (List(CoreAttrs), $T content),
  2778 + any_li (List(CoreAttrs), $T content).
2770 2779
2771 2780
2772 2781
@@ -2800,41 +2809,6 @@ define RGB @@ -2800,41 +2809,6 @@ define RGB
2800 255-g, 2809 255-g,
2801 255-b). 2810 255-b).
2802 2811
2803 -  
2804 -  
2805 -  
2806 - *** [5.3] Creating buttons.  
2807 -  
2808 - We want to be able to create buttons in the form of a pair of images (rollovers)  
2809 - automatically. We use the JPEG interface, because for the time being Anubis cannot  
2810 - handle other kinds of images.  
2811 -  
2812 -  
2813 - Computing printed text length.  
2814 -  
2815 - define Int  
2816 - printed_text_width  
2817 - (  
2818 - Word8 -> Int char_size,  
2819 - List(Word8) l  
2820 - ) =  
2821 - if l is  
2822 - {  
2823 - [] then (Int) 0,  
2824 - [h . t] then char_size(h) + 1+ printed_text_width(char_size,t)  
2825 - }.  
2826 -  
2827 - define Int  
2828 - printed_text_width  
2829 - (  
2830 - SystemFont font,  
2831 - String s  
2832 - ) =  
2833 - printed_text_width((Word8 c) |-> word8_to_int32(width(get_char_info(font,c))),  
2834 - explode(s)).  
2835 -  
2836 -  
2837 -  
2838 Converting RGB to RGBA. 2812 Converting RGB to RGBA.
2839 2813
2840 define RGBA 2814 define RGBA
@@ -2845,147 +2819,6 @@ define RGBA @@ -2845,147 +2819,6 @@ define RGBA
2845 if color is rgb(r,g,b) then rgba(r,g,b,255). 2819 if color is rgb(r,g,b) then rgba(r,g,b,255).
2846 2820
2847 2821
2848 - Drawing a 'relief'.  
2849 -  
2850 - define One  
2851 - draw_relief  
2852 - (  
2853 - RGBAImage dest,  
2854 - RGBA color,  
2855 - Int contrast,  
2856 - Int x,  
2857 - Int y,  
2858 - Int width,  
2859 - Int height  
2860 - ) =  
2861 - with l = lighten(color,contrast),  
2862 - d = darken(color,contrast),  
2863 - draw_rectangle(dest,rect(x,y,x+width,y+1),l);  
2864 - draw_rectangle(dest,rect(x,y+1,x+1,y+height),l);  
2865 - draw_rectangle(dest,rect(x+width-1,y+1,x+width,y+height),d);  
2866 - draw_rectangle(dest,rect(x+1,y+height-1,x+width-1,y+height),d).  
2867 -  
2868 -  
2869 - Creating a button background.  
2870 -  
2871 - define RGBAImage  
2872 - create_button_background  
2873 - (  
2874 - RGBA color,  
2875 - Int width,  
2876 - Int height  
2877 - ) =  
2878 - with result = create_rgba_image(width,height,color),  
2879 - draw_relief(result,color,100,0,0,width,height);  
2880 - draw_relief(result,color,70,1,1,width-2,height-2);  
2881 - draw_relief(result,color,55,2,2,width-4,height-4);  
2882 - draw_relief(result,color,35,3,3,width-6,height-6);  
2883 - draw_relief(result,color,20,4,4,width-8,height-8);  
2884 - draw_relief(result,color,10,5,5,width-10,height-10);  
2885 - draw_relief(result,color,5,6,6,width-12,height-12);  
2886 - result.  
2887 -  
2888 -  
2889 - Drawing the text over the background.  
2890 -  
2891 - define One  
2892 - draw_button_text  
2893 - (  
2894 - RGBAImage image,  
2895 - String text,  
2896 - Int text_index,  
2897 - Int pixel_x,  
2898 - Int y,  
2899 - Rectangle clip,  
2900 - RGBA color,  
2901 - SystemFont font,  
2902 - ) =  
2903 - if nth(text_index,text) is  
2904 - {  
2905 - failure then unique,  
2906 - success(c) then  
2907 - with cw = draw_system_character(image,clip,pixel_x,y,font,word8_to_int32(c),color),  
2908 - draw_button_text(image,text,text_index+1,pixel_x+cw+1,y,clip,color,font)  
2909 - }.  
2910 -  
2911 - define One  
2912 - draw_button_text  
2913 - (  
2914 - RGBAImage image,  
2915 - String text,  
2916 - Int text_width,  
2917 - RGBA light_color,  
2918 - RGBA dark_color,  
2919 - SystemFont font  
2920 - ) =  
2921 - with image_width = width(image),  
2922 - image_height = height(image),  
2923 - x_pos = (image_width-text_width)>>1,  
2924 - clip = rect(0,0,image_width,image_height),  
2925 - new_light_color = lighten(light_color,150),  
2926 - new_dark_color = darken(dark_color,40),  
2927 - draw_button_text(image, text, 0, x_pos+2, 16, clip, new_dark_color, font);  
2928 - draw_button_text(image, text, 0, x_pos, 14, clip, new_light_color, font).  
2929 -  
2930 -  
2931 - The next function creates the two images for a button. The information given is the  
2932 - main color of the button, the text of the button and the minimal width (in pixels) of  
2933 - the button. The function does not create the button if the images already exist. The  
2934 - two images are stored in the directory 'site_directory/buttons'. The names of the files  
2935 - are of the form:  
2936 -  
2937 - bxxxx_off.jpg  
2938 - bxxxx_on.jpg  
2939 -  
2940 - where the prefix 'b' is to avoid leading '-' which may perturb UNIX commands (like  
2941 - 'rm'), and where 'xxxx' is created from the given informations by the formula:  
2942 -  
2943 - xxxx = web_arg_encode(sha1((color,text,width)))  
2944 -  
2945 - Hence, distinct informations give distinct file names.  
2946 -  
2947 -  
2948 - define String // returns xxxx  
2949 - create_button_images  
2950 - (  
2951 - String site_directory,  
2952 - RGBA color,  
2953 - String text,  
2954 - Int width,  
2955 - SystemFont font  
2956 - ) =  
2957 - with xxxx = web_arg_encode(sha1((color,text,width))),  
2958 - buttons_dir = site_directory+"/public/buttons",  
2959 - off_filepath = buttons_dir+"/b"+xxxx+"_off.jpg",  
2960 - on_filepath = buttons_dir+"/b"+xxxx+"_on.jpg",  
2961 - if file_exists(on_filepath)  
2962 - then xxxx  
2963 - else with  
2964 - text_width = printed_text_width(font,text),  
2965 - button_width = max(width,text_width+12),  
2966 - button_height = (Int)20,  
2967 - light_color = lighten(color,60),  
2968 - very_light_color = lighten(light_color,30),  
2969 - dark_color = darken(color,40),  
2970 - background_off =  
2971 - create_button_background(color,button_width,button_height),  
2972 - background_on =  
2973 - create_button_background(light_color,button_width,button_height),  
2974 -  
2975 - draw_button_text(background_off,text,text_width,very_light_color,dark_color,font);  
2976 - draw_button_text(background_on, text,text_width,very_light_color,dark_color,font);  
2977 - forget(write_image_to_JPEG_file(to_JPEG(background_off),  
2978 - off_filepath,  
2979 - 100));  
2980 - forget(write_image_to_JPEG_file(to_JPEG(background_on),  
2981 - on_filepath,  
2982 - 100));  
2983 - xxxx.  
2984 -  
2985 -  
2986 -  
2987 -  
2988 -  
2989 *** [5.4] Formating an actioner. 2822 *** [5.4] Formating an actioner.
2990 2823
2991 An actioner works as follows. Assume first that it refers to a form. When it is clicked 2824 An actioner works as follows. Assume first that it refers to a form. When it is clicked
@@ -4236,7 +4069,13 @@ define Printable_tree @@ -4236,7 +4069,13 @@ define Printable_tree
4236 any_div_empty(options) then 4069 any_div_empty(options) then
4237 [format_div_option(options), "</div>\n"], 4070 [format_div_option(options), "</div>\n"],
4238 any_coreattrs(attributs) then 4071 any_coreattrs(attributs) then
4239 - [format_attrs(attributs)] 4072 + [format_attrs(attributs)],
  4073 + any_ol(opts,e) then
  4074 + ["<ol", format_attrs(opts), ">",format_element(e),"</ol>\n"],
  4075 + any_ul(opts,e) then
  4076 + ["<ul", format_attrs(opts), ">",format_element(e),"</ul>\n"],
  4077 + any_li(opts,e) then
  4078 + ["<li", format_attrs(opts), ">",format_element(e),"</li>\n"],
4240 }. 4079 }.
4241 4080
4242 4081
@@ -4357,7 +4196,13 @@ define Printable_tree @@ -4357,7 +4196,13 @@ define Printable_tree
4357 4196
4358 format(cinfo, sn, ic_v, html_elements, is_https, action_count, head_tags), 4197 format(cinfo, sn, ic_v, html_elements, is_https, action_count, head_tags),
4359 br then ["<br>"], 4198 br then ["<br>"],
4360 - progress(options, value, max) then ["<progress max=\"",value,"\" value=\"",max,"\"",format_attrs(options),"></progress>"] 4199 + progress(options, value, max) then ["<progress max=\"",value,"\" value=\"",max,"\"",format_attrs(options),"></progress>"],
  4200 + ol(opts, t) then
  4201 + format(cinfo,sn,ic_v,any_ol(opts,t),format_element,is_https, action_count, head_tags),
  4202 + ul(opts, t) then
  4203 + format(cinfo,sn,ic_v,any_ul(opts,t),format_element,is_https, action_count, head_tags),
  4204 + li(opts, t) then
  4205 + format(cinfo,sn,ic_v,any_li(opts,t),format_element,is_https, action_count, head_tags),
4361 }. 4206 }.
4362 4207
4363 4208
@@ -4441,7 +4286,10 @@ define Bool @@ -4441,7 +4286,10 @@ define Bool
4441 hidden(_,_,_) then false, 4286 hidden(_,_,_) then false,
4442 partial(_) then false, 4287 partial(_) then false,
4443 br then false, 4288 br then false,
4444 - progress(_,_,_) then false 4289 + progress(_,_,_) then false,
  4290 + ol(_,_) then false,
  4291 + ul(_,_) then false,
  4292 + li(_,_) then false
4445 }. 4293 }.
4446 4294
4447 define String 4295 define String
@@ -4573,7 +4421,14 @@ define Printable_tree @@ -4573,7 +4421,14 @@ define Printable_tree
4573 head_tags <- *head_tags + tags; 4421 head_tags <- *head_tags + tags;
4574 format(cinfo, sn, ic_v, html_elements, is_https, action_count, head_tags), 4422 format(cinfo, sn, ic_v, html_elements, is_https, action_count, head_tags),
4575 br then ["<br>"], 4423 br then ["<br>"],
4576 - progress(options, value, max) then ["<progress max=\"",value,"\" value=\"",max,"\"",format_attrs(options),"></progress>"] 4424 + progress(options, value, max) then ["<progress max=\"",value,"\" value=\"",max,"\"",format_attrs(options),"></progress>"],
  4425 + ol(opts, t) then
  4426 + format(cinfo,sn,ic_v,any_ol(opts,t),format_element,is_https, action_count, head_tags),
  4427 + ul(opts, t) then
  4428 + format(cinfo,sn,ic_v,any_ul(opts,t),format_element,is_https, action_count, head_tags),
  4429 + li(opts, t) then
  4430 + format(cinfo,sn,ic_v,any_li(opts,t),format_element,is_https, action_count, head_tags),
  4431 +
4577 }. 4432 }.
4578 4433
4579 4434