About ===== **KSS-RPC** (Kinetic Style Sheets RPC) is a framework that allows Ajax development without writing more Javascript. It uses stylesheets with CSS-compliant syntax to declare behaviours in the client and a set of well-defined DOM-like commands that are sent back from the server to manipulate the HTML page. A decided advantage of KSS is the fact that all the client-side logic can be shifted to the server-side. The idea of KSS-RPC is based on the original [KSS project][] ([PyPI][]) which is pretty much dead. So KSS-RPC is a complete rewrite of this library, currently in beta state. It is also somewhat comparable to [Xajax][], [phery.js][] and [Jaxon][] for PHP or [Sajax][], [Sijax][] and [Dajax][] for Python. But KSS differs in the way that it is basically independent from the server-side programming language and all the client-side event bindings are done through centralized stylesheets. [KSS project]: http://kssproject.org/ [PyPI]: http://pypi.python.org/pypi/kss.core/ [Xajax]: http://www.xajax-project.org/ [phery.js]: http://phery-php-ajax.net/ [Jaxon]: https://www.jaxon-php.org/ [Sajax]: https://github.com/harkenn/sajax [Sijax]: https://github.com/spantaleev/sijax-python [Dajax]: https://github.com/jorgebastida/django-dajax Features ======== - Supported protocols: JSON-RPC, XML-RPC and plain JSON- or URL-encoded requests - Supports all modern browsers inclusive IE9+ (IE8 with polyfills) - Independent from any third-party JavaScript library - Optional supported selector engines: [Sizzle][] (jQuery) and [Slick][] (MooTools) - Supported animation libraries: [Velocity][], [GreenSock][], [jQuery][] and [MooTools][] [Sizzle]: http://sizzlejs.com/ [Slick]: https://github.com/mootools/slick [Velocity]: http://velocityjs.org/ [GreenSock]: https://greensock.com/docs/#/HTML5/Animation/TweenMax [jQuery]: http://api.jquery.com/animate [MooTools]: https://mootools.net/core/docs/1.6.0/Fx/Fx.Morph Integration =========== ```html ``` Activating the MutationObserver: ```html ``` Using the MutationObserver has the advantage that KSS is notified about all DOM manipulations even if modified by third-party scripts. MutationObservers are available from IE11. There exists a [polyfill for IE9-10](https://github.com/googlearchive/MutationObservers) Example ======= Assume you have the following tiny web application. A basic HTML document named *index.html*: ```html KSS example

KSS example

``` Some KSS in a file named *ajax.kss*: ```css @config { protocol: url-encoded; date-encoding: iso8601; timeout: 5000; } #process:click, #myform:submit { evt-preventdefault: true; kss-action-server: service.php; text: formVar("text"); counter: dataAttr("counter", true); } body:error { kss-action-client: alert; message: errorAttr("message"); } ``` Finally a PHP script named *service.php* that responds with some KSS commands: ```php replaceInnerHTML('#result', array( 'html'=>$message, )); $kss->setDataAttr('#myform', array( 'name'=>'counter', 'value'=>$counter, )); $kss->focus('#text'); $kss->send(); ?> ``` And [this](http://php.joonis.de/kss/index.html) is what you get ... ToDo ==== - Testcase - Code documentation - Make the Drag-n-Drop plugin supporting files