forked from plainblack/Wing
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGES.txt
433 lines (323 loc) · 17 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
W I N G C H A N G E S
----------------------------------------------------------
This file tracks the changes to Wing over time. Especially
with respect to new features and compatibility changes.
==========================================================
2016-11-04
* _order_by can now be an array.
2016-10-18
* Backed out change added on 2016-10-14, because the user decided not to use it, and it was causing other problems elsewhere in existing apps.
2016-10-14
* lib/DB/Result.pm now has verify_creation_params setting the values of required params so that they can be used in a can_edit() check when creating an object.
2016-10-13
* S3Image now includes the object id in the local cache path.
2016-10-07
* Add option to skip Wing's field uniqueness check, if the field value is null.
2016-10-04
* Allow joined queries on Rest generate_relationship().
2016-08-29
* Switched to our own markdown parser for better security, speed, and formatting.
2016-08-25
* Added better precheck for unique fields to check for unique indexes as well as unique qualifiers.
* Added in page targets to Web Filtered Fields.
2016-08-22
* Requires Text::MultiMarkdown and URI::Find::Delimited.
* Allow for Markdown in Web Filtered Fields.
* ContentFilter now uses ## instead of == for headings. Use something like this to upgrade your database:
update groups set description=replace(description, '==','##');
2016-08-18
* Add a login link to 401 ajax error messages.
2016-08-08
* Export "can_view" property via describe() method in Result.pm
2016-08-02
* Fixed a bug in Wing::ContentFilter where it couldn't get SSL sites.
2016-07-18
* Added filter to Wing::Role::Result::Field.
2016-07-11
* Disambiguate a Rest _order_by clause.
* By default content filter allows for H2 through H6.
2016-07-06
* Allow qualifiers in Rest generate_relationship to be passed a comparison operator.
* wing.angular.js objectListManager on_each is now passed the objectManager instance of each object in addition to its properties.
2016-06-30
* Updated the Facebook SSO API to work with Facebook's nonsense.
* Exposed FacebookAuthUser role so you know what fields you have to add to auth with Facebook.
* NOTE: You need to copy var/init/views/account/create_account_include.tt finish_facebook.tt, and authenticate_include.tt into your views/account folder.
2016-06-29
* Added a describe_delete method.
2016-06-24
* Replaced 451 error codes with the HTTP standard 401.
2016-06-22
* Fixed a bug introduced in the last release where _include_options wasn't available on describe object calls.
2016-06-18
* Added Wing::Role::Result::Cousin, which sets up many to many relationships between classes in a Wing way.
* Added the Rest param _include and the method param include to describe() and format_list() in Wing::Dancer so that you can arbitrarily add stuff to class describe methods.
* Documented the options in Wing::Rest for generate_relationship() and generate_all_relationships().
* Fixed a bug relating to the object prefetch created by generate_relationship().
* wing.angular.js objectListManager search() now has an on_success option that is passed the successful result set.
2016-06-16
* Added privileged_params() to Wing::DB::Result.
* Added check_privilege option to wing_field in Wing::Role::Result::Field.
* The above two changes allow the creation of special privilege checks on a per-field basis.
2016-06-11
* Added Wing::Role::Result::Warnings to give a standardized way of creating warnings in classes.
* Change a couple fields that shouldn't be not null in the User role.
2016-06-06
* Moved environment setup into various OS specific readme files.
2016-06-03
* Added WING_NO_EMAIL environment variable to skip sending email all together.
* Added wait_on_wingman() and cleanup_wait_on_wingman() to Wing::TestHelper.
* Wing::TestHelper automatically recovers from a bad cleanup of the Andy test user.
2016-05-30
* A few changes and bug fixes for better testing.
2016-05-24
* If a field is defined as required or unique then we no longer allow empty string '' as a valid value.
2016-05-10
* Added a --force option to wing class --add so that you don't accidentally overwrite your classes.
* Added documentation for undocumented features of wing.angular.js.
2016-05-05
* Upgraded to latest angular and angular-ui.
2016-04-28
* Added "on_all_done" option for the .all() method in objectListManager in wing.angular.js.
2016-04-18
* Changed the default path for the fastmmap cache so projects don't trounce on each other's cache.
2016-04-14
* Added { join_type => 'left' } on parent relationships that are not required, which will allow prefetches and joins where the object doesn't exist.
* You can now specify _include_related_objects=relationshipname and pull back only the objects you want, not all related objects.
2016-03-30
* Added checklist directive to wing.angular.js
2016-03-28
* wing.angular.js objectListManager now has call() and reset() methods.
2016-03-23
* wing.angular.js objectManager now passes behavior fetch_options to delete().
2016-03-12
* Added "generate_password_reset_code" method to Wing::Role::Result::User.
2016-03-11
* Added the can_link_to method in Wing::DB::Result, which is used for owner checking in Wing::Role::Result::Parent.
2016-03-09
* Broke out installs for different systems into their own README files. Thanks to Jim Edwards for his help on this.
2016-02-21
* Added Wing::Role::Result::UriPartOnInit to set a uri_part only when an object is first created.
2016-02-04
* wing.js errors now go away after 12 seconds and warnings go away after 10 seconds.
2016-01-28
* Force UTC time zone on DateTime objects going into/out of the database.
2016-01-26
* Wing::ContentFilter makes a shorter prettier note for external links now.
2016-01-15
* Thanks to Chan Wilson for all his feedback on this set of changes.
* Added a message to wing class to let you know where you can access your newly created object.
* Added Test::Trap and JSON::XS to bin/setup/03_install_perl_modules.sh to make installs flow easier.
* Added a note as to where you can find the logs in README.txt.
* Indicated what services need to be restarted after you add a class in README.txt.
2016-01-12
* Removed fetch_create_options from wing.angular.js because fetch_options is better.
* Added WingAngular.pod documentation for wing.angular.js.
* Added the Wing Command kick module so that you can kick buried wingman jobs.
2015-12-29
* Updated the javascript libraries to the latest versions.
2015-12-17
* Added support for is_auto_increment to Wing::Role::Result::Field dbic definitions.
* Added unique qualifiers, so you could have uniqueness within an object type.
2015-11-24
* Changed Wing::Role::Result::Parent to allow undef to be set on a relationship that is not required or unique.
* Added on_success to options and behavior for all() and search() in objectListManager in wing.angular.js.
2015-11-20
* Added fetch_options() to wing.angular.js objectListManager.
* Added force-number directive to wing.angular.js.
2015-10-20
* Added qualifiers option to generate_relationships() in Wing::Rest.
* Change template so search forms submit when you hit enter.
2015-10-05
* Added a line to bin/dataapps.sh to make Wing compatible with Mac OS X El Capitan.
2015-08-25
* Added local_cache_path requirement to Role::S3Image.
* Added fetch() to Role::S3Image.
* Fixed a bug in Role::UserControlled where you couldn't stack multiple "Controlled" roles, becasue UserControlled would throw an exception if it didn't pass the first step.
2015-08-24
* Added can_delete() to Wing::DB::Result.
2015-08-19
* Now generating the _field_name_options method in Wing::Role::Result::Field. Example: _color_options for a field called color.
2015-08-07
* Added the trends system to track stats over time.
2015-07-22
* Added call() to objectManager in wing.angular.js to allow for methods that should automatically update the object that are not part of CRUD.
* Fixed a problem with the auto generated templates instructing to call .list() instead of .all()
* Added named_options option to generate_all_relationships() to be passed into individual generate_relationship() calls in Wing::Rest.
* Added queryable option to generate_relationship() in Wing::Rest.
* Better redirect on templated class index.tt to edit.tt.
2015-07-14
* Added an option to objectListManager fetch() to prepend an item.
2015-06-30
* Now requires Imager and Image::ExifTool and File::Temp
* Added Wing::Role::Result::S3Image
2015-06-29
* Now requires pQuery and Data::OpenGraph.
* Added Wing::ContentFilter
2015-06-26
* wing.angular.js objectListManager search() now uses then() instead of success() and returns its results to be compatible with bootstrap ui typeahead.
2015-06-23
* wing db --prep now automatically adds charset and collate options to table generation.
* Added view_uri and edit_uri to make it easier for folks to template stuff.
2015-06-22
* Better debug when an object is not found via fetch_object.
* Added Wing::TestHelper
* Added wing class --test=MyClass test generator
2015-06-21
* Added fetch_creation_options() to objectListManager in wing.angular.js.
* Wing defaultly uses wing.angular.js now in its templates.
2015-05-10
* Fix an IE cache issue in wing.angular.js.
2015-04-23
* Added the "cache" module to Wing::Command so you can get, set, and remove items in the cache from the command line.
2015-04-12
* Added _sort_order and _order_by handlers to Wing::Dancer::format_list().
2015-04-11
* Added timeago date filter in wing.angular.js.
* Added unshift option to create on objectListManager in wing.angular.js.
2015-04-09
* Added "email_override" option to the config file. If this is specified then any emails sent out will always go to that address rather than the intented recipient.
2015-03-31
* A massive overhaul to wing.angular.js:
* Refactored objectListManager factory to be smaller and more flexible.
* Moved confirmations from objectListManager into it's own factory.
* Added objectManager factory and made objectListManager use objectManager objects.
* Added directive for input[number] to force the model to always be a number.
* Added autosave directive which works similar to wing.attach_autosave()
* Added wing-select directive, which autogenerates <select> lists from _options data.
* Added force-string directive, which forces numbers to be strings for display purposes on a model. This is needed because Perl hash keys aare always strings, but scalars can be strings or numbers, so when comparing them in js 1 != '1'.
2015-03-29
* Added wing.merge() to wing.js, which is useful for merging parameter hashes to make a request back to the server.
* Added wing.angular.js. To use it simply do:
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js"></script>
<script src="/wing.angular.js"></script>
myApp = angular.module('MyApp',['wing']);
myApp.controller('MyCtrl', function($scope, $http, objectListManager) {
$scope.users = new objectListManager(
fetch_options : {
_include_options: 1,
_include_relationships: 1, // required
},
list_api : '/api/user',
create_api : '/api/user',
on_create : function(object, index) {
wing.success(object.username + ' created.');
},
on_update : function(object, index) {
wing.success(object.username + ' saved.');
},
on_delete : function(object, index) {
wing.success('Deleted' + object.name +'.');
},
});
});
<!-- in html -->
<div ng-controller="MyCtrl">
<div ng-repeat="user in users.objects">{{user.properties.username}} <button ng-click="user.delete()">Delete</button></div>
</div>
2015-03-12
* Fixed a bug where 0 didn't count as a defined value for required fields.
* Rebuilt the "wing class" command so that it more accurately reflects modern Wing development practices.
* wing.js added a callback parameter to wing.delete_object().
2015-03-10
* Fixed a bug where the default web.psgi and rest.psgi files were missing "use Dancer;" which caused everything to fail.
* Did a lot of cleanup of the default templates to more modern practices.
* Rewrote the user manager app to use AngularJS instead of Handlebars
* wing.js added wing.angular_http_injector() which you can use like this:
app.config( function($httpProvider) {
$httpProvider.defaults.withCredentials = true;
$httpProvider.interceptors.push(wing.angular_http_interceptor);
});
* wing.js added wing.angular_datetime_filter() which you can use like this:
app.filter('datetime', ['$filter', wing.angular_datetime_filter]);
2014-12-30
* wing.js update_field() now passes the data result to the callback.
* wing.js attach_autosave() now allows a third parameter to be a callback that will be executed upon success.
2014-09-21
* Now have a default Result Set object which is required for Wing to operate. This is a backward incompatible change, but is easily fixed. Simply edit YourApp::DB and add this line inside load_namespaces()
__PACKAGE__->load_namespaces(
default_resultset_class => '+Wing::DB::ResultSet',
);
2014-09-20
* Switched to PNotify 2.0. This is backward incompatible with PNotify 1.0.
2014-05-27
* Add error handling to SendTemplateEmail Wingman job.
2014-05-06
* Add a file to hold a master before_template_render hook for all of wing. This hook should always be the last hook processed, because it will call describe on the current_user object passed in.
2014-04-2
* Automatically set the database name in the config file, based on the project name.
2014-03-17
* Update the template class templates for Bootstrap3
2014-02-27
* You can now add extra_processing to the Wing::Rest's generate_delete.
2014-02-27
* You can now make a class viewable using the PrivilegeControlled role.
2013-10-30
* Changed session to compare the password hash stored in the session with the one stored in the database. This way all existing sessions will get logged out if the user changes their password.
2013-09-25
* Daemonized wingman.pl. You now need the Daemon::Control perl module. You can also add a "wingman/pid_file_path" directive to your config file if you want to control where the pid is stored.
* Added --watch-only as a command line flag to wingman.pl so that you can specify a tube to watch other than the default tube. This is useful when you have different servers that you wish to handle different tubes.
2013-09-21
* Fixed a major security hole where it was possible to create new objects in some cases when you shouldn't be able to.
2013-09-03
* Wing::Role::Result::Field now allows you to pass a code reference into the options parameter so you can dynamically generate field options.
2013-08-12
* Wing tenant sites now need a new configuration entry tenants/app_dir to tell Wing where to find the APP_DIR for tenants. This allows the owner codebase to find it for doing database installs and library path handling.
* Wing tenant sites have a limited SSO to use their owner's sites to log into tenant sites.
2013-08-08
* Wing::Rest now has generate_relationship() and generate_all_relationships() so that
you need not hand-create your relationship web services any longer. These are
also enabled by default when you 'wing class --add=NewClass'
2013-06-18
* Wing::Rest::Status now returns a tracer for checking cookie values.
2013-06-08
* Better support for sites, user-controlled deletion, restoration and list all/owned.
2013-06-08
* Site's trashed property is now available to admins.
2013-06-06
* Many bug-fixes with tenant handling in wing db
2013-05-31
* Added tenant() and tenant_db() methods to Wing.pm.
2013-05-30
* Added the --do option to wing db.
* Added the wing tenant plugin
2013-05-25
* Added Wing Command, the new CLI for Wing.
* Now requires App::Cmd.
* Converted wing_db.pl to Wing Command.
* Converted wing_add_user.pl to Wing Command.
* wing user can now search and list users, and list only admins.
* Add wing do to Wing Command, for firing off Wingman jobs.
* Converted wing_add_class.pl and wing_template_class.pl to Wing Command.
2013-05-19
* Added EmailAllAdmins Wingman plugin.
* WARNING: By this point all Wing apps should have a block similar
to this added to their config files if they want to start
using Wingman services.
"wingman" : {
"max_workers" : 2,
"beanstalkd" : {
"server" : "127.0.0.1",
"ttr" : 60,
"default_tube" : "wingman",
},
"plugins" : {
"Wingman::Plugin::SendTemplatedEmail" : {
"phase" : "SendTemplatedEmail",
},
"Wingman::Plugin::EmailAllAdmins" : {
"phase" : "EmailAllAdmins",
},
}
},
2013-05-18
* Added SendTemplatedEmail Wingman plugin.
* Added generic.mkit
* Added reset_password.mkit
2013-05-16
* Added Wingman manager rest and web interfaces.
2013-05-14
* Restructured Wingman and added more documentation for it.
2013-05-12
* Added the Wingman job server.
* Now requires Parallel::ForkManager, Beanstalk::Client, and Plugin::Tiny.