This repository has been archived by the owner on May 29, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathCHANGES.txt
683 lines (567 loc) · 23.5 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
1.2.0
=====
Feature Release
Improvements
- Fixed typos in documentation.
- Added optional timezone parameter to Form initialisation.
Changes:
- Change client site type conversion of "selection" values in forms. Convert according to
datatype of field. Attention: This may require changes in rule definitions
as rules like "'1' in $foo" may not work anymore as $foo is now a real list
of integers.
New feature
- Added FormDataprovider. A Formdataprovider can be used to fill the form with
(dynamic) values and options.
- Added datetime picker widget. See https://github.com/Eonasdan/bootstrap-datetimepicker
- Added currency widget.
- Added new "fields" command to generate.py command (in contrib) to export the
entities of a given form as CSV.
- Global JS "form" variable now avaible. This variable can be used to check if
a form is dirty (form.isDirty()) and check fields form (form.getFormFields())
- $("div.formbar-form") now triggers "dirty" and clean events.
1.1.0
=====
Feature and bugfix release.
New feature:
- Added "selected" config attribute to the radio renderer to preselect an
entry from the option by its index.
Bugfix:
- Enable negativ value in integer and float fields.
1.0.3
=====
Internal release only already includes most of the features from 1.1.0 but
never has been released in the public.
1.0.2
=====
Maintenance release.
- Updated translations
- Ringo specific: Added optimized option loading.
1.0.1
=====
Bugfix release.
- Added more supported datatypes (interval, text) for fields. Type has already
been supported but has not been detected properly.
- Fixed setting default values.
- Fixed some rendering issues.
- Fixed detection of empty checkboxes ([""]) is JS code.
1.0
===
LARGE REFACTORING AND CODE CLEANUP.
WARNING: This change can break up your running application and forces you to
do some code adaptions. See details below.
Basically splitted the large form.py into to modules. One for the form related
stuff and the other one containinig the fields.
Further there are now a Field for each supported datatype. Many of the field
and type specific code is now put into the fields. This should make the code
much more cleaner.
Possibible incompatiblities:
* Removed various getter and setter and property methods to access private
attributes like _warnings and _errors of the fields. Those attributes has
become public now and should be accessed directly.
0.24.3
======
- Added preview to file fields. The preview shows the preview of an image file
which will be uploaded.
- Fixed #23: Support other dateformat that german dateformat. If
browserlanguage is not german that the datepicker will use ISO8601
dateformat.
- Under certain circumstances conditionals were rendered invisible instead of
inactive, due to different contextual behaviour of "readonly". To circumvent
misinterpretation of the current context, the type is rendered alongside
other infos in the DOM-Node.
- Private variables used to prefill the form are broken, when the form
contains "submitted" data. These are now conserved for rendering.
0.24.2
======
- Added "self.converted" attribute to the form. This variable will save the
converted values on validation.
0.24.1
======
Bugfixrelease
- Fixed behaviour of not readonly conditionals visibilty if Rule evaluate to False on
initial loading of the form.
0.24.0
======
Maintenance release. Code cleanup
- Improved expression parsing for list filtering
- Improved serialisation/deserialisation of multiselction fields (e.g
checkboxescheckboxes)
- Fixed error in deserialisation of initial field values.
0.23.0
======
- Added 'showrawvalue' config option for inforenderer. See documentation for
more details.
- Added sort configuration for selection fields. See documentation for more
details.
0.22.0
======
Bugfix release
- Fixed bug with reset values. Resetting was to aggressive and deleted values
even if reset was not set to true in conditionals which could cause
dataloss.
- Fixed handling relations wich realtions are used with comma separated names
as it is used when using form inheritance.
0.21.0
======
- #3 Add "Save an continue" Button. For forms with multiple pages formbar now
renders a Save and continue submit button. An application can exime the
request if the user has clicked this button to set active the next page on
rendering.
- Add support for HTML code in help blocks.
- Added support to define validators directly in the form config.
0.20.3
======
- Allow user defined values on form initialisation. Needed for specific rules
evaluations which relay on external data.
- Added "ignore" attribute to buttons to allow rendering forms with no
buttons at all.
0.20.2
======
Bugfixes.
0.20.1
======
Bugfixes.
0.20.0
======
Large rewrite of the Javascript part and large parts of formbar to make
formbar more dynamic in case of showing messages on errors and warnings.
0.18.3
======
- Fixed selection filtering with user provided values.
0.18.2
======
- Fixed error on evaluating checkboxes.
0.18.1
======
- Fixed error that submitted unsaved values are not displayed in the form again if the
form contains errors. This results in loosing the new entered data.
- Fixed error of dataloss in case of readonly checkbox fields on submit.
0.18.0
======
- Added new HTML directive. This can be used to insert custom html code in the
form e.g lists and images.
- Improved performance: Do not build rules on loading a form configuration.
Only build rules if they are actually needed (On rules evaluation). This
improves the performance by almost factor of 2.
- Make simple left aligned numbering of textfield renderers work again.
- Added "maxlength" attribute to textareas. If set a small indicator is shown
below the textfield counting the remaining chars.
- Gray out sections and text areas too if a conditional is inactive.
- Allow filtering of options in user defined options based on additional
attribute in the option.
0.17.5
======
Bugfix and Maintenance release
- Fixed bug in inheritance code which adds a optional prefix to '$' variables
in rules.
0.17.4
======
* Render global error and warning messages in forms without pages too. Fixed
bug that these messages were only shown for forms with an outline.
* Added --tags option to generate.py to filter fields with specific tags.
* Added command 'fieldnames' to only render fieldnames instead of the model.
Additionally there is a aslist flag to render the names as a python list
0.17.3
======
* Fixed annoying bug of jumping curson in textfields. If the user changes
something in the middle of a textfield the cursor jump immediately to the
end of the textfield again. This makes it quite impossible to work with
textfields.
* Fixed handling of static rules. In case the the form validation failes the
`form.data` attribute is empty. This resulted in failing rule evaluations of
static rules because there was not dictionary of valuea available. Now use the
loaded_data in case the form.data is empty.
0.17.2
======
- Prevent forms from double submission on default.
Added "disable-double-submit-prevention" css class which can be used
in the form definition to explicit disable the submit prevention.
- Refacored code when initialising the form. Fixed/Improved comments on the
involved methods.
- Fixed bug the getting only evaluable fields on validation reinitialized the
form which leads to later problems on rule evaluation because of missing
fields.
- Make logging warnings when trying to access attributes of the linked item
more tolerant on errors. So only log those errors if the item is not fresh
created as in this case chances are high that relations or other values are
missing. Logging in this case would lead to too much false positives.
- Prevent forms from beeing double submitted. This is done on client side
using JS.
- Cleanup of code to reset and remove values in the form in case a conditional
becomes readonly.
- Fixed Bug of failing cascading resetting of field values in case of nested
conditionals.
0.17.1
======
- Added entity-prefix attribute to the include directive.
- Some cleanup after the move from bitbucket to github. Close branches and
remove mercurial specific configurations.
0.17.0
======
- Added include function. Includes can be used to include the content of a
another configuration file in a form configuration.
- Added inheritance function. Inhertance can be used to inherit from a base
form and onyl modify small parts of the form.
0.16.1
======
Bugfixrelease
- Fixed broken JS code to enable and disable fields because of conditionals.
This also fixed broken saving of checkboxes.
0.16.0
======
- New option "reset-value" for conditionals.
- Improved conditionals. For conditionals with "reset-value" attribute set to
"true" the following bahaviour has been improved:
If the conditional becomes False and fields within the conditionalcondit
become readonly or invisible, the value of all fields will be deleted to an
empyt value. If the conditional becomes True again before the form has been
submitted the initial values of the fields within the forms will be
restored.
- Make readonly checkboxes and radio buttons not clickable.
0.15.2
======
Bugfix release:
- Fix handling of empty string values and make them unicode too.
- In case of InfoRender try to get the value from the item even if the entity
is not included in the form. This is needed to be able to work with the
value attribute.
- Set datatype attribute of hidden fields to fix data conversion on client
side.
0.15.1
======
Bugfix release:
- Improved rule evaluation. Only try to get values for rules evaluation if the
field is in the form. Reduces number of warnings in logfile.
- Fixed rendering of Radiofields. Removed support for fields which can have
mulitple values as a Radiofield can only handle one value.
- Fixed client side data conversion of date fields for rule evaluation.
0.15.0
======
- Added new renderer "Textoption". A textoption field is basically a selection
field which can be used to set multible values. In a textoption field the
values can be entered in a textfield. The textfield has support for
autocompletion which offers the available options.
- Added support for form wide errors and warnings using external validators.
Form wide errors and warnings are shown at the top of every page of the
form.
0.14.1
======
- Fixed rendering filtered items in checkbox renderer.
0.14
====
- Added configuration attribute to the renderer to configure an indent and
styling of the field element(s).
- Added configuration attribute to the label to configure the position of the
numbering in the label.
- Added configuration attribute to set a background for the label.
- Changed margins and font sizes of headings in the form to make the form more
compact and improve the visual difference of the headings. Margins are
reduced and differences between headings are larger now.
0.13
====
- Added attribute to configure how to display the help on the field. Show help
on fields as tooltip per default. On behaviour can be reestablished by
setting the display attribute of the help to "text".
- Remove default "Reset" form button. Asking people using forms shows
that almost nobody is using a reset button in the forms. If you want
to have a reset button than you need to define a custom button bar now
in the form.
- Hide submit buttons on pages of forms with no input elements.
0.12
====
- Extract text form button for internationalisation.
- Fixed affix of outline sidebar on forms.
- Implement remove_filtered for dropdown elements too.
0.11
====
- Added support for metadata sections in the form configuration. This metadata
is used together with the entity, and layout sections to generate a
specification of the forms.
- Added formspec.py command to generate the speficication.
0.10
====
- Modified "onchange" event for textfield. Detect if user stopped typing in
a textfield and trigger evaluation of rules after 750ms automatically.
0.9.13
======
- Fixed type detection for VARCHAR fields.
0.9.12
======
- Raise deserialisation error when time format ist wrong.
0.9.11
======
- Performance Improvement: Do not evaluate all conditionals when a values
changes in the form. Only evalute the conditionals which are affacted by the
change.
0.9.10
======
- Enabled translation of the error messages while type conversion to python.
- Limit integer data type to 4byte (which is the value for integer datatype in
a postgres database.)
0.9.9
=====
- Relaxed email validation. Removed client side checks for input values and
removed server side validation of the local part of an email address.
- Fixed (workaround) getting default values for checkboxes in mako template.
0.9.8
=====
- Implemented server side evaluation of conditionals while rendering.
- Added interval type.
- Added placeholder configuration variable
- Implemented brabbel expressions in default value using "%" (Useful to get
the current date.)
- Moved converters for serialisation and deserialisation into its own module
(converters.py)
- Started to improve client side rule evaluation. In case the input element
has the data type attribute set then try to convert the value of the field
into the right representation for rule evaluation.
- Started to improve performance on form initialisation. First store the
fields in a dictionary per page to make the access to fields on a specific
page faster.
0.9.7 (alias 0.9.6)
===================
- Added autofocus attribute in field configuration (Textfield only yet)
- Fixed getting values from checkbox and radio fields.
- Fixed getting accepted language from browser. Now using locale setting from
evaluate response.
- Implement filtering on user defined rules
- If no value can be get from a field then set the value to "None" in
expressions to ensure the expression is valid.
- Removed datutils dependency as it is not py3 ready. Actually only the
python-dateutil library is needed.
0.9.5
=====
- Add special logic for ringo items when rendererd in info fields. In this
case display the expanded values.
- Do not show any value in the password field.
- Set requirement to brabbel >= 0.2.6
- Improve generation of model generation based on form definition.
- Added option configure a locale for the form. This is needed to render form
elements like the datepicker with the correct locale settings.
0.9.4
=====
- Add url_prefix as new parameter for forms. This prefix will be used to build
correct urls in case the application which uses formbar is hosted in a
subpath. (eg. example.com/foo).
0.9.3
=====
- Fixed demo server to make it start up again (Still some flaws in it).
- Worked on documentation.
- Some layout in forms.
0.9.2
=====
- Fixed getting values from select fields if no value is selected and the
value may be empty. In this case the application send all options to the server.
- Do not include "nullable" when generate model definitions from form definition.
- Restructured documentation.
0.9.1
=====
- Add option to options to define a attribute of the item where to load the available
options from.
0.9
===
- Set autocomplete="off" for password fields.
- Added serialisation of dates.
- Security fix: Fixed potential code injection issue by removing the rule
parsing out of formbar and use brabbel library for rule parsing and
evaluation.
0.8.3
=====
- Added translation for warning and error messages.
- Added translation of options in dropdown fields.
- Fixed "readonly" mode for select fields. Select fields need a disabled
attribute instead of a readonly attribute.
0.8.2
=====
- Added email field.
0.8.1
=====
- Removed dependency to formencode.
- Added experimental special logic to submit unselected items for radio and
checkbox input fields.
- Render diff to previous value in dropdowns too.
- Add Section elements.
0.8.0
=====
- Added renderer for checkbox fields.
- Added renderer for radio fields.
- Added label tag for the renderer to have more option on rendering the fields
label.
- Added support to configure simple text element within the form.
- Removed "star" indicator at labels for requierd fields.
- Support (+,-,*,/) and logical grouping of elements
- Conditionals supports now hidding whole pages.
- Table rendering: td and th supports row and colspan.
0.7.2
=====
- Changed Bootstrap version of demoserver to ver. 3.
- Changed example form. Show all possibilities in one form.
0.7.1
=====
- Set value of the field always on rendering (Fixes issue with dropdown fields in view model
- Split loading and filtering of options. Make filtering option available as
method for external applications.
- Add support for defining buttons in a form. This is optional. If no form
section is defined the default buttons will be added.
0.7.0
=====
- Added new renderer to render a editor for formbar forms. The editor support
depends on a service which will render the form. This is not part of the
editor. See ringo version > 0.12.0 for an example. Renderer support a live
preview of the form.
- Removed injected "eval_url" in the formbar.js file. The js file is now
static. The eval url must now provided on form initialisation.
- Use ACE editor for formbar editor. (http://ace.c9.io/)
0.6.5
=====
- Added support for the "value" attribute in the form configuration to define
a default value of the field. This attribute is also used for Infofields.
- Added support for the "and" and "or" operators in rules.
- Added another variable identifier "@" in filter definitons of selection
renderers. Variables beginning with "@" indicate a attribute in the forms item.
- Added another variable identifier "$" in filter definitons of selection
renderers. Variables beginning with "@" indicate a special values like
"$user" for the current user of the request.
- Add renderer option "remove_filtered" to completely ignore filtered items in
selection list rendering.
0.6.4
=====
- Fixed rule evaluation. Allow " and ' in rules.
- #5. Added basic filtering on selections. Currently only works on SQLAlchemy relations.
0.6.3
=====
- Workaroud for https://github.com/formencode/formencode/pull/58
- Added "rows" attribute for textarea. (Renderer attribute)
- Add option to provide a external service to evaluate rules.
- If external service for rule evaluation is defined use this service for
client side evaluation.
- Add support for nested fieldset elements up to three levels.
- Replaced bootstrap-datepicker. Now using: https://github.com/eternicode/bootstrap-datepicker
- Add HTML-Renderer. Can be used to include custom HTML in the form.
0.6.2
=====
- Add "History" feature. You can now optionally provide a dictionary with old
values and the form will renderer the differences to these values in a nice
visual way in read only mode. This is very similar to the change history
known from other office products.
- Fixed bug in evaluating expressions in JS when rendering read only mode. Add
value attribute for readonly dropdown fields holding the unexpanded value.
0.6.1
=====
- Fixed bug in deserialisation. Do not ignore readonly fields on
deserialisation.
0.6.0
=====
- Added support for warning rules.
- Refactored serialisation, deserialisation, validation and rendering of the
form. Splitted up the code to make it more readable.
0.5.2
=====
- Fix error on saving manytomany or onetomany relations. If there was only on
item linked. The saving fails and other items are linked.
- Fix providing external values while rendering the form through the render
function. Changed values merge mechanism.
0.5.1
=====
- Fix serialisation on GET requests.
- Implement serialisation of datetimes.
0.5.0
=====
- Added support for conditionals.
- Conditionals are evaluated based on JavaScript on the client side
- Conditionals are evaluated with Formed-Rules on Server side
- Rules for fields which are with in a disabled conditional are now
exluded from validation.
- Rules are now checked after the basic type conversation is done. Pre rules
will still validate on the raw submitted (unconverted) data.
- Changed default mode of rules from "pre" to "post"
- Clean submitted data. The submitted data will be cleaned on validation.
Values for fields which are not actually configured in the form are erased
from the submitted data.
- Show number of errors in the form outline for every page.
- Rendering of buttons can now be disabled on rendering the form using
(buttons=false) as paramenter.
- Fixed preloading values on form rendering.
- Refactored code for evaluating expressions.
0.4.6
=====
- Added Renderer for hidden fields.
0.4.5
=====
- Make formbar compatible with Bootstrap 3
0.4.4
=====
- Added datetime conversion. Converts submitted strings in with format
"2013-10-10 22:42:31" into a datetime.
- Change Layout of the buttonpane. Removed margin and padding. No background.
0.4.3
=====
- Added "time" fields. Will take the time in the form "HH:MM:SS" and converts
it into the total amount of seconds.
- Fixed error in rule evaluation with non ascii values. The values are now
converted to ascii (non ascii values are replace with '?') before
evaluating.
- Improved "tabbing" in forms. Markers for required fields aren't links
anymore which are tabable.
- Added support for CSRF protection. The form can now be initialised with a
token for CSRF protection which is rendered as hidden field in the forms.
0.4.2
=====
- Added support for File Fields.
0.4.1
=====
- Added support for table rendering as additional layout element. Follows
basically the html syntax (table, tr, th, td).
- Added support InfoFields. Infofields are not part of the datamodel. The are
used to display dynamic calculated values.
- Added helper script "generate.py" to generate various information about the
form configuration. E.g generate the SQLAlchemy model.
- Added optional request param for form initialisation. The current request
from a wenframeform can no be provided to the form. This might be usefull
while rendering with external renderers.
0.4.0
=====
- Removed FormAlchemy dependency. This includes some internal refactoring as
the rendering and converting of values (especially relations) must now be
done by formbar.
0.3.1
=====
- Fixed readonly view for textarea. Replace \n with <br>
- Added "in" rule operand. ($field in ['1','2','3'])
0.3
===
- Added a configurable JS-Callback function which is called when the user
changes the currently selected page. The function will sent some information
(selected page, item, itemid) to a configurable URL. The server behind the
URL can save these values in a session and reuse it to preselect the page on
the next form rendering.
Form-Rendering:
- Splitted up rendering of forms. The Fieldrenderer now renders label, field,
help and errors seperately for each field.
- Enabled customs Renderers. Among the default FA Renderes wen can now
configure our own renderers more easly. The goal is to get rid of the FA
Alchemy dependencie.
0.2.2
=====
- Added a new DatefieldRenderer which uses a bootstrap specific datepicker
widget. Needs JS. Currently this widget is used if the datetype "date" is
provided.
- Added helper method to get the needed JS code for formbar. Needed in other
libraries.
- Renderer is not set depending on the datatype anymore. Default renderer is
a TextfieldRenderer or the Renderer set by Formencode.
- Renderer is only set by the renderer attribute for an entity
- Fix in setup.py. Use hgtools to build package.
- Added support for pages in forms.
0.2.1
=====
- Added support for i18n. A translation function like gettext can now be
injected on initialisation of a form.
0.2
===
- Changed initialisation of field.
- Implemented dropdonw field
- Layout Change. Field height is now 30px to match the Ringo form layout.
0.1
===
- First working version.