Commit 2c0623568707d07d9a7dca283c955ec638b17741
merge result !!
Showing
28 changed files
with
1216 additions
and
322 deletions
Show diff stats
asterisk/ami.anubis
| @@ -10,14 +10,9 @@ read system/string.anubis | @@ -10,14 +10,9 @@ read system/string.anubis | ||
| 10 | read tools/basis.anubis | 10 | read tools/basis.anubis |
| 11 | read tools/connections.anubis | 11 | read tools/connections.anubis |
| 12 | 12 | ||
| 13 | -read calexium_lib/asterisk/ami_types.anubis | ||
| 14 | -read calexium_lib/asterisk/ami_commands.anubis | ||
| 15 | -read calexium_lib/web/CXM_http_get_common.anubis | 13 | +transmit calexium_lib/asterisk/ami_types.anubis |
| 14 | +transmit calexium_lib/asterisk/ami_commands.anubis | ||
| 16 | 15 | ||
| 17 | - | ||
| 18 | - | ||
| 19 | - public define Result( | ||
| 20 | - | ||
| 21 | define Maybe(One) | 16 | define Maybe(One) |
| 22 | receive | 17 | receive |
| 23 | ( | 18 | ( |
| @@ -104,6 +99,7 @@ public define Maybe(Asterisk_client) | @@ -104,6 +99,7 @@ public define Maybe(Asterisk_client) | ||
| 104 | String server_name, | 99 | String server_name, |
| 105 | AMI_Auth auth | 100 | AMI_Auth auth |
| 106 | )= | 101 | )= |
| 102 | + //println("asterisk_new_client "+server_name); | ||
| 107 | if separate_name_port(server_name, 5038) is (name, server_port) then | 103 | if separate_name_port(server_name, 5038) is (name, server_port) then |
| 108 | // | 104 | // |
| 109 | // resolve server name and call 'https_get' with numeric server address: | 105 | // resolve server name and call 'https_get' with numeric server address: |
| @@ -149,7 +145,8 @@ global define One | @@ -149,7 +145,8 @@ global define One | ||
| 149 | if asterisk_new_client("192.168.3.118:5038", auth("anubix","anubix")) is | 145 | if asterisk_new_client("192.168.3.118:5038", auth("anubix","anubix")) is |
| 150 | { | 146 | { |
| 151 | failure then println(" asterisk new client failure"), | 147 | failure then println(" asterisk new client failure"), |
| 152 | - success(ami_client) then unique | 148 | + success(ami_client) then |
| 149 | + forget(send_action(ami_client, ami_originate_call("1000", "1001"))) | ||
| 153 | //forget(xml_rpc_client_execute(true, rpc_client, "/Settings", "list_domains", empty_param)) | 150 | //forget(xml_rpc_client_execute(true, rpc_client, "/Settings", "list_domains", empty_param)) |
| 154 | //forget(xml_rpc_client_execute(true, rpc_client, "/Settings", "delete_domain", parameters([parameter[string("amisdefontainebleau.org")]]))) | 151 | //forget(xml_rpc_client_execute(true, rpc_client, "/Settings", "delete_domain", parameters([parameter[string("amisdefontainebleau.org")]]))) |
| 155 | //forget(xml_rpc_client_execute(true, rpc_client, "/Settings", "create_domain", empty_param)) | 152 | //forget(xml_rpc_client_execute(true, rpc_client, "/Settings", "create_domain", empty_param)) |
asterisk/ami_commands.anubis
| @@ -22,3 +22,30 @@ public define AMI_Action ami_login(AMI_Auth ami_auth) = | @@ -22,3 +22,30 @@ public define AMI_Action ami_login(AMI_Auth ami_auth) = | ||
| 22 | if ami_auth is auth(user, password) then | 22 | if ami_auth is auth(user, password) then |
| 23 | ami_login(user, password, true). | 23 | ami_login(user, password, true). |
| 24 | 24 | ||
| 25 | +public define AMI_Action ami_originate_call(String extension, String out_number) = | ||
| 26 | + action("Originate", [ | ||
| 27 | + key_value("Channel", "SIP/"+extension), | ||
| 28 | + key_value("Exten", out_number), | ||
| 29 | + key_value("Context", "default"), | ||
| 30 | + key_value("Priority", "1"), | ||
| 31 | + key_value("Async", "yes") | ||
| 32 | + ] | ||
| 33 | + ) | ||
| 34 | +. | ||
| 35 | + | ||
| 36 | +public define AMI_Action | ||
| 37 | + ami_originate_call | ||
| 38 | + ( | ||
| 39 | + String extension, | ||
| 40 | + String out_number, | ||
| 41 | + String context | ||
| 42 | + )= | ||
| 43 | + action("Originate", [ | ||
| 44 | + key_value("Channel", "SIP/"+extension), | ||
| 45 | + key_value("Exten", out_number), | ||
| 46 | + key_value("Context", context), | ||
| 47 | + key_value("Priority", "1"), | ||
| 48 | + key_value("Async", "yes") | ||
| 49 | + ] | ||
| 50 | + ) | ||
| 51 | +. |
database/alter_table.anubis
| @@ -222,8 +222,9 @@ public define Maybe(One) | @@ -222,8 +222,9 @@ public define Maybe(One) | ||
| 222 | }, | 222 | }, |
| 223 | true then | 223 | true then |
| 224 | with tempNameTable = tableName + "_temp", | 224 | with tempNameTable = tableName + "_temp", |
| 225 | + forget(sql_query(db, "PRAGMA foreign_keys = 0;")); | ||
| 225 | forget(sql_query(db, "DROP TABLE " + tempNameTable)); | 226 | forget(sql_query(db, "DROP TABLE " + tempNameTable)); |
| 226 | - if my_sql_query(db, "CREATE TEMP TABLE " + tempNameTable + " AS SELECT * from " + fullTableName, log) is failure then failure else | 227 | + with result = if my_sql_query(db, "CREATE TEMP TABLE " + tempNameTable + " AS SELECT * from " + fullTableName, log) is failure then failure else |
| 227 | if my_sql_query(db, "DROP TABLE " + fullTableName, log) is failure then failure else | 228 | if my_sql_query(db, "DROP TABLE " + fullTableName, log) is failure then failure else |
| 228 | if my_sql_query(db, newTableQuery , log) is failure then failure else | 229 | if my_sql_query(db, newTableQuery , log) is failure then failure else |
| 229 | if sql_query(db, "SELECT * FROM " + tempNameTable) is | 230 | if sql_query(db, "SELECT * FROM " + tempNameTable) is |
| @@ -244,7 +245,10 @@ public define Maybe(One) | @@ -244,7 +245,10 @@ public define Maybe(One) | ||
| 244 | ok(_,_,_) then logInfo(log, " --> ok."); success(unique) | 245 | ok(_,_,_) then logInfo(log, " --> ok."); success(unique) |
| 245 | } | 246 | } |
| 246 | } | 247 | } |
| 247 | - } | 248 | + }, |
| 249 | + | ||
| 250 | + forget(sql_query(db, "PRAGMA foreign_keys = 1;")); | ||
| 251 | + result | ||
| 248 | } | 252 | } |
| 249 | else | 253 | else |
| 250 | success(unique) | 254 | success(unique) |
| 1 | +/* | ||
| 2 | + * Created by PyramIDE. | ||
| 3 | + * User: フランスのトトロ aka (David RENÉ) | ||
| 4 | + * Date: 17/03/2017 | ||
| 5 | + * Time: 00:14 | ||
| 6 | + * © Calexium | ||
| 7 | + */ | ||
| 8 | + | ||
| 9 | +transmit calexium_lib/database/types/db_id.anubis | ||
| 10 | +transmit calexium_lib/database/types/db_date.anubis | ||
| 11 | +transmit calexium_lib/database/types/db_time.anubis | ||
| 12 | +transmit calexium_lib/database/types/db_datetime.anubis | ||
| 13 | +transmit calexium_lib/database/db_types.anubis | ||
| 14 | + | ||
| 15 | + extended version of bind for SQLite3. | ||
| 16 | + | ||
| 17 | +public define SQLite3Bind | ||
| 18 | + bind_DB_id_or_NULL | ||
| 19 | + ( | ||
| 20 | + String _name, | ||
| 21 | + DB_id _value | ||
| 22 | + )= | ||
| 23 | + if _value is | ||
| 24 | + { | ||
| 25 | + none then bind_NULL(_name) | ||
| 26 | + db_id(value) then bind_Int(_name, value) | ||
| 27 | + } | ||
| 28 | +. | ||
| 29 | + | ||
| 30 | +public define SQLite3Bind | ||
| 31 | + bind_DB_id_or_NULL | ||
| 32 | + ( | ||
| 33 | + String _name, | ||
| 34 | + Maybe(DB_id) mb_value | ||
| 35 | + )= | ||
| 36 | + if mb_value is | ||
| 37 | + { | ||
| 38 | + failure then bind_NULL(_name) | ||
| 39 | + success(id) then bind_DB_id_or_NULL(_name, id) | ||
| 40 | + } | ||
| 41 | +. | ||
| 42 | + | ||
| 43 | +public define SQLite3Bind | ||
| 44 | + bind_Int_or_NULL | ||
| 45 | + ( | ||
| 46 | + String name, | ||
| 47 | + Maybe(Int) mb_value | ||
| 48 | + )= | ||
| 49 | + if mb_value is | ||
| 50 | + { | ||
| 51 | + failure then bind_NULL(name), | ||
| 52 | + success(value) then bind_Int(name, value) | ||
| 53 | + } | ||
| 54 | +. | ||
| 55 | + | ||
| 56 | +public define SQLite3Bind | ||
| 57 | + bind_String_or_NULL | ||
| 58 | + ( | ||
| 59 | + String name, | ||
| 60 | + String value | ||
| 61 | + )= | ||
| 62 | + if value = "" then | ||
| 63 | + bind_NULL(name) | ||
| 64 | + else | ||
| 65 | + bind_String(name, value). | ||
| 66 | + | ||
| 67 | +public define SQLite3Bind | ||
| 68 | + bind_Datetime | ||
| 69 | + ( | ||
| 70 | + String name, | ||
| 71 | + DB_datetime dt | ||
| 72 | + )= | ||
| 73 | + bind_String(name, datetime(dt)). | ||
| 74 | + | ||
| 75 | +public define SQLite3Bind | ||
| 76 | + bind_Date | ||
| 77 | + ( | ||
| 78 | + String name, | ||
| 79 | + DB_date d | ||
| 80 | + )= | ||
| 81 | + bind_String(name, date(d)). | ||
| 82 | + | ||
| 83 | +public define SQLite3Bind | ||
| 84 | + bind_Time | ||
| 85 | + ( | ||
| 86 | + String name, | ||
| 87 | + DB_time d | ||
| 88 | + )= | ||
| 89 | + bind_String(name, time(d)). | ||
| 90 | + | ||
| 91 | +public define SQLite3Bind | ||
| 92 | + bind_Bool | ||
| 93 | + ( | ||
| 94 | + String name, | ||
| 95 | + Bool value | ||
| 96 | + )= | ||
| 97 | + bind_Int(name, to_DBInt(value)). | ||
| 98 | + | ||
| 99 | +public define SQLite3Bind | ||
| 100 | + bind_BLOB | ||
| 101 | + ( | ||
| 102 | + String name, | ||
| 103 | + $V value | ||
| 104 | + )= | ||
| 105 | + bind_ByteArray(name, serialize(value)). | ||
| 106 | + |
database/db_types.anubis
| 1 | /* | 1 | /* |
| 2 | * Created by PyramIDE. | 2 | * Created by PyramIDE. |
| 3 | - * User: Totoro | 3 | + * User: フランスのトトロ aka (David RENÉ) |
| 4 | * Date: 14/11/2011 | 4 | * Date: 14/11/2011 |
| 5 | * Time: 22:41 | 5 | * Time: 22:41 |
| 6 | * | 6 | * |
| @@ -89,9 +89,7 @@ public define Int | @@ -89,9 +89,7 @@ public define Int | ||
| 89 | none then (Int)-1, | 89 | none then (Int)-1, |
| 90 | pk(_idx) then _idx | 90 | pk(_idx) then _idx |
| 91 | }. | 91 | }. |
| 92 | - | ||
| 93 | 92 | ||
| 94 | - | ||
| 95 | public define String | 93 | public define String |
| 96 | to_String | 94 | to_String |
| 97 | ( | 95 | ( |
| @@ -99,8 +97,16 @@ public define String | @@ -99,8 +97,16 @@ public define String | ||
| 99 | )= | 97 | )= |
| 100 | date(d). | 98 | date(d). |
| 101 | 99 | ||
| 100 | +public define String | ||
| 101 | + String s + DB_date d = | ||
| 102 | + s + to_String(d) | ||
| 103 | +. | ||
| 104 | + | ||
| 105 | +public define String | ||
| 106 | + DB_date d + String s = | ||
| 107 | + to_String(d) + s | ||
| 108 | +. | ||
| 102 | 109 | ||
| 103 | - | ||
| 104 | public define String | 110 | public define String |
| 105 | to_String | 111 | to_String |
| 106 | ( | 112 | ( |
| @@ -109,12 +115,32 @@ public define String | @@ -109,12 +115,32 @@ public define String | ||
| 109 | datetime(dt). | 115 | datetime(dt). |
| 110 | 116 | ||
| 111 | public define String | 117 | public define String |
| 118 | + String s + DB_datetime dt = | ||
| 119 | + s + to_String(dt) | ||
| 120 | +. | ||
| 121 | + | ||
| 122 | +public define String | ||
| 123 | + DB_datetime dt + String s = | ||
| 124 | + to_String(dt) + s | ||
| 125 | +. | ||
| 126 | + | ||
| 127 | +public define String | ||
| 112 | to_String | 128 | to_String |
| 113 | ( | 129 | ( |
| 114 | DB_time t | 130 | DB_time t |
| 115 | )= | 131 | )= |
| 116 | time(t). | 132 | time(t). |
| 117 | - | 133 | + |
| 134 | +public define String | ||
| 135 | + String s + DB_time t = | ||
| 136 | + s + to_String(t) | ||
| 137 | +. | ||
| 138 | + | ||
| 139 | +public define String | ||
| 140 | + DB_time t + String s = | ||
| 141 | + to_String(t) + s | ||
| 142 | +. | ||
| 143 | + | ||
| 118 | public define String | 144 | public define String |
| 119 | to_DBString | 145 | to_DBString |
| 120 | ( | 146 | ( |
| @@ -129,8 +155,7 @@ public define Int | @@ -129,8 +155,7 @@ public define Int | ||
| 129 | )= | 155 | )= |
| 130 | if value then 1 else 0. | 156 | if value then 1 else 0. |
| 131 | 157 | ||
| 132 | -public type SQLite3_update_field: | ||
| 133 | - field(String column, SQLite3Bind bind). | 158 | + |
| 134 | 159 | ||
| 135 | 160 | ||
| 136 | * Some Bind helper * | 161 | * Some Bind helper * |
| 1 | +/* | ||
| 2 | + * Created by PyramIDE. | ||
| 3 | + * User: フランスのトトロ aka (David RENÉ) | ||
| 4 | + * Date: 17/03/2017 | ||
| 5 | + * Time: 00:11 | ||
| 6 | + * © Calexium | ||
| 7 | + */ | ||
| 8 | +read tools/basis.anubis | ||
| 9 | +read system/string.anubis | ||
| 10 | + | ||
| 11 | +public type SQLite3_update_field: | ||
| 12 | + field(String column, SQLite3Bind bind). | ||
| 13 | + | ||
| 14 | +public define (List(SQLite3Bind), String) | ||
| 15 | + _make_update_clause_and_binds | ||
| 16 | + ( | ||
| 17 | + List(SQLite3_update_field) fields, | ||
| 18 | + List(SQLite3Bind) so_far, | ||
| 19 | + List(String) set_clause | ||
| 20 | + )= | ||
| 21 | + if fields is | ||
| 22 | + { | ||
| 23 | + [] then (so_far, join(", ",set_clause)), | ||
| 24 | + [ h . t ] then | ||
| 25 | + if h is field(column, bind) then | ||
| 26 | + _make_update_clause_and_binds(t, [bind . so_far], ["\""+column+"\" = :v_"+column . set_clause]) | ||
| 27 | + } | ||
| 28 | +. | ||
| 29 | + | ||
| 30 | +public define (List(SQLite3Bind), String) | ||
| 31 | + make_update_clause_and_binds | ||
| 32 | + ( | ||
| 33 | + List(SQLite3_update_field) fields | ||
| 34 | + )= | ||
| 35 | + _make_update_clause_and_binds(fields, [], []) | ||
| 36 | +. | ||
| 37 | + | ||
| 38 | +public define (List(SQLite3Bind), String, String) | ||
| 39 | + _make_insert_clause_and_binds | ||
| 40 | + ( | ||
| 41 | + List(SQLite3_update_field) fields, | ||
| 42 | + List(SQLite3Bind) so_far, | ||
| 43 | + List(String) insert_columns, | ||
| 44 | + List(String) insert_values | ||
| 45 | + )= | ||
| 46 | + if fields is | ||
| 47 | + { | ||
| 48 | + [] then (so_far, "("+join(", ",insert_columns)+")", "("+join(", ",insert_values)+")"), | ||
| 49 | + [ h . t ] then | ||
| 50 | + if h is field(column, bind) then | ||
| 51 | + _make_insert_clause_and_binds(t, [bind . so_far], ["\""+column+"\"" . insert_columns], [":v_"+column . insert_values]) | ||
| 52 | + } | ||
| 53 | +. | ||
| 54 | + | ||
| 55 | +public define (List(SQLite3Bind), String, String) | ||
| 56 | + make_insert_clause_and_binds | ||
| 57 | + ( | ||
| 58 | + List(SQLite3_update_field) fields | ||
| 59 | + )= | ||
| 60 | + _make_insert_clause_and_binds(fields, [], [], []) | ||
| 61 | +. |
database/db_utils.anubis
| @@ -15,6 +15,8 @@ read data_base/sqlite.anubis | @@ -15,6 +15,8 @@ read data_base/sqlite.anubis | ||
| 15 | 15 | ||
| 16 | transmit calexium_lib/database/db_types.anubis | 16 | transmit calexium_lib/database/db_types.anubis |
| 17 | transmit calexium_lib/database/db_utils.anubis | 17 | transmit calexium_lib/database/db_utils.anubis |
| 18 | +transmit calexium_lib/database/db_binds.anubis | ||
| 19 | +transmit calexium_lib/database/db_update_fields.anubis | ||
| 18 | 20 | ||
| 19 | read calexium_lib/net_services_protocols/logger_service.anubis | 21 | read calexium_lib/net_services_protocols/logger_service.anubis |
| 20 | 22 | ||
| @@ -287,78 +289,10 @@ public define List(Int) | @@ -287,78 +289,10 @@ public define List(Int) | ||
| 287 | This is useful when we want to construct a SQL query with only needs fields. | 289 | This is useful when we want to construct a SQL query with only needs fields. |
| 288 | 290 | ||
| 289 | 291 | ||
| 290 | -public define (List(SQLite3Bind), String) | ||
| 291 | - make_clause_and_binds | ||
| 292 | - ( | ||
| 293 | - List(SQLite3_update_field) fields, | ||
| 294 | - List(SQLite3Bind) so_far, | ||
| 295 | - List(String) clause | ||
| 296 | - )= | ||
| 297 | - if fields is | ||
| 298 | - { | ||
| 299 | - [] then (so_far, join(", ",clause)), | ||
| 300 | - [ h . t ] then | ||
| 301 | - if h is field(column, bind) then | ||
| 302 | - make_clause_and_binds(t, [bind . so_far], ["\""+column+"\" = :v_"+column . clause]) | ||
| 303 | - }. | 292 | + |
| 304 | 293 | ||
| 305 | 294 | ||
| 306 | - extended version of bind for SQLite3. | ||
| 307 | 295 | ||
| 308 | -public define SQLite3Bind | ||
| 309 | - bind_Int_or_NULL | ||
| 310 | - ( | ||
| 311 | - String name, | ||
| 312 | - Int value | ||
| 313 | - )= | ||
| 314 | - if value = 0 then | ||
| 315 | - bind_NULL(name) | ||
| 316 | - else | ||
| 317 | - bind_Int(name, value). | ||
| 318 | - | ||
| 319 | -public define SQLite3Bind | ||
| 320 | - bind_String_or_NULL | ||
| 321 | - ( | ||
| 322 | - String name, | ||
| 323 | - String value | ||
| 324 | - )= | ||
| 325 | - if value = "" then | ||
| 326 | - bind_NULL(name) | ||
| 327 | - else | ||
| 328 | - bind_String(name, value). | ||
| 329 | - | ||
| 330 | -public define SQLite3Bind | ||
| 331 | - bind_Datetime | ||
| 332 | - ( | ||
| 333 | - String name, | ||
| 334 | - DB_datetime dt | ||
| 335 | - )= | ||
| 336 | - bind_String(name, datetime(dt)). | ||
| 337 | - | ||
| 338 | -public define SQLite3Bind | ||
| 339 | - bind_Date | ||
| 340 | - ( | ||
| 341 | - String name, | ||
| 342 | - DB_date d | ||
| 343 | - )= | ||
| 344 | - bind_String(name, date(d)). | ||
| 345 | - | ||
| 346 | -public define SQLite3Bind | ||
| 347 | - bind_Bool | ||
| 348 | - ( | ||
| 349 | - String name, | ||
| 350 | - Bool value | ||
| 351 | - )= | ||
| 352 | - bind_Int(name, to_DBInt(value)). | ||
| 353 | - | ||
| 354 | -public define SQLite3Bind | ||
| 355 | - bind_BLOB | ||
| 356 | - ( | ||
| 357 | - String name, | ||
| 358 | - $V value | ||
| 359 | - )= | ||
| 360 | - bind_ByteArray(name, serialize(value)). | ||
| 361 | - | ||
| 362 | // -- Migration HELPERS --------------- | 296 | // -- Migration HELPERS --------------- |
| 363 | 297 | ||
| 364 | public define DbBind | 298 | public define DbBind |
database/model/db_model.anubis
| @@ -200,17 +200,15 @@ define macro Maybe(String) | @@ -200,17 +200,15 @@ define macro Maybe(String) | ||
| 200 | mapor((HK_Model_Column cs) |-> | 200 | mapor((HK_Model_Column cs) |-> |
| 201 | if cs is col(name,_,_) then is_forbidden_column_name(name), | 201 | if cs is col(name,_,_) then is_forbidden_column_name(name), |
| 202 | cols). | 202 | cols). |
| 203 | - | 203 | + |
| 204 | define Bool | 204 | define Bool |
| 205 | has_forbidden_column_names | 205 | has_forbidden_column_names |
| 206 | ( | 206 | ( |
| 207 | DB_Model_DB db | 207 | DB_Model_DB db |
| 208 | ) = | 208 | ) = |
| 209 | - if db is database(_,tables) then | ||
| 210 | - mapor(has_forbidden_column_names,tables). | ||
| 211 | - | 209 | + if db is database(_,tables) then |
| 210 | + mapor(has_forbidden_column_names,tables). | ||
| 212 | 211 | ||
| 213 | - | ||
| 214 | *** [3] Generating the target file. | 212 | *** [3] Generating the target file. |
| 215 | 213 | ||
| 216 | *** [3.1] Converting a database type into the corresponding Anubis type: | 214 | *** [3.1] Converting a database type into the corresponding Anubis type: |
ds_files/ds_types.anubis
| @@ -65,6 +65,22 @@ public define List(DS_Type) calexium_lib_types_description = | @@ -65,6 +65,22 @@ public define List(DS_Type) calexium_lib_types_description = | ||
| 65 | component(list, string, "file_extensions") | 65 | component(list, string, "file_extensions") |
| 66 | ]) | 66 | ]) |
| 67 | ]), | 67 | ]), |
| 68 | + | ||
| 69 | + ds_type("WEB_Action_Name", [ | ||
| 70 | + enum("no_action"), | ||
| 71 | + alternative("controller_action", [ | ||
| 72 | + component(string, "controller"), | ||
| 73 | + component(string, "ac_name") | ||
| 74 | + ]), | ||
| 75 | + alternative("action_name", [ | ||
| 76 | + component(string, "ac_name") | ||
| 77 | + ]), | ||
| 78 | + | ||
| 79 | + //url is raw action, hence we will only copy that url in final link | ||
| 80 | + alternative("url", comment("url is raw action, hence we will only copy that url in final link"), [ | ||
| 81 | + component(string, "url_name", ) | ||
| 82 | + ]) | ||
| 83 | + ]) | ||
| 68 | 84 | ||
| 69 | ] | 85 | ] |
| 70 | . | 86 | . |
web/CXM_form.anubis
| @@ -226,6 +226,7 @@ public type CXM_Form_Field: | @@ -226,6 +226,7 @@ public type CXM_Form_Field: | ||
| 226 | div (List(CoreAttrs), HTML_In_Form content), | 226 | div (List(CoreAttrs), HTML_In_Form content), |
| 227 | partial (HTML_Partial_Content p_content), | 227 | partial (HTML_Partial_Content p_content), |
| 228 | br, | 228 | br, |
| 229 | + hr (List(CoreAttrs) options), | ||
| 229 | // input_with_help (CXM_Form_Field field, | 230 | // input_with_help (CXM_Form_Field field, |
| 230 | // Maybe(String) help_title, | 231 | // Maybe(String) help_title, |
| 231 | // String help_text, | 232 | // String help_text, |
| @@ -286,6 +287,10 @@ public define CXM_Form_Field | @@ -286,6 +287,10 @@ public define CXM_Form_Field | ||
| 286 | = input([], label, html_Id(n.name), n, init_value, width, mand). | 287 | = input([], label, html_Id(n.name), n, init_value, width, mand). |
| 287 | 288 | ||
| 288 | public define CXM_Form_Field | 289 | public define CXM_Form_Field |
| 290 | + input(List(CoreAttrs) options, HTML_Label label, WebArgName n, InitialValue init_value, Width width, Mandatory mand) | ||
| 291 | + = input(options, label, html_Id(n.name), n, init_value, width, mand). | ||
| 292 | + | ||
| 293 | +public define CXM_Form_Field | ||
| 289 | input_readonly(HTML_Label label, WebArgName n, InitialValue init_value, Width width) | 294 | input_readonly(HTML_Label label, WebArgName n, InitialValue init_value, Width width) |
| 290 | = input_readonly([], label, html_Id(n.name), n, init_value, width). | 295 | = input_readonly([], label, html_Id(n.name), n, init_value, width). |
| 291 | 296 | ||
| @@ -380,7 +385,12 @@ public define CXM_Form_Field | @@ -380,7 +385,12 @@ public define CXM_Form_Field | ||
| 380 | )= | 385 | )= |
| 381 | hidden(html_Id(""), web_arg_name, value). | 386 | hidden(html_Id(""), web_arg_name, value). |
| 382 | 387 | ||
| 383 | - | 388 | +public define CXM_Form_Field |
| 389 | + hr | ||
| 390 | + = | ||
| 391 | + hr([]) | ||
| 392 | +. | ||
| 393 | + | ||
| 384 | //--- explanation field --------------------- | 394 | //--- explanation field --------------------- |
| 385 | 395 | ||
| 386 | // ////////////////////////////////////////////////////////// | 396 | // ////////////////////////////////////////////////////////// |
| @@ -411,32 +421,50 @@ define (List((List(CoreAttrs), WebArgValue, String)), List(HTML_Partial_Content) | @@ -411,32 +421,50 @@ define (List((List(CoreAttrs), WebArgValue, String)), List(HTML_Partial_Content) | ||
| 411 | ) = construct_selector_hide_show(div_id, items, [], [], 0). | 421 | ) = construct_selector_hide_show(div_id, items, [], [], 0). |
| 412 | 422 | ||
| 413 | public define HTML_In_Form | 423 | public define HTML_In_Form |
| 424 | + format_div_CXM_Form_Field | ||
| 425 | + ( | ||
| 426 | + List(CXM_Form_Field) field, | ||
| 427 | + List(Web_arg) lwa, | ||
| 428 | + String _class, | ||
| 429 | + Bool b_with_label | ||
| 430 | + ). | ||
| 431 | + | ||
| 432 | + | ||
| 433 | +public define HTML_In_Form | ||
| 414 | format_CXM_Form_Field | 434 | format_CXM_Form_Field |
| 415 | ( | 435 | ( |
| 416 | - CXM_Form_Field ff, | ||
| 417 | - List(Web_arg) lwa | 436 | + CXM_Form_Field ff, //CXM_Form_Field to format |
| 437 | + List(Web_arg) lwa, //web arguments of the session, can be useful for the current drawing | ||
| 438 | + String _class, | ||
| 439 | + Bool b_with_label //if false, no need to show/generate label | ||
| 418 | ) = | 440 | ) = |
| 419 | - with star = (HTML_Label l, Mandatory m) |-> (HTML_Label) | ||
| 420 | - if m is | ||
| 421 | - { | ||
| 422 | - mandatory then | ||
| 423 | - if l is | ||
| 424 | - { | ||
| 425 | - no_label then l, | ||
| 426 | - label(str, help) then label(str + "<span>*</span>", help), | ||
| 427 | - } | ||
| 428 | - | ||
| 429 | - non_mandatory then l | ||
| 430 | - }, | ||
| 431 | - pixels = (Width width) |-> | ||
| 432 | - if width is | ||
| 433 | - { | ||
| 434 | - small then 10, | ||
| 435 | - narrow_small then 20, | ||
| 436 | - narrow then 50, | ||
| 437 | - wide then 70, | ||
| 438 | - custom(n) then n | ||
| 439 | - }, | 441 | + with star = (HTML_Label l, Mandatory m) |
| 442 | + |-> | ||
| 443 | + (HTML_Label) | ||
| 444 | + if b_with_label then | ||
| 445 | + if m is | ||
| 446 | + { | ||
| 447 | + mandatory then | ||
| 448 | + if l is | ||
| 449 | + { | ||
| 450 | + no_label then l, | ||
| 451 | + label(str, help) then label(str + "<span>*</span>", help), | ||
| 452 | + } | ||
| 453 | + non_mandatory then l | ||
| 454 | + } | ||
| 455 | + else | ||
| 456 | + no_label | ||
| 457 | + , | ||
| 458 | + pixels = (Width width) | ||
| 459 | + |-> | ||
| 460 | + if width is | ||
| 461 | + { | ||
| 462 | + small then 10, | ||
| 463 | + narrow_small then 20, | ||
| 464 | + narrow then 50, | ||
| 465 | + wide then 70, | ||
| 466 | + custom(n) then n | ||
| 467 | + }, | ||
| 440 | 468 | ||
| 441 | 469 | ||
| 442 | if ff is | 470 | if ff is |
| @@ -500,7 +528,7 @@ public define HTML_In_Form | @@ -500,7 +528,7 @@ public define HTML_In_Form | ||
| 500 | with div_id = generate_random_string(15), | 528 | with div_id = generate_random_string(15), |
| 501 | sequence([ | 529 | sequence([ |
| 502 | check_box([data("show_id", div_id), class("in"), class("cxm_checkbox_hide_show"), event(onclick, "checked_hide_show_element('"+div_id+"', this);")], _label, html_Id("checkbox_"+div_id), wan, val, get_Bool(lwa, wan.name, checked)), | 530 | check_box([data("show_id", div_id), class("in"), class("cxm_checkbox_hide_show"), event(onclick, "checked_hide_show_element('"+div_id+"', this);")], _label, html_Id("checkbox_"+div_id), wan, val, get_Bool(lwa, wan.name, checked)), |
| 503 | - div([id(div_id), style("display:"+if checked then "block" else "none")], sequence(map((CXM_Form_Field ff2) |-> div([class("form_field")], format_CXM_Form_Field(ff2, lwa)),fields))) | 531 | + div([id(div_id), style("display:"+if checked then "block" else "none")], format_div_CXM_Form_Field(fields, lwa, _class, b_with_label)) |
| 504 | ]), | 532 | ]), |
| 505 | 533 | ||
| 506 | radio_button(options, _label, id, wan, val, checked, mand) then | 534 | radio_button(options, _label, id, wan, val, checked, mand) then |
| @@ -510,7 +538,7 @@ public define HTML_In_Form | @@ -510,7 +538,7 @@ public define HTML_In_Form | ||
| 510 | with div_id = generate_random_string(15), | 538 | with div_id = generate_random_string(15), |
| 511 | sequence([ | 539 | sequence([ |
| 512 | radio_button([data("show_id", div_id), class("in"), class("cxm_radio_hide_show"), event(onclick, "radio_hide_show_group('"+wan.name+"', this);")], _label, html_Id("radio_button_hide_show_"+div_id), wan, val, get_Bool(lwa, wan.name, checked)), | 540 | radio_button([data("show_id", div_id), class("in"), class("cxm_radio_hide_show"), event(onclick, "radio_hide_show_group('"+wan.name+"', this);")], _label, html_Id("radio_button_hide_show_"+div_id), wan, val, get_Bool(lwa, wan.name, checked)), |
| 513 | - div([id(div_id), style("display:"+if checked then "block" else "none")], sequence(map((CXM_Form_Field ff2) |-> div([class("form_field")], format_CXM_Form_Field(ff2, lwa)),fields))) | 541 | + div([id(div_id), style("display:"+if checked then "block" else "none")], format_div_CXM_Form_Field(fields, lwa, _class, b_with_label)) |
| 514 | ]), | 542 | ]), |
| 515 | 543 | ||
| 516 | radio_buttonr(options, _label, id, wan, val, checked, mand) then | 544 | radio_buttonr(options, _label, id, wan, val, checked, mand) then |
| @@ -540,7 +568,7 @@ public define HTML_In_Form | @@ -540,7 +568,7 @@ public define HTML_In_Form | ||
| 540 | ]), | 568 | ]), |
| 541 | one_line_fields(fields) then | 569 | one_line_fields(fields) then |
| 542 | table([nude, class("form_one_line")],[row([], | 570 | table([nude, class("form_one_line")],[row([], |
| 543 | - map((CXM_Form_Field ff2) |-> cell([],format_CXM_Form_Field(ff2, lwa)),fields))]) | 571 | + map((CXM_Form_Field ff2) |-> cell([],format_CXM_Form_Field(ff2, lwa, _class, b_with_label)),fields))]) |
| 544 | , | 572 | , |
| 545 | 573 | ||
| 546 | upload(options, _label, id, name, w, mand) then | 574 | upload(options, _label, id, name, w, mand) then |
| @@ -558,7 +586,8 @@ public define HTML_In_Form | @@ -558,7 +586,8 @@ public define HTML_In_Form | ||
| 558 | div(options, e) then div(options, e), | 586 | div(options, e) then div(options, e), |
| 559 | 587 | ||
| 560 | partial(p_content) then partial(p_content), | 588 | partial(p_content) then partial(p_content), |
| 561 | - br then br, | 589 | + br then br, |
| 590 | + hr(opts) then hr(opts), | ||
| 562 | // input_with_help(input, help_title, help_text, width) then | 591 | // input_with_help(input, help_title, help_text, width) then |
| 563 | // sequence([ | 592 | // sequence([ |
| 564 | // format_CXM_Form_Field(input, lwa, html_tooltip(force_String(help_title), help_text, width)), | 593 | // format_CXM_Form_Field(input, lwa, html_tooltip(force_String(help_title), help_text, width)), |
| @@ -568,7 +597,7 @@ public define HTML_In_Form | @@ -568,7 +597,7 @@ public define HTML_In_Form | ||
| 568 | sequence([ | 597 | sequence([ |
| 569 | literal("<fieldset" + format_attrs(options) + ">"), | 598 | literal("<fieldset" + format_attrs(options) + ">"), |
| 570 | literal(if length(legend) > 0 then "<legend>" + legend + "</legend>" else ""), | 599 | literal(if length(legend) > 0 then "<legend>" + legend + "</legend>" else ""), |
| 571 | - sequence( map((CXM_Form_Field ffield) |-> div([class("form_field")], format_CXM_Form_Field(ffield, lwa)), fields) ), | 600 | + format_div_CXM_Form_Field(fields, lwa, _class, b_with_label), |
| 572 | literal("</fieldset>") | 601 | literal("</fieldset>") |
| 573 | ]), | 602 | ]), |
| 574 | 603 | ||
| @@ -585,45 +614,100 @@ public define HTML_In_Form | @@ -585,45 +614,100 @@ public define HTML_In_Form | ||
| 585 | failure then same, | 614 | failure then same, |
| 586 | success(n) then same(n) | 615 | success(n) then same(n) |
| 587 | }, | 616 | }, |
| 588 | - submit(attrs + [class(htmlClass.class)], button_text), | 617 | + submit(attrs + [class(htmlClass.class + " cxm_submit")], button_text), |
| 589 | action_name, | 618 | action_name, |
| 590 | extra_operands | 619 | extra_operands |
| 591 | ), | 620 | ), |
| 592 | empty then literal("") | 621 | empty then literal("") |
| 593 | }. | 622 | }. |
| 594 | 623 | ||
| 624 | + public define HTML_In_Form | ||
| 625 | + format_div_CXM_Form_Field | ||
| 626 | + ( | ||
| 627 | + CXM_Form_Field field, | ||
| 628 | + List(Web_arg) lwa, | ||
| 629 | + String _class, | ||
| 630 | + Bool b_with_label | ||
| 631 | + )= | ||
| 632 | + if field is empty then | ||
| 633 | + empty | ||
| 634 | + else if field is no_field then | ||
| 635 | + empty | ||
| 636 | + else if field is hidden(id, name, init) then | ||
| 637 | + format_CXM_Form_Field(field, lwa, _class, b_with_label) | ||
| 638 | + else if field is br then | ||
| 639 | + format_CXM_Form_Field(field, lwa, _class, b_with_label) | ||
| 640 | + else if field is text_area(options, _label, id, wan, default, w, height, mand) then | ||
| 641 | + div([], format_CXM_Form_Field(field, lwa, _class, b_with_label)) | ||
| 642 | + else | ||
| 643 | + div([class(_class)], format_CXM_Form_Field(field, lwa, _class, b_with_label)) | ||
| 644 | +. | ||
| 645 | + | ||
| 646 | + | ||
| 647 | + | ||
| 595 | public define HTML_In_Form | 648 | public define HTML_In_Form |
| 596 | - format_CXM_Form_Field | 649 | + format_div_CXM_Form_Field |
| 597 | ( | 650 | ( |
| 598 | List(CXM_Form_Field) fields, | 651 | List(CXM_Form_Field) fields, |
| 599 | - List(Web_arg) lwa | 652 | + List(Web_arg) lwa, |
| 653 | + String _class, | ||
| 654 | + Bool b_with_label | ||
| 600 | )= | 655 | )= |
| 601 | - sequence( map((CXM_Form_Field ff) |-> div([class("form_field aligned")], format_CXM_Form_Field(ff, lwa)), fields) ). | 656 | + //println("format_div_CXM_Form_Field"); |
| 657 | + sequence( map((CXM_Form_Field field) | ||
| 658 | + |-> | ||
| 659 | + //with css_line = if line = 0 then " odd_line" else " even_line", | ||
| 660 | + //println("class "+css_line+" line "+line); | ||
| 661 | + if field is empty then | ||
| 662 | + empty | ||
| 663 | + else if field is no_field then | ||
| 664 | + empty | ||
| 665 | + else if field is hidden(id, name, init) then | ||
| 666 | + format_CXM_Form_Field(field, lwa, _class, b_with_label) | ||
| 667 | + else if field is br then | ||
| 668 | + format_CXM_Form_Field(field, lwa, _class, b_with_label) | ||
| 669 | + else if field is text_area(options, _label, id, wan, default, w, height, mand) then | ||
| 670 | + div([], format_CXM_Form_Field(field, lwa, _class, b_with_label)) | ||
| 671 | + else | ||
| 672 | + div([class(_class)], format_CXM_Form_Field(field, lwa, _class, b_with_label)) | ||
| 673 | + , fields)) | ||
| 674 | +. | ||
| 602 | 675 | ||
| 603 | public define HTML_In_Form | 676 | public define HTML_In_Form |
| 604 | - fieldset | 677 | + to_HTML_In_Form |
| 605 | ( | 678 | ( |
| 606 | - List(Web_arg) lwa, | ||
| 607 | List(CXM_Form_Field) fields, | 679 | List(CXM_Form_Field) fields, |
| 680 | + List(Web_arg) lwa, | ||
| 681 | + String _class, | ||
| 682 | + Bool b_with_label | ||
| 608 | )= | 683 | )= |
| 609 | - sequence( map((CXM_Form_Field ff) |-> div([class("form_field aligned")], format_CXM_Form_Field(ff, lwa)), fields) ). | 684 | + format_div_CXM_Form_Field(fields, lwa, _class, b_with_label) |
| 685 | +. | ||
| 610 | 686 | ||
| 611 | -public define HTML_In_Form | 687 | + "form_field aligned" |
| 688 | + | ||
| 689 | + public define HTML_In_Form | ||
| 612 | fieldset | 690 | fieldset |
| 613 | ( | 691 | ( |
| 614 | - List(Web_arg) lwa, | ||
| 615 | CXM_Form_Field field, | 692 | CXM_Form_Field field, |
| 693 | + List(Web_arg) lwa, | ||
| 694 | + String _class, | ||
| 695 | + Bool b_with_label | ||
| 616 | )= | 696 | )= |
| 617 | - div([class("form_field aligned")], format_CXM_Form_Field(field, lwa)). | 697 | + fieldset([field], lwa, _class, b_with_label) |
| 698 | +. | ||
| 618 | 699 | ||
| 619 | 700 | ||
| 620 | public define HTML_In_Form | 701 | public define HTML_In_Form |
| 621 | - fieldset | 702 | + to_HTML_In_Form |
| 622 | ( | 703 | ( |
| 623 | - List(CXM_Form_Field) fields | 704 | + List(CXM_Form_Field) fields, |
| 705 | + String _class, | ||
| 706 | + Bool b_with_label | ||
| 624 | )= | 707 | )= |
| 625 | - sequence( map((CXM_Form_Field ff) |-> div([class("form_field aligned")], format_CXM_Form_Field(ff, [])), fields) ). | 708 | + to_HTML_In_Form(fields, [], _class, b_with_label). |
| 626 | 709 | ||
| 710 | +public | ||
| 627 | 711 | ||
| 628 | public define HTML_Off_Form | 712 | public define HTML_Off_Form |
| 629 | cxm_form | 713 | cxm_form |
| @@ -633,15 +717,16 @@ public define HTML_Off_Form | @@ -633,15 +717,16 @@ public define HTML_Off_Form | ||
| 633 | WEB_Action_Name action, | 717 | WEB_Action_Name action, |
| 634 | List((String,String)) extra_ops, | 718 | List((String,String)) extra_ops, |
| 635 | List(Web_arg) lwa, | 719 | List(Web_arg) lwa, |
| 636 | - List(CXM_Form_Field) fields | 720 | + List(CXM_Form_Field) fields, |
| 721 | + String _class, | ||
| 722 | + Bool b_with_label | ||
| 637 | ) = | 723 | ) = |
| 638 | - | ||
| 639 | form( | 724 | form( |
| 640 | form_Id, | 725 | form_Id, |
| 641 | [class("cxm_form") . options], | 726 | [class("cxm_form") . options], |
| 642 | action, | 727 | action, |
| 643 | extra_ops, | 728 | extra_ops, |
| 644 | - format_CXM_Form_Field(fields, lwa) | 729 | + format_div_CXM_Form_Field(fields, lwa, _class, b_with_label) |
| 645 | ). | 730 | ). |
| 646 | 731 | ||
| 647 | public define HTML_Off_Form | 732 | public define HTML_Off_Form |
| @@ -656,7 +741,9 @@ public define HTML_Off_Form | @@ -656,7 +741,9 @@ public define HTML_Off_Form | ||
| 656 | String action, //older manner to call action with String | 741 | String action, //older manner to call action with String |
| 657 | List((String,String)) extra_ops, | 742 | List((String,String)) extra_ops, |
| 658 | List(Web_arg) lwa, | 743 | List(Web_arg) lwa, |
| 659 | - List(CXM_Form_Field) fields | 744 | + List(CXM_Form_Field) fields, |
| 745 | + String _class, | ||
| 746 | + Bool b_with_label | ||
| 660 | ) = | 747 | ) = |
| 661 | 748 | ||
| 662 | form( | 749 | form( |
| @@ -664,7 +751,7 @@ public define HTML_Off_Form | @@ -664,7 +751,7 @@ public define HTML_Off_Form | ||
| 664 | [class("cxm_form") . options], | 751 | [class("cxm_form") . options], |
| 665 | action_name(action), | 752 | action_name(action), |
| 666 | extra_ops, | 753 | extra_ops, |
| 667 | - format_CXM_Form_Field(fields, lwa) | 754 | + format_div_CXM_Form_Field(fields, lwa, _class, b_with_label) |
| 668 | ). | 755 | ). |
| 669 | 756 | ||
| 670 | public define HTML_Off_Form | 757 | public define HTML_Off_Form |
| @@ -675,63 +762,118 @@ public define HTML_Off_Form | @@ -675,63 +762,118 @@ public define HTML_Off_Form | ||
| 675 | WEB_Action_Name action, | 762 | WEB_Action_Name action, |
| 676 | List((String,String)) extra_ops, | 763 | List((String,String)) extra_ops, |
| 677 | List(Web_arg) lwa, | 764 | List(Web_arg) lwa, |
| 678 | - List(CXM_Form_Field) form_fields | 765 | + List(CXM_Form_Field) form_fields, |
| 766 | + String _class, | ||
| 767 | + Bool b_with_label | ||
| 679 | )= | 768 | )= |
| 680 | - cxm_form(html_Id(form_name), options, action, extra_ops, lwa, form_fields). | 769 | + cxm_form(html_Id(form_name), options, action, extra_ops, lwa, form_fields, _class, b_with_label). |
| 681 | 770 | ||
| 682 | public define HTML_Off_Form | 771 | public define HTML_Off_Form |
| 683 | cxm_form | 772 | cxm_form |
| 684 | ( | 773 | ( |
| 685 | String form_name, | 774 | String form_name, |
| 686 | List(CoreAttrs) options, | 775 | List(CoreAttrs) options, |
| 687 | - String action, | 776 | + WEB_Action_Name action, |
| 688 | List((String,String)) extra_ops, | 777 | List((String,String)) extra_ops, |
| 689 | List(Web_arg) lwa, | 778 | List(Web_arg) lwa, |
| 690 | List(CXM_Form_Field) form_fields | 779 | List(CXM_Form_Field) form_fields |
| 691 | )= | 780 | )= |
| 692 | - cxm_form(html_Id(form_name), options, action_name(action), extra_ops, lwa, form_fields). | 781 | + cxm_form(form_name, options, action, extra_ops, lwa, form_fields, "form_field aligned", true) |
| 782 | +. | ||
| 693 | 783 | ||
| 784 | +public define HTML_Off_Form | ||
| 785 | + cxm_form | ||
| 786 | + ( | ||
| 787 | + String form_name, | ||
| 788 | + List(CoreAttrs) options, | ||
| 789 | + String action, | ||
| 790 | + List((String,String)) extra_ops, | ||
| 791 | + List(Web_arg) lwa, | ||
| 792 | + List(CXM_Form_Field) form_fields, | ||
| 793 | + | ||
| 794 | + Bool b_with_label | ||
| 795 | + )= | ||
| 796 | + cxm_form(html_Id(form_name), options, action_name(action), extra_ops, lwa, form_fields, "form_field aligned", b_with_label) | ||
| 797 | +. | ||
| 798 | + | ||
| 799 | +public define HTML_Off_Form | ||
| 800 | + cxm_form | ||
| 801 | + ( | ||
| 802 | + String form_name, | ||
| 803 | + List(CoreAttrs) options, | ||
| 804 | + String action, | ||
| 805 | + List((String,String)) extra_ops, | ||
| 806 | + List(Web_arg) lwa, | ||
| 807 | + List(CXM_Form_Field) form_fields | ||
| 808 | + )= | ||
| 809 | + cxm_form(html_Id(form_name), options, action_name(action), extra_ops, lwa, form_fields, "form_field aligned", true) | ||
| 810 | +. | ||
| 694 | 811 | ||
| 695 | public define HTML_Off_Form | 812 | public define HTML_Off_Form |
| 696 | cxm_form | 813 | cxm_form |
| 697 | ( | 814 | ( |
| 698 | String form_id, | 815 | String form_id, |
| 699 | List(CoreAttrs) options, | 816 | List(CoreAttrs) options, |
| 700 | - List(HTML_In_Form) fields | 817 | + List(HTML_In_Form) fields, |
| 818 | + String _class | ||
| 701 | ) = | 819 | ) = |
| 702 | - cxm_form(html_Id(form_id), options, action_name(""), [], [], map((HTML_In_Form field) |-> raw_in_form(field), fields) ). | 820 | + cxm_form(html_Id(form_id), options, action_name(""), [], [], map((HTML_In_Form field) |-> raw_in_form(field), fields), _class, true ) |
| 821 | +. | ||
| 703 | 822 | ||
| 704 | public define HTML_Off_Form | 823 | public define HTML_Off_Form |
| 705 | cxm_form | 824 | cxm_form |
| 706 | ( | 825 | ( |
| 707 | - String form_id, | 826 | + String form_id, |
| 708 | List(CoreAttrs) options, | 827 | List(CoreAttrs) options, |
| 709 | - List(Web_arg) lwa, | ||
| 710 | - List(CXM_Form_Field) fields | 828 | + List(Web_arg) lwa, |
| 829 | + List(CXM_Form_Field) fields, | ||
| 830 | + String _class, | ||
| 831 | + Bool b_with_label | ||
| 711 | ) = | 832 | ) = |
| 712 | - cxm_form(html_Id(form_id), options, action_name(""), [], lwa, fields). | 833 | + cxm_form(html_Id(form_id), options, action_name(""), [], lwa, fields, _class, b_with_label). |
| 713 | 834 | ||
| 714 | public define HTML_Off_Form | 835 | public define HTML_Off_Form |
| 715 | cxm_form | 836 | cxm_form |
| 716 | ( | 837 | ( |
| 717 | - String form_id, | ||
| 718 | - List(HTML_In_Form) fields | 838 | + String form_id, |
| 839 | + List(HTML_In_Form) fields, | ||
| 840 | + String _class | ||
| 719 | ) = | 841 | ) = |
| 720 | - cxm_form(html_Id(form_id), [], action_name(""), [], [], map((HTML_In_Form field) |-> raw_in_form(field), fields) ). | 842 | + cxm_form(html_Id(form_id), [], action_name(""), [], [], map((HTML_In_Form field) |-> raw_in_form(field), fields), _class, true ). |
| 721 | 843 | ||
| 722 | public define HTML_Off_Form | 844 | public define HTML_Off_Form |
| 723 | cxm_form | 845 | cxm_form |
| 724 | ( | 846 | ( |
| 725 | String form_id, | 847 | String form_id, |
| 726 | List(Web_arg) lwa, | 848 | List(Web_arg) lwa, |
| 727 | - List(CXM_Form_Field) fields | 849 | + List(CXM_Form_Field) fields, |
| 850 | + String _class | ||
| 851 | + ) = | ||
| 852 | + cxm_form(form_id, [], lwa, fields, _class, true). | ||
| 853 | + | ||
| 854 | +public define HTML_Off_Form | ||
| 855 | + cxm_form | ||
| 856 | + ( | ||
| 857 | + String form_id, | ||
| 858 | + List(Web_arg) lwa, | ||
| 859 | + List(CXM_Form_Field) fields, | ||
| 728 | ) = | 860 | ) = |
| 729 | - cxm_form(form_id, [], lwa, fields). | 861 | + cxm_form(form_id, [], lwa, fields, "form_field aligned", true). |
| 862 | + | ||
| 730 | 863 | ||
| 731 | public define HTML_Off_Form | 864 | public define HTML_Off_Form |
| 732 | cxm_form | 865 | cxm_form |
| 733 | ( | 866 | ( |
| 734 | String form_id, | 867 | String form_id, |
| 868 | + List(CXM_Form_Field) fields, | ||
| 869 | + String _class | ||
| 870 | + ) = | ||
| 871 | + cxm_form(html_Id(form_id), [], action_name(""), [], [], fields, _class, true). | ||
| 872 | + | ||
| 873 | +public define HTML_Off_Form | ||
| 874 | + cxm_form | ||
| 875 | + ( | ||
| 876 | + String form_id, | ||
| 735 | List(CXM_Form_Field) fields | 877 | List(CXM_Form_Field) fields |
| 736 | ) = | 878 | ) = |
| 737 | - cxm_form(html_Id(form_id), [], action_name(""), [], [], fields). | 879 | + cxm_form(html_Id(form_id), [], action_name(""), [], [], fields, "form_field aligned", true). |
web/CXM_jquery.anubis
| @@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
| 6 | * | 6 | * |
| 7 | */ | 7 | */ |
| 8 | 8 | ||
| 9 | -read calexium_lib/web/CXM_making_a_web_site.anubis | 9 | +transmit calexium_lib/web/CXM_making_a_web_site.anubis |
| 10 | read tools/printable_tree.anubis | 10 | read tools/printable_tree.anubis |
| 11 | read tools/basis.anubis | 11 | read tools/basis.anubis |
| 12 | 12 | ||
| @@ -18,6 +18,8 @@ public type JQuery_Actioner_type: | @@ -18,6 +18,8 @@ public type JQuery_Actioner_type: | ||
| 18 | jqscript( String script) | 18 | jqscript( String script) |
| 19 | . | 19 | . |
| 20 | 20 | ||
| 21 | +public define JQuery_Actioner_type jqlink(String name) = jqlink(action_name(name)). | ||
| 22 | + | ||
| 21 | /* jQuery Actioner */ | 23 | /* jQuery Actioner */ |
| 22 | public type JQuery_Actioner: | 24 | public type JQuery_Actioner: |
| 23 | jQuery_actioner(Actioner_Target target, JQuery_Actioner_type type). //, String url_or_form_id_or_script | 25 | jQuery_actioner(Actioner_Target target, JQuery_Actioner_type type). //, String url_or_form_id_or_script |
| @@ -75,6 +77,7 @@ public define String | @@ -75,6 +77,7 @@ public define String | ||
| 75 | jqlink(control_action) then | 77 | jqlink(control_action) then |
| 76 | if control_action is | 78 | if control_action is |
| 77 | { | 79 | { |
| 80 | + no_action then "", | ||
| 78 | controller_action(ctrl, action) then "document.location='/?aws_controller="+ctrl+"&aws_action="+action+"';", | 81 | controller_action(ctrl, action) then "document.location='/?aws_controller="+ctrl+"&aws_action="+action+"';", |
| 79 | action_name(action) then "document.location='/?aws_action="+action+"';", | 82 | action_name(action) then "document.location='/?aws_action="+action+"';", |
| 80 | url(url) then "document.location='"+url+"';", | 83 | url(url) then "document.location='"+url+"';", |
| @@ -89,9 +92,10 @@ public define String | @@ -89,9 +92,10 @@ public define String | ||
| 89 | jqlink(control_action) then | 92 | jqlink(control_action) then |
| 90 | if control_action is | 93 | if control_action is |
| 91 | { | 94 | { |
| 92 | - controller_action(ctrl, action) then "document.location='/?aws_controller="+ctrl+"&aws_action="+action+"';", | ||
| 93 | - action_name(action) then "document.location='/?aws_action="+action+"';", | ||
| 94 | - url(url) then "document.location='"+url+"';", | 95 | + no_action then "", |
| 96 | + controller_action(ctrl, action) then "document.location='/?aws_controller="+ctrl+"&aws_action="+action+"';", | ||
| 97 | + action_name(action) then "document.location='/?aws_action="+action+"';", | ||
| 98 | + url(url) then "document.location='"+url+"';", | ||
| 95 | } | 99 | } |
| 96 | jqflink(link) then "document.location='"+link+"';", | 100 | jqflink(link) then "document.location='"+link+"';", |
| 97 | jqscript(script) then script | 101 | jqscript(script) then script |
| @@ -103,6 +107,7 @@ public define String | @@ -103,6 +107,7 @@ public define String | ||
| 103 | jqlink(control_action) then | 107 | jqlink(control_action) then |
| 104 | if control_action is | 108 | if control_action is |
| 105 | { | 109 | { |
| 110 | + no_action then "", | ||
| 106 | controller_action(ctrl, action) then | 111 | controller_action(ctrl, action) then |
| 107 | "window.open('aws_controller="+ctrl+"&aws_action="+action+"', '"+window_name+"', '"+jquery_button_get_onclick_action_window_options(window_options, "")+"');", | 112 | "window.open('aws_controller="+ctrl+"&aws_action="+action+"', '"+window_name+"', '"+jquery_button_get_onclick_action_window_options(window_options, "")+"');", |
| 108 | //"document.location='/?aws_controller="+ctrl+"&aws_action="+action+"';", | 113 | //"document.location='/?aws_controller="+ctrl+"&aws_action="+action+"';", |
| @@ -153,7 +158,7 @@ define List(HTML_Head_Tag) | @@ -153,7 +158,7 @@ define List(HTML_Head_Tag) | ||
| 153 | jquery_defaults | 158 | jquery_defaults |
| 154 | = | 159 | = |
| 155 | [ | 160 | [ |
| 156 | - js(js_file("/js/jquery/jquery-1.11.3.min.js")), | 161 | + js(js_file("/js/jquery/jquery-1.12.4.min.js")), |
| 157 | js(js_file("/js/jquery/jquery-ui-1.11.4/jquery-ui.min.js")), | 162 | js(js_file("/js/jquery/jquery-ui-1.11.4/jquery-ui.min.js")), |
| 158 | ]. | 163 | ]. |
| 159 | 164 |
web/CXM_json.anubis
| @@ -110,6 +110,14 @@ public define JsonMember | @@ -110,6 +110,14 @@ public define JsonMember | ||
| 110 | ) = | 110 | ) = |
| 111 | json_member(name, json_null). | 111 | json_member(name, json_null). |
| 112 | 112 | ||
| 113 | +public define JsonValue | ||
| 114 | + to_json_array | ||
| 115 | + ( | ||
| 116 | + List(String) list_str | ||
| 117 | + )= | ||
| 118 | + json_array(map((String str) |-> json_string(str), list_str)) | ||
| 119 | +. | ||
| 120 | + | ||
| 113 | //------------------------------------------- | 121 | //------------------------------------------- |
| 114 | // Outputing Json to Printable_tree | 122 | // Outputing Json to Printable_tree |
| 115 | 123 |
web/CXM_making_a_web_site.anubis
| @@ -63,6 +63,9 @@ read CXM_json.anubis | @@ -63,6 +63,9 @@ read CXM_json.anubis | ||
| 63 | transmit CXM_web_dump.anubis | 63 | transmit CXM_web_dump.anubis |
| 64 | transmit CXM_web_arg_utils.anubis | 64 | transmit CXM_web_arg_utils.anubis |
| 65 | transmit CXM_web_session.anubis | 65 | transmit CXM_web_session.anubis |
| 66 | +transmit CXM_web_action.anubis | ||
| 67 | + | ||
| 68 | +transmit calexium_lib/web/types/web_action_name.anubis | ||
| 66 | 69 | ||
| 67 | //read CXM_html_tooltip.anubis | 70 | //read CXM_html_tooltip.anubis |
| 68 | 71 | ||
| @@ -298,19 +301,6 @@ public type HTTP_Answer:... | @@ -298,19 +301,6 @@ public type HTTP_Answer:... | ||
| 298 | conversation between the client and the web site, but also containing informations | 301 | conversation between the client and the web site, but also containing informations |
| 299 | taken from the data bases. | 302 | taken from the data bases. |
| 300 | 303 | ||
| 301 | -public type WEB_Action_Name: | ||
| 302 | - controller_action( | ||
| 303 | - String controller, | ||
| 304 | - String action_name | ||
| 305 | - ), | ||
| 306 | - action_name( | ||
| 307 | - String action_name | ||
| 308 | - ), | ||
| 309 | - //url is raw action, hence we will onlu copy that url in final link | ||
| 310 | - url( | ||
| 311 | - String url_name | ||
| 312 | - ) | ||
| 313 | -. | ||
| 314 | 304 | ||
| 315 | 305 | ||
| 316 | 306 | ||
| @@ -422,10 +412,10 @@ define Previous_Session | @@ -422,10 +412,10 @@ define Previous_Session | ||
| 422 | with session_name = value(cookie), | 412 | with session_name = value(cookie), |
| 423 | with file_path = session_directory+"/"+session_name, | 413 | with file_path = session_directory+"/"+session_name, |
| 424 | //unserialize the stored session and his timeout value | 414 | //unserialize the stored session and his timeout value |
| 425 | - println("retrieve session ["+session_name+"]"); | 415 | + //println("retrieve session ["+session_name+"]"); |
| 426 | if (RetrieveResult((Int, WEB_Session_No_Var)))retrieve(file_path) is ok(d) then | 416 | if (RetrieveResult((Int, WEB_Session_No_Var)))retrieve(file_path) is ok(d) then |
| 427 | ( | 417 | ( |
| 428 | - println("retrieve session OK ["+session_name+"]"); | 418 | + //println("retrieve session OK ["+session_name+"]"); |
| 429 | since d is (time_stamp, s_no_var), | 419 | since d is (time_stamp, s_no_var), |
| 430 | with s = to_WEB_Session(s_no_var), | 420 | with s = to_WEB_Session(s_no_var), |
| 431 | if time_stamp < now then | 421 | if time_stamp < now then |
| @@ -1033,25 +1023,41 @@ public type HTML_Footer_Row($T): | @@ -1033,25 +1023,41 @@ public type HTML_Footer_Row($T): | ||
| 1033 | Same remark as for 'HTML_Cell($T)'. We define several convenience functions: | 1023 | Same remark as for 'HTML_Cell($T)'. We define several convenience functions: |
| 1034 | 1024 | ||
| 1035 | public define HTML_Row($T) | 1025 | public define HTML_Row($T) |
| 1036 | - row | ||
| 1037 | - ( | ||
| 1038 | - List(HTML_Cell($T)) cells | ||
| 1039 | - ) = | ||
| 1040 | - row([],cells). | 1026 | + row |
| 1027 | + ( | ||
| 1028 | + List(HTML_Cell($T)) cells | ||
| 1029 | + )= | ||
| 1030 | + row([],cells). | ||
| 1041 | 1031 | ||
| 1042 | public define HTML_Row($T) | 1032 | public define HTML_Row($T) |
| 1043 | - row | ||
| 1044 | - ( | ||
| 1045 | - HTML_Cell($T) cell | ||
| 1046 | - ) = | ||
| 1047 | - row([],[cell]). | 1033 | + row |
| 1034 | + ( | ||
| 1035 | + HTML_Cell($T) cell | ||
| 1036 | + )= | ||
| 1037 | + row([],[cell]). | ||
| 1038 | + | ||
| 1039 | +public define HTML_Row($T) | ||
| 1040 | + row | ||
| 1041 | + ( | ||
| 1042 | + List(Cell_Option) options, | ||
| 1043 | + HTML_Cell($T) cell | ||
| 1044 | + )= | ||
| 1045 | + row(options,[cell]). | ||
| 1046 | + | ||
| 1047 | +public define HTML_Row($T) | ||
| 1048 | + row | ||
| 1049 | + ( | ||
| 1050 | + Cell_Option option, | ||
| 1051 | + HTML_Cell($T) cell | ||
| 1052 | + )= | ||
| 1053 | + row([option],[cell]). | ||
| 1048 | 1054 | ||
| 1049 | public define HTML_Header_Row($T) | 1055 | public define HTML_Header_Row($T) |
| 1050 | - header_row | ||
| 1051 | - ( | ||
| 1052 | - List(HTML_Header_Cell($T)) cells | ||
| 1053 | - ) = | ||
| 1054 | - header_row([],cells). | 1056 | + header_row |
| 1057 | + ( | ||
| 1058 | + List(HTML_Header_Cell($T)) cells | ||
| 1059 | + ) = | ||
| 1060 | + header_row([],cells). | ||
| 1055 | 1061 | ||
| 1056 | public define HTML_Header_Row($T) | 1062 | public define HTML_Header_Row($T) |
| 1057 | header_row | 1063 | header_row |
| @@ -1379,7 +1385,8 @@ public type HTML_In_Form: | @@ -1379,7 +1385,8 @@ public type HTML_In_Form: | ||
| 1379 | li (List(CoreAttrs), HTML_In_Form content), | 1385 | li (List(CoreAttrs), HTML_In_Form content), |
| 1380 | button (List(CoreAttrs), HTML_In_Form content), | 1386 | button (List(CoreAttrs), HTML_In_Form content), |
| 1381 | i (List(CoreAttrs), String text), | 1387 | i (List(CoreAttrs), String text), |
| 1382 | - span (List(CoreAttrs), String text) | 1388 | + span (List(CoreAttrs), String text), |
| 1389 | + hr (List(CoreAttrs)) | ||
| 1383 | . | 1390 | . |
| 1384 | 1391 | ||
| 1385 | 1392 | ||
| @@ -1652,7 +1659,8 @@ public type HTML_Off_Form: | @@ -1652,7 +1659,8 @@ public type HTML_Off_Form: | ||
| 1652 | li (List(CoreAttrs), HTML_Off_Form content), | 1659 | li (List(CoreAttrs), HTML_Off_Form content), |
| 1653 | button (List(CoreAttrs), HTML_Off_Form content), | 1660 | button (List(CoreAttrs), HTML_Off_Form content), |
| 1654 | i (List(CoreAttrs), String text), | 1661 | i (List(CoreAttrs), String text), |
| 1655 | - span (List(CoreAttrs), String text) | 1662 | + span (List(CoreAttrs), String text), |
| 1663 | + hr (List(CoreAttrs)) | ||
| 1656 | . | 1664 | . |
| 1657 | 1665 | ||
| 1658 | 'HTML_Off_Form' defines all the elements you may put outside any form. | 1666 | 'HTML_Off_Form' defines all the elements you may put outside any form. |
| @@ -1861,11 +1869,11 @@ public define HTML_Off_Form | @@ -1861,11 +1869,11 @@ public define HTML_Off_Form | ||
| 1861 | . | 1869 | . |
| 1862 | 1870 | ||
| 1863 | public define HTML_Off_Form | 1871 | public define HTML_Off_Form |
| 1864 | - text | ||
| 1865 | - ( | ||
| 1866 | - String s | ||
| 1867 | - ) = | ||
| 1868 | - text([],s) | 1872 | + text |
| 1873 | + ( | ||
| 1874 | + String s | ||
| 1875 | + )= | ||
| 1876 | + text([], s) | ||
| 1869 | . | 1877 | . |
| 1870 | 1878 | ||
| 1871 | 1879 | ||
| @@ -1886,6 +1894,18 @@ public define HTML_Off_Form | @@ -1886,6 +1894,18 @@ public define HTML_Off_Form | ||
| 1886 | span([], to_decimal(i)) | 1894 | span([], to_decimal(i)) |
| 1887 | . | 1895 | . |
| 1888 | 1896 | ||
| 1897 | +public define HTML_Off_Form | ||
| 1898 | + hr | ||
| 1899 | + = | ||
| 1900 | + hr([]) | ||
| 1901 | +. | ||
| 1902 | + | ||
| 1903 | +public define HTML_In_Form | ||
| 1904 | + hr | ||
| 1905 | + = | ||
| 1906 | + hr([]) | ||
| 1907 | +. | ||
| 1908 | + | ||
| 1889 | - Cell a gap between two other cells : | 1909 | - Cell a gap between two other cells : |
| 1890 | 1910 | ||
| 1891 | public define HTML_Cell(HTML_Off_Form) | 1911 | public define HTML_Cell(HTML_Off_Form) |
| @@ -3021,48 +3041,52 @@ define WEB_Controller_Result | @@ -3021,48 +3041,52 @@ define WEB_Controller_Result | ||
| 3021 | { | 3041 | { |
| 3022 | [] then http_answer(error_page(http_not_found, "No action found", _session)), | 3042 | [] then http_answer(error_page(http_not_found, "No action found", _session)), |
| 3023 | [h . t] then | 3043 | [h . t] then |
| 3024 | - with action_name = if h.name is | 3044 | + if h.name = no_action then |
| 3045 | + http_answer( _session, html_content(http_no_content, empty)) | ||
| 3046 | + else | ||
| 3047 | + with action_name = if h.name is | ||
| 3025 | { | 3048 | { |
| 3049 | + no_action then "", | ||
| 3026 | controller_action(_, name) then name, | 3050 | controller_action(_, name) then name, |
| 3027 | action_name(name) then name, | 3051 | action_name(name) then name, |
| 3028 | url(url) then url, | 3052 | url(url) then url, |
| 3029 | }, | 3053 | }, |
| 3030 | - if requested_action_name = action_name then | ||
| 3031 | - with step = get_Int(_session.fields, "AWS_SESSION_STEP", 0) + 1, | ||
| 3032 | - replace_Int(_session.fields, "AWS_SESSION_STEP", step); | ||
| 3033 | - if h.allowed_proto is | ||
| 3034 | - { | ||
| 3035 | - //Action only in HTTP | ||
| 3036 | - http then | ||
| 3037 | - if _session.web_request.is_https then | ||
| 3038 | - http_answer(error_page(http_forbidden, "Only HTTP authorized", _session)) | ||
| 3039 | - else | ||
| 3040 | - //ask to the server the authorization to execute that action | ||
| 3041 | - if h.allow(_session) then | ||
| 3042 | - h.do_it(_session) | ||
| 3043 | - else | ||
| 3044 | - http_answer(error_page(http_unauthorized, "you are not authorized for this action", _session)) | ||
| 3045 | - | ||
| 3046 | - //Action only in HTTPS | ||
| 3047 | - https then | ||
| 3048 | - if _session.web_request.is_https then | ||
| 3049 | - //ask to the server the authorization to execute that action | ||
| 3050 | - if h.allow(_session) then | ||
| 3051 | - h.do_it(_session) | ||
| 3052 | - else | ||
| 3053 | - http_answer(error_page(http_unauthorized, "you are not authorized for this action", _session)) | ||
| 3054 | - else | ||
| 3055 | - http_answer(error_page(http_forbidden, "Only HTTPS authorized", _session)) | ||
| 3056 | - //Action in both HTTP / HTTPS | ||
| 3057 | - http_https then | ||
| 3058 | - //ask to the server the authorization to execute that action | ||
| 3059 | - if h.allow(_session) then | ||
| 3060 | - //println("do_it "+action_name); | ||
| 3061 | - h.do_it(_session) | ||
| 3062 | - else | ||
| 3063 | - http_answer(error_page(http_unauthorized, "you are not authorized for this action", _session)) | ||
| 3064 | - | ||
| 3065 | - } | 3054 | + if requested_action_name = action_name then |
| 3055 | + with step = get_Int(_session.fields, "AWS_SESSION_STEP", 0) + 1, | ||
| 3056 | + replace_Int(_session.fields, "AWS_SESSION_STEP", step); | ||
| 3057 | + if h.allowed_proto is | ||
| 3058 | + { | ||
| 3059 | + //Action only in HTTP | ||
| 3060 | + http then | ||
| 3061 | + if _session.web_request.is_https then | ||
| 3062 | + http_answer(error_page(http_forbidden, "Only HTTP authorized", _session)) | ||
| 3063 | + else | ||
| 3064 | + //ask to the server the authorization to execute that action | ||
| 3065 | + if h.allow(_session) then | ||
| 3066 | + h.do_it(_session) | ||
| 3067 | + else | ||
| 3068 | + http_answer(error_page(http_unauthorized, "you are not authorized for this action", _session)) | ||
| 3069 | + | ||
| 3070 | + //Action only in HTTPS | ||
| 3071 | + https then | ||
| 3072 | + if _session.web_request.is_https then | ||
| 3073 | + //ask to the server the authorization to execute that action | ||
| 3074 | + if h.allow(_session) then | ||
| 3075 | + h.do_it(_session) | ||
| 3076 | + else | ||
| 3077 | + http_answer(error_page(http_unauthorized, "you are not authorized for this action", _session)) | ||
| 3078 | + else | ||
| 3079 | + http_answer(error_page(http_forbidden, "Only HTTPS authorized", _session)) | ||
| 3080 | + //Action in both HTTP / HTTPS | ||
| 3081 | + http_https then | ||
| 3082 | + //ask to the server the authorization to execute that action | ||
| 3083 | + if h.allow(_session) then | ||
| 3084 | + //println("do_it "+action_name); | ||
| 3085 | + h.do_it(_session) | ||
| 3086 | + else | ||
| 3087 | + http_answer(error_page(http_unauthorized, "you are not authorized for this action", _session)) | ||
| 3088 | + | ||
| 3089 | + } | ||
| 3066 | else | 3090 | else |
| 3067 | apply_action(_session, requested_action_name, t) | 3091 | apply_action(_session, requested_action_name, t) |
| 3068 | } | 3092 | } |
| @@ -3212,8 +3236,8 @@ public define Web_Site | @@ -3212,8 +3236,8 @@ public define Web_Site | ||
| 3212 | List(Web_arg) _lwa, | 3236 | List(Web_arg) _lwa, |
| 3213 | Bool is_https) |-> | 3237 | Bool is_https) |-> |
| 3214 | //(Printable_tree) | 3238 | //(Printable_tree) |
| 3215 | - println("host_name "+host_name); | ||
| 3216 | - println(dump_http_info(http_info)); | 3239 | + //println("host_name "+host_name); |
| 3240 | + //println(dump_http_info(http_info)); | ||
| 3217 | println(dump_web_arg_values(_lwa)); | 3241 | println(dump_web_arg_values(_lwa)); |
| 3218 | 3242 | ||
| 3219 | 3243 | ||
| @@ -3503,7 +3527,8 @@ type HTML_Any($T): | @@ -3503,7 +3527,8 @@ type HTML_Any($T): | ||
| 3503 | any_li (List(CoreAttrs), $T content), | 3527 | any_li (List(CoreAttrs), $T content), |
| 3504 | any_button (List(CoreAttrs), $T element), | 3528 | any_button (List(CoreAttrs), $T element), |
| 3505 | any_i (List(CoreAttrs), String text), | 3529 | any_i (List(CoreAttrs), String text), |
| 3506 | - any_span (List(CoreAttrs), String text) | 3530 | + any_span (List(CoreAttrs), String text), |
| 3531 | + any_hr (List(CoreAttrs)) | ||
| 3507 | . | 3532 | . |
| 3508 | 3533 | ||
| 3509 | 3534 | ||
| @@ -3691,6 +3716,7 @@ public define String | @@ -3691,6 +3716,7 @@ public define String | ||
| 3691 | )= | 3716 | )= |
| 3692 | if action is | 3717 | if action is |
| 3693 | { | 3718 | { |
| 3719 | + no_action then "", | ||
| 3694 | controller_action(controller, action_name) then "?aws_controller="+controller+"&aws_action="+action_name, | 3720 | controller_action(controller, action_name) then "?aws_controller="+controller+"&aws_action="+action_name, |
| 3695 | action_name(action_name) then "?aws_action="+action_name, | 3721 | action_name(action_name) then "?aws_action="+action_name, |
| 3696 | url(url) then url | 3722 | url(url) then url |
| @@ -3804,8 +3830,6 @@ define URL_or_JavaScript | @@ -3804,8 +3830,6 @@ define URL_or_JavaScript | ||
| 3804 | ) | 3830 | ) |
| 3805 | }. | 3831 | }. |
| 3806 | 3832 | ||
| 3807 | - | ||
| 3808 | - | ||
| 3809 | Now, we format the actioner according to its aspect. | 3833 | Now, we format the actioner according to its aspect. |
| 3810 | 3834 | ||
| 3811 | define List(Text_Option) | 3835 | define List(Text_Option) |
| @@ -4230,6 +4254,7 @@ define Printable_tree | @@ -4230,6 +4254,7 @@ define Printable_tree | ||
| 4230 | img_link(options, img, alt_text) then | 4254 | img_link(options, img, alt_text) then |
| 4231 | //if action name is empty, format options on image because maybe there onclick action | 4255 | //if action name is empty, format options on image because maybe there onclick action |
| 4232 | with action_name = if action is { | 4256 | with action_name = if action is { |
| 4257 | + no_action then "" | ||
| 4233 | controller_action(_, an) then an, | 4258 | controller_action(_, an) then an, |
| 4234 | action_name(an) then an, | 4259 | action_name(an) then an, |
| 4235 | url(_) then "" | 4260 | url(_) then "" |
| @@ -4255,6 +4280,7 @@ define Printable_tree | @@ -4255,6 +4280,7 @@ define Printable_tree | ||
| 4255 | with action_name = | 4280 | with action_name = |
| 4256 | if action is | 4281 | if action is |
| 4257 | { | 4282 | { |
| 4283 | + no_action then "", | ||
| 4258 | controller_action(_, an) then an, | 4284 | controller_action(_, an) then an, |
| 4259 | action_name(an) then an, | 4285 | action_name(an) then an, |
| 4260 | url(_) then "" | 4286 | url(_) then "" |
| @@ -4300,6 +4326,7 @@ define Printable_tree | @@ -4300,6 +4326,7 @@ define Printable_tree | ||
| 4300 | ], | 4326 | ], |
| 4301 | javascript(s,h) then | 4327 | javascript(s,h) then |
| 4302 | with action_name = if action is { | 4328 | with action_name = if action is { |
| 4329 | + no_action then "", | ||
| 4303 | controller_action(_, an) then an, | 4330 | controller_action(_, an) then an, |
| 4304 | action_name(an) then an, | 4331 | action_name(an) then an, |
| 4305 | url(_) then "" | 4332 | url(_) then "" |
| @@ -4912,9 +4939,11 @@ define Printable_tree | @@ -4912,9 +4939,11 @@ define Printable_tree | ||
| 4912 | ["<i", format_attrs(opts), ">",t,"</i>\n"], | 4939 | ["<i", format_attrs(opts), ">",t,"</i>\n"], |
| 4913 | any_span(opts , t) then | 4940 | any_span(opts , t) then |
| 4914 | ["<span", format_attrs(opts), ">",t,"</span>"] | 4941 | ["<span", format_attrs(opts), ">",t,"</span>"] |
| 4915 | - }. | ||
| 4916 | - | ||
| 4917 | - | 4942 | + any_hr(opts) then |
| 4943 | + ["<hr", format_attrs(opts),">"] | ||
| 4944 | + } | ||
| 4945 | +. | ||
| 4946 | + | ||
| 4918 | 4947 | ||
| 4919 | 4948 | ||
| 4920 | // *** [5.8] Formating 'in form' elements. | 4949 | // *** [5.8] Formating 'in form' elements. |
| @@ -5144,6 +5173,8 @@ define Printable_tree | @@ -5144,6 +5173,8 @@ define Printable_tree | ||
| 5144 | format(cinfo,ic_v,any_i(opts,t),format_element,is_https, action_count, head_tags), | 5173 | format(cinfo,ic_v,any_i(opts,t),format_element,is_https, action_count, head_tags), |
| 5145 | span(opts,t) then | 5174 | span(opts,t) then |
| 5146 | format(cinfo,ic_v,any_span(opts,t),format_element,is_https, action_count, head_tags) | 5175 | format(cinfo,ic_v,any_span(opts,t),format_element,is_https, action_count, head_tags) |
| 5176 | + hr(opts) then | ||
| 5177 | + format(cinfo,ic_v,any_hr(opts),format_element,is_https, action_count, head_tags) | ||
| 5147 | }. | 5178 | }. |
| 5148 | 5179 | ||
| 5149 | 5180 | ||
| @@ -5205,12 +5236,12 @@ define Bool | @@ -5205,12 +5236,12 @@ define Bool | ||
| 5205 | mail_to(m,e) then false, // 'e' may but should not contain an upload | 5236 | mail_to(m,e) then false, // 'e' may but should not contain an upload |
| 5206 | scroller(w,h,cw,ch,e) then contains_an_upload(e), | 5237 | scroller(w,h,cw,ch,e) then contains_an_upload(e), |
| 5207 | actioner(c,t,a,an,eo,ja) then false, | 5238 | actioner(c,t,a,an,eo,ja) then false, |
| 5208 | - foreign_link_new(_,_,_) then false, | 5239 | + foreign_link_new(_,_,_) then false, |
| 5209 | foreign_link(o,u) then false, | 5240 | foreign_link(o,u) then false, |
| 5210 | foreign_link(o,u,n) then false, | 5241 | foreign_link(o,u,n) then false, |
| 5211 | private_download(p,n,e,a) then false, | 5242 | private_download(p,n,e,a) then false, |
| 5212 | - text_input(o,lt,l,n,i,w) then false, | ||
| 5213 | - text_input_ro(o,lt,l,n,i,w) then false, | 5243 | + text_input(o,lt,l,n,i,w) then false, |
| 5244 | + text_input_ro(o,lt,l,n,i,w) then false, | ||
| 5214 | password_input(o,lt,l,n,i,w) then false, | 5245 | password_input(o,lt,l,n,i,w) then false, |
| 5215 | text_area(o,lt,id,n,i,w,h) then false, | 5246 | text_area(o,lt,id,n,i,w,h) then false, |
| 5216 | file_upload(o,l,i,n,w) then true, | 5247 | file_upload(o,l,i,n,w) then true, |
| @@ -5219,7 +5250,7 @@ define Bool | @@ -5219,7 +5250,7 @@ define Bool | ||
| 5219 | selector_c(o,l,i,n,s,c) then false, | 5250 | selector_c(o,l,i,n,s,c) then false, |
| 5220 | selector_c(o,l,i,n,s,c,p) then false, | 5251 | selector_c(o,l,i,n,s,c,p) then false, |
| 5221 | radio_button(o,_,_,n,v,c) then false, | 5252 | radio_button(o,_,_,n,v,c) then false, |
| 5222 | - radio_button_r(o,_,_,n,v,c) then false, | 5253 | + radio_button_r(o,_,_,n,v,c) then false, |
| 5223 | check_box(o,_,_,n,v,c) then false, | 5254 | check_box(o,_,_,n,v,c) then false, |
| 5224 | check_box_r(o,_,_,n,v,c) then false, | 5255 | check_box_r(o,_,_,n,v,c) then false, |
| 5225 | div(o,c) then contains_an_upload(c), | 5256 | div(o,c) then contains_an_upload(c), |
| @@ -5233,7 +5264,8 @@ define Bool | @@ -5233,7 +5264,8 @@ define Bool | ||
| 5233 | li(_,_) then false, | 5264 | li(_,_) then false, |
| 5234 | button(_,_) then false, | 5265 | button(_,_) then false, |
| 5235 | i(_,_) then false, | 5266 | i(_,_) then false, |
| 5236 | - span(_,_) then false | 5267 | + span(_,_) then false, |
| 5268 | + hr(_) then false | ||
| 5237 | } | 5269 | } |
| 5238 | . | 5270 | . |
| 5239 | 5271 | ||
| @@ -5377,7 +5409,10 @@ define Printable_tree | @@ -5377,7 +5409,10 @@ define Printable_tree | ||
| 5377 | i(opts, t) then | 5409 | i(opts, t) then |
| 5378 | format(cinfo,ic_v,any_i(opts,t),format_element,is_https, action_count, head_tags), | 5410 | format(cinfo,ic_v,any_i(opts,t),format_element,is_https, action_count, head_tags), |
| 5379 | span(opts,t) then | 5411 | span(opts,t) then |
| 5380 | - format(cinfo,ic_v,any_span(opts,t),format_element,is_https, action_count, head_tags), | 5412 | + format(cinfo,ic_v,any_span(opts,t),format_element,is_https, action_count, head_tags), |
| 5413 | + hr(opts) then | ||
| 5414 | + format(cinfo,ic_v,any_hr(opts),format_element,is_https, action_count, head_tags), | ||
| 5415 | + | ||
| 5381 | }. | 5416 | }. |
| 5382 | 5417 | ||
| 5383 | 5418 |
web/CXM_multihost_http_server.anubis
| @@ -685,20 +685,20 @@ type EncodingType: | @@ -685,20 +685,20 @@ type EncodingType: | ||
| 685 | multipart_form_data. | 685 | multipart_form_data. |
| 686 | 686 | ||
| 687 | 687 | ||
| 688 | -type BufferedConnection: | ||
| 689 | - buffered_connection(Connection conn, | 688 | +public type HTTP_BufferedConnection: |
| 689 | + http_buffered_connection(Connection conn, | ||
| 690 | Var(ByteArray) buffer, | 690 | Var(ByteArray) buffer, |
| 691 | Var(Int) read_pos, | 691 | Var(Int) read_pos, |
| 692 | Var(List(Word8)) unput_chars // for reading requests | 692 | Var(List(Word8)) unput_chars // for reading requests |
| 693 | ). | 693 | ). |
| 694 | 694 | ||
| 695 | 695 | ||
| 696 | -define BufferedConnection | ||
| 697 | - buffered_connection | 696 | +public define HTTP_BufferedConnection |
| 697 | + http_buffered_connection | ||
| 698 | ( | 698 | ( |
| 699 | Connection conn | 699 | Connection conn |
| 700 | )= | 700 | )= |
| 701 | - buffered_connection(conn, var(constant_byte_array(0, 0)), var(0), var([])) | 701 | + http_buffered_connection(conn, var(constant_byte_array(0, 0)), var(0), var([])) |
| 702 | . | 702 | . |
| 703 | 703 | ||
| 704 | 704 | ||
| @@ -777,7 +777,7 @@ define One | @@ -777,7 +777,7 @@ define One | ||
| 777 | unput // unputting a character (add it in front of the list) | 777 | unput // unputting a character (add it in front of the list) |
| 778 | ( | 778 | ( |
| 779 | Word8 character, | 779 | Word8 character, |
| 780 | - BufferedConnection s | 780 | + HTTP_BufferedConnection s |
| 781 | ) = | 781 | ) = |
| 782 | s.unput_chars <- (List(Word8))[character . *(s.unput_chars)]. | 782 | s.unput_chars <- (List(Word8))[character . *(s.unput_chars)]. |
| 783 | 783 | ||
| @@ -829,7 +829,7 @@ define One | @@ -829,7 +829,7 @@ define One | ||
| 829 | define ReadResult | 829 | define ReadResult |
| 830 | read_from_connexion | 830 | read_from_connexion |
| 831 | ( | 831 | ( |
| 832 | - BufferedConnection connection, | 832 | + HTTP_BufferedConnection connection, |
| 833 | Int size, | 833 | Int size, |
| 834 | Int time_out, | 834 | Int time_out, |
| 835 | ByteArray result_buffer, | 835 | ByteArray result_buffer, |
| @@ -881,7 +881,7 @@ define Result(Error,Word8) | @@ -881,7 +881,7 @@ define Result(Error,Word8) | ||
| 881 | next_char // reading a character (check the list first, and read on the connection | 881 | next_char // reading a character (check the list first, and read on the connection |
| 882 | // only when the list is empty). | 882 | // only when the list is empty). |
| 883 | ( | 883 | ( |
| 884 | - BufferedConnection connection | 884 | + HTTP_BufferedConnection connection |
| 885 | // Int dead_line, | 885 | // Int dead_line, |
| 886 | // DenialOfService dos | 886 | // DenialOfService dos |
| 887 | ) = | 887 | ) = |
| @@ -937,7 +937,7 @@ define Result(Error,Word8) | @@ -937,7 +937,7 @@ define Result(Error,Word8) | ||
| 937 | define ByteArray | 937 | define ByteArray |
| 938 | get_and_erase_buffer | 938 | get_and_erase_buffer |
| 939 | ( | 939 | ( |
| 940 | - BufferedConnection connection | 940 | + HTTP_BufferedConnection connection |
| 941 | )= | 941 | )= |
| 942 | with head = to_byte_array(implode(*connection.unput_chars)), | 942 | with head = to_byte_array(implode(*connection.unput_chars)), |
| 943 | tail = extract(*connection.buffer, *connection.read_pos, length(*connection.buffer)), | 943 | tail = extract(*connection.buffer, *connection.read_pos, length(*connection.buffer)), |
| @@ -971,7 +971,7 @@ define ByteArray | @@ -971,7 +971,7 @@ define ByteArray | ||
| 971 | define Result(Error,One) | 971 | define Result(Error,One) |
| 972 | read_and_ignore | 972 | read_and_ignore |
| 973 | ( | 973 | ( |
| 974 | - BufferedConnection connection, // to client | 974 | + HTTP_BufferedConnection connection, // to client |
| 975 | Int number_of_characters // number of characters to read and ignore | 975 | Int number_of_characters // number of characters to read and ignore |
| 976 | ) = | 976 | ) = |
| 977 | if number_of_characters =< 0 then | 977 | if number_of_characters =< 0 then |
| @@ -999,7 +999,7 @@ define Result(Error,One) | @@ -999,7 +999,7 @@ define Result(Error,One) | ||
| 999 | define Result(Error,String) | 999 | define Result(Error,String) |
| 1000 | read_string | 1000 | read_string |
| 1001 | ( | 1001 | ( |
| 1002 | - BufferedConnection connection, // connection with the client | 1002 | + HTTP_BufferedConnection connection, // connection with the client |
| 1003 | List(Word8) so_far // characters read so far (in reverse order) | 1003 | List(Word8) so_far // characters read so far (in reverse order) |
| 1004 | ) = | 1004 | ) = |
| 1005 | if next_char(connection) is | 1005 | if next_char(connection) is |
| @@ -1297,34 +1297,36 @@ define Bool | @@ -1297,34 +1297,36 @@ define Bool | ||
| 1297 | Skipping HTTP blanks. | 1297 | Skipping HTTP blanks. |
| 1298 | 1298 | ||
| 1299 | define Result(Error,One) | 1299 | define Result(Error,One) |
| 1300 | - skip_http_blanks | ||
| 1301 | - ( | ||
| 1302 | - BufferedConnection connection | ||
| 1303 | - ) = | ||
| 1304 | - if next_char(connection) is | ||
| 1305 | - { | ||
| 1306 | - error(msg) then error(msg), | ||
| 1307 | - ok(c) then | ||
| 1308 | - if is_strict_blank(c) | ||
| 1309 | - then skip_http_blanks(connection) | ||
| 1310 | - else if c = 13 | 1300 | + skip_http_blanks |
| 1301 | + ( | ||
| 1302 | + HTTP_BufferedConnection connection | ||
| 1303 | + ) | ||
| 1304 | + = | ||
| 1305 | + if next_char(connection) is | ||
| 1306 | + { | ||
| 1307 | + error(msg) then error(msg), | ||
| 1308 | + ok(c) then | ||
| 1309 | + if is_strict_blank(c) | ||
| 1310 | + then skip_http_blanks(connection) | ||
| 1311 | + else if c = 13 | ||
| 1312 | + then if next_char(connection) is | ||
| 1313 | + { | ||
| 1314 | + error(msg) then error(msg), // (unput(c); ok(unique)), | ||
| 1315 | + ok(d) then | ||
| 1316 | + if d = 10 | ||
| 1311 | then if next_char(connection) is | 1317 | then if next_char(connection) is |
| 1312 | { | 1318 | { |
| 1313 | - error(msg) then error(msg), // (unput(c); ok(unique)), | ||
| 1314 | - ok(d) then | ||
| 1315 | - if d = 10 | ||
| 1316 | - then if next_char(connection) is | ||
| 1317 | - { | ||
| 1318 | - error(msg) then error(msg), // (unput(d); unput(c); ok(unique)), | ||
| 1319 | - ok(e) then | ||
| 1320 | - if is_strict_blank(e) | ||
| 1321 | - then skip_http_blanks(connection) | ||
| 1322 | - else (unput(e, connection); unput(d, connection); unput(c, connection); ok(unique)) | ||
| 1323 | - } | ||
| 1324 | - else (unput(d, connection); unput(c, connection); ok(unique)) | 1319 | + error(msg) then error(msg), // (unput(d); unput(c); ok(unique)), |
| 1320 | + ok(e) then | ||
| 1321 | + if is_strict_blank(e) | ||
| 1322 | + then skip_http_blanks(connection) | ||
| 1323 | + else (unput(e, connection); unput(d, connection); unput(c, connection); ok(unique)) | ||
| 1325 | } | 1324 | } |
| 1326 | - else (unput(c, connection); ok(unique)) | ||
| 1327 | - }. | 1325 | + else (unput(d, connection); unput(c, connection); ok(unique)) |
| 1326 | + } | ||
| 1327 | + else (unput(c, connection); ok(unique)) | ||
| 1328 | + } | ||
| 1329 | +. | ||
| 1328 | 1330 | ||
| 1329 | 1331 | ||
| 1330 | 1332 | ||
| @@ -1353,7 +1355,7 @@ define Result(Error,One) | @@ -1353,7 +1355,7 @@ define Result(Error,One) | ||
| 1353 | public define Result(Error,One) | 1355 | public define Result(Error,One) |
| 1354 | read_new_line | 1356 | read_new_line |
| 1355 | ( | 1357 | ( |
| 1356 | - BufferedConnection connection | 1358 | + HTTP_BufferedConnection connection |
| 1357 | ) = | 1359 | ) = |
| 1358 | if skip_http_blanks(connection) is | 1360 | if skip_http_blanks(connection) is |
| 1359 | { | 1361 | { |
| @@ -1384,7 +1386,7 @@ public define Result(Error,One) | @@ -1384,7 +1386,7 @@ public define Result(Error,One) | ||
| 1384 | public define Result(Error,One) | 1386 | public define Result(Error,One) |
| 1385 | skip_line | 1387 | skip_line |
| 1386 | ( | 1388 | ( |
| 1387 | - BufferedConnection connection | 1389 | + HTTP_BufferedConnection connection |
| 1388 | ) = | 1390 | ) = |
| 1389 | if next_char(connection) is | 1391 | if next_char(connection) is |
| 1390 | { | 1392 | { |
| @@ -1423,7 +1425,7 @@ public define Result(Error,One) | @@ -1423,7 +1425,7 @@ public define Result(Error,One) | ||
| 1423 | define Result(Error,String) | 1425 | define Result(Error,String) |
| 1424 | read_word_aux | 1426 | read_word_aux |
| 1425 | ( | 1427 | ( |
| 1426 | - BufferedConnection connection, | 1428 | + HTTP_BufferedConnection connection, |
| 1427 | List(Word8) so_far | 1429 | List(Word8) so_far |
| 1428 | ) = | 1430 | ) = |
| 1429 | if next_char(connection) is | 1431 | if next_char(connection) is |
| @@ -1439,7 +1441,7 @@ define Result(Error,String) | @@ -1439,7 +1441,7 @@ define Result(Error,String) | ||
| 1439 | define Result(Error,String) | 1441 | define Result(Error,String) |
| 1440 | read_word | 1442 | read_word |
| 1441 | ( | 1443 | ( |
| 1442 | - BufferedConnection connection | 1444 | + HTTP_BufferedConnection connection |
| 1443 | ) = | 1445 | ) = |
| 1444 | if skip_http_blanks(connection) is | 1446 | if skip_http_blanks(connection) is |
| 1445 | { | 1447 | { |
| @@ -1613,7 +1615,7 @@ define Result(Error,HTTP_RequestType) | @@ -1613,7 +1615,7 @@ define Result(Error,HTTP_RequestType) | ||
| 1613 | public define Result(Error, HTTP_RequestLine) | 1615 | public define Result(Error, HTTP_RequestLine) |
| 1614 | read_request_line | 1616 | read_request_line |
| 1615 | ( | 1617 | ( |
| 1616 | - BufferedConnection connection | 1618 | + HTTP_BufferedConnection connection |
| 1617 | ) = | 1619 | ) = |
| 1618 | if read_word(connection) is | 1620 | if read_word(connection) is |
| 1619 | { | 1621 | { |
| @@ -1664,7 +1666,7 @@ define Bool | @@ -1664,7 +1666,7 @@ define Bool | ||
| 1664 | define Result(Error,String) | 1666 | define Result(Error,String) |
| 1665 | read_header_name | 1667 | read_header_name |
| 1666 | ( | 1668 | ( |
| 1667 | - BufferedConnection connection, | 1669 | + HTTP_BufferedConnection connection, |
| 1668 | List(Word8) so_far | 1670 | List(Word8) so_far |
| 1669 | ) = | 1671 | ) = |
| 1670 | if next_char(connection) is | 1672 | if next_char(connection) is |
| @@ -1679,7 +1681,7 @@ define Result(Error,String) | @@ -1679,7 +1681,7 @@ define Result(Error,String) | ||
| 1679 | define Result(Error,One) | 1681 | define Result(Error,One) |
| 1680 | skip_colon | 1682 | skip_colon |
| 1681 | ( | 1683 | ( |
| 1682 | - BufferedConnection connection | 1684 | + HTTP_BufferedConnection connection |
| 1683 | ) = | 1685 | ) = |
| 1684 | //Skip the blank char until ':' | 1686 | //Skip the blank char until ':' |
| 1685 | if skip_http_blanks(connection) is | 1687 | if skip_http_blanks(connection) is |
| @@ -1699,7 +1701,7 @@ define Result(Error,One) | @@ -1699,7 +1701,7 @@ define Result(Error,One) | ||
| 1699 | define Result(Error,String) | 1701 | define Result(Error,String) |
| 1700 | read_header_value | 1702 | read_header_value |
| 1701 | ( | 1703 | ( |
| 1702 | - BufferedConnection connection, | 1704 | + HTTP_BufferedConnection connection, |
| 1703 | List(Word8) so_far | 1705 | List(Word8) so_far |
| 1704 | ) = | 1706 | ) = |
| 1705 | if next_char(connection) is | 1707 | if next_char(connection) is |
| @@ -1731,7 +1733,7 @@ define Result(Error,String) | @@ -1731,7 +1733,7 @@ define Result(Error,String) | ||
| 1731 | define Result(Error,Maybe(HTTP_header)) | 1733 | define Result(Error,Maybe(HTTP_header)) |
| 1732 | read_header | 1734 | read_header |
| 1733 | ( | 1735 | ( |
| 1734 | - BufferedConnection connection | 1736 | + HTTP_BufferedConnection connection |
| 1735 | ) = | 1737 | ) = |
| 1736 | //Find the name | 1738 | //Find the name |
| 1737 | if read_header_name(connection, []) is | 1739 | if read_header_name(connection, []) is |
| @@ -1772,7 +1774,7 @@ define Result(Error,Maybe(HTTP_header)) | @@ -1772,7 +1774,7 @@ define Result(Error,Maybe(HTTP_header)) | ||
| 1772 | public define Result(Error,List(HTTP_header)) | 1774 | public define Result(Error,List(HTTP_header)) |
| 1773 | read_http_headers | 1775 | read_http_headers |
| 1774 | ( | 1776 | ( |
| 1775 | - BufferedConnection connection | 1777 | + HTTP_BufferedConnection connection |
| 1776 | ) = | 1778 | ) = |
| 1777 | if read_header(connection) is | 1779 | if read_header(connection) is |
| 1778 | { | 1780 | { |
| @@ -1831,13 +1833,13 @@ public define Result(Error,Int) | @@ -1831,13 +1833,13 @@ public define Result(Error,Int) | ||
| 1831 | make at most 10 retries, with a small sleeping time between any two of them. | 1833 | make at most 10 retries, with a small sleeping time between any two of them. |
| 1832 | 1834 | ||
| 1833 | public define Result(Error, ByteArray) | 1835 | public define Result(Error, ByteArray) |
| 1834 | - read_http_body | ||
| 1835 | - ( | ||
| 1836 | - BufferedConnection connection, | ||
| 1837 | - Int body_size, | ||
| 1838 | - ByteArray so_far, // when calling this function, 'so_far' is the empty byte array | ||
| 1839 | - Int retries // this function is called with retries = 10 | ||
| 1840 | - ) = | 1836 | + read_http_body |
| 1837 | + ( | ||
| 1838 | + HTTP_BufferedConnection connection, | ||
| 1839 | + Int body_size, | ||
| 1840 | + ByteArray so_far, // when calling this function, 'so_far' is the empty byte array | ||
| 1841 | + Int retries // this function is called with retries = 10 | ||
| 1842 | + )= | ||
| 1841 | if body_size = 0 then ok(constant_byte_array(0,0)) else | 1843 | if body_size = 0 then ok(constant_byte_array(0,0)) else |
| 1842 | if retries =< 0 then error(cannot_read_from_connection) else | 1844 | if retries =< 0 then error(cannot_read_from_connection) else |
| 1843 | 1845 | ||
| @@ -3152,7 +3154,7 @@ define One | @@ -3152,7 +3154,7 @@ define One | ||
| 3152 | http_https_handler | 3154 | http_https_handler |
| 3153 | ( | 3155 | ( |
| 3154 | List(Web_Site_Description) sites, | 3156 | List(Web_Site_Description) sites, |
| 3155 | - BufferedConnection connection, | 3157 | + HTTP_BufferedConnection connection, |
| 3156 | Bool is_https, | 3158 | Bool is_https, |
| 3157 | DenialOfService dos, | 3159 | DenialOfService dos, |
| 3158 | SState s, | 3160 | SState s, |
| @@ -3300,7 +3302,7 @@ define Server -> ((RWStream) -> One) | @@ -3300,7 +3302,7 @@ define Server -> ((RWStream) -> One) | ||
| 3300 | if is_dubious_IP(addr,dos) | 3302 | if is_dubious_IP(addr,dos) |
| 3301 | then print("Rejecting dubious IP address "+ip_addr_to_string(addr)+"\n") | 3303 | then print("Rejecting dubious IP address "+ip_addr_to_string(addr)+"\n") |
| 3302 | else | 3304 | else |
| 3303 | - with connection = buffered_connection(tcp(conn), var(constant_byte_array(0, 0)), var(0), var([])), | 3305 | + with connection = http_buffered_connection(tcp(conn), var(constant_byte_array(0, 0)), var(0), var([])), |
| 3304 | http_https_handler(sites, connection, false, dos, sstate(var(0),var(0)), shutdown_required). | 3306 | http_https_handler(sites, connection, false, dos, sstate(var(0),var(0)), shutdown_required). |
| 3305 | public define One | 3307 | public define One |
| 3306 | http_direct_handler | 3308 | http_direct_handler |
| @@ -3314,7 +3316,7 @@ public define One | @@ -3314,7 +3316,7 @@ public define One | ||
| 3314 | if is_dubious_IP(addr,dos) | 3316 | if is_dubious_IP(addr,dos) |
| 3315 | then print("Rejecting dubious IP address "+ip_addr_to_string(addr)+"\n") | 3317 | then print("Rejecting dubious IP address "+ip_addr_to_string(addr)+"\n") |
| 3316 | else | 3318 | else |
| 3317 | - with connection = buffered_connection(tcp(conn), var(constant_byte_array(0, 0)), var(0), var([])), | 3319 | + with connection = http_buffered_connection(tcp(conn), var(constant_byte_array(0, 0)), var(0), var([])), |
| 3318 | http_https_handler(sites, connection, false, dos, sstate(var(0),var(0)), shutdown_required). | 3320 | http_https_handler(sites, connection, false, dos, sstate(var(0),var(0)), shutdown_required). |
| 3319 | 3321 | ||
| 3320 | 3322 | ||
| @@ -3326,7 +3328,7 @@ define Server -> (SSL_Connection -> One) | @@ -3326,7 +3328,7 @@ define Server -> (SSL_Connection -> One) | ||
| 3326 | (One) -> Bool shutdown_required | 3328 | (One) -> Bool shutdown_required |
| 3327 | ) = | 3329 | ) = |
| 3328 | (Server server) |-> (SSL_Connection conn) |-> | 3330 | (Server server) |-> (SSL_Connection conn) |-> |
| 3329 | - with connection = buffered_connection(ssl(conn), var(constant_byte_array(0, 0)), var(0), var([])), | 3331 | + with connection = http_buffered_connection(ssl(conn), var(constant_byte_array(0, 0)), var(0), var([])), |
| 3330 | http_https_handler(sites, connection, true, dos, sstate(var(0),var(0)), shutdown_required). | 3332 | http_https_handler(sites, connection, true, dos, sstate(var(0),var(0)), shutdown_required). |
| 3331 | 3333 | ||
| 3332 | 3334 | ||
| @@ -3722,7 +3724,7 @@ define Server -> ((RWStream) -> One) | @@ -3722,7 +3724,7 @@ define Server -> ((RWStream) -> One) | ||
| 3722 | ) = | 3724 | ) = |
| 3723 | (Server server) |-> (RWStream conn) |-> | 3725 | (Server server) |-> (RWStream conn) |-> |
| 3724 | with start_time = (Int)now, | 3726 | with start_time = (Int)now, |
| 3725 | - connection = buffered_connection(tcp(conn), var(constant_byte_array(0, 0)), var(0), var([])), | 3727 | + connection = http_buffered_connection(tcp(conn), var(constant_byte_array(0, 0)), var(0), var([])), |
| 3726 | if read_request_line(connection) is | 3728 | if read_request_line(connection) is |
| 3727 | { | 3729 | { |
| 3728 | error(msg) then print(format(msg)), | 3730 | error(msg) then print(format(msg)), |
| 1 | +/* | ||
| 2 | + * Created by PyramIDE. | ||
| 3 | + * User: フランスのトトロ aka (David RENÉ) | ||
| 4 | + * Date: 20/02/2017 | ||
| 5 | + * Time: 04:31 | ||
| 6 | + * © Calexium | ||
| 7 | + */ | ||
| 8 | + | ||
| 9 | +read calexium_lib/web/CXM_making_a_web_site.anubis | ||
| 10 | +read calexium_lib/web/widgets/icons_set.anubis | ||
| 11 | + | ||
| 12 | +public type Alignment: | ||
| 13 | + left, | ||
| 14 | + center, | ||
| 15 | + right. | ||
| 16 | + | ||
| 17 | +public type Page_Message: | ||
| 18 | + no_message, | ||
| 19 | + info(String message), | ||
| 20 | + info_translate(String message), | ||
| 21 | + ok(String message), | ||
| 22 | + ok_translate(String message), | ||
| 23 | + warning(String message), | ||
| 24 | + warning_translate(String message), | ||
| 25 | + error(String message, Alignment align), | ||
| 26 | + error_translate(String message, Alignment align). | ||
| 27 | + | ||
| 28 | +public define One | ||
| 29 | + set_Page_Message | ||
| 30 | + ( | ||
| 31 | + Var(List(WEB_Session_Field)) fields, | ||
| 32 | + Page_Message p_message | ||
| 33 | + )= | ||
| 34 | + with step = get_Int(fields, "AWS_SESSION_STEP",0), | ||
| 35 | + replace_Int(fields, "PAGE_MESSAGE_TTL", step+1); | ||
| 36 | + if p_message is | ||
| 37 | + { | ||
| 38 | + no_message then | ||
| 39 | + replace_String(fields, "PAGE_STATUS", "NO_MESSAGE"); | ||
| 40 | + replace_String(fields, "PAGE_MESSAGE", "") | ||
| 41 | + info(msg_str) then | ||
| 42 | + replace_String(fields, "PAGE_STATUS", "PAGE_INFO"); | ||
| 43 | + replace_String(fields, "PAGE_MESSAGE", msg_str) | ||
| 44 | + info_translate(msg_str) then | ||
| 45 | + replace_String(fields, "PAGE_STATUS", "PAGE_INFO_T"); | ||
| 46 | + replace_String(fields, "PAGE_MESSAGE", msg_str) | ||
| 47 | + ok(msg_str) then | ||
| 48 | + replace_String(fields, "PAGE_STATUS", "PAGE_OK"); | ||
| 49 | + replace_String(fields, "PAGE_MESSAGE", msg_str) | ||
| 50 | + ok_translate(msg_str) then | ||
| 51 | + replace_String(fields, "PAGE_STATUS", "PAGE_OK_T"); | ||
| 52 | + replace_String(fields, "PAGE_MESSAGE", msg_str) | ||
| 53 | + warning(msg_str) then | ||
| 54 | + replace_String(fields, "PAGE_STATUS", "PAGE_WARNING"); | ||
| 55 | + replace_String(fields, "PAGE_MESSAGE", msg_str) | ||
| 56 | + warning_translate(msg_str) then | ||
| 57 | + replace_String(fields, "PAGE_STATUS", "PAGE_WARNING_T"); | ||
| 58 | + replace_String(fields, "PAGE_MESSAGE", msg_str) | ||
| 59 | + error(msg_str, align) then | ||
| 60 | + replace_String(fields, "PAGE_STATUS", "PAGE_ERROR"); | ||
| 61 | + replace_String(fields, "PAGE_MESSAGE", msg_str) | ||
| 62 | + error_translate(msg_str, align) then | ||
| 63 | + replace_String(fields, "PAGE_STATUS", "PAGE_ERROR_T"); | ||
| 64 | + replace_String(fields, "PAGE_MESSAGE", msg_str) | ||
| 65 | + } | ||
| 66 | +. | ||
| 67 | + | ||
| 68 | +public define Page_Message | ||
| 69 | + error | ||
| 70 | + ( | ||
| 71 | + String message | ||
| 72 | + ) = error(message, left). | ||
| 73 | + | ||
| 74 | +public define Page_Message | ||
| 75 | + error_translate | ||
| 76 | + ( | ||
| 77 | + String message | ||
| 78 | + ) = error_translate(message, left). | ||
| 79 | + | ||
| 80 | +public define Page_Message | ||
| 81 | + get_Page_Message | ||
| 82 | + ( | ||
| 83 | + Var(List(WEB_Session_Field)) fields, | ||
| 84 | + (String) -> String _T | ||
| 85 | + )= | ||
| 86 | + with page_status = get_String(fields, "PAGE_STATUS", "NO_MESSAGE"), | ||
| 87 | + page_string = get_String(fields, "PAGE_MESSAGE", ""), | ||
| 88 | + page_ttl = get_Int(fields, "PAGE_MESSAGE_TTL", 0), | ||
| 89 | + step = get_Int(fields, "AWS_SESSION_STEP", 0), | ||
| 90 | + | ||
| 91 | + //the page Message is TimeOut. We remove it | ||
| 92 | + if page_ttl < step then | ||
| 93 | + remove_Int(fields, "PAGE_MESSAGE_TTL"); | ||
| 94 | + replace_String(fields, "PAGE_STATUS", "NO_MESSAGE"); | ||
| 95 | + replace_String(fields, "PAGE_MESSAGE", ""); | ||
| 96 | + no_message | ||
| 97 | + else | ||
| 98 | + | ||
| 99 | + if page_status = "NO_MESSAGE" then | ||
| 100 | + no_message | ||
| 101 | + else if page_status = "PAGE_INFO" then | ||
| 102 | + info(page_string) | ||
| 103 | + else if page_status = "PAGE_INFO_T" then | ||
| 104 | + info(_T(page_string)) | ||
| 105 | + else if page_status = "PAGE_OK" then | ||
| 106 | + ok(page_string) | ||
| 107 | + else if page_status = "PAGE_OK_T" then | ||
| 108 | + ok(_T(page_string)) | ||
| 109 | + else if page_status = "PAGE_WARNING" then | ||
| 110 | + warning(page_string) | ||
| 111 | + else if page_status = "PAGE_WARNING_T" then | ||
| 112 | + warning(_T(page_string)) | ||
| 113 | + else if page_status = "PAGE_ERROR" then | ||
| 114 | + error(page_string) | ||
| 115 | + else if page_status = "PAGE_ERROR_T" then | ||
| 116 | + error(_T(page_string)) | ||
| 117 | + else | ||
| 118 | + no_message | ||
| 119 | +. | ||
| 120 | + | ||
| 121 | +define List(CoreAttrs) | ||
| 122 | + get_info_line_attrbs | ||
| 123 | + ( | ||
| 124 | + String html_class, | ||
| 125 | + Alignment align | ||
| 126 | + ) = | ||
| 127 | + if align is | ||
| 128 | + { | ||
| 129 | + left then [class(html_class)], | ||
| 130 | + center then [class(html_class), style("margin-left: auto; margin-right: auto;")], | ||
| 131 | + right then [class(html_class), style("margin-left: auto;")] | ||
| 132 | + }. | ||
| 133 | + | ||
| 134 | +public define HTML_Off_Form hide_info_line_btn = div([event(onclick, "this.parentNode.style.display="none";"), style("width: 16px; height: 16px; background: transparent url(""+icn16_cross+"") no-repeat scroll center center; float: right; display: inline; cursor: pointer;")], literal("")). | ||
| 135 | + | ||
| 136 | +public define HTML_In_Form | ||
| 137 | + display_info_line | ||
| 138 | + ( | ||
| 139 | + String html_id, | ||
| 140 | + String html_class, | ||
| 141 | + String txt, | ||
| 142 | + Alignment align | ||
| 143 | + ) = | ||
| 144 | + div(get_info_line_attrbs(html_class, align), sequence([partial(partial_content(hide_info_line_btn)), partial(partial_content(literal(txt)))])). | ||
| 145 | + | ||
| 146 | +public define HTML_Off_Form | ||
| 147 | + display_info_line | ||
| 148 | + ( | ||
| 149 | + String html_id, | ||
| 150 | + String html_class, | ||
| 151 | + String txt, | ||
| 152 | + Alignment align | ||
| 153 | + ) = | ||
| 154 | + div(get_info_line_attrbs(html_class, align), sequence([hide_info_line_btn, partial(partial_content(literal(txt)))])). | ||
| 155 | + | ||
| 156 | +public define HTML_Off_Form | ||
| 157 | + display_main_info_line | ||
| 158 | + ( | ||
| 159 | + String html_class, | ||
| 160 | + String txt, | ||
| 161 | + Alignment align | ||
| 162 | + ) = | ||
| 163 | + display_info_line("informations", html_class, txt, align). | ||
| 164 | + | ||
| 165 | +public define HTML_Off_Form | ||
| 166 | + display_main_info_line | ||
| 167 | + ( | ||
| 168 | + String html_class, | ||
| 169 | + String txt | ||
| 170 | + ) = | ||
| 171 | + display_info_line("informations", html_class, txt, left). |
| 1 | +/* | ||
| 2 | + * Created by PyramIDE. | ||
| 3 | + * User: フランスのトトロ aka (David RENÉ) | ||
| 4 | + * Date: 14/03/2017 | ||
| 5 | + * Time: 04:23 | ||
| 6 | + * © Calexium | ||
| 7 | + */ | ||
| 8 | + | ||
| 9 | +transmit calexium_lib/web/types/web_action_name.anubis | ||
| 10 | +//public type WEB_Action_Name: | ||
| 11 | +// controller_action( | ||
| 12 | +// String controller, | ||
| 13 | +// String action_name | ||
| 14 | +// ), | ||
| 15 | +// action_name( | ||
| 16 | +// String action_name | ||
| 17 | +// ), | ||
| 18 | +// //url is raw action, hence we will only copy that url in final link | ||
| 19 | +// url( | ||
| 20 | +// String url_name | ||
| 21 | +// ) | ||
| 22 | +//. | ||
| 23 | + | ||
| 24 | +public define String | ||
| 25 | + to_Anubis_Source | ||
| 26 | + ( | ||
| 27 | + WEB_Action_Name wan | ||
| 28 | + )= | ||
| 29 | + if wan is | ||
| 30 | + { | ||
| 31 | + no_action then "no_action", | ||
| 32 | + controller_action(cont, ac_name) then "controller_action(\""+cont+"\", \""+ac_name+"\")", | ||
| 33 | + action_name(ac_name) then "action_name(\""+ac_name+"\")", | ||
| 34 | + url(url_name) then "url(\""+url_name+"\")" | ||
| 35 | + } | ||
| 36 | +. |
web/CXM_web_arg_utils.anubis
| @@ -9,27 +9,41 @@ transmit tools/basis.anubis | @@ -9,27 +9,41 @@ transmit tools/basis.anubis | ||
| 9 | transmit calexium_lib/web/CXM_common.anubis | 9 | transmit calexium_lib/web/CXM_common.anubis |
| 10 | transmit calexium_lib/database/db_types.anubis | 10 | transmit calexium_lib/database/db_types.anubis |
| 11 | 11 | ||
| 12 | -public define DB_id | ||
| 13 | - get_DB_id | 12 | +public define Maybe(DB_id) |
| 13 | + get_mb_DB_id | ||
| 14 | ( | 14 | ( |
| 15 | List(Web_arg) lwa, | 15 | List(Web_arg) lwa, |
| 16 | String arg_name | 16 | String arg_name |
| 17 | ) = | 17 | ) = |
| 18 | if web_arg_value(lwa, arg_name) is | 18 | if web_arg_value(lwa, arg_name) is |
| 19 | { | 19 | { |
| 20 | - not_found then none, | 20 | + not_found then failure, |
| 21 | found(value) then | 21 | found(value) then |
| 22 | //Check if value is none which means no id provided | 22 | //Check if value is none which means no id provided |
| 23 | if value="none" then | 23 | if value="none" then |
| 24 | - none | 24 | + success(none) |
| 25 | else | 25 | else |
| 26 | //Now try to convert the string into Int to get the id | 26 | //Now try to convert the string into Int to get the id |
| 27 | if decimal_scan(value) is | 27 | if decimal_scan(value) is |
| 28 | { | 28 | { |
| 29 | - failure then none, | ||
| 30 | - success(_value) then db_id(_value) | 29 | + failure then success(none), |
| 30 | + success(_value) then success(db_id(_value)) | ||
| 31 | } | 31 | } |
| 32 | - }. | 32 | + } |
| 33 | +. | ||
| 34 | + | ||
| 35 | +public define DB_id | ||
| 36 | + get_DB_id | ||
| 37 | + ( | ||
| 38 | + List(Web_arg) lwa, | ||
| 39 | + String arg_name | ||
| 40 | + ) = | ||
| 41 | + if get_mb_DB_id(lwa, arg_name) is | ||
| 42 | + { | ||
| 43 | + failure then none, | ||
| 44 | + success(value) then value | ||
| 45 | + } | ||
| 46 | +. | ||
| 33 | 47 | ||
| 34 | public define Maybe(DB_date) | 48 | public define Maybe(DB_date) |
| 35 | get_DB_date | 49 | get_DB_date |
| @@ -91,6 +105,41 @@ public define String | @@ -91,6 +105,41 @@ public define String | ||
| 91 | failure then default_value | 105 | failure then default_value |
| 92 | success(value) then value | 106 | success(value) then value |
| 93 | }. | 107 | }. |
| 108 | + | ||
| 109 | +public define Maybe(String) | ||
| 110 | + get_Password | ||
| 111 | + ( | ||
| 112 | + List(Web_arg) lwa, | ||
| 113 | + String pwd_1_name, | ||
| 114 | + String pwd_2_name | ||
| 115 | + )= | ||
| 116 | + if get_String(lwa, pwd_1_name) is | ||
| 117 | + { | ||
| 118 | + failure then failure, | ||
| 119 | + success(password1) then | ||
| 120 | + if get_String(lwa, pwd_2_name) is | ||
| 121 | + { | ||
| 122 | + failure then failure | ||
| 123 | + success(password2) then | ||
| 124 | + if password1 = password2 then | ||
| 125 | + success(password1) | ||
| 126 | + else | ||
| 127 | + failure | ||
| 128 | + } | ||
| 129 | + } | ||
| 130 | +. | ||
| 131 | + | ||
| 132 | +public define Maybe(Bool) | ||
| 133 | + get_mb_Bool | ||
| 134 | + ( | ||
| 135 | + List(Web_arg) lwa, | ||
| 136 | + String arg_name | ||
| 137 | + ) = | ||
| 138 | + if web_arg_value(lwa, arg_name) is | ||
| 139 | + { | ||
| 140 | + not_found then failure, | ||
| 141 | + found(value) then success(to_Bool(value)) | ||
| 142 | + }. | ||
| 94 | 143 | ||
| 95 | public define Bool | 144 | public define Bool |
| 96 | get_Bool | 145 | get_Bool |
| @@ -100,8 +149,8 @@ public define Bool | @@ -100,8 +149,8 @@ public define Bool | ||
| 100 | ) = | 149 | ) = |
| 101 | if web_arg_value(lwa, arg_name) is | 150 | if web_arg_value(lwa, arg_name) is |
| 102 | { | 151 | { |
| 103 | - not_found then false, | ||
| 104 | - found(_) then true | 152 | + not_found then false, |
| 153 | + found(value) then to_Bool(value) | ||
| 105 | }. | 154 | }. |
| 106 | 155 | ||
| 107 | public define Bool | 156 | public define Bool |
| @@ -217,6 +266,35 @@ public define List(Int) | @@ -217,6 +266,35 @@ public define List(Int) | ||
| 217 | } | 266 | } |
| 218 | . | 267 | . |
| 219 | 268 | ||
| 269 | +public define Maybe(Float) | ||
| 270 | + get_Float | ||
| 271 | + ( | ||
| 272 | + List(Web_arg) lwa, | ||
| 273 | + String name | ||
| 274 | + ) = | ||
| 275 | + if web_arg_value(lwa, name) is | ||
| 276 | + { | ||
| 277 | + not_found then /*logDebug(debug_log, "Can't find argument '" + name + "'");*/ failure | ||
| 278 | + found(str) then | ||
| 279 | + if str = "" then | ||
| 280 | + failure | ||
| 281 | + else | ||
| 282 | + string_to_float(str) | ||
| 283 | + }. | ||
| 284 | + | ||
| 285 | +public define Float | ||
| 286 | + get_Float | ||
| 287 | + ( | ||
| 288 | + List(Web_arg) lwa, | ||
| 289 | + String name, | ||
| 290 | + Float default_value | ||
| 291 | + ) = | ||
| 292 | + if get_Float(lwa, name) is | ||
| 293 | + { | ||
| 294 | + failure then default_value, | ||
| 295 | + success(value) then value | ||
| 296 | + }. | ||
| 297 | + | ||
| 220 | public define Maybe(Word32) | 298 | public define Maybe(Word32) |
| 221 | get_Word32 | 299 | get_Word32 |
| 222 | ( | 300 | ( |
web/CXM_web_session.anubis
| @@ -8,6 +8,7 @@ | @@ -8,6 +8,7 @@ | ||
| 8 | 8 | ||
| 9 | read system/convert.anubis | 9 | read system/convert.anubis |
| 10 | read system/muscle.anubis | 10 | read system/muscle.anubis |
| 11 | +read calexium_lib/database/db_types.anubis | ||
| 11 | read CXM_common.anubis | 12 | read CXM_common.anubis |
| 12 | read CXM_web_dump.anubis | 13 | read CXM_web_dump.anubis |
| 13 | 14 | ||
| @@ -16,6 +17,7 @@ public type WEB_Session_Field_Datum: | @@ -16,6 +17,7 @@ public type WEB_Session_Field_Datum: | ||
| 16 | string(String), //fully implented | 17 | string(String), //fully implented |
| 17 | bool(Bool), //fully implented | 18 | bool(Bool), //fully implented |
| 18 | int(Int), //fully implented | 19 | int(Int), //fully implented |
| 20 | + db_id(DB_id), | ||
| 19 | message(Message), //fully implented | 21 | message(Message), //fully implented |
| 20 | byte_array(ByteArray), | 22 | byte_array(ByteArray), |
| 21 | float(Float), | 23 | float(Float), |
| @@ -31,6 +33,7 @@ public type WEB_Session_Field_Type: | @@ -31,6 +33,7 @@ public type WEB_Session_Field_Type: | ||
| 31 | string_t, | 33 | string_t, |
| 32 | bool_t, | 34 | bool_t, |
| 33 | int_t, | 35 | int_t, |
| 36 | + db_id_t, | ||
| 34 | message_t, | 37 | message_t, |
| 35 | byte_array_t, | 38 | byte_array_t, |
| 36 | float_t, | 39 | float_t, |
| @@ -214,7 +217,7 @@ define One | @@ -214,7 +217,7 @@ define One | ||
| 214 | /*************** String *****************/ | 217 | /*************** String *****************/ |
| 215 | 218 | ||
| 216 | Maybe(String) get_String(fields, _field_name) | 219 | Maybe(String) get_String(fields, _field_name) |
| 217 | - String get_String(fiels, _field_name, default_value) | 220 | + String get_String(fields, _field_name, default_value) |
| 218 | 221 | ||
| 219 | public define Maybe(String) | 222 | public define Maybe(String) |
| 220 | get_String | 223 | get_String |
| @@ -279,7 +282,7 @@ public define One | @@ -279,7 +282,7 @@ public define One | ||
| 279 | /*************** Bool *****************/ | 282 | /*************** Bool *****************/ |
| 280 | 283 | ||
| 281 | Maybe(Bool) get_Bool(fields, _field_name) | 284 | Maybe(Bool) get_Bool(fields, _field_name) |
| 282 | - Bool get_Bool(fiels, _field_name, default_value) | 285 | + Bool get_Bool(fields, _field_name, default_value) |
| 283 | 286 | ||
| 284 | public define Maybe(Bool) | 287 | public define Maybe(Bool) |
| 285 | get_Bool | 288 | get_Bool |
| @@ -344,7 +347,7 @@ public define One | @@ -344,7 +347,7 @@ public define One | ||
| 344 | /*************** Int *****************/ | 347 | /*************** Int *****************/ |
| 345 | 348 | ||
| 346 | Maybe(String) get_Int(fields, _field_name) | 349 | Maybe(String) get_Int(fields, _field_name) |
| 347 | - String get_Int(fiels, _field_name, default_value) | 350 | + String get_Int(fields, _field_name, default_value) |
| 348 | 351 | ||
| 349 | public define Maybe(Int) | 352 | public define Maybe(Int) |
| 350 | get_Int | 353 | get_Int |
| @@ -406,6 +409,71 @@ public define One | @@ -406,6 +409,71 @@ public define One | ||
| 406 | remove_any(fields, int_t, _field_name) | 409 | remove_any(fields, int_t, _field_name) |
| 407 | . | 410 | . |
| 408 | 411 | ||
| 412 | + /*************** DB_id *****************/ | ||
| 413 | + | ||
| 414 | + Maybe(String) get_DB_id(fields, _field_name) | ||
| 415 | + String get_DB_id(fields, _field_name, default_value) | ||
| 416 | + | ||
| 417 | +public define Maybe(DB_id) | ||
| 418 | + get_DB_id | ||
| 419 | + ( | ||
| 420 | + Var(List(WEB_Session_Field)) fields, | ||
| 421 | + String _field_name, | ||
| 422 | + ) = | ||
| 423 | + if get_field(*fields, db_id_t, _field_name) is | ||
| 424 | + { | ||
| 425 | + failure then failure, | ||
| 426 | + success(datum) then | ||
| 427 | + if datum is db_id(value) then | ||
| 428 | + success(value) | ||
| 429 | + else | ||
| 430 | + failure | ||
| 431 | + } | ||
| 432 | +. | ||
| 433 | + | ||
| 434 | +public define DB_id | ||
| 435 | + get_DB_id | ||
| 436 | + ( | ||
| 437 | + Var(List(WEB_Session_Field)) fields, | ||
| 438 | + String _field_name, | ||
| 439 | + DB_id default_value | ||
| 440 | + ) = | ||
| 441 | + if get_DB_id(fields, _field_name) is | ||
| 442 | + { | ||
| 443 | + failure then default_value | ||
| 444 | + success(value) then value | ||
| 445 | + }. | ||
| 446 | + | ||
| 447 | +public define One | ||
| 448 | + put_DB_id | ||
| 449 | + ( | ||
| 450 | + Var(List(WEB_Session_Field)) fields, | ||
| 451 | + String _field_name, | ||
| 452 | + DB_id _field_value | ||
| 453 | + )= | ||
| 454 | + fields <- [session_field(_field_name, int_t, var(db_id(_field_value))) . *fields] | ||
| 455 | +. | ||
| 456 | + | ||
| 457 | +public define One | ||
| 458 | + replace_DB_id | ||
| 459 | + ( | ||
| 460 | + Var(List(WEB_Session_Field)) fields, | ||
| 461 | + String _field_name, | ||
| 462 | + DB_id _field_value | ||
| 463 | + )= | ||
| 464 | + replace_any(fields, db_id_t, _field_name, db_id(_field_value)) | ||
| 465 | +. | ||
| 466 | + | ||
| 467 | + | ||
| 468 | +public define One | ||
| 469 | + remove_DB_id | ||
| 470 | + ( | ||
| 471 | + Var(List(WEB_Session_Field)) fields, | ||
| 472 | + String _field_name | ||
| 473 | + )= | ||
| 474 | + remove_any(fields, db_id_t, _field_name) | ||
| 475 | +. | ||
| 476 | + | ||
| 409 | /*************** Message *****************/ | 477 | /*************** Message *****************/ |
| 410 | 478 | ||
| 411 | Maybe(String) get_Message(fields, _field_name) | 479 | Maybe(String) get_Message(fields, _field_name) |
| @@ -993,6 +1061,7 @@ public define String | @@ -993,6 +1061,7 @@ public define String | ||
| 993 | string(_string) then name+", Type = String, Value = ["+_string+"]", | 1061 | string(_string) then name+", Type = String, Value = ["+_string+"]", |
| 994 | bool(_bool) then name+", Type = Bool, Value = ["+to_String(_bool)+"]", | 1062 | bool(_bool) then name+", Type = Bool, Value = ["+to_String(_bool)+"]", |
| 995 | int(_int) then name+", Type = Int, Value = ["+_int+"]", | 1063 | int(_int) then name+", Type = Int, Value = ["+_int+"]", |
| 1064 | + db_id(_db_id) then name+", Type = DB_id, Value = ["+_db_id+"]", | ||
| 996 | message(_message) then name+", Type = Message, Value = ["+dump(_message)+"]", | 1065 | message(_message) then name+", Type = Message, Value = ["+dump(_message)+"]", |
| 997 | byte_array(_byte_array) then name+", Type = ByteArray", | 1066 | byte_array(_byte_array) then name+", Type = ByteArray", |
| 998 | float(_float) then name+", Type = Float, Value = ["+float_to_string(_float, 10)+"]", | 1067 | float(_float) then name+", Type = Float, Value = ["+float_to_string(_float, 10)+"]", |
web/CXM_xml_rpc.anubis
| @@ -304,7 +304,7 @@ define Maybe(XML_RPC_response) | @@ -304,7 +304,7 @@ define Maybe(XML_RPC_response) | ||
| 304 | )= | 304 | )= |
| 305 | //TODO find the header and content-lenght to get full length of answer | 305 | //TODO find the header and content-lenght to get full length of answer |
| 306 | //construct a buffered connection | 306 | //construct a buffered connection |
| 307 | - with b_con = buffered_connection(conn), | 307 | + with b_con = http_buffered_connection(conn), |
| 308 | if skip_line(b_con) is | 308 | if skip_line(b_con) is |
| 309 | { | 309 | { |
| 310 | error(msg) then print(format(msg));failure, | 310 | error(msg) then print(format(msg));failure, |
web/jQuery/CXM_jq_checkbox.anubis
| @@ -58,7 +58,7 @@ public define HTML_Partial_Content | @@ -58,7 +58,7 @@ public define HTML_Partial_Content | ||
| 58 | [ | 58 | [ |
| 59 | js_inline(jquery_ready(checkbox_init_script(checkbox_id, initial_state))) | 59 | js_inline(jquery_ready(checkbox_init_script(checkbox_id, initial_state))) |
| 60 | ], | 60 | ], |
| 61 | - jquery_button(jquery_img_button(image_url, checkbox_label, checkbox_id, jQuery_actioner(same, jqscript, checkbox_onclick_script(checkbox_id, on_script, off_script)), orientation)) | 61 | + jquery_button(jquery_img_button(image_url, checkbox_label, checkbox_id, jQuery_actioner(same, jqscript(checkbox_onclick_script(checkbox_id, on_script, off_script))), orientation)) |
| 62 | ). | 62 | ). |
| 63 | 63 | ||
| 64 | public define HTML_Partial_Content | 64 | public define HTML_Partial_Content |
web/jQuery/CXM_jq_radio.anubis
| 1 | -/* | 1 | +/* |
| 2 | * Created by PyramIDE. | 2 | * Created by PyramIDE. |
| 3 | * User: フランスのトトロ | 3 | * User: フランスのトトロ |
| 4 | * Date: 28/06/2015 | 4 | * Date: 28/06/2015 |
| @@ -96,7 +96,7 @@ public define HTML_Partial_Content | @@ -96,7 +96,7 @@ public define HTML_Partial_Content | ||
| 96 | [ | 96 | [ |
| 97 | js_inline(jquery_ready(radio_init_script(radio_id, radio_group, initial_state))) | 97 | js_inline(jquery_ready(radio_init_script(radio_id, radio_group, initial_state))) |
| 98 | ], | 98 | ], |
| 99 | - jquery_button(jquery_img_button(image_url, checkbox_label, radio_id, jQuery_actioner(same, jqscript, radio_onclick_script(radio_id, radio_group, multi_select_with_shift, on_script)), orientation)) | 99 | + jquery_button(jquery_img_button(image_url, checkbox_label, radio_id, jQuery_actioner(same, jqscript(radio_onclick_script(radio_id, radio_group, multi_select_with_shift, on_script))), orientation)) |
| 100 | ). | 100 | ). |
| 101 | 101 | ||
| 102 | public define HTML_Partial_Content | 102 | public define HTML_Partial_Content |
web/jQuery/CXM_jquery_dialog.anubis
| @@ -18,6 +18,7 @@ public type JQuery_dialog: | @@ -18,6 +18,7 @@ public type JQuery_dialog: | ||
| 18 | off_form(HTML_Off_Form o_form), | 18 | off_form(HTML_Off_Form o_form), |
| 19 | ajax(WEB_Action_Name url). | 19 | ajax(WEB_Action_Name url). |
| 20 | 20 | ||
| 21 | +public define JQuery_dialog ajax(String url) = ajax(action_name(url)). | ||
| 21 | 22 | ||
| 22 | public define HTML_Partial_Content | 23 | public define HTML_Partial_Content |
| 23 | jq_dialog_create | 24 | jq_dialog_create |
| 1 | +/* | ||
| 2 | + * Created by PyramIDE. | ||
| 3 | + * User: フランスのトトロ aka (David RENÉ) | ||
| 4 | + * Date: 26/03/2017 | ||
| 5 | + * Time: 18:28 | ||
| 6 | + * © Calexium | ||
| 7 | + */ | ||
| 8 | + | ||
| 9 | +read calexium_lib/web/CXM_making_a_web_site.anubis | ||
| 10 | + | ||
| 11 | +public define List(HTML_Head_Tag) | ||
| 12 | + jqgrid_init | ||
| 13 | + ( | ||
| 14 | + String lang | ||
| 15 | + )= | ||
| 16 | + [ | ||
| 17 | + js(js_file("jqGrid/jquery.jqgrid.min.js")), | ||
| 18 | + css(css_file("jqGrid/css/ui.jqgrid.min.css")), | ||
| 19 | + js(js_file("jqGrid/i18n/min/grid.locale-"+lang+".js")) | ||
| 20 | + ] | ||
| 21 | +. |
web/jQuery/ui-addon/datetimepicker.anubis
| @@ -30,7 +30,7 @@ public define String | @@ -30,7 +30,7 @@ public define String | ||
| 30 | Bool add_icon | 30 | Bool add_icon |
| 31 | ) = "// Datetimepicker\n | 31 | ) = "// Datetimepicker\n |
| 32 | $.datetimepicker.setLocale('"+lang+"'); | 32 | $.datetimepicker.setLocale('"+lang+"'); |
| 33 | - $('.datepicker').datetimepicker({timepicker:false,format:'d/m/Y'}); | 33 | + $('.datepicker').datetimepicker({timepicker:false,format:'Y-m-d'}); |
| 34 | $('.datetimepicker').datetimepicker({format:'Y-m-d H:i'}); | 34 | $('.datetimepicker').datetimepicker({format:'Y-m-d H:i'}); |
| 35 | $('.timepicker').datetimepicker({datepicker:false,format:'H:i',step:5}); | 35 | $('.timepicker').datetimepicker({datepicker:false,format:'H:i',step:5}); |
| 36 | " + if add_icon then " | 36 | " + if add_icon then " |
| 1 | +/* | ||
| 2 | + * Created by 伝作 (Densaku). | ||
| 3 | + * Types & Messages generator written by フランスのトトロ aka (David RENÉ) | ||
| 4 | + * Date: 2017-03-15 | ||
| 5 | + * Time: 02:27:54 | ||
| 6 | + * | ||
| 7 | + */ | ||
| 8 | + | ||
| 9 | +transmit system/muscle.anubis | ||
| 10 | +transmit system/convert.anubis | ||
| 11 | +transmit tools/basis.anubis | ||
| 12 | + | ||
| 13 | + | ||
| 14 | +public type WEB_Action_Name: | ||
| 15 | + no_action, | ||
| 16 | + controller_action( | ||
| 17 | + String controller, | ||
| 18 | + String ac_name | ||
| 19 | + ), | ||
| 20 | + action_name( | ||
| 21 | + String ac_name | ||
| 22 | + ), | ||
| 23 | + //url is raw action, hence we will only copy that url in final link | ||
| 24 | + | ||
| 25 | + url( | ||
| 26 | + String url_name | ||
| 27 | + ) | ||
| 28 | +. | ||
| 29 | + | ||
| 30 | + WEB_Action_Name message format | ||
| 31 | + ============================== | ||
| 32 | + | ||
| 33 | + | ||
| 34 | +public define Message | ||
| 35 | + to_Message | ||
| 36 | + ( | ||
| 37 | + WEB_Action_Name _web_action_name | ||
| 38 | + )= | ||
| 39 | + with _web_action_name_message = message((Word32)0), // | ||
| 40 | + forget(add_string(_web_action_name_message, "__TYPE__", "WEB_Action_Name")); | ||
| 41 | + if _web_action_name is | ||
| 42 | + { | ||
| 43 | + //Alternative no_action (NO TYPE) | ||
| 44 | + no_action then | ||
| 45 | + forget(add_string(_web_action_name_message, "__TYPE_ALT__", "no_action")), | ||
| 46 | + | ||
| 47 | + //Alternative controller_action | ||
| 48 | + controller_action(_controller, _ac_name) then | ||
| 49 | + forget(add_string(_web_action_name_message, "__TYPE_ALT__", "controller_action")); | ||
| 50 | + // [type = String] controller_action.controller | ||
| 51 | + forget(add_string(_web_action_name_message, "controller", _controller)); | ||
| 52 | + // [type = String] controller_action.ac_name | ||
| 53 | + forget(add_string(_web_action_name_message, "ac_name", _ac_name)), | ||
| 54 | + | ||
| 55 | + //Alternative action_name | ||
| 56 | + action_name(_ac_name) then | ||
| 57 | + forget(add_string(_web_action_name_message, "__TYPE_ALT__", "action_name")); | ||
| 58 | + // [type = String] action_name.ac_name | ||
| 59 | + forget(add_string(_web_action_name_message, "ac_name", _ac_name)), | ||
| 60 | + | ||
| 61 | + //Alternative url | ||
| 62 | + //url is raw action, hence we will only copy that url in final link | ||
| 63 | + url(_url_name) then | ||
| 64 | + forget(add_string(_web_action_name_message, "__TYPE_ALT__", "url")); | ||
| 65 | + // [type = String] url.url_name | ||
| 66 | + forget(add_string(_web_action_name_message, "url_name", _url_name)), | ||
| 67 | + | ||
| 68 | + }; | ||
| 69 | + _web_action_name_message | ||
| 70 | +. | ||
| 71 | + | ||
| 72 | +public define Maybe(WEB_Action_Name) | ||
| 73 | + from_Message | ||
| 74 | + ( | ||
| 75 | + Message _web_action_name_message | ||
| 76 | + )= | ||
| 77 | + if find_string(_web_action_name_message, "__TYPE__") is {failure then failure, success(__type__) then | ||
| 78 | + if find_string(_web_action_name_message, "__TYPE_ALT__") is {failure then failure, success(__type_alt__) then | ||
| 79 | + if __type__ = "WEB_Action_Name" then | ||
| 80 | + //Alternative no_action (NO TYPE) | ||
| 81 | + if __type_alt__ = "no_action" then | ||
| 82 | + success(no_action) | ||
| 83 | + else //Alternative controller_action | ||
| 84 | + if __type_alt__ = "controller_action" then //Alternative controller_action | ||
| 85 | + // [type = String] controller_action.controller | ||
| 86 | + if find_string(_web_action_name_message, "controller") is {failure then failure, success(controller) then | ||
| 87 | + // [type = String] controller_action.ac_name | ||
| 88 | + if find_string(_web_action_name_message, "ac_name") is {failure then failure, success(ac_name) then | ||
| 89 | + | ||
| 90 | + success(controller_action(controller, ac_name)) | ||
| 91 | + }} | ||
| 92 | + else //Alternative action_name | ||
| 93 | + if __type_alt__ = "action_name" then //Alternative action_name | ||
| 94 | + // [type = String] action_name.ac_name | ||
| 95 | + if find_string(_web_action_name_message, "ac_name") is {failure then failure, success(ac_name) then | ||
| 96 | + | ||
| 97 | + success(action_name(ac_name)) | ||
| 98 | + } | ||
| 99 | + else //Alternative url | ||
| 100 | + //url is raw action, hence we will only copy that url in final link | ||
| 101 | + if __type_alt__ = "url" then //Alternative url | ||
| 102 | + // [type = String] url.url_name | ||
| 103 | + if find_string(_web_action_name_message, "url_name") is {failure then failure, success(url_name) then | ||
| 104 | + | ||
| 105 | + success(url(url_name)) | ||
| 106 | + } | ||
| 107 | + else | ||
| 108 | + failure //No valid Alternative found ! | ||
| 109 | + else | ||
| 110 | + failure //Type not found in message ! | ||
| 111 | + }} | ||
| 112 | +. | ||
| 113 | + |
web/widgets/button.anubis
| @@ -42,7 +42,19 @@ public define HTML_Partial_Content | @@ -42,7 +42,19 @@ public define HTML_Partial_Content | ||
| 42 | String url | 42 | String url |
| 43 | )= | 43 | )= |
| 44 | img_button_flink(img_path, [], same, url). | 44 | img_button_flink(img_path, [], same, url). |
| 45 | + | ||
| 46 | +public define HTML_Partial_Content | ||
| 47 | + img_button | ||
| 48 | + ( | ||
| 49 | + String img_path, | ||
| 50 | + List(CoreAttrs) core_attrs, | ||
| 51 | + Actioner_Target target, | ||
| 52 | + WEB_Action_Name url, | ||
| 53 | + List((String, String)) extra_ops | ||
| 54 | + )= | ||
| 55 | + partial_content(actioner(same, same, img_link(core_attrs+[style("cursor: pointer")], img_path, ""), url, extra_ops)). | ||
| 45 | 56 | ||
| 57 | + | ||
| 46 | public define HTML_Partial_Content | 58 | public define HTML_Partial_Content |
| 47 | img_button | 59 | img_button |
| 48 | ( | 60 | ( |
| @@ -66,6 +78,15 @@ public define HTML_Partial_Content | @@ -66,6 +78,15 @@ public define HTML_Partial_Content | ||
| 66 | img_button | 78 | img_button |
| 67 | ( | 79 | ( |
| 68 | String img_path, | 80 | String img_path, |
| 81 | + WEB_Action_Name url, | ||
| 82 | + List((String, String)) extra_ops | ||
| 83 | + )= | ||
| 84 | + img_button(img_path, [], same, url, extra_ops). | ||
| 85 | + | ||
| 86 | +public define HTML_Partial_Content | ||
| 87 | + img_button | ||
| 88 | + ( | ||
| 89 | + String img_path, | ||
| 69 | String url, | 90 | String url, |
| 70 | List((String, String)) extra_ops | 91 | List((String, String)) extra_ops |
| 71 | )= | 92 | )= |
web/widgets/icons_set.anubis
| @@ -6,11 +6,13 @@ | @@ -6,11 +6,13 @@ | ||
| 6 | * © Calexium | 6 | * © Calexium |
| 7 | */ | 7 | */ |
| 8 | 8 | ||
| 9 | +public define String icn16_add = "icons/16x16/add.png". | ||
| 9 | public define String icn16_edit = "icons/16x16/edit.png". | 10 | public define String icn16_edit = "icons/16x16/edit.png". |
| 10 | public define String icn16_calendar = "icons/16x16/calendar.png". | 11 | public define String icn16_calendar = "icons/16x16/calendar.png". |
| 11 | public define String icn16_check = "icons/16x16/check.png". | 12 | public define String icn16_check = "icons/16x16/check.png". |
| 12 | public define String icn16_clock = "icons/16x16/clock.png". | 13 | public define String icn16_clock = "icons/16x16/clock.png". |
| 13 | public define String icn16_cross = "icons/16x16/cross.png". | 14 | public define String icn16_cross = "icons/16x16/cross.png". |
| 15 | +public define String icn16_email = "icons/16x16/email.png". | ||
| 14 | public define String icn16_forward = "icons/16x16/forward.png". | 16 | public define String icn16_forward = "icons/16x16/forward.png". |
| 15 | public define String icn16_home = "icons/16x16/home.png". | 17 | public define String icn16_home = "icons/16x16/home.png". |
| 16 | public define String icn16_key = "icons/16x16/key.png". | 18 | public define String icn16_key = "icons/16x16/key.png". |
| @@ -22,6 +24,7 @@ public define String icn16_group = "icons/16x16/group.png". | @@ -22,6 +24,7 @@ public define String icn16_group = "icons/16x16/group.png". | ||
| 22 | public define String icn16_question = "icons/16x16/question.png". | 24 | public define String icn16_question = "icons/16x16/question.png". |
| 23 | public define String icn16_refresh = "icons/16x16/arrow_refresh.png". | 25 | public define String icn16_refresh = "icons/16x16/arrow_refresh.png". |
| 24 | public define String icn16_vcard_add = "icons/16x16/vcard_add.png". | 26 | public define String icn16_vcard_add = "icons/16x16/vcard_add.png". |
| 27 | +public define String icn16_view_list = "icons/16x16/view_list.png". | ||
| 25 | public define String icn16_warning = "icons/16x16/warning.png". | 28 | public define String icn16_warning = "icons/16x16/warning.png". |
| 26 | 29 | ||
| 27 | public define String icn16_true = "icons/16x16/check.png". | 30 | public define String icn16_true = "icons/16x16/check.png". |
web/widgets/left_menu.anubis
| @@ -43,6 +43,16 @@ public define Left_Menu_Entry | @@ -43,6 +43,16 @@ public define Left_Menu_Entry | ||
| 43 | public define Left_Menu_Entry | 43 | public define Left_Menu_Entry |
| 44 | left_menu_entry | 44 | left_menu_entry |
| 45 | ( | 45 | ( |
| 46 | + String entry_id, | ||
| 47 | + String action, | ||
| 48 | + String text | ||
| 49 | + )= | ||
| 50 | + left_menu_entry(entry_id, [], action_name(action), text, []) | ||
| 51 | + . | ||
| 52 | + | ||
| 53 | +public define Left_Menu_Entry | ||
| 54 | + left_menu_entry | ||
| 55 | + ( | ||
| 46 | String entry_id, //it's also use as icon prefix | 56 | String entry_id, //it's also use as icon prefix |
| 47 | WEB_Action_Name action, //action (url to apply when click | 57 | WEB_Action_Name action, //action (url to apply when click |
| 48 | String text, //text to show | 58 | String text, //text to show |
| @@ -50,6 +60,17 @@ public define Left_Menu_Entry | @@ -50,6 +60,17 @@ public define Left_Menu_Entry | ||
| 50 | )= | 60 | )= |
| 51 | left_menu_entry(entry_id, [], action, text, extra) | 61 | left_menu_entry(entry_id, [], action, text, extra) |
| 52 | . | 62 | . |
| 63 | + | ||
| 64 | +public define Left_Menu_Entry | ||
| 65 | + left_menu_entry | ||
| 66 | + ( | ||
| 67 | + String entry_id, //it's also use as icon prefix | ||
| 68 | + String action, //action (url to apply when click | ||
| 69 | + String text, //text to show | ||
| 70 | + List((String, String)) extra //extra web arguments to send when click | ||
| 71 | + )= | ||
| 72 | + left_menu_entry(entry_id, [], action_name(action), text, extra) | ||
| 73 | + . | ||
| 53 | 74 | ||
| 54 | public define Left_Menu_Entry | 75 | public define Left_Menu_Entry |
| 55 | title | 76 | title |