timble / kodekit Goto Github PK
View Code? Open in Web Editor NEWComponent Framework.
License: Mozilla Public License 2.0
Component Framework.
License: Mozilla Public License 2.0
Breaking change: The Library\ViewTemplate no longer automatically adds the 'decorator' filter. To migrate: add the decorator filter if the dispatcher decoratable behavior is not used.
Breaking change:
Todo:
The default type for the toolbar dialog command has been changed to 'ajax'. The ajax dialog is currently not styled. Default styling needs to be added.
Refactor the ClassLoader and ObjectManager and remove singletons. Instead store an instance of the class loader in the object manager and store an instance of the object manager in 'Kodekit'. Allow to set the debug and the cache through objects methods instead of setting them in the constructor.
Additionally add support for callStatic() to proxy static calls to the Kodekit class to the ObjectManager, eg Kodekit::getObject('com:foo.controller.bar');
Add a new StringEscaper package to improve escaping in strings in different contexts.
Inspiration: https://github.com/zendframework/zend-escaper
See joomlatools/joomlatools-framework#19
KControllerToolbarDecorator doesn't pass the required parameter $chain though KCommandHandlerAbstract doesn't use the 2nd argument $chain
Do not extend ModelEntityComposite and DatabaseRowsetAbstract from ObjectSet, instead compose the objectset as private class property.
Breaking changes:
Do not pass the $template object to the template helper method to allow them to be used easily outside of the content of a template or view.
Breaking changes:
Make it possible to dump any Object and prevent recursion and deep nesting.
References:
Breaking changes:
Query variables in the route present in the action tag of GET forms get always appended to the form regardless of the fact that they might already be there in the first place.
The result is having the the same input more than once on the next request. This can cause problems since depending on the order that they get sent (the last one overrides any precedent ones).
Fix by adding an extra check that will avoid adding hidden inputs if a selector already exists for that variable in the form.
invokeCommandCallback
in ControllerAbstract
allows for executing ANY private or protected method on the object: https://github.com/timble/kodekit/blob/master/code/controller/abstract.php#L156 without any check that the relevant callback is genuine. This should probably have some way of validating that the callback is valid.
Breaking changes:
Add support for window.location to the redirects and fallback on meta-refresh only when client has no javascript capabilities.
Explicitly setting Accept-Ranges: none when Accept-Ranges is not defined gives problems with Nginx Proxy-Caching mechanism.
HTTP security headers are a new standard for increasing security by communicating to the browser certain things that should be allowed or not. Most of these could be controlled via the framework.
Headers:
Background:
Allow to remove a config option by searching the array.
Right now the object locator can only be retrieved by it's name, which represents the type, eg 'com'. For clarity it would be better if you could do $manager->getLocator('component') too.
If a listbox is created out of thousands of entities they are all fetched at the same time resulting in memory limit errors.
Instead, fetch results 100 by 100 and gradually build the options array.
Note: this removes the 'unique' property of the listbox helper which made duplicate values appear only once in listboxes. However this was not a particularly helpful option since it could be problematic when you have more than one entity using the same title.
See joomlatools/joomlatools-framework#26
When a row is re-ordered with a positive change, other rows' ordering data is not properly updated.
Move the vcard view to the users component in the platform
Right now it skips attributes with no values. For example <foo bar="baz" no-value>
does not parse no-value as an attribute.
Add the 's' modified to properly match and replace statements over multiple lines.
See also: #24
Add a isMixedMethod() method to Object class and make the _mixed_method class property private.
Prompt entires for select boxes are now scattered all over the place. optionlist supports it for only select2 at the moment.
Make the support universal by automatically adding the prompt entry to the options list.
Implement a generic FilesystemLocator and refactor the translator and template locators to use it.
Breaking change: Resource paths are now url's and need to be parseable using parse_url.
Fully qualified template paths used in import() methods need to be updated to follow the new format.
See: http://php.net/manual/pl/function.ob-end-clean.php#103817
Take note that if you change zlib output compression setting in
between ob_start and ob_end_clean or ob_end_flush,
you will get an error:
ob_end_flush() failed to delete buffer zlib output compression
Sync with joomlatools/joomlatools-framework#55
Implement the specification pattern to make it easier to manage and reuse specific business rules. We use this in joomlatools/support.joomlatools.com to mostly manage subscription and download rules. Examples and implementation can be found in ticket joomlatools/support.joomlatools.com#866.
Links:
Following the idea that you should be able to get all the data through the controller, it kind of makes sense to add a count action to the controller either directly or through a countable controller behavior. This makes the API cleaner to document and explain.
See:
Commas can be used in query strings to separate values.
Add getLanguage() method to localizable behaviors and add a 'language' function to the template.
Always let the view fetch the model data. In case this is not required an extending view can override the _fetchData() method to provide it's own implementation.
Breaking changes:
Add a getComponentInfo() method to the object boostrapper to be able to retrieve the component info from the component.json file.
Note: during the development of this issue the bootstrapper implementation has also been further optimised.
Improve the ClassLoader performance by implementing a namespace => locator map. Create the mapping on the fly when the class => path is being resolved.
The EventMixin interface is not used by the framework do not mix it automatically in controller, view and model.
See: http://jsonapi.org/format/#fetching-sorting
See: http://www.rubydoc.info/github/Neson/api_helper/master/APIHelper/Sortable
Breaking changes:
To prevent issues with Varnish do not try to flush the complete stream to php://output if the response is not streamable, instead just echo the content of the stream to the output buffer.
Breaking changes:
Underscores in object identifiers are stripped out breaking the convention as per documentation: https://www.joomlatools.com/developer/framework/essentials/naming-conventions/#underscores-in-file-names
See also: #24
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.