Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Add Interactive Introduction page

  • Loading branch information...
commit f0968f1057ccf677641e817cba453881f9dc424e 1 parent 5607600
@romaninsh romaninsh authored
View
147 LICENSE 100755 → 100644
@@ -1,5 +1,5 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
+ GNU AFFERO GENERAL PUBLIC LICENSE
+ Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
@@ -7,17 +7,15 @@
Preamble
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
+ The GNU Affero General Public License is a free, copyleft license for
+software and other kinds of works, specifically designed to ensure
+cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
+our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
+software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
@@ -26,44 +24,34 @@ them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
+ Developers that use our General Public Licenses protect your rights
+with two steps: (1) assert copyright on the software, and (2) offer
+you this License which gives you legal permission to copy, distribute
+and/or modify the software.
+
+ A secondary benefit of defending all users' freedom is that
+improvements made in alternate versions of the program, if they
+receive widespread use, become available for other developers to
+incorporate. Many developers of free software are heartened and
+encouraged by the resulting cooperation. However, in the case of
+software used on network servers, this result may fail to come about.
+The GNU General Public License permits making a modified version and
+letting the public access it on a server without ever releasing its
+source code to the public.
+
+ The GNU Affero General Public License is designed specifically to
+ensure that, in such cases, the modified source code becomes available
+to the community. It requires the operator of a network server to
+provide the source code of the modified version running there to the
+users of that server. Therefore, public use of a modified version, on
+a publicly accessible server, gives the public access to the source
+code of the modified version.
+
+ An older license, called the Affero General Public License and
+published by Affero, was designed to accomplish similar goals. This is
+a different license, not a version of the Affero GPL, but Affero has
+released a new version of the Affero GPL which permits relicensing under
+this license.
The precise terms and conditions for copying, distribution and
modification follow.
@@ -72,7 +60,7 @@ modification follow.
0. Definitions.
- "This License" refers to version 3 of the GNU General Public License.
+ "This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
@@ -549,35 +537,45 @@ to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
- 13. Use with the GNU Affero General Public License.
+ 13. Remote Network Interaction; Use with the GNU General Public License.
+
+ Notwithstanding any other provision of this License, if you modify the
+Program, your modified version must prominently offer all users
+interacting with it remotely through a computer network (if your version
+supports such interaction) an opportunity to receive the Corresponding
+Source of your version by providing access to the Corresponding Source
+from a network server at no charge, through some standard or customary
+means of facilitating copying of software. This Corresponding Source
+shall include the Corresponding Source for any work covered by version 3
+of the GNU General Public License that is incorporated pursuant to the
+following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
+under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
+but the work with which it is combined will remain governed by version
+3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
+the GNU Affero General Public License from time to time. Such new versions
+will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
+Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
+GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
+versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
@@ -635,40 +633,29 @@ the "copyright" line and a pointer to where the full notice is found.
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
+ it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
+ GNU Affero General Public License for more details.
- You should have received a copy of the GNU General Public License
+ You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- <program> Copyright (C) <year> <name of author>
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
+ If your software can interact with users remotely through a computer
+network, you should also make sure that it provides a way for users to
+get its source. For example, if your program is a web application, its
+interface could display a "Source" link that leads users to an archive
+of the code. There are many ways you could offer source, and different
+solutions will be better for different programs; see section 13 for the
+specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
+For more information on this, and how to apply and follow the GNU AGPL, see
<http://www.gnu.org/licenses/>.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
View
3  lib/AgileProject.php
@@ -24,6 +24,7 @@ function init(){
// Initialize any system-wide javascript libraries here
$this->js()
->_load('atk4_univ')
+ ->_load('atk4web')
// ->_load('ui.atk4_expander')
;
@@ -76,7 +77,7 @@ function initLayout(){
$menu2->addMenuItem('Home','index');
$menu2->addMenuItem('Extensions','extend');
- $menu2->addMenuItem('License','about/commercial');
+ $menu2->addMenuItem('License','about/license');
$menu2->addMenuItem('Jobs','about/site');
$menu2->addMenuItem('About','about/history');
}
View
25 lib/Alex.php
@@ -0,0 +1,25 @@
+<?
+/*
+ Alex - The Pink Elephant
+
+ Used for demonstration purposes
+ */
+class Alex extends HtmlElement {
+ public $float='right';
+ function init(){
+ parent::init();
+ $this->setElement('img');
+ $this->setAttr('src',$this->api->locateURL('template','images/PinkElephant.jpg'));
+ $this->set('');
+ }
+ function render(){
+ $this
+ ->addStyle('float',$this->float)
+ ;
+ parent::render();
+ }
+ function align($side){
+ $this->float=$side;
+ return $this;
+ }
+}
View
12 lib/Button.php
@@ -0,0 +1,12 @@
+<?php
+
+// Push our modifications into Button class. This will avoid using jQuery button enhancement
+
+class Button extends View_Button {
+ function jsButton(){
+ }
+ function render(){
+ $this->addClass('green');
+ parent::render();
+ }
+}
View
2  lib/Doc/Example.php
@@ -9,7 +9,7 @@ function init(){
;
}
function setDescr($d){
- $this->add('Text')->set(highlight_string('<?'.$d.'?>',true));
+ $this->add('Text')->set(str_replace(array('&lt;?php','php?&gt;'),'',highlight_string('<?php'.$d.'php?>',true)));
return $this;
}
View
4 lib/Doc/MoreInfo.php
@@ -1,5 +1,9 @@
<?
class Doc_MoreInfo extends Doc_View {
+ function init(){
+ parent::init();
+ $this->js(true)->univ()->moreInfoTrigger();
+ }
function defaultTemplate(){
return array('doc/view/doc_moreinfo');
View
10 lib/MiniAlex.php
@@ -0,0 +1,10 @@
+<?
+class MiniAlex extends Alex {
+ function init(){
+ parent::init();
+ $this
+ ->setAttr('width',50)
+ ->align('left');
+ }
+}
+?>
View
6 page/about/history.php
@@ -0,0 +1,6 @@
+<?
+class page_about_history extends Page {
+ function defaultTemplate(){
+ return array('page/about/history');
+ }
+}
View
6 page/about/license.php
@@ -0,0 +1,6 @@
+<?
+class page_about_license extends Page {
+ function defaultTemplate(){
+ return array('page/about/license');
+ }
+}
View
2  page/doc.php
@@ -2,7 +2,7 @@
class page_doc extends Page {
function init(){
parent::init();
- $this->add('Button',null,'start')->js('click')->univ()->dialogURL('test','test');
+ $this->add('Button',null,'start')->set('Start Interactive Introduction')->js('click')->univ()->redirect($this->api->getDestinationURL('/doc/intro/1'));
}
function defaultTemplate(){
return array('page/doc');
View
277 page/doc/intro.php
@@ -0,0 +1,277 @@
+<?
+class page_doc_intro extends Page {
+ function init(){
+ parent::init();
+
+ }
+ function initMainPage(){
+ $this->api->redirect('./1');
+ }
+
+ function page_1(){
+ $this->add('h1')->set('Meet "Alex" - The Pink Elephant!');
+
+ $this->add('Alex');
+
+ $this->add('p')
+ ->set('<b>Alex</b> here is a friend of the <a href="http://www.elroubio.net/?p=elephpant" target="_blank">blue
+ PHP elephant</a>. Unlike his friend, Alex only appears in Fully
+ Object-Oriented environment (All code of ATK4 is object-oriented). Together with Alex I will explain to you about basics of Agile Toolkit.
+ ');
+
+ $this->add('h3')
+ ->set('Lession 1 - Family of Classes');
+
+ $this->add('p')
+ ->set('Alex feels "at-home" on this page, because he is closely related to other classes.
+ All Classes in Agile Toolkit have common anchestor - AbstractObject. All the View classes in Agile
+ Toolkit derive from AbstractView class. Because they are related, they can communicate directly and exchange
+ important information.');
+
+ $this->add('p')
+ ->set('AbstractObject defines method add(). This method is available in any object and allows me to add
+ and link new objects easily:');
+
+ $this->add('Doc_Example')
+ ->setDescr("\$this->add('Alex');");
+
+ $this->add('p')
+ ->set('At this time, the new object is created from class "Alex". It is then inserted into current page.
+ Alex\'s init() method is called right after. init() is another method which AbstractObject defines and which exist for any
+ other class in the Toolkit.
+ After all the objects are being initialized, displaying complete page is really easy. api->render() method
+ recursively calls page->render() method. It recursively calls render() of all its objects including Alex.
+ ');
+
+ $this->add('p')
+ ->set('During the time between init() and render() many interesting things happen, which can greatly affect the
+ appearance of objects and their behaviour. To demonstrate I am going to add another instance of Alex on
+ this page, but this time I am going to resize it');
+
+
+ $this->add('Doc_Example')
+ ->setDescr("\$this->add('Alex')->setAttr('width',50)->align('left');");
+
+ $this->add('Alex')->setAttr('width',50)->align('left');
+
+ $this->add('p')
+ ->set('What you see here in code above is called "Chaining". Method add() returns new object and then I am
+ calling few other methods of this object to configure it. In this case, I changed the size and alignment.
+ It is important to highlight, that many default objects can be used and customized even without inheriting the
+ class.
+ ');
+
+ $this->add('Button')
+ ->set('Next Page')
+ ->js('click')
+ ->univ()->redirect($this->api->getDestinationURL('../2'));
+ }
+
+ function page_2(){
+ $this->add('h1')->set('Lession 2 - Simple Templates');
+
+ $this->api->add('Alex',null,'logo')->setAttr('width',50)->align('left');
+
+ $this->add('p')
+ ->set('Look! Alex went and replaced Logo. How did that happen?');
+
+ $this->add('p')
+ ->set('All the View objects in Agile Toolkit have their own template. Alex have his template,
+ pages have template and of course API itself have a global template. Templates in Agile Toolkit are quite
+ simple. They have "tags", which look like this:');
+
+ $this->add('Doc_Example')
+ ->setDescr('\'<a href="/"><?logo?><img src="images/logo.png"/><?/logo?></a>\'');
+
+ $this->add('p')
+ ->set('This piece of HTML is coming from our shared.html template. This is template of the API - in other words -
+ tempate which is used on ALL the pages. To be honest - I don\'t like touching HTML - I
+ am not very good at Design, HTML structures and CSS. Our designer prepares templates, then I place tags
+ into them.
+ Templates are being read and parsed by ATK4 during init() methods, then, through PHP I can manipulate
+ template of any object. Finally all templates are assembled during global recursive render() event.
+ ');
+
+ $this->add('p')
+ ->set('There are 2 ways to change contens of the template. First - if I manually change it through code
+ such as:');
+
+ $this->add('Doc_Example')
+ ->setDescr("\$this->api->template->set('logo','[no logo]');");
+
+ $this->add('p')
+ ->set('The other way to change it is by directing output of other View object into that template tag.
+ Destination tag can be specified as 3rd argument to add() function. Notice that I am adding Alex to
+ the API class instead of $this (which refers to object of current page):');
+
+ $this->add('Doc_Example')
+ ->setDescr("\$this->api->add('Alex',null,'logo')->setAttr('width',50)->align('left');");
+
+ $this->add('p')
+ ->set('Similar rules applies to all other objects. Template system in Agile Toolkit allows smooth collaboration between Designer and
+ Developer - there are no complex code inside templates and apart from addition of tags nothing needs to
+ be changed.');
+
+ $this->add('Button')
+ ->set('Next Page')
+ ->js('click')
+ ->univ()->redirect($this->api->getDestinationURL('../3'));
+
+ }
+ function page_3(){
+ $this->add('h1')->set('Lession 3 - Integrated JavaScript and jQuery');
+
+ $alex=$this->add('Alex')->setAttr('width',50)->align('left')
+ ->js('click')->animate(array('width'=>'100'));
+
+ $this->add('p')
+ ->set('The reason why many developers love Agile Toolkit is because it keeps JavaScript under control.
+ Agile Tolokit enhances JavaScript support instead of limiting it to finite number
+ of functions. As it turns out - PHP5 is a wonderful language to do so - with some magical features such
+ as catch-all methods.');
+
+
+ $this->add('p')
+ ->set('Let\'s call Alex for help. We are going to use jQuery animate() function on "click" event. Try clicking on
+ Alex now. If you worked with other frameworks, you would probably need to change at least 3 different
+ files to achieve this functionality. In Agile Toolkit it\'s done with single line of code ');
+
+ $this->add('Doc_Example')
+ ->setDescr(<<<'EOT'
+$this->add('Alex')->setAttr('width',50)->align('left')
+ ->js('click')->animate(array('width'=>'100'));
+EOT
+);
+
+ $this->add('p')
+ ->set('Any View in Agile Toolkit has a js() method. The first argument here is the type of event. In my
+ case mouse click will be used as a trigger. js() method returns a object called jQuery Chain. Any calls
+ to Chain object are translated into native jQuery / JavaScript
+ code. In this example PHP array is also properly converted into JavaScript hash and all values are
+ properly escaped preventing any injection risk.');
+
+ $this->add('p')
+ ->set('We are also using Chaining - each method returns object inself which allows us to perform multiple calls
+ on the object without using a variable. Usually I prefer to place one function call per line which makes
+ code very easy to read.');
+
+
+ $left=$this->add('Alex')->align('left'); $right=$this->add('Alex');
+ $left->js('click',$right->js()->animate(array('padding-right'=>'+=20px')));
+ $right->js('click',$left->js()->animate(array('padding-left'=>'+=20px')));
+
+ $this->add('p')
+ ->set('Multiple objects can interact with eachother through jQuery Chains. Here I have added 2 more instances of Alex. When you click left one, it triggers
+ event, which executes chain on the right elephant tellign him to move towards his twin-brother by 20
+ pixels. Likewise clicking on the right elephant moves left one towards the middle');
+
+ $this->add('p')
+ ->set('This way I can build some complex interractions. But the
+ best part is - I didn\'t write a single line of JavaScript code and I didn\'t program any of this stuff
+ inside Alex class. I could have used ANY View object of Agile Toolkit.');
+
+ $this->add('Doc_Example')
+ ->setDescr(<<<'EOT'
+$left=$this->add('Alex')->align('left'); $right=$this->add('Alex');
+$left->js('click',$right->js()->animate(array('padding-right'=>'+=20px')));
+$right->js('click',$left->js()->animate(array('padding-left'=>'+=20px')));
+EOT
+);
+
+ $this->add('Button')
+ ->set('Next Page')
+ ->js('click')
+ ->univ()->redirect($this->api->getDestinationURL('../4'));
+ }
+
+ function page_4(){
+ $this->add('h1')->set('Lession 4 - True Code Portability');
+
+ $this->add('p')
+ ->set('You have probably noticed by now, but pretty often I have been using a small version of Alex. Another
+ area where Agile Toolkit excels is at keeping source code flexible and clean. My next goal is to consolidate
+ my common-used configuration of Alex into a new class - MiniAlex');
+
+ $c=$this->add('View_Columns');
+
+ $l=$c->addColumn('50%');
+ $l->add('Doc_Example')
+ ->setDescr(<<<'EOT'
+$l->add('Alex')
+ ->setAttr('width',50)
+ ->align('left');
+$l->add('MiniAlex');
+EOT
+);
+
+ $l->add('MiniAlex');
+ $l->add('Alex')
+ ->setAttr('width',50)
+ ->align('left');
+
+ $l->add('p')->set('On the left here is resulting elephant before and after I consolidated code into the class. Such
+ a code transition is farily common in Agile Toolkit projects and it\'s what makes projects highly scalable as
+ they age and features change.');
+
+ $m=$c->addColumn();
+ $m->add('Icon')->set('arrows-right')->addStyle('margin-top','40px');
+
+ $c->addColumn('50%')
+ ->add('Doc_Example')
+ ->setDescr(<<<'EOT'
+class MiniAlex extends Alex {
+ function init(){
+ parent::init();
+ $this
+ ->setAttr('width',50)
+ ->align('left');
+ }
+}
+EOT
+);
+
+
+
+ $this->add('p')
+ ->set('Have you managed to notice that in the left example, I am using variable <b>$l</b> instead of variable
+ <b>$this</b>. This
+ is because I have added "View_Columns" layout and I was adding our Elephant family into left column and not
+ the page as usual. And that lovely icon in the middle column? Icon is also an object and was added fairly simple:');
+
+ $this->add('Doc_Example')
+ ->setDescr(<<<'EOT'
+$m->add('Icon')->set('arrows-right')->addStyle('margin-top','40px');
+EOT
+);
+
+
+ $this->add('p')
+ ->set('Agile Toolkit never over-complicate things. At this point you should have sufficient understanding
+ about the basics and goals of Agile Toolkit. You can now freely browse through our Example section. If
+ by a chance a single-letter variables seem "wrong" - look through coding standard section of Agile
+ Toolkit, to find out in which cases those variables are suggested.');
+
+
+ $this->add('Button')
+ ->set('More Examples')
+ ->js('click')
+ ->univ()->redirect($this->api->getDestinationURL('../4'));
+
+ $this->add('Button')
+ ->set('Coding Standards')
+ ->js('click')
+ ->univ()->redirect($this->api->getDestinationURL('../4'));
+
+ $this->add('Button')
+ ->set('API Reference')
+ ->js('click')
+ ->univ()->redirect($this->api->getDestinationURL('../4'));
+
+ }
+
+}
+
+class p extends HtmlElement { function init(){ parent::init(); $this->setElement('p'); } }
+class h1 extends HtmlElement { function init(){ parent::init(); $this->setElement('h1'); } }
+class h2 extends HtmlElement { function init(){ parent::init(); $this->setElement('h2'); } }
+class h3 extends HtmlElement { function init(){ parent::init(); $this->setElement('h3'); } }
View
28 templates/js/atk4web.js
@@ -0,0 +1,28 @@
+// Univ chain extensions
+
+(function($){
+
+
+$.each({
+ moreInfoTrigger: function(){
+ var self=this.jquery;
+ var content=self.children('div:first').hide();
+ var icon=self.find('i:first');
+ self.find('h6:first').children().click(function(ev){
+ ev.preventDefault();
+ if(content.is(':visible')){
+ content.fadeOut();
+ icon.toggleClass('atk-icon-arrows-right2 atk-icon-arrows-bottom2');
+ }else{
+ content.fadeIn();
+ icon.toggleClass('atk-icon-arrows-right2 atk-icon-arrows-bottom2');
+ }
+ });
+ }
+
+},$.univ._import
+);
+
+
+
+})(jQuery);
View
3  templates/jui/button.html
@@ -0,0 +1,3 @@
+<?button?>
+<button id="<?$_name?>" style="<?$style?>" type="<?type?>button<?/?>" class="button <?$class?>" name="<?$_name?>" <?$attributes?>><?icon_span?><i class="atk-icon atk-icons-blue atk-icon-<?$icon?>"></i><?/icon_span?><?Content?>Sample Button<?/?></button>
+<?/?>
View
2  templates/jui/css/general.css
@@ -371,4 +371,4 @@ ul.submenu-body li.current:after {display:none;}
------------------------------------------------------------------------------------------------- */
.hr {height:6em;}
.hr.hr-small {height:3em;}
-p {line-height:inherit;}
+p {line-height:inherit;}
View
6 templates/jui/doc/view/doc_moreinfo.html
@@ -3,9 +3,9 @@
are currious, but others might find it useless. Uses will be able
to judge by the header
-->
-<div id="<?$_nameass?>" class="atk_doc note">
-<h6><i class="atk-icon atk-icon-arrows-right2"></i><a href="javascript:void()" onclick="javascript:$(this).parent().next().toggle('fade')" class="dynamic"><?$name?></a></h6>
-<div class="expanded-content" style="display: none">
+<div id="<?$_name?>" class="atk_doc note atk_doc_expander">
+<h6><i class="atk-icon atk-icon-arrows-right2"></i><a href="#" class="dynamic"><?$name?></a></h6>
+<div class="expanded-content">
<?$Content?>
</div>
</div>
View
163 templates/jui/page/about/history.html
@@ -0,0 +1,163 @@
+<h1>History of Agile Toolkit</h1>
+<p>Agile Toolkit have a rich history. It's been called previously as AModules and have been started in 1999. Library have been completely rewritten several times throughout it's lifespan - when first migrated PHP4 and when alpha version of PHP5 (Zend2) become available.</p>
+
+<p>Toolkit have been heavily influenced by Object-Oriented windowed environment. For instance reliance on "init" method as a secondary constructor comes from Turbo Vision and many of other approaches are coming from Object Windows frameworks and Objective C / Cocoa used in Apple UI. The true goal however was to keep flexibility required by Web projects, instead of porting concepts.</p>
+
+<p>Historically by several measurements Agile Toolkit and it's anchestors have introduced several concepts before other frameworks did. For example dynamic queries were used in AModules3 since 2004 for both queries, updates, deletes and other operations. Even today many frameworks only have "select" support for dynamic queries.</p>
+
+<table border=1 width=100%>
+<tr><th>Feature<br/></th><th>a-modules<br/>(1999-2002)</th><th>Amodules-2<br/>(2001-2004)</th><th>AModules3<br/>(2003-2010)</th><th>Agile Toolkit<br/>(Since 2010)</th></tr>
+
+<tr>
+ <td>License</td>
+ <td>Proprietary</td>
+ <td>LGPL</td>
+ <td>GPL</td>
+ <td>AGPL / Commercial</td>
+</tr>
+
+<tr>
+ <td>Most recent release</td>
+ <td>-</td>
+ <td><a href="http://sourceforge.net/projects/amodules2/">v2.2 (2004-04-23)</a>
+ <td><a href="http://sourceforge.net/projects/amodules3/">v3.0.1 (2007-01-18)</a>
+ <td><a href="http://github.com/atk4/atk4">master branch</a>
+</tr>
+
+<tr>
+ <td>Language Requriement</td>
+ <td>PHP3</td>
+ <td>PHP4</td>
+ <td>PHP5</td>
+ <td>PHP5.3</td>
+</tr>
+
+<tr>
+ <td>Target Software</td>
+ <td>Administration Systems</td>
+ <td>Administration Systems</td>
+ <td>Web Backend and Portals</td>
+ <td>Software as a Service, Web 2.0</td>
+</tr>
+
+<tr>
+ <td>Object Oriented Structure</td>
+ <td>-</td>
+ <td>partial</td>
+ <td>full</td>
+ <td>full</td>
+</tr>
+
+<tr>
+ <td>Model-View-Controller</td>
+ <td>partial</td>
+ <td>-</td>
+ <td>-</td>
+ <td>full</td>
+</tr>
+
+<tr>
+ <td>Dynamic SQL</td>
+ <td>-</td>
+ <td>-</td>
+ <td>full</td>
+ <td>full</td>
+</tr>
+
+<tr>
+ <td>Templates</td>
+ <td>-</td>
+ <td>-</td>
+ <td>full</td>
+ <td>full</td>
+</tr>
+
+<tr>
+ <td>Deployed projects</td>
+ <td>~50</td>
+ <td>~70</td>
+ <td>~120</td>
+ <td>over 100 and growing</td>
+</tr>
+
+<tr>
+ <td>Javascript Library</td>
+ <td>-</td>
+ <td>-</td>
+ <td>Custom JS Library</td>
+ <td>jQuery UI based</td>
+</tr>
+
+<tr>
+ <td>JavaScript Events</td>
+ <td>-</td>
+ <td>-</td>
+ <td>-</td>
+ <td>full suport</td>
+</tr>
+
+<tr>
+ <td>Speed</td>
+ <td>fast</td>
+ <td>extra fast</td>
+ <td>extra fast</td>
+ <td>extra fast</td>
+</tr>
+
+<tr>
+ <td>Flexible Directory Structure</td>
+ <td>-</td>
+ <td>-</td>
+ <td>-</td>
+ <td>through PathFinder</td>
+</tr>
+
+<tr>
+ <td>Extensions</td>
+ <td>-</td>
+ <td>partial</td>
+ <td>partial</td>
+ <td>full</td>
+</tr>
+
+<tr>
+ <td>Database Update Scripts</td>
+ <td>-</td>
+ <td>yes</td>
+ <td>yes</td>
+ <td>yes</td>
+</tr>
+
+<tr>
+ <td>Advanced Error Logging</td>
+ <td>-</td>
+ <td>-</td>
+ <td>yes, Logger</td>
+ <td>yes, Logger</td>
+</tr>
+
+<tr>
+ <td>Page Content Freedom</td>
+ <td>-</td>
+ <td>limited</td>
+ <td>flexible</td>
+ <td>flexible</td>
+</tr>
+
+<tr>
+ <td>Routing</td>
+ <td>direct access to files</td>
+ <td>single point entry</td>
+ <td>single point entry</td>
+ <td>single point entry</td>
+</tr>
+
+<tr>
+ <td>Adoption of new PHP features</td>
+ <td>sessions, arrays</td>
+ <td>classes, objects</td>
+ <td>exceptions, unification</td>
+ <td>closures, catchall, access control</td>
+</tr>
+
+</table>
View
61 templates/jui/page/about/license.html
@@ -0,0 +1,61 @@
+<h1>Dual Licensing of Agile Toolkit</h1>
+<p>SaaS (Software as a Service) are reshaping the web with incredible speed. Many companies like Google or Yahoo have brought powerful interactive software many of us use everyday. Building your own Software as a Service solution is a tough task and requires a lot of housekeeping work. Fortunatelly - with Agile Toolkit you can instantly solve many of problems and make your software a reality.</p>
+<p>We believe in open-source software. That is why we are willing to offer 10 years of our work on this library for free. But there is a catch. If you build your software using free version of ATK4, you have to make your software code freely available as well. Our choice of the open-source license is Affero General Public License v3 - the license specifically written for Web Software.</p>
+<h2>Closed-source projects and intellectual property</h2>
+<p>Agile Technologies is the copyright holder of Agile Toolkit core. In addition to AGPL license, you offer Agile Toolkit under a closed-source license. This is a best chocie if maintaining intellectual property of your code is imporant.
+<h2>FAQ</h2>
+
+<h5>Q: I have idea for a new web software. Can I use Agile Toolkit in my project?</h5>
+<p>Of course. You can download free version of Agile Toolkit and start using it right now. Open-source version is identical to commercial, so you will get exactly the same features</p>
+
+<h5>Q: What are my obligations as developer if I use Open-Source version of Agile Toolkit?</h5>
+<p>You must provide source code of your web project.</p>
+
+<h5>Q: I know about General Public License, but haven't heard about Affero General Public License. What's the difference?</h5>
+<p>AGPL is idiologically identical to GPL. GPL is designed for server and desktop software, AGPL is more suited for on-line software. GPL requries binary distribution of software to be accompanied with source code. AGPL requires websites using software to provide download link.</p>
+
+<h5>Q: I wish to use a different license for my project.</h5>
+<p>You will need to provide your project source under GPL-compatible license, otherwise only commercial users will be able to use your software.</p>
+
+<h5>Q: I am using Open-Source ATK4. I am looking for investment, but investors want to protect intellectual property. What should I do?</h5>
+<p>You should switch to commercial version of Agile Toolkit. It is 100% compatible. After you switched, you can discontinue your open-source repository or remove source code download link.</p>
+
+<h5>Q: I am willing to develop addon for Agile Toolkit. Do I need commercial version?</h5>
+<p>No, you can develop your addon using AGPL or compatible license. If you are willing to sell your addon commercially - you can dual-license it under commercial version. While you do so, you don't even need a commercial license for ATK4, however users who are using your commercial license are also required to use commercial verion of ATK4.</p>
+
+<h5>Q: but I am not interested in money. I want anyone to be able to use my addon</h5>
+<p>You can dual license your add-on under GPL and BSD (like jQuery does). In this case it can be freely used by both commercial and opensource projects.</p>
+
+<h5>Q: I have a contribution to Agile Toolkit. Who will hold copyrights on that?</h5>
+<p>Agile Toolkit is an intellectual property of Agile Technologies Limited. If your contributed code would also become property of Agile Toolkit in order to keep single ownership of the whole toolkit. We will always make your contribution available for both Open-source and commercial community. If you wish to retain ownership of your contribution, you can develop and publish Extension for Agile Toolkit.</p>
+
+<h5>Q: What are terms on commercial license</h5>
+<p>Commercial license allows a single developer to work on commercial project using Agile Toolkit for one year. At the end of the year if you need to continue project development you should renew the license.</p>
+
+<h5>Q: Will I need to open-source project if I don't renew my license</h5>
+<p>Only if you continue development work on your project.</p>
+
+<h5>Q: How can SaaS work with open-source model?</h5>
+<p>Public License do not prevent you form charging for service use. Many SaaS sites are relying on open software. Majority of your users would still prefer to use a maintained hosted version regardless of availability of source code. Existance of open-source project often promote your service. For a successful story of this model, referr to wordpress.com.</p>
+
+<h5>Q: Other frameworks are using BSD license. Why don't you?</h5>
+<p>Because BSD license does not promote / endorse Open-Source movement.</p>
+
+<h5>Q: I am making software for a client who does not wish to have any license/payment obligations</h5>
+<p>Agile Toolkit commercial license only applies on development work. If your client is running software, he can do so to any extent without paying anything. You however do need to be licensed. By being active licensee you would also be preferred by your client to carry out additional work in the future.</p>
+
+<h5>Q: I have developed commercial software using ATK4. How many servers it can run on?</h5>
+<p>There are no limitation on number of servers, CPUs or number of users</p>
+
+<h5>Q: Which verion of Agile Toolkit am I using?</h5>
+<p>Check http://yoursite.com/license.html, or look into header of any php files inside atk4 directory.</p>
+
+
+<h5>Q: Is license fees refundable?</h5>
+<p>No. However as a licensed developer you can work on as many projects as yo uwish</p>
+
+<h5>Q: I like Agile Toolkit and I am willing to use it on my workplace</h5>
+<p>Great. We created a page which summarizes business benefits of using Agile Toolkit. Pass this link to your boss: ...</p>
+
+<h5>Q: I have exsiting web project with is under license X and I wish to use some features of Agile Toolkit</h5>
+<p>While it's possible to use Agile Toolkit in collaboration with other framework, the real benefit and speed you can only achieve by solely relying on ATK4. Please consult terms of <a href="/license">Affero General Public License</a> for further questions on license compatibility</p>
View
7 templates/jui/shared.html
@@ -27,7 +27,7 @@
<div id="layout">
<div id="header">
<div class="wrapper clearing">
- <a href="#" id="logo"><img src="<?template?>images/logo.png<?/?>" alt="Agile Toolkit" /></a>
+ <a href="/" id="logo"><?logo?><img src="<?template?>images/logo.png<?/?>" alt="Agile Toolkit" /><?/?></a>
<ul id="navigation">
<li <?$menu_home?>><a href="/"><i class="blue-h"></i>Home</a></li>
<li <?$menu_doc?>><a href="/doc/"><i class="green-h"></i>Documentation</a></li>
@@ -99,13 +99,14 @@
<div id="footer">
<div class="wrapper">
<div id="credit">
- <a href="#">Agile Toolkit</a> is the product of <a href="#">Agile Technologies</a>
+ <a href="http://www.atk4.com/">This Website</a> is &copy; <a href="#">Agile Technologies</a> 2010-2011,
+ available under <a href="/license">Affero GPL v3</a> license
</div>
<div id="socials">
<a href="#" id="facebook"></a>
<a href="#" id="twitter"></a>
<a href="#" id="linkedin"></a>
- <a href="#" id="github"></a>
+ <a href="http://github.com/atk4" target="_blank" id="github"></a>
</div>
</div>
</div>
Please sign in to comment.
Something went wrong with that request. Please try again.