Commit f621f478 authored by Thimo Kraemer's avatar Thimo Kraemer

Add readme.md

parents
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 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
Example
=======
Assume you have the following tiny web application.
A basic HTML document named *index.html*:
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<link type="text/kss" rel="kinetic-stylesheet" href="ajax.kss" />
<script type="text/javascript" src="kss.min.js"></script>
<title>KSS example</title>
</head>
<body>
<p id="result">KSS example</p>
<form id="myform" data-counter="0">
<input type="text" name="text" id="text" value="World" />
<input type="button" id="process" value="Go" />
</form>
</body>
</html>
```
Some KSS in a file named *ajax.kss*:
```css
@config {
protocol: url-encoded;
date-encoding: iso8601;
timeout: 5000;
endpoint: service.php;
}
#process:click,
#myform:submit {
evt-preventdefault: true;
kss-action-server: helloworld;
text: formVar("text");
counter: dataAttr("counter", true);
}
```
Finally a PHP script named *service.php* that responds with some KSS commands:
```php
<?php
require 'kss.php';
if ($_POST['kss_action'] == 'helloworld') {
$counter = $_POST['counter'] + 1;
$message = 'Hello '.$_POST['text'].'! ('.$counter.')';
$kss = new KSSResponse();
$kss->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 ...
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment