Welcome to the Codename Coyote project documentation center. All things related to working with the CoyoteProcessor is included in this documentation (not the case yet, but will be soon!).
The TOU and Privacy Policy can be found here: Terms Of Use & Privacy Policy.
This is an incomplete documentation. It is only the starter for what is planned with the Codename Coyote project. However, it should be a good enough starter to get the overall idea across.
The best way to describe Codename Coyote (or CC for short) is to say it is a PHP/XML/JS/AJAX/XHTML/CSS hybrid project. But that doesn't sound very interesting now does it? Perhaps an example will help to bring it into more clarity.
This is an example of a typical file that CC would “digest”. This is what the application developer (which will eventually be anyone with an account) deals with as far as design is concerned. Fairly simple if you understand XML. I call them instruction sheets because of what they do. Each tag has different functionality, which can be manipulated via attributes. Instruction sheets (which use CML) just tell the CoyoteProcessor what do to, and in what order.
<window id="login-win" title="Access Restricted" width="310" height="186" layout="accordion" layoutConfig="animate:true"> <panel id="login-panel" title="User Login"> <form id="login-form" title="Credentials"> <textbox id="login-uname" label="Username"/> <password id="login-pass" label="Password"/> <submit text="Login"/> </form> </panel> <panel id="login-register" title="Register"> Nothing, you can't register! </panel> </window>
I realize that is a whole lot of crazy talk to throw at you, but if you can bare with me here… CC utilizes PHP to handle the XML code (or CML), producing the proper HTML/JS/CSS for the end-user. It can output the generated code in plain text, or in JSON format (well, it can actually output in any language, if it was manipulated correctly). That code above produces something similar to the following for the end-user experience:
If you haven't figured it out already, CC uses ExtJS for the front-end. The above images are snapshots of the interface given to the user, which is generated by the server, then processed by ExtJS. So, to re-cap, I'm using PHP to read XML files to generate JavaScript tailored for the ExtJS framework.
You are probably asking yourself, “What's the point in that? Why not just program it in JS?”. Well, here's a few quick various reasons:
How about a side by side example? This is what the programmer deals with:
<window title="Hello World!" width="400" height="300"> <vbox align="left" padding="5" margins="0 0 5 0"> <button label="Hello" scale="large"/> <button label="Yep, it works!"/> <button label="Just making sure" scale="medium"/> </vbox> </window>
Versus what the server generates (this is really what was generated from the above CML):
new Ext.Window({ constrainHeader:true, maximizable:true, minimizable:true, border:false, collapsible:true, title:'Hello World!', layout:'fit', height:300, width:400, items:[{ xtype:'panel', defaults:{margins:'0 0 5 0'}, layout:{ type:'vbox', align:'center', pack:'center', padding:'5' }, items:[{ xtype:'button', scale:'large', text:'Hello' },{ xtype:'button', scale:'small', text:'Yep, it works!' },{ xtype:'button', scale:'medium', text:'Just making sure' }] }] });
Which one do you like more? Now, of coarse XML can't help with everything JavaScript can do (such as custom functionality for things like buttons). Which is why JavaScript can be added to a CML file in various ways (explained elsewhere).
The live demo of the example described above can be found here: Live Demo.
You can also play with the live demo of the full Web OS. Please keep in mind, it is only a demo, it is still in development, and is always being updated.
Read even more interesting tid-bits about the overall system.
Here are a few links to help you find more info.
A very special thanks goes out to the following for their work and contribution.